From dab0eed404fd3d67cceff1500a97e0d12c6cee4b Mon Sep 17 00:00:00 2001
From: Emanuele Laface <ema@morla.esss.lu.se>
Date: Mon, 9 Mar 2020 14:58:13 +0100
Subject: [PATCH] New contacts page

---
 .../__pycache__/__init__.cpython-37.pyc       |   Bin 111 -> 0 bytes
 .../__pycache__/contacts.cpython-37.pyc       |   Bin 2294 -> 0 bytes
 .../__pycache__/instruments.cpython-37.pyc    |   Bin 5628 -> 0 bytes
 .../__pycache__/interlocks.cpython-37.pyc     |   Bin 1846 -> 0 bytes
 .../screens/__pycache__/pos.cpython-37.pyc    |   Bin 3552 -> 0 bytes
 .../__pycache__/ts2_cav.cpython-37.pyc        |   Bin 2463 -> 0 bytes
 .../__pycache__/ts2_screens.cpython-37.pyc    |   Bin 1723 -> 0 bytes
 .../__pycache__/ts2_tpcircuits.cpython-37.pyc |   Bin 2032 -> 0 bytes
 PythonServer/screens/contacts.py              |     2 +-
 WebSites/contacts/dashboard.json              |     2 +-
 WebSites/errors/403/Dockerfile                |    20 +
 WebSites/errors/403/Gruntfile.js              |   112 +
 WebSites/errors/403/LICENSE                   |    20 +
 WebSites/errors/403/README.md                 |   182 +
 WebSites/errors/403/SlickNav/MIT-LICENSE.txt  |    19 +
 WebSites/errors/403/SlickNav/README.md        |   106 +
 WebSites/errors/403/SlickNav/bower.json       |    21 +
 WebSites/errors/403/SlickNav/demo/index.html  |    50 +
 WebSites/errors/403/SlickNav/demo/style.css   |    20 +
 .../403/SlickNav/dist/jquery.slicknav.js      |   589 +
 .../403/SlickNav/dist/jquery.slicknav.min.js  |     6 +
 .../errors/403/SlickNav/dist/slicknav.css     |   147 +
 .../errors/403/SlickNav/dist/slicknav.min.css |     5 +
 WebSites/errors/403/SlickNav/gulpfile.js      |    42 +
 .../errors/403/SlickNav/jquery.slicknav.js    |   584 +
 WebSites/errors/403/SlickNav/package.json     |    44 +
 WebSites/errors/403/SlickNav/scss/core.scss   |    88 +
 .../errors/403/SlickNav/scss/slicknav.scss    |     2 +
 WebSites/errors/403/SlickNav/scss/theme.scss  |    91 +
 WebSites/errors/403/css/ess-old.css           |   139 +
 WebSites/errors/403/css/ess.css               |   212 +
 WebSites/errors/403/css/freeboard.css         |  2730 +++
 WebSites/errors/403/css/freeboard.min.css     |     1 +
 WebSites/errors/403/dashboard.json            |    75 +
 WebSites/errors/403/docker-compose.yml        |    12 +
 WebSites/errors/403/docs/build-docs.sh        |     3 +
 WebSites/errors/403/docs/docco-fb.css         |   630 +
 WebSites/errors/403/docs/docco.css            |   500 +
 WebSites/errors/403/docs/plugin_example.html  |  1042 +
 .../403/docs/public/fonts/aller-bold.eot      |   Bin 0 -> 29804 bytes
 .../403/docs/public/fonts/aller-bold.ttf      |   Bin 0 -> 66836 bytes
 .../403/docs/public/fonts/aller-bold.woff     |   Bin 0 -> 33244 bytes
 .../403/docs/public/fonts/aller-light.eot     |   Bin 0 -> 29509 bytes
 .../403/docs/public/fonts/aller-light.ttf     |   Bin 0 -> 68620 bytes
 .../403/docs/public/fonts/aller-light.woff    |   Bin 0 -> 33124 bytes
 .../errors/403/docs/public/fonts/fleurons.eot |   Bin 0 -> 35557 bytes
 .../errors/403/docs/public/fonts/fleurons.ttf |   Bin 0 -> 64772 bytes
 .../403/docs/public/fonts/fleurons.woff       |   Bin 0 -> 36284 bytes
 .../403/docs/public/fonts/novecento-bold.eot  |   Bin 0 -> 18190 bytes
 .../403/docs/public/fonts/novecento-bold.ttf  |   Bin 0 -> 48136 bytes
 .../403/docs/public/fonts/novecento-bold.woff |   Bin 0 -> 20576 bytes
 .../errors/403/docs/public/images/gray.png    |   Bin 0 -> 56906 bytes
 .../403/docs/public/stylesheets/normalize.css |   375 +
 WebSites/errors/403/examples/altGuage.js      |   109 +
 .../errors/403/examples/plugin_example.js     |   298 +
 WebSites/errors/403/examples/rl78.json        |   168 +
 WebSites/errors/403/examples/weather.json     |   164 +
 WebSites/errors/403/favicon.png               |   Bin 0 -> 558 bytes
 .../403/fonts/titillium-web-v7-latin-200.eot  |   Bin 0 -> 14535 bytes
 .../403/fonts/titillium-web-v7-latin-200.svg  |   291 +
 .../403/fonts/titillium-web-v7-latin-200.ttf  |   Bin 0 -> 29976 bytes
 .../403/fonts/titillium-web-v7-latin-200.woff |   Bin 0 -> 16368 bytes
 .../fonts/titillium-web-v7-latin-200.woff2    |   Bin 0 -> 12404 bytes
 .../403/fonts/titillium-web-v7-latin-600.eot  |   Bin 0 -> 14585 bytes
 .../403/fonts/titillium-web-v7-latin-600.svg  |   275 +
 .../403/fonts/titillium-web-v7-latin-600.ttf  |   Bin 0 -> 29704 bytes
 .../403/fonts/titillium-web-v7-latin-600.woff |   Bin 0 -> 16336 bytes
 .../fonts/titillium-web-v7-latin-600.woff2    |   Bin 0 -> 12300 bytes
 .../403/fonts/titillium-web-v7-latin-700.eot  |   Bin 0 -> 13906 bytes
 .../403/fonts/titillium-web-v7-latin-700.svg  |   276 +
 .../403/fonts/titillium-web-v7-latin-700.ttf  |   Bin 0 -> 28704 bytes
 .../403/fonts/titillium-web-v7-latin-700.woff |   Bin 0 -> 15744 bytes
 .../fonts/titillium-web-v7-latin-700.woff2    |   Bin 0 -> 11720 bytes
 WebSites/errors/403/img/dropdown-arrow.png    |   Bin 0 -> 229 bytes
 WebSites/errors/403/img/ess-logo.svg          |    85 +
 .../errors/403/img/glyphicons-blackboard.png  |   Bin 0 -> 3779 bytes
 .../403/img/glyphicons-halflings-white.png    |   Bin 0 -> 8777 bytes
 .../errors/403/img/glyphicons-halflings.png   |   Bin 0 -> 12799 bytes
 WebSites/errors/403/img/glyphicons-log-in.png |   Bin 0 -> 3793 bytes
 .../errors/403/img/glyphicons-log-out.png     |   Bin 0 -> 3788 bytes
 WebSites/errors/403/img/icons/icon-114.png    |   Bin 0 -> 6650 bytes
 WebSites/errors/403/img/icons/icon-144.png    |   Bin 0 -> 9096 bytes
 WebSites/errors/403/img/icons/icon-57.png     |   Bin 0 -> 3509 bytes
 WebSites/errors/403/img/icons/icon-72.png     |   Bin 0 -> 3730 bytes
 .../errors/403/img/icons/pos_v01_dark@114.png |   Bin 0 -> 1809 bytes
 .../errors/403/img/icons/pos_v01_dark@120.png |   Bin 0 -> 1953 bytes
 .../errors/403/img/icons/pos_v01_dark@144.png |   Bin 0 -> 2379 bytes
 .../errors/403/img/icons/pos_v01_dark@152.png |   Bin 0 -> 2422 bytes
 .../errors/403/img/icons/pos_v01_dark@16.png  |   Bin 0 -> 330 bytes
 .../errors/403/img/icons/pos_v01_dark@180.png |   Bin 0 -> 2867 bytes
 .../errors/403/img/icons/pos_v01_dark@192.png |   Bin 0 -> 3143 bytes
 .../errors/403/img/icons/pos_v01_dark@194.png |   Bin 0 -> 3299 bytes
 .../errors/403/img/icons/pos_v01_dark@32.png  |   Bin 0 -> 558 bytes
 .../errors/403/img/icons/pos_v01_dark@57.png  |   Bin 0 -> 917 bytes
 .../errors/403/img/icons/pos_v01_dark@60.png  |   Bin 0 -> 968 bytes
 .../errors/403/img/icons/pos_v01_dark@72.png  |   Bin 0 -> 1187 bytes
 .../errors/403/img/icons/pos_v01_dark@76.png  |   Bin 0 -> 1263 bytes
 .../errors/403/img/icons/pos_v01_dark@96.png  |   Bin 0 -> 1578 bytes
 WebSites/errors/403/img/pos.png               |   Bin 0 -> 488107 bytes
 WebSites/errors/403/index.html                |   188 +
 WebSites/errors/403/js/bahnhofsuhr.js         |   566 +
 WebSites/errors/403/js/freeboard.js           |  3027 +++
 WebSites/errors/403/js/freeboard.min.js       |     2 +
 WebSites/errors/403/js/freeboard.min.js.map   |     1 +
 WebSites/errors/403/js/freeboard.plugins.js   |  1702 ++
 .../errors/403/js/freeboard.plugins.min.js    |     1 +
 .../403/js/freeboard.plugins.min.js.map       |     1 +
 .../errors/403/js/freeboard.thirdparty.js     | 19164 ++++++++++++++++
 .../errors/403/js/freeboard.thirdparty.min.js |    20 +
 WebSites/errors/403/js/freeboard_plugins.js   |  4730 ++++
 .../errors/403/js/freeboard_plugins.min.js    |     2 +
 .../403/js/freeboard_plugins.min.js.map       |     1 +
 .../errors/403/lib/css/freeboard/styles.css   |  2380 ++
 .../css/thirdparty/codemirror-ambiance.css    |    74 +
 .../403/lib/css/thirdparty/codemirror.css     |   272 +
 .../css/thirdparty/jquery.gridster.min.css    |     2 +
 .../403/lib/js/freeboard/DatasourceModel.js   |   107 +
 .../403/lib/js/freeboard/DeveloperConsole.js  |    95 +
 .../errors/403/lib/js/freeboard/DialogBox.js  |    55 +
 .../403/lib/js/freeboard/FreeboardModel.js    |   411 +
 .../403/lib/js/freeboard/FreeboardUI.js       |   440 +
 .../errors/403/lib/js/freeboard/JSEditor.js   |    63 +
 .../errors/403/lib/js/freeboard/PaneModel.js  |   110 +
 .../403/lib/js/freeboard/PluginEditor.js      |   543 +
 .../403/lib/js/freeboard/ValueEditor.js       |   346 +
 .../403/lib/js/freeboard/WidgetModel.js       |   209 +
 .../errors/403/lib/js/freeboard/freeboard.js  |   639 +
 .../403/lib/js/thirdparty/codemirror.js       |    21 +
 WebSites/errors/403/lib/js/thirdparty/head.js |     9 +
 .../errors/403/lib/js/thirdparty/jquery-ui.js | 15003 ++++++++++++
 .../403/lib/js/thirdparty/jquery.caret.js     |   139 +
 .../403/lib/js/thirdparty/jquery.gridster.js  |  3877 ++++
 .../errors/403/lib/js/thirdparty/jquery.js    |     6 +
 .../js/thirdparty/jquery.xdomainrequest.js    |     7 +
 .../errors/403/lib/js/thirdparty/knockout.js  |    94 +
 .../403/lib/js/thirdparty/underscore-min.map  |     1 +
 .../403/lib/js/thirdparty/underscore.js       |     6 +
 WebSites/errors/403/package.json              |    13 +
 .../freeboard/freeboard.datasources.js        |   653 +
 .../plugins/freeboard/freeboard.widgets.js    |  1048 +
 .../thirdparty/flot_extended.plugin.js        |   295 +
 .../thirdparty/jquery.keyframes.min.js        |     8 +
 .../thirdparty/jquery.sparkline.min.js        |     5 +
 .../403/plugins/thirdparty/justgage.1.0.1.js  |   491 +
 .../plugins/thirdparty/raphael.2.1.0.min.js   |    10 +
 .../plugins/thirdparty/widget.ragIndicator.js |   157 +
 .../403/test/casper/tests/smoke_test.js       |   105 +
 .../errors/403/test/casper/util/test_util.js  |    84 +
 WebSites/errors/403/test/fixtures/input.json  |    40 +
 WebSites/errors/403/test/run_browser_tests.sh |     3 +
 default.conf                                  |    18 +-
 151 files changed, 66778 insertions(+), 3 deletions(-)
 delete mode 100644 PythonServer/screens/__pycache__/__init__.cpython-37.pyc
 delete mode 100644 PythonServer/screens/__pycache__/contacts.cpython-37.pyc
 delete mode 100644 PythonServer/screens/__pycache__/instruments.cpython-37.pyc
 delete mode 100644 PythonServer/screens/__pycache__/interlocks.cpython-37.pyc
 delete mode 100644 PythonServer/screens/__pycache__/pos.cpython-37.pyc
 delete mode 100644 PythonServer/screens/__pycache__/ts2_cav.cpython-37.pyc
 delete mode 100644 PythonServer/screens/__pycache__/ts2_screens.cpython-37.pyc
 delete mode 100644 PythonServer/screens/__pycache__/ts2_tpcircuits.cpython-37.pyc
 create mode 100644 WebSites/errors/403/Dockerfile
 create mode 100644 WebSites/errors/403/Gruntfile.js
 create mode 100755 WebSites/errors/403/LICENSE
 create mode 100755 WebSites/errors/403/README.md
 create mode 100644 WebSites/errors/403/SlickNav/MIT-LICENSE.txt
 create mode 100644 WebSites/errors/403/SlickNav/README.md
 create mode 100644 WebSites/errors/403/SlickNav/bower.json
 create mode 100644 WebSites/errors/403/SlickNav/demo/index.html
 create mode 100644 WebSites/errors/403/SlickNav/demo/style.css
 create mode 100644 WebSites/errors/403/SlickNav/dist/jquery.slicknav.js
 create mode 100644 WebSites/errors/403/SlickNav/dist/jquery.slicknav.min.js
 create mode 100644 WebSites/errors/403/SlickNav/dist/slicknav.css
 create mode 100644 WebSites/errors/403/SlickNav/dist/slicknav.min.css
 create mode 100644 WebSites/errors/403/SlickNav/gulpfile.js
 create mode 100644 WebSites/errors/403/SlickNav/jquery.slicknav.js
 create mode 100644 WebSites/errors/403/SlickNav/package.json
 create mode 100644 WebSites/errors/403/SlickNav/scss/core.scss
 create mode 100644 WebSites/errors/403/SlickNav/scss/slicknav.scss
 create mode 100644 WebSites/errors/403/SlickNav/scss/theme.scss
 create mode 100644 WebSites/errors/403/css/ess-old.css
 create mode 100644 WebSites/errors/403/css/ess.css
 create mode 100644 WebSites/errors/403/css/freeboard.css
 create mode 100644 WebSites/errors/403/css/freeboard.min.css
 create mode 100644 WebSites/errors/403/dashboard.json
 create mode 100644 WebSites/errors/403/docker-compose.yml
 create mode 100755 WebSites/errors/403/docs/build-docs.sh
 create mode 100755 WebSites/errors/403/docs/docco-fb.css
 create mode 100755 WebSites/errors/403/docs/docco.css
 create mode 100644 WebSites/errors/403/docs/plugin_example.html
 create mode 100755 WebSites/errors/403/docs/public/fonts/aller-bold.eot
 create mode 100755 WebSites/errors/403/docs/public/fonts/aller-bold.ttf
 create mode 100755 WebSites/errors/403/docs/public/fonts/aller-bold.woff
 create mode 100755 WebSites/errors/403/docs/public/fonts/aller-light.eot
 create mode 100755 WebSites/errors/403/docs/public/fonts/aller-light.ttf
 create mode 100755 WebSites/errors/403/docs/public/fonts/aller-light.woff
 create mode 100755 WebSites/errors/403/docs/public/fonts/fleurons.eot
 create mode 100755 WebSites/errors/403/docs/public/fonts/fleurons.ttf
 create mode 100755 WebSites/errors/403/docs/public/fonts/fleurons.woff
 create mode 100755 WebSites/errors/403/docs/public/fonts/novecento-bold.eot
 create mode 100755 WebSites/errors/403/docs/public/fonts/novecento-bold.ttf
 create mode 100755 WebSites/errors/403/docs/public/fonts/novecento-bold.woff
 create mode 100755 WebSites/errors/403/docs/public/images/gray.png
 create mode 100755 WebSites/errors/403/docs/public/stylesheets/normalize.css
 create mode 100644 WebSites/errors/403/examples/altGuage.js
 create mode 100755 WebSites/errors/403/examples/plugin_example.js
 create mode 100755 WebSites/errors/403/examples/rl78.json
 create mode 100755 WebSites/errors/403/examples/weather.json
 create mode 100755 WebSites/errors/403/favicon.png
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-200.eot
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-200.svg
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-200.ttf
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-200.woff
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-200.woff2
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-600.eot
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-600.svg
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-600.ttf
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-600.woff
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-600.woff2
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-700.eot
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-700.svg
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-700.ttf
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-700.woff
 create mode 100644 WebSites/errors/403/fonts/titillium-web-v7-latin-700.woff2
 create mode 100755 WebSites/errors/403/img/dropdown-arrow.png
 create mode 100644 WebSites/errors/403/img/ess-logo.svg
 create mode 100644 WebSites/errors/403/img/glyphicons-blackboard.png
 create mode 100755 WebSites/errors/403/img/glyphicons-halflings-white.png
 create mode 100755 WebSites/errors/403/img/glyphicons-halflings.png
 create mode 100644 WebSites/errors/403/img/glyphicons-log-in.png
 create mode 100644 WebSites/errors/403/img/glyphicons-log-out.png
 create mode 100644 WebSites/errors/403/img/icons/icon-114.png
 create mode 100644 WebSites/errors/403/img/icons/icon-144.png
 create mode 100644 WebSites/errors/403/img/icons/icon-57.png
 create mode 100644 WebSites/errors/403/img/icons/icon-72.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@114.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@120.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@144.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@152.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@16.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@180.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@192.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@194.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@32.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@57.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@60.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@72.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@76.png
 create mode 100755 WebSites/errors/403/img/icons/pos_v01_dark@96.png
 create mode 100644 WebSites/errors/403/img/pos.png
 create mode 100644 WebSites/errors/403/index.html
 create mode 100644 WebSites/errors/403/js/bahnhofsuhr.js
 create mode 100644 WebSites/errors/403/js/freeboard.js
 create mode 100644 WebSites/errors/403/js/freeboard.min.js
 create mode 100644 WebSites/errors/403/js/freeboard.min.js.map
 create mode 100644 WebSites/errors/403/js/freeboard.plugins.js
 create mode 100644 WebSites/errors/403/js/freeboard.plugins.min.js
 create mode 100644 WebSites/errors/403/js/freeboard.plugins.min.js.map
 create mode 100644 WebSites/errors/403/js/freeboard.thirdparty.js
 create mode 100644 WebSites/errors/403/js/freeboard.thirdparty.min.js
 create mode 100644 WebSites/errors/403/js/freeboard_plugins.js
 create mode 100644 WebSites/errors/403/js/freeboard_plugins.min.js
 create mode 100644 WebSites/errors/403/js/freeboard_plugins.min.js.map
 create mode 100755 WebSites/errors/403/lib/css/freeboard/styles.css
 create mode 100644 WebSites/errors/403/lib/css/thirdparty/codemirror-ambiance.css
 create mode 100644 WebSites/errors/403/lib/css/thirdparty/codemirror.css
 create mode 100755 WebSites/errors/403/lib/css/thirdparty/jquery.gridster.min.css
 create mode 100644 WebSites/errors/403/lib/js/freeboard/DatasourceModel.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/DeveloperConsole.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/DialogBox.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/FreeboardModel.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/FreeboardUI.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/JSEditor.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/PaneModel.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/PluginEditor.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/ValueEditor.js
 create mode 100644 WebSites/errors/403/lib/js/freeboard/WidgetModel.js
 create mode 100755 WebSites/errors/403/lib/js/freeboard/freeboard.js
 create mode 100644 WebSites/errors/403/lib/js/thirdparty/codemirror.js
 create mode 100755 WebSites/errors/403/lib/js/thirdparty/head.js
 create mode 100755 WebSites/errors/403/lib/js/thirdparty/jquery-ui.js
 create mode 100755 WebSites/errors/403/lib/js/thirdparty/jquery.caret.js
 create mode 100755 WebSites/errors/403/lib/js/thirdparty/jquery.gridster.js
 create mode 100755 WebSites/errors/403/lib/js/thirdparty/jquery.js
 create mode 100644 WebSites/errors/403/lib/js/thirdparty/jquery.xdomainrequest.js
 create mode 100755 WebSites/errors/403/lib/js/thirdparty/knockout.js
 create mode 100644 WebSites/errors/403/lib/js/thirdparty/underscore-min.map
 create mode 100755 WebSites/errors/403/lib/js/thirdparty/underscore.js
 create mode 100644 WebSites/errors/403/package.json
 create mode 100755 WebSites/errors/403/plugins/freeboard/freeboard.datasources.js
 create mode 100755 WebSites/errors/403/plugins/freeboard/freeboard.widgets.js
 create mode 100755 WebSites/errors/403/plugins/thirdparty/flot_extended.plugin.js
 create mode 100644 WebSites/errors/403/plugins/thirdparty/jquery.keyframes.min.js
 create mode 100755 WebSites/errors/403/plugins/thirdparty/jquery.sparkline.min.js
 create mode 100755 WebSites/errors/403/plugins/thirdparty/justgage.1.0.1.js
 create mode 100755 WebSites/errors/403/plugins/thirdparty/raphael.2.1.0.min.js
 create mode 100644 WebSites/errors/403/plugins/thirdparty/widget.ragIndicator.js
 create mode 100644 WebSites/errors/403/test/casper/tests/smoke_test.js
 create mode 100644 WebSites/errors/403/test/casper/util/test_util.js
 create mode 100644 WebSites/errors/403/test/fixtures/input.json
 create mode 100644 WebSites/errors/403/test/run_browser_tests.sh

diff --git a/PythonServer/screens/__pycache__/__init__.cpython-37.pyc b/PythonServer/screens/__pycache__/__init__.cpython-37.pyc
deleted file mode 100644
index d6319ad97a6ddc5c3e8bf6644de99f072d143121..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 111
zcmZ?b<>g`kg8XYyaUl9Jh=2h`Aj1KOi&=m~3PUi1CZpd<h9ZzKg7_t&pIA_!Uz}W&
knwnRvA0MBYmst`YuUAlci^C>2KczG$)efZNGY~TX0Lv#9AOHXW

diff --git a/PythonServer/screens/__pycache__/contacts.cpython-37.pyc b/PythonServer/screens/__pycache__/contacts.cpython-37.pyc
deleted file mode 100644
index e6ef137ebb07aa364285884677410e8c26e9a6ad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2294
zcmZuz&2QT_6elUkkw4;mv`xRVbYJb}ZH>F_Rs>ryH`oHSc2@^WXKWKxJvCJzOA0CH
z!;nwybzP1-4Gu62*gvs9gr@;JwZ|QI+9TyOv1<|}AK%ySJ&NY@SF^Jvf-U>q`{`Ag
zkbl(Xq?t(E!6AOY2?)@Tbn=yUsNS;<)2q=j^lEmkPJt>N7S43-j@>PGih6H^rEa-X
zrsQh^CRoo2Sbq7L(WwA!lUm^=B9LZ{NjnT8k+_~Ot-jA=QKPc3`IP%EcuM7@F(mHb
z5X(6EM1_N)P+-pqhGKw;E5az(vg*ZA>UybYd))UUPuZ%bRs%-^hd7T@N`^Ee$CQ!`
zR|iu=d)llST%Clp9Vdu_)Ny24q;cYiU^{X{jM)@^_=L}(&Yy%Aary63-A$6Z(0HPL
zg1?#^@&bz0i3{bD&=T!mJQ3&Nt)8HGRB2#Sj<4g;asGu|m8Z%PEGQs712z<)1ZAke
zEL33*=3xOA;T)WY3$O$i;SyYiD{vK-;VoE!Yw$L_1Mk9n@c#Do0S(B29js*ZF8Oh3
zV5DS+W(Hh`8$Yv*WyTuWeY8c6=)rPEcG%E3Mp_&l{)<-T!5<kztKSAjKr&P5DvQfx
z$2_9k9?_PPTqf|rYiVJ``EZRKE~hgiJsWDz*huox8rdSz3MHza$WLY8lZZVcyD#A5
zQ{V8(sn^#u`q_Q4MbhH1l$pnLU}e^@3^!r*n2qRqPNx;P1)n}+zswH`Sz$PvS?U&S
z;YI$IJS2})G}Szs{k<GLtq$klGo`h=w?z(a=#y9(7<shA`Qz7-4;K`DM0bBx{_sY9
z-t5mc+pU}T8V_%`5^=k|ad(_?Uu^dm&T2e(8b|(wPWxW}{8^p*?R&Y}BzL{*2I08B
z&9;I#ch-Efom<b3Gbd5dGJYI{{-p5~kXGXjkX9oHsh$OCHO3P`yD1Q@Mh>w!ZmKcH
zGHx|SAY*5Y-2R10(;Q~fdMeI_%4I@xW6Eb~H8v)3Hb&`8TIV<u+y`y_X_m%AMQ)BY
zb}R5S+wK0vH&jP>Z~B;;+4_{s)~9B+KAGA2^vu>Z&L+Ox6}OkhPB+F^Gv?Cj;VNV?
z4Z6Na-EQ(yy}r`gbHkqBH=|W=RT615-KM0sq`eV6QP1sR|7v~D<@Npj{W`d*d-|I0
zh&YmTe;b`(`}@n<qO|-Z@PuR!zSGaKv;xugQ(43(HuAmH2VOx{K8usIc-)JC&neo}
zzAWf<6Cr1~pM<IcnQ`Jr(%R=iiW?QSv_$CpiCpwT-{sC&dL;<N2&Xo~ZROTT_Jl0y
zm>dYaRI+4G78O>$wbO3mXlPrd_5^=ex_;!7DihM+y{L+W_y#9JE7(h;US%dyOKhGp
zswf*}i`W@mrUiP1DcyNi(l!-(33)cH>V1E4qUIn-vu3FZ7r9*@D_qIJ&j!6v(G|zp
z?YUtt(FKgxFqSiss+z}DxZJ`??R0swscmXbZI)k9(kp7ZhLdEmkPBTmO~N=0gU47I
z6(tL!)kwlrS`mJZL$1m+*Egk@>OTTOw5<!Wc0DZ$X|LtMf1ygKP{)U%=#D2sE9`%J
Ccw#*O

diff --git a/PythonServer/screens/__pycache__/instruments.cpython-37.pyc b/PythonServer/screens/__pycache__/instruments.cpython-37.pyc
deleted file mode 100644
index 96ccee34ce58729fb60e575bd8ac0599d73eddd8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5628
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
M1ccZRLIFbNf6U>8D*ylh

diff --git a/PythonServer/screens/__pycache__/interlocks.cpython-37.pyc b/PythonServer/screens/__pycache__/interlocks.cpython-37.pyc
deleted file mode 100644
index ce0f354ec393947f40e270dc5a59e54c7eb5946f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1846
zcmah~&u<z>6rR~1c#Sb3j_cZv?WR4nq7ufrRmf^16H-uZOj!yJQoCO5jGc9s-DP$$
zHd;>3wQc@@9<bC)|DmdyQ>C7A>$&QoZx(D!5~(wqH*e;>`QA5g;O*YxViG~~esBM<
zr6Kf}Sll!PlqWEPFF+7Pu!Gv;8Mkq~mf8}`k|TGNwt~^uh{!~Fg@{6xE4i%_tfQ>@
z22P`D7V|{o1*0ah#QLU5pge&QY=EFh-~uKl(ks-K$7pSZsDP8;8QTphb3E&1pj(Vm
z*Ak~i6SEAX2qRbq5uy=}&^5*=g4qC;fPkx6nF&{}8HVlJp<(caAoP4Auuomn$x2)a
zsB^+p@c9j~Ihg)g&zruV58`-1e#&6mzhojo!YL36!bv<>n>vgsZr?<*u<(H<4y0kk
zTz`UHaa(ayqLKueBN~|}NwPpvWRav#(?e{dp>(ko;iu^Pm7yG>GaSj}9?ASDMN%a1
zqVDG{^cr8RN9ar%$=9F<$CrP@DdpnVNP<(p3}qWditrUD*3g;4{+MX0*k42B{;e%B
z*;(2}mmA^S#7`p+uB3@&c^9=%_g{=ezp+nk&%t(ty2s>$DK=S|qTcF&(>-pXaDJ4G
zlxsXxBXzVuJ|wHx(nMby>tTwllZRK*&zWH&N{kjGRlIBqev99tIywT)O^@01%g>Q3
z9icEix<@vISGU|k7oWy?*c!@Xwxi7TE%VWRp})r67XlA{C7ad3Rz+u4Zs+k%p`z=#
ziW{Ef$_JG~(d$$^>+qYwNAKEex?U(ZYm{~Dus+zBae)1kT%87mqT>a${uX>}ed>Aa
z*8U#&rfC&mjPVDX`=z}`%&)dr$vrFPc6J^YS|NMpczvMv@r=22@Lg<gQuco?W$%v5
zGzqmnE9T10iU?WQx5=ST-TIv*%-9cYr$IYD(0KTE67&Li*0=Rivp#q<W4ujqNpBq1
zjDym_;b3#d1G1zSDvf>XWyvjeNPY0hjCl&sEL9uEUJTKInv*hnp=WeF__uqEt38+l
zJ|Eg08iZ!Ye<P{}SI<qSM+b_#ZEbVJ<*Hfbc!z5h_e7M5%fV*;++_KFzn>>&Xx^;?
zXMyK(+&={vXn%f{UE(VBZ7bkXtr-^*uG)c4Lq2bLu1l?u5++J6TL8gT=Ji~{7KN_F
zSSsmt{D99f>N}=Ix#B^#x!PxT2n#`+tARtQ&zCHRn#`EFV3OFuBu;jYB?PSOp9ee{
zb25l+g<SH_`MiiVUTR^-H{#HmxZH{D(75uA1$+|#g7sWMH`oP%@FPiqTDKx)u!M!C
z!B~PW;SHR?>rx7*a7Idk6nz!;G@OptgXMSXBS2TPs;J1W*`ZL8lLkB&={Z7A8Ai8f
zI%7**ZrNwR;0`}gO_?Cc#7l|`$HiE~niB716YPPot_raU0v<p93fb;y{4I#R-UrCF
S-7$|ZMdc1e3_yjRlKunV9M|;#

diff --git a/PythonServer/screens/__pycache__/pos.cpython-37.pyc b/PythonServer/screens/__pycache__/pos.cpython-37.pyc
deleted file mode 100644
index b7cff5bd6567f036dddfccf4174c289340e297cd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3552
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

diff --git a/PythonServer/screens/__pycache__/ts2_cav.cpython-37.pyc b/PythonServer/screens/__pycache__/ts2_cav.cpython-37.pyc
deleted file mode 100644
index cba9b53701a046456fbe06ab3d19cfab7823f976..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2463
zcmai0&2Jk;6rY*hbvBNjCTU5NkS67;#X#b8ZKP5~P_;z}iCWM^O|b;4)xJ$wYrS62
ztm7nFUy`1X5WR5Y;7DA!@z-#e6B4K1IQPVxwUaawXl68T-pu^wef-Aq+Xv-xkznim
z+5G+&)c#hBvu2`lABVV$0tnEEG)FUS(tORD3}+S@ZL?`o@&y3{%;yBmz&tUU7SJtH
zv0mbB(x^~b*#3bB9{6f~))*@HafoFU0a13*CI$AKG>wt9rU@3>Dadjv9M|{uw|pK1
zv9GSGre*`jLmc87ij)j#MouXu8O|<-h}UVOVsHhOw(Ev*n7Xc<5@{!KMYtDxQH4oU
z1ko<H5c50X6F9xPUiFfsDsq3KI(EOF9CAgCLI|Z0TBJwwmx5bA^Wjqkz^2fvIPxg}
zz+IK3N)Rk4zy#PZ2}PKK5|m*YuD}e;!W>+MYw!ll!*y7IMOcD2VHs|~3asv}4roXQ
z>|iCMkH~lP10y9Zni+5t-uj7UEHgGq_p2T9f*veoq{W8DDeB_*@E^Qo9{iRuy!GqA
z2uWrtth%vCS|)!r)-1KZNZ{@Bv%+}iolSDMoKB2!HoSYn#wYJ>k{uGSP@?+T`Ni3{
zBxcV@_ZV(n*oNB|R?l^`(>>lH>Ey7OnWuDMW!7*C-iOL58|xp8^t1#Y!bd0U=b1qv
zD-6q-rCxmpf27}#C*+xmW_lD&zcuonP7klZnnHD3JLKS2&cn*U7)3jrIX#bjIIHv*
zwELs7hrgip#?j5~EoW`x&c?$hkMBL?hn=<U&(-qY<G>S7y{H%b58{p%;b;*xEuyYP
ze5^&>)gnI8Asj6qj+PHc%ZH=o!_o5LX!&rod^lP@YFa*OT0Ux8K5AM%YFa*OT0Ux8
zK5AM%>e_7U+HC9EZ0p)=>)LGV+HC8uWxI_fuH^O7j@#~Fed%y%^>7w)G7Z~-NWFIQ
zQq?JG?dN|LX1wmNOCpVi*N}8W+F!=IsxTcMEmikDUhVh$Rq#^pyzaC_CziCohc>YN
z^;u<3T0s)}Lb9))=5<S2q1XyiIq7%eIPlW|xGL{_3Wc<Irxyb+E8Wa(S<q`ILQe1?
zi9A1$W+w?^Y4v%S;zC6&EfEDlBIo=l@VI*^yCQ^Q?58rp3(BmK><d}UV{#$%Q^}Hj
zIjMY&mUh}s+}yRTGTRNKATP8dVdo}zFIM4-O%#MaU?x`Ac{W2CRho@s4m+dEv_O|w
ziI(ULE230=ffW!jov)8(FIQx=+o)Ko`o~^7!0KOg@u8p>DZS*n-JTbXPV(x`Z=?Iy
zf>ZUIs|dMzLzQh_`)z8Q`A((4ud34pC2pX=XU{)(!gw$L?#NO9Wl-9iqc}cQ-wHzc
JK&#kG>|azQi{=0T

diff --git a/PythonServer/screens/__pycache__/ts2_screens.cpython-37.pyc b/PythonServer/screens/__pycache__/ts2_screens.cpython-37.pyc
deleted file mode 100644
index 80600d15f3c869fd68c318cb628db4c9c793a139..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1723
zcmah~&rcgi6rP#gHH$F>NJ4>9ROQgh2QY>d5oEQfq^cq{RvJ+3SZcScoq;Y|uh%nc
zjIH&FsJE*511i->z4X87sfRgL>M6G#dg`g~t$*OCM9gU3yqWjSH*enTy#0K3HcOy1
z{-}NX%M>Ah;b2ruP!6D}JrJC58j#wcr!|_6S&c!@0;6u$OiI2a+~DRb!cAdb8a0d4
zBa*k?z-m&?Q=K{fUJ93cI35)S$^kUB20{?z1y0J@D^fECY&DZxz?0DnvD$W&Cxr;r
zQQCR991Hdav_oj>9*CIqX+o|jB?<HnxCs=roHrywwe2{5=*NzuXH?vX9Oa*eZjfi%
zR3bQ$7GQoO5&}a0eZSyFQDL}kVZw#Ys3S2%h*GE!nx);<3B<t3&Cy;SMGzERfniU*
z{Q+k2z<5}0@eH5hHlOC%(`=9Wq{lAS6Z)8Zv(z(Uaz+z_&+y!jEMbXJBFzUC@|s?(
zCghCujVsVqwevTuGB18j7_9oaXZR#B5sNEU$eAgBA8HoPuMj>vwq=Ghb0yMQi>HP-
zo8P%)L(6=LR7mq5O0bUX*S42ntCD7wFI;o;#cS5F4m{0jg~ZeSY+_!~o|Rbr8Ge`F
zyJAEA{y>j&e2Kqz$$pyeWs*#PHnH$dEASb9O`ek~XyM$zoA$v=60$0Z=lXZ}GNPIX
z6>{-W8i)0sG4QrOe>L{JzkvE{+WZdr;QLr9cUKSP(Z=zU!)N=4veVc&{$gXN`0!D2
z|AiZL9~>WTZ)_E}4j+Ftw(f236nFNY3ReN5CEkVE-I~CBIO2K!bj-80yLT&Ma-W+y
z9^K0Ea02m;^Xz_dJEl0vb92nLF=of`>~n4_ZaDP@ytjtbRttKir(?e^RP5HHH~4O~
zb)JUL3^%<^O|(&V%bIR!`$>3$54F=>FPyuw&~CR2+>PD0-r<>QgqpTbfd|T;pXC>|
zB_iKbnmv1wzGZFs>PW<T+G~WN@M6IwzCSqwLR+%Y3b~v`-AuVG-l|7RPe~C4t|zqF
zh(xHZw)A5dpy%3Bfe?{i^a9~Z=dBZFxvz%%<fmi?X^rSy>1^tg!+kH-EIQZIxYuB4
z$Mwibx3=+gCw?H(<TDU<N+DYzx~obc2wi3-WSb>6PZ>qchPDWm(KVW(t1L%zbe?5F
zVqJzgo6e=<?*0E~DBv#VEzF9cTNjWOvkqJsZw0959H-fGgMlT@c=BU#VZuSoXA-@X
zc$awMG#}d3Hq)7WM&3p1GKvpC!1brU0zW)W^Kpv0iBQ|6fghh@?o_x3utLqT{{U|_
Buw?)M

diff --git a/PythonServer/screens/__pycache__/ts2_tpcircuits.cpython-37.pyc b/PythonServer/screens/__pycache__/ts2_tpcircuits.cpython-37.pyc
deleted file mode 100644
index dff3da8d1820ce588b26d9992e2ab930abe71810..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2032
zcmah~&u`l{6ecOjksT*Z-7HJ8Bx`rr=0jrF8L*@Xwqofp3}}t43F^+kCI}*vD3E2D
zl;b3jPw917Pdn}40K4q}*x#@NPX%`BZRef#o@D38(8Uz^_(*>I_>mOe`)X>cK%lh$
zZ2tI%O~_x^85I+p$57P<7*041NHc3`lcs&vWYDs}Xqioul5Yq%xcQ23Q<&#Q)8cfO
zl&!b0n$*iw=k^YzaJh&5QDNXbhN_mp2!g!8NjZB(nnuRfG`R&lIXxSzniEH!FTJiG
zt6fhD5qijg1zQ8^HdHkWCME-#kPAvl0<8l|frZw~hD4~g9mfy-*m3lvirbN+{DaU9
z%1oO|1pCqg%<n`_K=aQ^#f_qhO7~Nhn=00#Q;8RaK!pyW1$wr86O>6^8|~;(#6iJD
zC8(+9UtknZj;H1p&+!Rv^E@x`NnYere45|kGyE<u9hCaiCw+FZlF%pQhq=BHlOviK
z{2rhEi6tyCwn(SeAg}4kVnUACz_<Wk9iILTtIU(%5(cY&?HfKxOvK`f1#)D{H$%_D
z@dd))yPV4nN9MN3=~6r~#M%7)b2glr-y#hXu26#CX#Q&MdlIsjq;tp@uDJQ)73-xB
zJe|V^iSvU(VqVa`l~{vG{sCXQU_*a7^W!34;UAu}pJ)2HBsZ8!EPUw({GZ>E=j0`-
zna<SocCy{$>A@X-A5op1208gSy@!>)k*OWbTwE$2+(rL2?L^22f6asX+5NrU+G_P-
zb^H0VN89qWz4~--wOW1n=$UZU3pePB|3TDlL+pKxl;aS!v557ti0bF#cByWRMQn~m
zj6Ln<`fVILc&DF@Mcm4Pce;7&yQGNmO0VnqX!QC|o@TEPN;hijx4(aSnz8#_=h%ZN
zS#-N`+iA5SHnpX;y3i_}kNuWVvD=E?VvN()ar(=d;hMLmi8ktPUDK+zzYX^>sGXiY
zs2sbp((Cmq+>PD;#;haN4mIr^02P!sUzSVS5|QsI&30a-p-)@B+7+?Rd+jh3UM#r8
zL?I`^XiK)cA(vC=n<<yYyRAs+2`Qq$^@KLtkqEWblYR^x6t6862odR$7YJ86Hx60g
zz8daRo{%}DHKJps3#lfD`(CVBbgc8ZSJt)TR^+5x+jzizKM-lG&J1KSppe}V<*F?(
zgnr6Qh|F_rhBAtt4YdRxqf0bL7g>=O=?p7?#cv+QY&xCx&*tA5&4IpNwlI%`Zc9KO
zDLC+Kyc?ijbevAt4YHXuLC8-)#Wjr>`y~pM_@a2|G=13AHq()EPTs@Wc{Iyl;3r7)
drym}q87xJ;i%{EJnT{_o&nVmjSm7(Oe*tSt4+Q`K

diff --git a/PythonServer/screens/contacts.py b/PythonServer/screens/contacts.py
index 8996834..632097a 100755
--- a/PythonServer/screens/contacts.py
+++ b/PythonServer/screens/contacts.py
@@ -13,7 +13,7 @@ class contactsScreen(Thread):
 
     def run(self):
         pvs = ['NSO-LCR:Ops:SID','NSO-LCR:Ops:Msg','NSO-LCR:Ops:Phone','NSO-LCR:Ops:MSL','NSO-LCR:Ops:MSLPhone','NSO-LCR:Ops:MSLEmail',
-               'NSO-LCR:Ops:SID','NSO-LCR:Ops:TSMsg','NSO-LCR:Ops:TSPhone','NSO-LCR:Ops:TSSL','NSO-LCR:Ops:TSMobile','NSO-LCR:Ops:TSEmail',
+               'NSO-LCR:Ops:TSMsg','NSO-LCR:Ops:TSPhone','NSO-LCR:Ops:TSSL','NSO-LCR:Ops:TSMobile','NSO-LCR:Ops:TSEmail',
                'NSO-LCR:Ops:OCMsg','NSO-LCR:Ops:OCPhone','NSO-LCR:Ops:OC','NSO-LCR:Ops:OCMobile','NSO-LCR:Ops:OCEmail',
                'NSO-LCR:Ops:OCCMsg','NSO-LCR:Ops:OCCPhone','NSO-LCR:Ops:OCC','NSO-LCR:Ops:OCCMobile','NSO-LCR:Ops:OCCEmail',
                'NSO-LCR:Ops:OCIMsg','NSO-LCR:Ops:OCIPhone','NSO-LCR:Ops:OCI','NSO-LCR:Ops:OCIMobile','NSO-LCR:Ops:OCIEmail',
diff --git a/WebSites/contacts/dashboard.json b/WebSites/contacts/dashboard.json
index fb4dced..9554599 100644
--- a/WebSites/contacts/dashboard.json
+++ b/WebSites/contacts/dashboard.json
@@ -23,7 +23,7 @@
 				{
 					"type": "html",
 					"settings": {
-						"html": "datasources[\"Clock\"][\"numeric_value\"]; // trick to trigger the update\nvar cols = document.getElementsByClassName('gs_w')[0].getAttribute('data-sizex');\ndocument.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"\";\nif (cols == 4){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 56px; color:#ffffff !important; position: relative; bottom: 35px; left: 280px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</div></img></div>\";\n}\nif (cols == 3){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 46px; color:#ffffff !important; position: relative; bottom: 45px; left: 200px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</div></img></div>\";\n}\n\nif (cols == 2){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 100px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</div></img></div>\";\n}\nif (cols == 1){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 30px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"></div></img></div>\";\n    document.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"Public Operations Screen\";\n}\n\nreturn text",
+						"html": "datasources[\"Clock\"][\"numeric_value\"]; // trick to trigger the update\nvar cols = document.getElementsByClassName('gs_w')[0].getAttribute('data-sizex');\ndocument.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"\";\nif (cols == 4){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 56px; color:#ffffff !important; position: relative; bottom: 35px; left: 280px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</div></img></div>\";\n}\nif (cols == 3){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 46px; color:#ffffff !important; position: relative; bottom: 45px; left: 200px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</div></img></div>\";\n}\n\nif (cols == 2){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 100px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Contacts</div></img></div>\";\n}\nif (cols == 1){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"../img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 30px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"></div></img></div>\";\n    document.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"Contacts\";\n}\n\nreturn text",
 						"height": 2
 					}
 				}
diff --git a/WebSites/errors/403/Dockerfile b/WebSites/errors/403/Dockerfile
new file mode 100644
index 0000000..9bce136
--- /dev/null
+++ b/WebSites/errors/403/Dockerfile
@@ -0,0 +1,20 @@
+FROM node:6
+
+RUN mkdir -p /usr/share/nginx/html
+
+COPY . /usr/share/nginx/html/
+
+RUN chown -R node:node /usr/share/nginx/html
+
+USER node
+
+WORKDIR /usr/share/nginx/html
+
+RUN npm install; \
+    npm install grunt-cli underscore
+
+RUN ./node_modules/.bin/grunt
+
+VOLUME ["/usr/share/nginx/html"]
+
+CMD ["bash"]
diff --git a/WebSites/errors/403/Gruntfile.js b/WebSites/errors/403/Gruntfile.js
new file mode 100644
index 0000000..f795d76
--- /dev/null
+++ b/WebSites/errors/403/Gruntfile.js
@@ -0,0 +1,112 @@
+module.exports = function(grunt) {
+    grunt.initConfig({
+        pkg: grunt.file.readJSON('package.json'),
+        concat: {
+            css: {
+                src: [
+                    'lib/css/thirdparty/*.css',
+                    'lib/css/freeboard/styles.css'
+                ],
+                dest: 'css/freeboard.css'
+            },
+            thirdparty : {
+                src : [
+                    [
+                        'lib/js/thirdparty/head.js',
+                        'lib/js/thirdparty/jquery.js',
+                        'lib/js/thirdparty/jquery-ui.js',
+                        'lib/js/thirdparty/knockout.js',
+                        'lib/js/thirdparty/underscore.js',
+                        'lib/js/thirdparty/jquery.gridster.js',
+                        'lib/js/thirdparty/jquery.caret.js',
+						'lib/js/thirdparty/jquery.xdomainrequest.js',
+                        'lib/js/thirdparty/codemirror.js',
+                    ]
+                ],
+                dest : 'js/freeboard.thirdparty.js'
+            },
+			fb : {
+				src : [
+					'lib/js/freeboard/DatasourceModel.js',
+					'lib/js/freeboard/DeveloperConsole.js',
+					'lib/js/freeboard/DialogBox.js',
+					'lib/js/freeboard/FreeboardModel.js',
+					'lib/js/freeboard/FreeboardUI.js',
+					'lib/js/freeboard/JSEditor.js',
+					'lib/js/freeboard/PaneModel.js',
+					'lib/js/freeboard/PluginEditor.js',
+					'lib/js/freeboard/ValueEditor.js',
+					'lib/js/freeboard/WidgetModel.js',
+					'lib/js/freeboard/freeboard.js',
+				],
+				dest : 'js/freeboard.js'
+			},
+            plugins : {
+                src : [
+                    'plugins/freeboard/*.js'
+                ],
+                dest : 'js/freeboard.plugins.js'
+            },
+            'fb_plugins' : {
+                src : [
+                    'js/freeboard.js',
+                    'js/freeboard.plugins.js'
+                ],
+                dest : 'js/freeboard_plugins.js'
+            }
+        },
+        cssmin : {
+            css:{
+                src: 'css/freeboard.css',
+                dest: 'css/freeboard.min.css'
+            }
+        },
+        uglify : {
+            fb: {
+                files: {
+                    'js/freeboard.min.js' : [ 'js/freeboard.js' ]
+                }
+            },
+            plugins: {
+                files: {
+                    'js/freeboard.plugins.min.js' : [ 'js/freeboard.plugins.js' ]
+                }
+            },
+            thirdparty :{
+                options: {
+                    mangle : false,
+                    beautify : false,
+                    compress: {}
+                },
+                files: {
+                    'js/freeboard.thirdparty.min.js' : [ 'js/freeboard.thirdparty.js' ]
+                }
+            },
+            'fb_plugins': {
+                files: {
+                    'js/freeboard_plugins.min.js' : [ 'js/freeboard_plugins.js' ]
+                }
+            }
+        },
+        'string-replace': {
+            css: {
+                files: {
+                    'css/': 'css/*.css'
+                },
+                options: {
+                    replacements: [{
+                        pattern: /..\/..\/..\/img/ig,
+                        replacement: '../img'
+                    }]
+                }
+            }
+        }
+    });
+
+    grunt.loadNpmTasks('grunt-contrib-concat');
+    grunt.loadNpmTasks('grunt-contrib-uglify');
+    grunt.loadNpmTasks('grunt-contrib-watch');
+    grunt.loadNpmTasks('grunt-contrib-cssmin');
+    grunt.loadNpmTasks('grunt-string-replace');
+    grunt.registerTask('default', [ 'concat:css', 'cssmin:css', 'concat:fb', 'concat:thirdparty', 'concat:plugins', 'concat:fb_plugins', 'uglify:fb', 'uglify:plugins', 'uglify:fb_plugins', 'uglify:thirdparty', 'string-replace:css' ]);
+};
diff --git a/WebSites/errors/403/LICENSE b/WebSites/errors/403/LICENSE
new file mode 100755
index 0000000..d0b38e3
--- /dev/null
+++ b/WebSites/errors/403/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Jim Heising and Bug Labs, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/WebSites/errors/403/README.md b/WebSites/errors/403/README.md
new file mode 100755
index 0000000..1794b5b
--- /dev/null
+++ b/WebSites/errors/403/README.md
@@ -0,0 +1,182 @@
+freeboard
+==========
+
+**free·board** (noun) *\ˈfrē-ˌbȯrd\*
+
+1. the distance between the waterline and the main deck or weather deck of a ship or between the level of the water and the upper edge of the side of a small boat.
+2. the act of freeing data from below the "waterline" and exposing it to the world.
+3. a damn-sexy, open source real-time dashboard builder/viewer for IOT and other web mashups.
+
+### Demo
+http://freeboard.github.io/freeboard
+
+https://freeboard.io
+
+### Screenshots
+![Weather](https://raw.github.com/Freeboard/branding/master/screenshots/freeboard-screenshot-1.jpg)
+
+### What is It?
+
+Freeboard is a turn-key HTML-based "engine" for dashboards. Besides a nice looking layout engine, it provides a plugin architecture for creating datasources (which fetch data) and widgets (which display data)— freeboard then does all the work to connect the two together. Another feature of freeboard is its ability to run entirely in the browser as a single-page static web app without the need for a server. The feature makes it extremely attractive as a front-end for embedded devices which may have limited ability to serve complex and dynamic web pages.
+
+The code here is the client-side portion of what you see when you visit a freeboard at http://freeboard.io. It does not include any of the server-side code for user management, saving to a database or public/private functionality— this is left up to you to implement should you want to use freeboard as an online service.
+
+### How to Use
+
+Freeboard can be run entirely from a local hard drive. Simply download/clone the repository and open index.html. When using Chrome, you may run into issues with CORS when accessing JSON based APIs if you load from your local hard-drive— in this case you can switch to using JSONP or load index.html and run from a local or remote web server.
+
+1. git clone https://github.com/Freeboard/freeboard.git
+2. cd freeboard
+3. npm install
+4. grunt
+
+Then run a index.html or index-dev.html through a webserver.
+
+### API
+
+While freeboard runs as a stand-alone app out of the box, you can augment and control it from javascript with a simple API. All API calls are made on the `freeboard` singleton object.
+
+-------
+
+**freeboard.initialize(allowEdit, [callback])**
+
+Must be called first to initialize freeboard.
+
+> **allowEdit** (boolean) - Sets the initial state of freeboard to allow or disallow editing.
+
+> **callback** (function) - Function that will be called back when freeboard has finished initializing.
+
+-------
+
+**freeboard.newDashboard()**
+
+Clear the contents of the freeboard and initialize a new dashboard.
+
+-------
+
+**freeboard.serialize()**
+
+Serializes the current dashboard and returns a javascript object.
+
+-------
+
+**freeboard.loadDashboard(configuration, [callback])**
+
+Load the dashboard from a serialized dashboard object.
+
+> **configuration** (object) - A javascript object containing the configuration of a dashboard. Normally this will be an object that has been created and saved via the `freeboard.serialize()` function.
+
+> **callback** (function) - Function that will be called back when the dashboard has finished loading.
+
+-------
+
+**freeboard.setEditing(editing, animate)**
+
+Programatically control the editing state of the of dashboard.
+
+> **editing** (bool) - Set to true or false to modify the view-only or editing state of the board.
+
+> **animate** (function) - Set to true or false to animate the modification of the editing state. This animates the top-tab dropdown (the part where you can edit datasources and such).
+
+-------
+
+**freeboard.isEditing()**
+
+Returns boolean depending on whether the dashboard is in in the view-only or edit state.
+
+-------
+
+**freeboard.loadDatasourcePlugin(plugin)**
+
+Register a datasource plugin. See http://freeboard.github.io/freeboard/docs/plugin_example.html for information on creating plugins.
+
+> **plugin** (object) - A plugin definition object as defined at http://freeboard.github.io/freeboard/docs/plugin_example.html
+
+-------
+
+**freeboard.loadWidgetPlugin(plugin)**
+
+Register a widget plugin. See http://freeboard.github.io/freeboard/docs/plugin_example.html for information on creating plugins.
+
+> **plugin** (object) - A plugin definition object as defined at http://freeboard.github.io/freeboard/docs/plugin_example.html
+
+-------
+
+**freeboard.showLoadingIndicator(show)**
+
+Show/hide the loading indicator. The loading indicator will display an indicator over the entire board that can be useful when you have some code that takes a while and you want to give a visual indication and to prevent the user from modifying the board.
+
+> **show** (boolean) - Set to true or false to show or hide the loading indicator.
+
+-------
+
+**freeboard.showDialog(contentElement, title, okButtonTitle, cancelButtonTitle, okCallback)**
+
+Show a styled dialog box with custom content.
+
+> **contentElement** (DOM or jquery element) - The DOM or jquery element to display within the content of the dialog box.
+
+> **title** (string) - The title of the dialog box displayed on the top left.
+
+> **okButtonTitle** (string) - The string to display in the button that will be used as the OK button. A null or undefined value will result in no button being displayed.
+
+> **cancelButtonTitle** (string) - The string to display in the button that will be used as the Cancel button. A null or undefined value will result in no button being displayed.
+
+> **okCallback** (function) - A function that will be called if the user presses the OK button.
+
+-------
+
+**freeboard.getDatasourceSettings(datasourceName)**
+
+Returns an object with the current settings for a datasource or null if no datasource with the given name is found.
+
+> **datasourceName** (string) - The name of a datasource in the dashboard.
+
+-------
+
+**freeboard.setDatasourceSettings(datasourceName, settings)**
+
+Updates settings on a datasource.
+
+> **datasourceName** (string) - The name of a datasource in the dashboard.
+
+> **settings** (object) - An object of key-value pairs for the settings of the datasource. The values specified here will be combined with the current settings, so you do not need specify every setting if you only want to update one. To get a list of possible settings for a datasource, consult the datasource documentation or code, or call the freeboard.getDatasourceSettings function.
+
+-------
+
+**freeboard.on(eventName, callback)**
+
+Attach to a global freeboard event.
+
+> **eventName** (string) - The name of a global event. The following events are supported:
+
+> **"dashboard_loaded"** - Occurs after a dashboard has been loaded.
+
+> **"initialized"** - Occurs after freeboard has first been initialized.
+
+> **callback** (function) - The callback function to be called when the event occurs.
+
+-------
+
+### Building Plugins
+
+See http://freeboard.github.io/freeboard/docs/plugin_example.html for info on how to build plugins for freeboard.
+
+### Testing Plugins
+
+Just edit index.html and add a link to your javascript file near the end of the head.js script loader, like:
+
+```javascript
+...
+"path/to/my/plugin/file.js",
+$(function()
+{ //DOM Ready
+    freeboard.initialize(true);
+});
+```
+
+### Copyright 
+
+Copyright © 2013 Jim Heising (https://github.com/jheising)<br/>Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)<br/>Licensed under the **MIT** license.
+
+---
diff --git a/WebSites/errors/403/SlickNav/MIT-LICENSE.txt b/WebSites/errors/403/SlickNav/MIT-LICENSE.txt
new file mode 100644
index 0000000..0f09535
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/MIT-LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2016 Josh Cope
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/WebSites/errors/403/SlickNav/README.md b/WebSites/errors/403/SlickNav/README.md
new file mode 100644
index 0000000..d63e3f3
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/README.md
@@ -0,0 +1,106 @@
+# SlickNav v1.0.10
+## Responsive Mobile Menu jQuery Plugin
+
+[![Join the chat at https://gitter.im/ComputerWolf/SlickNav](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ComputerWolf/SlickNav?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/slicknav/badge?style=rounded)](https://www.jsdelivr.com/package/npm/slicknav)
+
+### [SlickNav.io](http://slicknav.io)
+
+### Features
+* Multi-level menu support
+* Flexible, simple markup
+* Cross-browser compatibility
+* Keyboard Accessible
+* Degrades gracefully without JavaScript
+* Creates ARIA compliant menu
+
+* * *
+### Usage
+
+#### Include the CSS & JS
+slicknav.css can be modified to fit website design
+
+    <link rel="stylesheet" href="SlickNav/dist/slicknav.min.css" />
+    <script src="SlickNav/dist/jquery.slicknav.min.js"></script>
+
+#### Menu Markup
+
+    <ul id="menu">
+        <li><a href="#">item 1</a></li>
+        <li><a href="#">item 2</a></li>
+        <li><a href="#">item 3</a></li>
+        <li><a href="#">item 4</a></li>
+    </ul>
+#### Initialize
+
+    <script>
+        $(function(){
+            $('#menu').slicknav();
+        });
+    </script>
+
+### Options
+    'label' : 'MENU', // Label for menu button. Use an empty string for no label.
+    'duplicate': true, // If true, the mobile menu is a copy of the original.
+    'duration': true, // The duration of the sliding animation.
+    'easingOpen': 'swing', // Easing used for open animations.
+    'easingClose': 'swing' // Easing used for close animations.
+    'closedSymbol': '&#9658;', // Character after collapsed parents.
+    'openedSymbol': '&#9660;', // Character after expanded parents.
+    'prependTo': 'body', // Element, jQuery object, or jQuery selector string to prepend the mobile menu to.
+    'appendTo': '', // Element, jQuery object, or jQuery selector string to append the mobile menu to. Takes precedence over prependTo.
+    'parentTag': 'a', // Element type for parent menu items.
+    'closeOnClick': false, // Close menu when a link is clicked.
+    'allowParentLinks': false // Allow clickable links as parent elements.
+    'nestedParentLinks': true // If false, parent links will be separated from the sub-menu toggle.
+    'showChildren': false // Show children of parent links by default.
+    'removeIds': true // Remove IDs from all menu elements. Defaults to false if duplicate set to false.
+    'removeClasses': false // Remove classes from all menu elements.
+	'brand': '' // Add branding to menu bar.
+    'animations': 'jquery' // Animation library. Currently supports "jquery" and "velocity".
+
+### Callbacks
+    'init': function(){}, // Called after SlickNav creation
+    'beforeOpen': function(trigger){}, // Called before menu or sub-menu opened.
+    'beforeClose': function(trigger){} // Called before menu or sub-menu closed.
+    'afterOpen': function(trigger){} // Called after menu or sub-menu opened.
+    'afterClose': function(trigger){} // Called after menu or sub-menu closed.
+
+### Methods
+    $('.menu').slicknav('toggle'); // Method to toggle the menu
+    $('.menu').slicknav('open'); // Method to open the menu
+    $('.menu').slicknav('close'); // Method to close the menu
+    
+### Animations
+SlickNav will use jQuery for animations by default. If you wish to use Velocity.js for animating, be sure to include the library in your code before including SlickNav.
+
+### Menu Display
+Without any additional configuration, both the original and mobile menus will be displayed. It is recommended to use media queries to hide the original menu and display the mobile menu when appropriate. Modernizr or similar can be used for graceful degradation.
+
+For example:
+
+    .slicknav_menu {
+        display:none;
+    }
+
+    @media screen and (max-width: 40em) {
+        /* #menu is the original menu */
+        .js #menu {
+            display:none;
+        }
+
+        .js .slicknav_menu {
+            display:block;
+        }
+    }
+
+More examples at [SlickNav.io](http://slicknav.io)
+
+### Browser Support
+* Chrome
+* Firefox
+* Safari
+* Opera
+* IE7+
+* Android Browser
+* iOS Safari
diff --git a/WebSites/errors/403/SlickNav/bower.json b/WebSites/errors/403/SlickNav/bower.json
new file mode 100644
index 0000000..de5994e
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/bower.json
@@ -0,0 +1,21 @@
+{
+  "name": "slicknav",
+  "version": "1.0.8",
+  "authors": [
+    "Josh Cope"
+  ],
+  "main": [
+    "dist/jquery.slicknav.js",
+    "dist/slicknav.css"
+  ],
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ],
+  "dependencies": {
+    "jquery": ">=1.7.0"
+  }
+}
diff --git a/WebSites/errors/403/SlickNav/demo/index.html b/WebSites/errors/403/SlickNav/demo/index.html
new file mode 100644
index 0000000..c1038f7
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/demo/index.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta name="viewport" content="width=device-width">
+
+<title>SlickNav Demo - Responsive Mobile Nav Plugin for jQuery</title>
+
+<link rel="stylesheet" href="style.css">
+<link rel="stylesheet" href="../dist/slicknav.css">
+
+<script src="http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+</head>
+<body>
+<p><b>Resize browser to view mobile menu</b></p>
+
+Original Menu hidden on mobile
+<ul id="menu">
+    <li>Parent 1
+        <ul>
+            <li><a href="#">item 3</a></li>
+            <li>Parent 3
+                <ul>
+                    <li><a href="#">item 8</a></li>
+                    <li><a href="#">item 9</a></li>
+                    <li><a href="#">item 10</a></li>
+                </ul>
+            </li>
+            <li><a href="#">item 4</a></li>
+        </ul>
+    </li>
+    <li><a href="#">item 1</a></li>
+    <li>non-link item</li>
+    <li>Parent 2
+        <ul>
+            <li><a href="#">item 5</a></li>
+            <li><a href="#">item 6</a></li>
+            <li><a href="#">item 7</a></li>
+        </ul>
+    </li>
+</ul>
+
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
+<script src="../dist/jquery.slicknav.js"></script>
+<script type="text/javascript">
+$(document).ready(function(){
+	$('#menu').slicknav();
+});
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/WebSites/errors/403/SlickNav/demo/style.css b/WebSites/errors/403/SlickNav/demo/style.css
new file mode 100644
index 0000000..cf614ec
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/demo/style.css
@@ -0,0 +1,20 @@
+body {
+	font-family:Helvetica, Arial, sans-serif;
+	margin:0;
+	padding:0;
+	font-size:100%;
+}
+
+.slicknav_menu {
+	display:none;
+}
+
+@media screen and (max-width: 40em) {
+	.js #menu {
+		display:none;
+	}
+	
+	.js .slicknav_menu {
+		display:block;
+	}
+}
\ No newline at end of file
diff --git a/WebSites/errors/403/SlickNav/dist/jquery.slicknav.js b/WebSites/errors/403/SlickNav/dist/jquery.slicknav.js
new file mode 100644
index 0000000..c91fed3
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/dist/jquery.slicknav.js
@@ -0,0 +1,589 @@
+/*!
+ * SlickNav Responsive Mobile Menu v1.0.10
+ * (c) 2016 Josh Cope
+ * licensed under MIT
+ */
+;(function ($, document, window) {
+    var
+    // default settings object.
+        defaults = {
+            label: 'MENU',
+            duplicate: true,
+            duration: 200,
+            easingOpen: 'swing',
+            easingClose: 'swing',
+            closedSymbol: '&#9658;',
+            openedSymbol: '&#9660;',
+            prependTo: 'body',
+            appendTo: '',
+            parentTag: 'a',
+            closeOnClick: false,
+            allowParentLinks: false,
+            nestedParentLinks: true,
+            showChildren: false,
+            removeIds: true,
+            removeClasses: false,
+            removeStyles: false,
+			brand: '',
+            animations: 'jquery',
+            init: function () {},
+            beforeOpen: function () {},
+            beforeClose: function () {},
+            afterOpen: function () {},
+            afterClose: function () {}
+        },
+        mobileMenu = 'slicknav',
+        prefix = 'slicknav',
+
+        Keyboard = {
+            DOWN: 40,
+            ENTER: 13,
+            ESCAPE: 27,
+            LEFT: 37,
+            RIGHT: 39,
+            SPACE: 32,
+            TAB: 9,
+            UP: 38,
+        };
+
+    function Plugin(element, options) {
+        this.element = element;
+
+        // jQuery has an extend method which merges the contents of two or
+        // more objects, storing the result in the first object. The first object
+        // is generally empty as we don't want to alter the default options for
+        // future instances of the plugin
+        this.settings = $.extend({}, defaults, options);
+
+        // Don't remove IDs by default if duplicate is false
+        if (!this.settings.duplicate && !options.hasOwnProperty("removeIds")) {
+          this.settings.removeIds = false;
+        }
+
+        this._defaults = defaults;
+        this._name = mobileMenu;
+
+        this.init();
+    }
+
+    Plugin.prototype.init = function () {
+        var $this = this,
+            menu = $(this.element),
+            settings = this.settings,
+            iconClass,
+            menuBar;
+
+        // clone menu if needed
+        if (settings.duplicate) {
+            $this.mobileNav = menu.clone();
+        } else {
+            $this.mobileNav = menu;
+        }
+
+        // remove IDs if set
+        if (settings.removeIds) {
+          $this.mobileNav.removeAttr('id');
+          $this.mobileNav.find('*').each(function (i, e) {
+              $(e).removeAttr('id');
+          });
+        }
+
+        // remove classes if set
+        if (settings.removeClasses) {
+            $this.mobileNav.removeAttr('class');
+            $this.mobileNav.find('*').each(function (i, e) {
+                $(e).removeAttr('class');
+            });
+        }
+
+        // remove styles if set
+        if (settings.removeStyles) {
+            $this.mobileNav.removeAttr('style');
+            $this.mobileNav.find('*').each(function (i, e) {
+                $(e).removeAttr('style');
+            });
+        }
+
+        // styling class for the button
+        iconClass = prefix + '_icon';
+
+        if (settings.label === '') {
+            iconClass += ' ' + prefix + '_no-text';
+        }
+
+        if (settings.parentTag == 'a') {
+            settings.parentTag = 'a href="#"';
+        }
+
+        // create menu bar
+        $this.mobileNav.attr('class', prefix + '_nav');
+        menuBar = $('<div class="' + prefix + '_menu"></div>');
+		if (settings.brand !== '') {
+			var brand = $('<div class="' + prefix + '_brand">'+settings.brand+'</div>');
+			$(menuBar).append(brand);
+		}
+        $this.btn = $(
+            ['<' + settings.parentTag + ' aria-haspopup="true" role="button" tabindex="0" class="' + prefix + '_btn ' + prefix + '_collapsed">',
+                '<span class="' + prefix + '_menutxt">' + settings.label + '</span>',
+                '<span class="' + iconClass + '">',
+                    '<span class="' + prefix + '_icon-bar"></span>',
+                    '<span class="' + prefix + '_icon-bar"></span>',
+                    '<span class="' + prefix + '_icon-bar"></span>',
+                '</span>',
+            '</' + settings.parentTag + '>'
+            ].join('')
+        );
+        $(menuBar).append($this.btn);
+        if(settings.appendTo !== '') {
+            $(settings.appendTo).append(menuBar);
+        } else {
+            $(settings.prependTo).prepend(menuBar);
+        }
+        menuBar.append($this.mobileNav);
+
+        // iterate over structure adding additional structure
+        var items = $this.mobileNav.find('li');
+        $(items).each(function () {
+            var item = $(this),
+                data = {};
+            data.children = item.children('ul').attr('role', 'menu');
+            item.data('menu', data);
+
+            // if a list item has a nested menu
+            if (data.children.length > 0) {
+
+                // select all text before the child menu
+                // check for anchors
+
+                var a = item.contents(),
+                    containsAnchor = false,
+                    nodes = [];
+
+                $(a).each(function () {
+                    if (!$(this).is('ul')) {
+                        nodes.push(this);
+                    } else {
+                        return false;
+                    }
+
+                    if($(this).is("a")) {
+                        containsAnchor = true;
+                    }
+                });
+
+                var wrapElement = $(
+                    '<' + settings.parentTag + ' role="menuitem" aria-haspopup="true" tabindex="-1" class="' + prefix + '_item"/>'
+                );
+
+                // wrap item text with tag and add classes unless we are separating parent links
+                if ((!settings.allowParentLinks || settings.nestedParentLinks) || !containsAnchor) {
+                    var $wrap = $(nodes).wrapAll(wrapElement).parent();
+                    $wrap.addClass(prefix+'_row');
+                } else
+                    $(nodes).wrapAll('<span class="'+prefix+'_parent-link '+prefix+'_row"/>').parent();
+
+                if (!settings.showChildren) {
+                    item.addClass(prefix+'_collapsed');
+                } else {
+                    item.addClass(prefix+'_open');
+                }
+
+                item.addClass(prefix+'_parent');
+
+                // create parent arrow. wrap with link if parent links and separating
+                var arrowElement = $('<span class="'+prefix+'_arrow">'+(settings.showChildren?settings.openedSymbol:settings.closedSymbol)+'</span>');
+
+                if (settings.allowParentLinks && !settings.nestedParentLinks && containsAnchor)
+                    arrowElement = arrowElement.wrap(wrapElement).parent();
+
+                //append arrow
+                $(nodes).last().after(arrowElement);
+
+
+            } else if ( item.children().length === 0) {
+                 item.addClass(prefix+'_txtnode');
+            }
+
+            // accessibility for links
+            item.children('a').attr('role', 'menuitem').click(function(event){
+                //Ensure that it's not a parent
+                if (settings.closeOnClick && !$(event.target).parent().closest('li').hasClass(prefix+'_parent')) {
+                        //Emulate menu close if set
+                        $($this.btn).click();
+                    }
+            });
+
+            //also close on click if parent links are set
+            if (settings.closeOnClick && settings.allowParentLinks) {
+                item.children('a').children('a').click(function (event) {
+                    //Emulate menu close
+                    $($this.btn).click();
+                });
+
+                item.find('.'+prefix+'_parent-link a:not(.'+prefix+'_item)').click(function(event){
+                    //Emulate menu close
+                        $($this.btn).click();
+                });
+            }
+        });
+
+        // structure is in place, now hide appropriate items
+        $(items).each(function () {
+            var data = $(this).data('menu');
+            if (!settings.showChildren){
+                $this._visibilityToggle(data.children, null, false, null, true);
+            }
+        });
+
+        // finally toggle entire menu
+        $this._visibilityToggle($this.mobileNav, null, false, 'init', true);
+
+        // accessibility for menu button
+        $this.mobileNav.attr('role','menu');
+
+        // outline prevention when using mouse
+        $(document).mousedown(function(){
+            $this._outlines(false);
+        });
+
+        $(document).keyup(function(){
+            $this._outlines(true);
+        });
+
+        // menu button click
+        $($this.btn).click(function (e) {
+            e.preventDefault();
+            $this._menuToggle();
+        });
+
+        // click on menu parent
+        $this.mobileNav.on('click', '.' + prefix + '_item', function (e) {
+            e.preventDefault();
+            $this._itemClick($(this));
+        });
+
+        // check for keyboard events on menu button and menu parents
+        $($this.btn).keydown(function (e) {
+            var ev = e || event;
+
+            switch(ev.keyCode) {
+                case Keyboard.ENTER:
+                case Keyboard.SPACE:
+                case Keyboard.DOWN:
+                    e.preventDefault();
+                    if (ev.keyCode !== Keyboard.DOWN || !$($this.btn).hasClass(prefix+'_open')){
+                        $this._menuToggle();
+                    }
+                    
+                    $($this.btn).next().find('[role="menuitem"]').first().focus();
+                    break;
+            }
+
+            
+        });
+
+        $this.mobileNav.on('keydown', '.'+prefix+'_item', function(e) {
+            var ev = e || event;
+
+            switch(ev.keyCode) {
+                case Keyboard.ENTER:
+                    e.preventDefault();
+                    $this._itemClick($(e.target));
+                    break;
+                case Keyboard.RIGHT:
+                    e.preventDefault();
+                    if ($(e.target).parent().hasClass(prefix+'_collapsed')) {
+                        $this._itemClick($(e.target));
+                    }
+                    $(e.target).next().find('[role="menuitem"]').first().focus();
+                    break;
+            }
+        });
+
+        $this.mobileNav.on('keydown', '[role="menuitem"]', function(e) {
+            var ev = e || event;
+
+            switch(ev.keyCode){
+                case Keyboard.DOWN:
+                    e.preventDefault();
+                    var allItems = $(e.target).parent().parent().children().children('[role="menuitem"]:visible');
+                    var idx = allItems.index( e.target );
+                    var nextIdx = idx + 1;
+                    if (allItems.length <= nextIdx) {
+                        nextIdx = 0;
+                    }
+                    var next = allItems.eq( nextIdx );
+                    next.focus();
+                break;
+                case Keyboard.UP:
+                    e.preventDefault();
+                    var allItems = $(e.target).parent().parent().children().children('[role="menuitem"]:visible');
+                    var idx = allItems.index( e.target );
+                    var next = allItems.eq( idx - 1 );
+                    next.focus();
+                break;
+                case Keyboard.LEFT:
+                    e.preventDefault();
+                    if ($(e.target).parent().parent().parent().hasClass(prefix+'_open')) {
+                        var parent = $(e.target).parent().parent().prev();
+                        parent.focus();
+                        $this._itemClick(parent);
+                    } else if ($(e.target).parent().parent().hasClass(prefix+'_nav')){
+                        $this._menuToggle();
+                        $($this.btn).focus();
+                    }
+                    break;
+                case Keyboard.ESCAPE:
+                    e.preventDefault();
+                    $this._menuToggle();
+                    $($this.btn).focus();
+                    break;    
+            }
+        });
+
+        // allow links clickable within parent tags if set
+        if (settings.allowParentLinks && settings.nestedParentLinks) {
+            $('.'+prefix+'_item a').click(function(e){
+                    e.stopImmediatePropagation();
+            });
+        }
+    };
+
+    //toggle menu
+    Plugin.prototype._menuToggle = function (el) {
+        var $this = this;
+        var btn = $this.btn;
+        var mobileNav = $this.mobileNav;
+
+        if (btn.hasClass(prefix+'_collapsed')) {
+            btn.removeClass(prefix+'_collapsed');
+            btn.addClass(prefix+'_open');
+        } else {
+            btn.removeClass(prefix+'_open');
+            btn.addClass(prefix+'_collapsed');
+        }
+        btn.addClass(prefix+'_animating');
+        $this._visibilityToggle(mobileNav, btn.parent(), true, btn);
+    };
+
+    // toggle clicked items
+    Plugin.prototype._itemClick = function (el) {
+        var $this = this;
+        var settings = $this.settings;
+        var data = el.data('menu');
+        if (!data) {
+            data = {};
+            data.arrow = el.children('.'+prefix+'_arrow');
+            data.ul = el.next('ul');
+            data.parent = el.parent();
+            //Separated parent link structure
+            if (data.parent.hasClass(prefix+'_parent-link')) {
+                data.parent = el.parent().parent();
+                data.ul = el.parent().next('ul');
+            }
+            el.data('menu', data);
+        }
+        if (data.parent.hasClass(prefix+'_collapsed')) {
+            data.arrow.html(settings.openedSymbol);
+            data.parent.removeClass(prefix+'_collapsed');
+            data.parent.addClass(prefix+'_open');
+            data.parent.addClass(prefix+'_animating');
+            $this._visibilityToggle(data.ul, data.parent, true, el);
+        } else {
+            data.arrow.html(settings.closedSymbol);
+            data.parent.addClass(prefix+'_collapsed');
+            data.parent.removeClass(prefix+'_open');
+            data.parent.addClass(prefix+'_animating');
+            $this._visibilityToggle(data.ul, data.parent, true, el);
+        }
+    };
+
+    // toggle actual visibility and accessibility tags
+    Plugin.prototype._visibilityToggle = function(el, parent, animate, trigger, init) {
+        var $this = this;
+        var settings = $this.settings;
+        var items = $this._getActionItems(el);
+        var duration = 0;
+        if (animate) {
+            duration = settings.duration;
+        }
+        
+        function afterOpen(trigger, parent) {
+            $(trigger).removeClass(prefix+'_animating');
+            $(parent).removeClass(prefix+'_animating');
+
+            //Fire afterOpen callback
+            if (!init) {
+                settings.afterOpen(trigger);
+            }
+        }
+        
+        function afterClose(trigger, parent) {
+            el.attr('aria-hidden','true');
+            items.attr('tabindex', '-1');
+            $this._setVisAttr(el, true);
+            el.hide(); //jQuery 1.7 bug fix
+
+            $(trigger).removeClass(prefix+'_animating');
+            $(parent).removeClass(prefix+'_animating');
+
+            //Fire init or afterClose callback
+            if (!init){
+                settings.afterClose(trigger);
+            } else if (trigger == 'init'){
+                settings.init();
+            }
+        }
+
+        if (el.hasClass(prefix+'_hidden')) {
+            el.removeClass(prefix+'_hidden');
+             //Fire beforeOpen callback
+            if (!init) {
+                settings.beforeOpen(trigger);
+            }
+            if (settings.animations === 'jquery') {
+                el.stop(true,true).slideDown(duration, settings.easingOpen, function(){
+                    afterOpen(trigger, parent);
+                });
+            } else if(settings.animations === 'velocity') {
+                el.velocity("finish").velocity("slideDown", {
+                    duration: duration,
+                    easing: settings.easingOpen,
+                    complete: function() {
+                        afterOpen(trigger, parent);
+                    }
+                });
+            }
+            el.attr('aria-hidden','false');
+            items.attr('tabindex', '0');
+            $this._setVisAttr(el, false);
+        } else {
+            el.addClass(prefix+'_hidden');
+
+            //Fire init or beforeClose callback
+            if (!init){
+                settings.beforeClose(trigger);
+            }
+
+            if (settings.animations === 'jquery') {
+                el.stop(true,true).slideUp(duration, this.settings.easingClose, function() {
+                    afterClose(trigger, parent)
+                });
+            } else if (settings.animations === 'velocity') {
+                
+                el.velocity("finish").velocity("slideUp", {
+                    duration: duration,
+                    easing: settings.easingClose,
+                    complete: function() {
+                        afterClose(trigger, parent);
+                    }
+                });
+            }
+        }
+    };
+
+    // set attributes of element and children based on visibility
+    Plugin.prototype._setVisAttr = function(el, hidden) {
+        var $this = this;
+
+        // select all parents that aren't hidden
+        var nonHidden = el.children('li').children('ul').not('.'+prefix+'_hidden');
+
+        // iterate over all items setting appropriate tags
+        if (!hidden) {
+            nonHidden.each(function(){
+                var ul = $(this);
+                ul.attr('aria-hidden','false');
+                var items = $this._getActionItems(ul);
+                items.attr('tabindex', '0');
+                $this._setVisAttr(ul, hidden);
+            });
+        } else {
+            nonHidden.each(function(){
+                var ul = $(this);
+                ul.attr('aria-hidden','true');
+                var items = $this._getActionItems(ul);
+                items.attr('tabindex', '-1');
+                $this._setVisAttr(ul, hidden);
+            });
+        }
+    };
+
+    // get all 1st level items that are clickable
+    Plugin.prototype._getActionItems = function(el) {
+        var data = el.data("menu");
+        if (!data) {
+            data = {};
+            var items = el.children('li');
+            var anchors = items.find('a');
+            data.links = anchors.add(items.find('.'+prefix+'_item'));
+            el.data('menu', data);
+        }
+        return data.links;
+    };
+
+    Plugin.prototype._outlines = function(state) {
+        if (!state) {
+            $('.'+prefix+'_item, .'+prefix+'_btn').css('outline','none');
+        } else {
+            $('.'+prefix+'_item, .'+prefix+'_btn').css('outline','');
+        }
+    };
+
+    Plugin.prototype.toggle = function(){
+        var $this = this;
+        $this._menuToggle();
+    };
+
+    Plugin.prototype.open = function(){
+        var $this = this;
+        if ($this.btn.hasClass(prefix+'_collapsed')) {
+            $this._menuToggle();
+        }
+    };
+
+    Plugin.prototype.close = function(){
+        var $this = this;
+        if ($this.btn.hasClass(prefix+'_open')) {
+            $this._menuToggle();
+        }
+    };
+
+    $.fn[mobileMenu] = function ( options ) {
+        var args = arguments;
+
+        // Is the first parameter an object (options), or was omitted, instantiate a new instance
+        if (options === undefined || typeof options === 'object') {
+            return this.each(function () {
+
+                // Only allow the plugin to be instantiated once due to methods
+                if (!$.data(this, 'plugin_' + mobileMenu)) {
+
+                    // if it has no instance, create a new one, pass options to our plugin constructor,
+                    // and store the plugin instance in the elements jQuery data object.
+                    $.data(this, 'plugin_' + mobileMenu, new Plugin( this, options ));
+                }
+            });
+
+        // If is a string and doesn't start with an underscore or 'init' function, treat this as a call to a public method.
+        } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
+
+            // Cache the method call to make it possible to return a value
+            var returns;
+
+            this.each(function () {
+                var instance = $.data(this, 'plugin_' + mobileMenu);
+
+                // Tests that there's already a plugin-instance and checks that the requested public method exists
+                if (instance instanceof Plugin && typeof instance[options] === 'function') {
+
+                    // Call the method of our plugin instance, and pass it the supplied arguments.
+                    returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
+                }
+            });
+
+            // If the earlier cached method gives a value back return the value, otherwise return this to preserve chainability.
+            return returns !== undefined ? returns : this;
+        }
+    };
+}(jQuery, document, window));
diff --git a/WebSites/errors/403/SlickNav/dist/jquery.slicknav.min.js b/WebSites/errors/403/SlickNav/dist/jquery.slicknav.min.js
new file mode 100644
index 0000000..598cbcb
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/dist/jquery.slicknav.min.js
@@ -0,0 +1,6 @@
+/*!
+ * SlickNav Responsive Mobile Menu v1.0.10
+ * (c) 2016 Josh Cope
+ * licensed under MIT
+ */
+!function(e,t,n){function a(t,n){this.element=t,this.settings=e.extend({},i,n),this.settings.duplicate||n.hasOwnProperty("removeIds")||(this.settings.removeIds=!1),this._defaults=i,this._name=s,this.init()}var i={label:"MENU",duplicate:!0,duration:200,easingOpen:"swing",easingClose:"swing",closedSymbol:"&#9658;",openedSymbol:"&#9660;",prependTo:"body",appendTo:"",parentTag:"a",closeOnClick:!1,allowParentLinks:!1,nestedParentLinks:!0,showChildren:!1,removeIds:!0,removeClasses:!1,removeStyles:!1,brand:"",animations:"jquery",init:function(){},beforeOpen:function(){},beforeClose:function(){},afterOpen:function(){},afterClose:function(){}},s="slicknav",o="slicknav",l={DOWN:40,ENTER:13,ESCAPE:27,LEFT:37,RIGHT:39,SPACE:32,TAB:9,UP:38};a.prototype.init=function(){var n,a,i=this,s=e(this.element),r=this.settings;if(r.duplicate?i.mobileNav=s.clone():i.mobileNav=s,r.removeIds&&(i.mobileNav.removeAttr("id"),i.mobileNav.find("*").each(function(t,n){e(n).removeAttr("id")})),r.removeClasses&&(i.mobileNav.removeAttr("class"),i.mobileNav.find("*").each(function(t,n){e(n).removeAttr("class")})),r.removeStyles&&(i.mobileNav.removeAttr("style"),i.mobileNav.find("*").each(function(t,n){e(n).removeAttr("style")})),n=o+"_icon",""===r.label&&(n+=" "+o+"_no-text"),"a"==r.parentTag&&(r.parentTag='a href="#"'),i.mobileNav.attr("class",o+"_nav"),a=e('<div class="'+o+'_menu"></div>'),""!==r.brand){var c=e('<div class="'+o+'_brand">'+r.brand+"</div>");e(a).append(c)}i.btn=e(["<"+r.parentTag+' aria-haspopup="true" role="button" tabindex="0" class="'+o+"_btn "+o+'_collapsed">','<span class="'+o+'_menutxt">'+r.label+"</span>",'<span class="'+n+'">','<span class="'+o+'_icon-bar"></span>','<span class="'+o+'_icon-bar"></span>','<span class="'+o+'_icon-bar"></span>',"</span>","</"+r.parentTag+">"].join("")),e(a).append(i.btn),""!==r.appendTo?e(r.appendTo).append(a):e(r.prependTo).prepend(a),a.append(i.mobileNav);var p=i.mobileNav.find("li");e(p).each(function(){var t=e(this),n={};if(n.children=t.children("ul").attr("role","menu"),t.data("menu",n),n.children.length>0){var a=t.contents(),s=!1,l=[];e(a).each(function(){return e(this).is("ul")?!1:(l.push(this),void(e(this).is("a")&&(s=!0)))});var c=e("<"+r.parentTag+' role="menuitem" aria-haspopup="true" tabindex="-1" class="'+o+'_item"/>');if(r.allowParentLinks&&!r.nestedParentLinks&&s)e(l).wrapAll('<span class="'+o+"_parent-link "+o+'_row"/>').parent();else{var p=e(l).wrapAll(c).parent();p.addClass(o+"_row")}r.showChildren?t.addClass(o+"_open"):t.addClass(o+"_collapsed"),t.addClass(o+"_parent");var d=e('<span class="'+o+'_arrow">'+(r.showChildren?r.openedSymbol:r.closedSymbol)+"</span>");r.allowParentLinks&&!r.nestedParentLinks&&s&&(d=d.wrap(c).parent()),e(l).last().after(d)}else 0===t.children().length&&t.addClass(o+"_txtnode");t.children("a").attr("role","menuitem").click(function(t){r.closeOnClick&&!e(t.target).parent().closest("li").hasClass(o+"_parent")&&e(i.btn).click()}),r.closeOnClick&&r.allowParentLinks&&(t.children("a").children("a").click(function(t){e(i.btn).click()}),t.find("."+o+"_parent-link a:not(."+o+"_item)").click(function(t){e(i.btn).click()}))}),e(p).each(function(){var t=e(this).data("menu");r.showChildren||i._visibilityToggle(t.children,null,!1,null,!0)}),i._visibilityToggle(i.mobileNav,null,!1,"init",!0),i.mobileNav.attr("role","menu"),e(t).mousedown(function(){i._outlines(!1)}),e(t).keyup(function(){i._outlines(!0)}),e(i.btn).click(function(e){e.preventDefault(),i._menuToggle()}),i.mobileNav.on("click","."+o+"_item",function(t){t.preventDefault(),i._itemClick(e(this))}),e(i.btn).keydown(function(t){var n=t||event;switch(n.keyCode){case l.ENTER:case l.SPACE:case l.DOWN:t.preventDefault(),n.keyCode===l.DOWN&&e(i.btn).hasClass(o+"_open")||i._menuToggle(),e(i.btn).next().find('[role="menuitem"]').first().focus()}}),i.mobileNav.on("keydown","."+o+"_item",function(t){var n=t||event;switch(n.keyCode){case l.ENTER:t.preventDefault(),i._itemClick(e(t.target));break;case l.RIGHT:t.preventDefault(),e(t.target).parent().hasClass(o+"_collapsed")&&i._itemClick(e(t.target)),e(t.target).next().find('[role="menuitem"]').first().focus()}}),i.mobileNav.on("keydown",'[role="menuitem"]',function(t){var n=t||event;switch(n.keyCode){case l.DOWN:t.preventDefault();var a=e(t.target).parent().parent().children().children('[role="menuitem"]:visible'),s=a.index(t.target),r=s+1;a.length<=r&&(r=0);var c=a.eq(r);c.focus();break;case l.UP:t.preventDefault();var a=e(t.target).parent().parent().children().children('[role="menuitem"]:visible'),s=a.index(t.target),c=a.eq(s-1);c.focus();break;case l.LEFT:if(t.preventDefault(),e(t.target).parent().parent().parent().hasClass(o+"_open")){var p=e(t.target).parent().parent().prev();p.focus(),i._itemClick(p)}else e(t.target).parent().parent().hasClass(o+"_nav")&&(i._menuToggle(),e(i.btn).focus());break;case l.ESCAPE:t.preventDefault(),i._menuToggle(),e(i.btn).focus()}}),r.allowParentLinks&&r.nestedParentLinks&&e("."+o+"_item a").click(function(e){e.stopImmediatePropagation()})},a.prototype._menuToggle=function(e){var t=this,n=t.btn,a=t.mobileNav;n.hasClass(o+"_collapsed")?(n.removeClass(o+"_collapsed"),n.addClass(o+"_open")):(n.removeClass(o+"_open"),n.addClass(o+"_collapsed")),n.addClass(o+"_animating"),t._visibilityToggle(a,n.parent(),!0,n)},a.prototype._itemClick=function(e){var t=this,n=t.settings,a=e.data("menu");a||(a={},a.arrow=e.children("."+o+"_arrow"),a.ul=e.next("ul"),a.parent=e.parent(),a.parent.hasClass(o+"_parent-link")&&(a.parent=e.parent().parent(),a.ul=e.parent().next("ul")),e.data("menu",a)),a.parent.hasClass(o+"_collapsed")?(a.arrow.html(n.openedSymbol),a.parent.removeClass(o+"_collapsed"),a.parent.addClass(o+"_open"),a.parent.addClass(o+"_animating"),t._visibilityToggle(a.ul,a.parent,!0,e)):(a.arrow.html(n.closedSymbol),a.parent.addClass(o+"_collapsed"),a.parent.removeClass(o+"_open"),a.parent.addClass(o+"_animating"),t._visibilityToggle(a.ul,a.parent,!0,e))},a.prototype._visibilityToggle=function(t,n,a,i,s){function l(t,n){e(t).removeClass(o+"_animating"),e(n).removeClass(o+"_animating"),s||p.afterOpen(t)}function r(n,a){t.attr("aria-hidden","true"),d.attr("tabindex","-1"),c._setVisAttr(t,!0),t.hide(),e(n).removeClass(o+"_animating"),e(a).removeClass(o+"_animating"),s?"init"==n&&p.init():p.afterClose(n)}var c=this,p=c.settings,d=c._getActionItems(t),u=0;a&&(u=p.duration),t.hasClass(o+"_hidden")?(t.removeClass(o+"_hidden"),s||p.beforeOpen(i),"jquery"===p.animations?t.stop(!0,!0).slideDown(u,p.easingOpen,function(){l(i,n)}):"velocity"===p.animations&&t.velocity("finish").velocity("slideDown",{duration:u,easing:p.easingOpen,complete:function(){l(i,n)}}),t.attr("aria-hidden","false"),d.attr("tabindex","0"),c._setVisAttr(t,!1)):(t.addClass(o+"_hidden"),s||p.beforeClose(i),"jquery"===p.animations?t.stop(!0,!0).slideUp(u,this.settings.easingClose,function(){r(i,n)}):"velocity"===p.animations&&t.velocity("finish").velocity("slideUp",{duration:u,easing:p.easingClose,complete:function(){r(i,n)}}))},a.prototype._setVisAttr=function(t,n){var a=this,i=t.children("li").children("ul").not("."+o+"_hidden");n?i.each(function(){var t=e(this);t.attr("aria-hidden","true");var i=a._getActionItems(t);i.attr("tabindex","-1"),a._setVisAttr(t,n)}):i.each(function(){var t=e(this);t.attr("aria-hidden","false");var i=a._getActionItems(t);i.attr("tabindex","0"),a._setVisAttr(t,n)})},a.prototype._getActionItems=function(e){var t=e.data("menu");if(!t){t={};var n=e.children("li"),a=n.find("a");t.links=a.add(n.find("."+o+"_item")),e.data("menu",t)}return t.links},a.prototype._outlines=function(t){t?e("."+o+"_item, ."+o+"_btn").css("outline",""):e("."+o+"_item, ."+o+"_btn").css("outline","none")},a.prototype.toggle=function(){var e=this;e._menuToggle()},a.prototype.open=function(){var e=this;e.btn.hasClass(o+"_collapsed")&&e._menuToggle()},a.prototype.close=function(){var e=this;e.btn.hasClass(o+"_open")&&e._menuToggle()},e.fn[s]=function(t){var n=arguments;if(void 0===t||"object"==typeof t)return this.each(function(){e.data(this,"plugin_"+s)||e.data(this,"plugin_"+s,new a(this,t))});if("string"==typeof t&&"_"!==t[0]&&"init"!==t){var i;return this.each(function(){var o=e.data(this,"plugin_"+s);o instanceof a&&"function"==typeof o[t]&&(i=o[t].apply(o,Array.prototype.slice.call(n,1)))}),void 0!==i?i:this}}}(jQuery,document,window);
\ No newline at end of file
diff --git a/WebSites/errors/403/SlickNav/dist/slicknav.css b/WebSites/errors/403/SlickNav/dist/slicknav.css
new file mode 100644
index 0000000..c511935
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/dist/slicknav.css
@@ -0,0 +1,147 @@
+/*!
+ * SlickNav Responsive Mobile Menu v1.0.10
+ * (c) 2016 Josh Cope
+ * licensed under MIT
+ */
+.slicknav_btn {
+  position: relative;
+  display: block;
+  vertical-align: middle;
+  float: right;
+  padding: 0.438em 0.625em 0.438em 0.625em;
+  line-height: 1.125em;
+  cursor: pointer; }
+  .slicknav_btn .slicknav_icon-bar + .slicknav_icon-bar {
+    margin-top: 0.188em; }
+
+.slicknav_menu {
+  *zoom: 1; }
+  .slicknav_menu .slicknav_menutxt {
+    display: block;
+    line-height: 1.188em;
+    float: left; }
+  .slicknav_menu .slicknav_icon {
+    float: left;
+    width: 1.125em;
+    height: 0.875em;
+    margin: 0.188em 0 0 0.438em; }
+    .slicknav_menu .slicknav_icon:before {
+      background: transparent;
+      width: 1.125em;
+      height: 0.875em;
+      display: block;
+      content: "";
+      position: absolute; }
+  .slicknav_menu .slicknav_no-text {
+    margin: 0; }
+  .slicknav_menu .slicknav_icon-bar {
+    display: block;
+    width: 1.125em;
+    height: 0.125em;
+    -webkit-border-radius: 1px;
+    -moz-border-radius: 1px;
+    border-radius: 1px;
+    -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+    -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); }
+  .slicknav_menu:before {
+    content: " ";
+    display: table; }
+  .slicknav_menu:after {
+    content: " ";
+    display: table;
+    clear: both; }
+
+.slicknav_nav {
+  clear: both; }
+  .slicknav_nav ul {
+    display: block; }
+  .slicknav_nav li {
+    display: block; }
+  .slicknav_nav .slicknav_arrow {
+    font-size: 0.8em;
+    margin: 0 0 0 0.4em; }
+  .slicknav_nav .slicknav_item {
+    cursor: pointer; }
+    .slicknav_nav .slicknav_item a {
+      display: inline; }
+  .slicknav_nav .slicknav_row {
+    display: block; }
+  .slicknav_nav a {
+    display: block; }
+  .slicknav_nav .slicknav_parent-link a {
+    display: inline; }
+
+.slicknav_brand {
+  float: left; }
+
+.slicknav_menu {
+  font-size: 16px;
+  box-sizing: border-box;
+  background: #4c4c4c;
+  padding: 5px; }
+  .slicknav_menu * {
+    box-sizing: border-box; }
+  .slicknav_menu .slicknav_menutxt {
+    color: #fff;
+    font-weight: bold;
+    text-shadow: 0 1px 3px #000; }
+  .slicknav_menu .slicknav_icon-bar {
+    background-color: #fff; }
+
+.slicknav_btn {
+  margin: 5px 5px 6px;
+  text-decoration: none;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  background-color: #222; }
+
+.slicknav_nav {
+  color: #fff;
+  margin: 0;
+  padding: 0;
+  font-size: 0.875em;
+  list-style: none;
+  overflow: hidden; }
+  .slicknav_nav ul {
+    list-style: none;
+    overflow: hidden;
+    padding: 0;
+    margin: 0 0 0 20px; }
+  .slicknav_nav .slicknav_row {
+    padding: 5px 10px;
+    margin: 2px 5px; }
+    .slicknav_nav .slicknav_row:hover {
+      -webkit-border-radius: 6px;
+      -moz-border-radius: 6px;
+      border-radius: 6px;
+      background: #ccc;
+      color: #fff; }
+  .slicknav_nav a {
+    padding: 5px 10px;
+    margin: 2px 5px;
+    text-decoration: none;
+    color: #fff; }
+    .slicknav_nav a:hover {
+      -webkit-border-radius: 6px;
+      -moz-border-radius: 6px;
+      border-radius: 6px;
+      background: #ccc;
+      color: #222; }
+  .slicknav_nav .slicknav_txtnode {
+    margin-left: 15px; }
+  .slicknav_nav .slicknav_item a {
+    padding: 0;
+    margin: 0; }
+  .slicknav_nav .slicknav_parent-link a {
+    padding: 0;
+    margin: 0; }
+
+.slicknav_brand {
+  color: #fff;
+  font-size: 18px;
+  line-height: 30px;
+  padding: 7px 12px;
+  height: 44px; }
diff --git a/WebSites/errors/403/SlickNav/dist/slicknav.min.css b/WebSites/errors/403/SlickNav/dist/slicknav.min.css
new file mode 100644
index 0000000..389d995
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/dist/slicknav.min.css
@@ -0,0 +1,5 @@
+/*!
+ * SlickNav Responsive Mobile Menu v1.0.10
+ * (c) 2016 Josh Cope
+ * licensed under MIT
+ */.slicknav_btn,.slicknav_nav .slicknav_item{cursor:pointer}.slicknav_menu,.slicknav_menu *{box-sizing:border-box}.slicknav_btn{position:relative;display:block;vertical-align:middle;float:right;padding:.438em .625em;line-height:1.125em}.slicknav_btn .slicknav_icon-bar+.slicknav_icon-bar{margin-top:.188em}.slicknav_menu .slicknav_menutxt{display:block;line-height:1.188em;float:left;color:#fff;font-weight:700;text-shadow:0 1px 3px #000}.slicknav_menu .slicknav_icon{float:left;width:1.125em;height:.875em;margin:.188em 0 0 .438em}.slicknav_menu .slicknav_icon:before{background:0 0;width:1.125em;height:.875em;display:block;content:"";position:absolute}.slicknav_menu .slicknav_no-text{margin:0}.slicknav_menu .slicknav_icon-bar{display:block;width:1.125em;height:.125em;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,.25);box-shadow:0 1px 0 rgba(0,0,0,.25)}.slicknav_menu:after,.slicknav_menu:before{content:" ";display:table}.slicknav_menu:after{clear:both}.slicknav_nav li,.slicknav_nav ul{display:block}.slicknav_nav .slicknav_arrow{font-size:.8em;margin:0 0 0 .4em}.slicknav_nav .slicknav_item a{display:inline}.slicknav_nav .slicknav_row,.slicknav_nav a{display:block}.slicknav_nav .slicknav_parent-link a{display:inline}.slicknav_menu{*zoom:1;font-size:16px;background:#4c4c4c;padding:5px}.slicknav_nav,.slicknav_nav ul{list-style:none;overflow:hidden;padding:0}.slicknav_menu .slicknav_icon-bar{background-color:#fff}.slicknav_btn{margin:5px 5px 6px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,.75);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;background-color:#222}.slicknav_nav{clear:both;color:#fff;margin:0;font-size:.875em}.slicknav_nav ul{margin:0 0 0 20px}.slicknav_nav .slicknav_row,.slicknav_nav a{padding:5px 10px;margin:2px 5px}.slicknav_nav .slicknav_row:hover{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;background:#ccc;color:#fff}.slicknav_nav a{text-decoration:none;color:#fff}.slicknav_nav a:hover{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;background:#ccc;color:#222}.slicknav_nav .slicknav_txtnode{margin-left:15px}.slicknav_nav .slicknav_item a,.slicknav_nav .slicknav_parent-link a{padding:0;margin:0}.slicknav_brand{float:left;color:#fff;font-size:18px;line-height:30px;padding:7px 12px;height:44px}
\ No newline at end of file
diff --git a/WebSites/errors/403/SlickNav/gulpfile.js b/WebSites/errors/403/SlickNav/gulpfile.js
new file mode 100644
index 0000000..44e4d62
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/gulpfile.js
@@ -0,0 +1,42 @@
+var pkg = require('./package.json'),
+    gulp = require('gulp'),
+    header = require('gulp-header'),
+    sass = require('gulp-sass'),
+    rename = require('gulp-rename'),
+    uglify = require('gulp-uglify'),
+    minify = require('gulp-minify-css'),
+    plumber = require('gulp-plumber'),
+    banner = ['/*!',
+            ' * SlickNav Responsive Mobile Menu v<%= pkg.version %>',
+            ' * (c) <%= new Date().getFullYear() %> <%= pkg.author.name %>',
+            ' * licensed under <%= pkg.licenses[0].type %>',
+            ' */',
+            ''].join('\n');
+
+gulp.task('sass', function() {
+  gulp.src('scss/slicknav.scss')
+  .pipe(plumber())
+  .pipe(sass())
+  .pipe(header(banner, { pkg : pkg } ))
+  .pipe(gulp.dest('dist'))
+  .pipe(minify({compatibility: 'ie8'}))
+  .pipe(rename({suffix: '.min'}))
+  .pipe(gulp.dest('dist'));
+});
+
+gulp.task('watch', function() {
+  gulp.watch('scss/**/*.scss', ['sass']);
+  gulp.watch('*.js', ['js']);
+});
+
+gulp.task('js', function() {
+  return gulp.src('jquery.slicknav.js')
+    .pipe(plumber())
+    .pipe(header(banner, { pkg : pkg } ))
+    .pipe(gulp.dest('dist'))
+    .pipe(uglify({preserveComments: 'some'}))
+	.pipe(rename({suffix: '.min'}))
+    .pipe(gulp.dest('dist'));
+});
+
+gulp.task('default', ['sass','js']);
diff --git a/WebSites/errors/403/SlickNav/jquery.slicknav.js b/WebSites/errors/403/SlickNav/jquery.slicknav.js
new file mode 100644
index 0000000..50c490b
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/jquery.slicknav.js
@@ -0,0 +1,584 @@
+;(function ($, document, window) {
+    var
+    // default settings object.
+        defaults = {
+            label: 'MENU',
+            duplicate: true,
+            duration: 200,
+            easingOpen: 'swing',
+            easingClose: 'swing',
+            closedSymbol: '&#9658;',
+            openedSymbol: '&#9660;',
+            prependTo: 'body',
+            appendTo: '',
+            parentTag: 'a',
+            closeOnClick: false,
+            allowParentLinks: false,
+            nestedParentLinks: true,
+            showChildren: false,
+            removeIds: true,
+            removeClasses: false,
+            removeStyles: false,
+			brand: '',
+            animations: 'jquery',
+            init: function () {},
+            beforeOpen: function () {},
+            beforeClose: function () {},
+            afterOpen: function () {},
+            afterClose: function () {}
+        },
+        mobileMenu = 'slicknav',
+        prefix = 'slicknav',
+
+        Keyboard = {
+            DOWN: 40,
+            ENTER: 13,
+            ESCAPE: 27,
+            LEFT: 37,
+            RIGHT: 39,
+            SPACE: 32,
+            TAB: 9,
+            UP: 38,
+        };
+
+    function Plugin(element, options) {
+        this.element = element;
+
+        // jQuery has an extend method which merges the contents of two or
+        // more objects, storing the result in the first object. The first object
+        // is generally empty as we don't want to alter the default options for
+        // future instances of the plugin
+        this.settings = $.extend({}, defaults, options);
+
+        // Don't remove IDs by default if duplicate is false
+        if (!this.settings.duplicate && !options.hasOwnProperty("removeIds")) {
+          this.settings.removeIds = false;
+        }
+
+        this._defaults = defaults;
+        this._name = mobileMenu;
+
+        this.init();
+    }
+
+    Plugin.prototype.init = function () {
+        var $this = this,
+            menu = $(this.element),
+            settings = this.settings,
+            iconClass,
+            menuBar;
+
+        // clone menu if needed
+        if (settings.duplicate) {
+            $this.mobileNav = menu.clone();
+        } else {
+            $this.mobileNav = menu;
+        }
+
+        // remove IDs if set
+        if (settings.removeIds) {
+          $this.mobileNav.removeAttr('id');
+          $this.mobileNav.find('*').each(function (i, e) {
+              $(e).removeAttr('id');
+          });
+        }
+
+        // remove classes if set
+        if (settings.removeClasses) {
+            $this.mobileNav.removeAttr('class');
+            $this.mobileNav.find('*').each(function (i, e) {
+                $(e).removeAttr('class');
+            });
+        }
+
+        // remove styles if set
+        if (settings.removeStyles) {
+            $this.mobileNav.removeAttr('style');
+            $this.mobileNav.find('*').each(function (i, e) {
+                $(e).removeAttr('style');
+            });
+        }
+
+        // styling class for the button
+        iconClass = prefix + '_icon';
+
+        if (settings.label === '') {
+            iconClass += ' ' + prefix + '_no-text';
+        }
+
+        if (settings.parentTag == 'a') {
+            settings.parentTag = 'a href="#"';
+        }
+
+        // create menu bar
+        $this.mobileNav.attr('class', prefix + '_nav');
+        menuBar = $('<div class="' + prefix + '_menu"></div>');
+		if (settings.brand !== '') {
+			var brand = $('<div class="' + prefix + '_brand">'+settings.brand+'</div>');
+			$(menuBar).append(brand);
+		}
+        $this.btn = $(
+            ['<' + settings.parentTag + ' aria-haspopup="true" role="button" tabindex="0" class="' + prefix + '_btn ' + prefix + '_collapsed">',
+                '<span class="' + prefix + '_menutxt">' + settings.label + '</span>',
+                '<span class="' + iconClass + '">',
+                    '<span class="' + prefix + '_icon-bar"></span>',
+                    '<span class="' + prefix + '_icon-bar"></span>',
+                    '<span class="' + prefix + '_icon-bar"></span>',
+                '</span>',
+            '</' + settings.parentTag + '>'
+            ].join('')
+        );
+        $(menuBar).append($this.btn);
+        if(settings.appendTo !== '') {
+            $(settings.appendTo).append(menuBar);
+        } else {
+            $(settings.prependTo).prepend(menuBar);
+        }
+        menuBar.append($this.mobileNav);
+
+        // iterate over structure adding additional structure
+        var items = $this.mobileNav.find('li');
+        $(items).each(function () {
+            var item = $(this),
+                data = {};
+            data.children = item.children('ul').attr('role', 'menu');
+            item.data('menu', data);
+
+            // if a list item has a nested menu
+            if (data.children.length > 0) {
+
+                // select all text before the child menu
+                // check for anchors
+
+                var a = item.contents(),
+                    containsAnchor = false,
+                    nodes = [];
+
+                $(a).each(function () {
+                    if (!$(this).is('ul')) {
+                        nodes.push(this);
+                    } else {
+                        return false;
+                    }
+
+                    if($(this).is("a")) {
+                        containsAnchor = true;
+                    }
+                });
+
+                var wrapElement = $(
+                    '<' + settings.parentTag + ' role="menuitem" aria-haspopup="true" tabindex="-1" class="' + prefix + '_item"/>'
+                );
+
+                // wrap item text with tag and add classes unless we are separating parent links
+                if ((!settings.allowParentLinks || settings.nestedParentLinks) || !containsAnchor) {
+                    var $wrap = $(nodes).wrapAll(wrapElement).parent();
+                    $wrap.addClass(prefix+'_row');
+                } else
+                    $(nodes).wrapAll('<span class="'+prefix+'_parent-link '+prefix+'_row"/>').parent();
+
+                if (!settings.showChildren) {
+                    item.addClass(prefix+'_collapsed');
+                } else {
+                    item.addClass(prefix+'_open');
+                }
+
+                item.addClass(prefix+'_parent');
+
+                // create parent arrow. wrap with link if parent links and separating
+                var arrowElement = $('<span class="'+prefix+'_arrow">'+(settings.showChildren?settings.openedSymbol:settings.closedSymbol)+'</span>');
+
+                if (settings.allowParentLinks && !settings.nestedParentLinks && containsAnchor)
+                    arrowElement = arrowElement.wrap(wrapElement).parent();
+
+                //append arrow
+                $(nodes).last().after(arrowElement);
+
+
+            } else if ( item.children().length === 0) {
+                 item.addClass(prefix+'_txtnode');
+            }
+
+            // accessibility for links
+            item.children('a').attr('role', 'menuitem').click(function(event){
+                //Ensure that it's not a parent
+                if (settings.closeOnClick && !$(event.target).parent().closest('li').hasClass(prefix+'_parent')) {
+                        //Emulate menu close if set
+                        $($this.btn).click();
+                    }
+            });
+
+            //also close on click if parent links are set
+            if (settings.closeOnClick && settings.allowParentLinks) {
+                item.children('a').children('a').click(function (event) {
+                    //Emulate menu close
+                    $($this.btn).click();
+                });
+
+                item.find('.'+prefix+'_parent-link a:not(.'+prefix+'_item)').click(function(event){
+                    //Emulate menu close
+                        $($this.btn).click();
+                });
+            }
+        });
+
+        // structure is in place, now hide appropriate items
+        $(items).each(function () {
+            var data = $(this).data('menu');
+            if (!settings.showChildren){
+                $this._visibilityToggle(data.children, null, false, null, true);
+            }
+        });
+
+        // finally toggle entire menu
+        $this._visibilityToggle($this.mobileNav, null, false, 'init', true);
+
+        // accessibility for menu button
+        $this.mobileNav.attr('role','menu');
+
+        // outline prevention when using mouse
+        $(document).mousedown(function(){
+            $this._outlines(false);
+        });
+
+        $(document).keyup(function(){
+            $this._outlines(true);
+        });
+
+        // menu button click
+        $($this.btn).click(function (e) {
+            e.preventDefault();
+            $this._menuToggle();
+        });
+
+        // click on menu parent
+        $this.mobileNav.on('click', '.' + prefix + '_item', function (e) {
+            e.preventDefault();
+            $this._itemClick($(this));
+        });
+
+        // check for keyboard events on menu button and menu parents
+        $($this.btn).keydown(function (e) {
+            var ev = e || event;
+
+            switch(ev.keyCode) {
+                case Keyboard.ENTER:
+                case Keyboard.SPACE:
+                case Keyboard.DOWN:
+                    e.preventDefault();
+                    if (ev.keyCode !== Keyboard.DOWN || !$($this.btn).hasClass(prefix+'_open')){
+                        $this._menuToggle();
+                    }
+                    
+                    $($this.btn).next().find('[role="menuitem"]').first().focus();
+                    break;
+            }
+
+            
+        });
+
+        $this.mobileNav.on('keydown', '.'+prefix+'_item', function(e) {
+            var ev = e || event;
+
+            switch(ev.keyCode) {
+                case Keyboard.ENTER:
+                    e.preventDefault();
+                    $this._itemClick($(e.target));
+                    break;
+                case Keyboard.RIGHT:
+                    e.preventDefault();
+                    if ($(e.target).parent().hasClass(prefix+'_collapsed')) {
+                        $this._itemClick($(e.target));
+                    }
+                    $(e.target).next().find('[role="menuitem"]').first().focus();
+                    break;
+            }
+        });
+
+        $this.mobileNav.on('keydown', '[role="menuitem"]', function(e) {
+            var ev = e || event;
+
+            switch(ev.keyCode){
+                case Keyboard.DOWN:
+                    e.preventDefault();
+                    var allItems = $(e.target).parent().parent().children().children('[role="menuitem"]:visible');
+                    var idx = allItems.index( e.target );
+                    var nextIdx = idx + 1;
+                    if (allItems.length <= nextIdx) {
+                        nextIdx = 0;
+                    }
+                    var next = allItems.eq( nextIdx );
+                    next.focus();
+                break;
+                case Keyboard.UP:
+                    e.preventDefault();
+                    var allItems = $(e.target).parent().parent().children().children('[role="menuitem"]:visible');
+                    var idx = allItems.index( e.target );
+                    var next = allItems.eq( idx - 1 );
+                    next.focus();
+                break;
+                case Keyboard.LEFT:
+                    e.preventDefault();
+                    if ($(e.target).parent().parent().parent().hasClass(prefix+'_open')) {
+                        var parent = $(e.target).parent().parent().prev();
+                        parent.focus();
+                        $this._itemClick(parent);
+                    } else if ($(e.target).parent().parent().hasClass(prefix+'_nav')){
+                        $this._menuToggle();
+                        $($this.btn).focus();
+                    }
+                    break;
+                case Keyboard.ESCAPE:
+                    e.preventDefault();
+                    $this._menuToggle();
+                    $($this.btn).focus();
+                    break;    
+            }
+        });
+
+        // allow links clickable within parent tags if set
+        if (settings.allowParentLinks && settings.nestedParentLinks) {
+            $('.'+prefix+'_item a').click(function(e){
+                    e.stopImmediatePropagation();
+            });
+        }
+    };
+
+    //toggle menu
+    Plugin.prototype._menuToggle = function (el) {
+        var $this = this;
+        var btn = $this.btn;
+        var mobileNav = $this.mobileNav;
+
+        if (btn.hasClass(prefix+'_collapsed')) {
+            btn.removeClass(prefix+'_collapsed');
+            btn.addClass(prefix+'_open');
+        } else {
+            btn.removeClass(prefix+'_open');
+            btn.addClass(prefix+'_collapsed');
+        }
+        btn.addClass(prefix+'_animating');
+        $this._visibilityToggle(mobileNav, btn.parent(), true, btn);
+    };
+
+    // toggle clicked items
+    Plugin.prototype._itemClick = function (el) {
+        var $this = this;
+        var settings = $this.settings;
+        var data = el.data('menu');
+        if (!data) {
+            data = {};
+            data.arrow = el.children('.'+prefix+'_arrow');
+            data.ul = el.next('ul');
+            data.parent = el.parent();
+            //Separated parent link structure
+            if (data.parent.hasClass(prefix+'_parent-link')) {
+                data.parent = el.parent().parent();
+                data.ul = el.parent().next('ul');
+            }
+            el.data('menu', data);
+        }
+        if (data.parent.hasClass(prefix+'_collapsed')) {
+            data.arrow.html(settings.openedSymbol);
+            data.parent.removeClass(prefix+'_collapsed');
+            data.parent.addClass(prefix+'_open');
+            data.parent.addClass(prefix+'_animating');
+            $this._visibilityToggle(data.ul, data.parent, true, el);
+        } else {
+            data.arrow.html(settings.closedSymbol);
+            data.parent.addClass(prefix+'_collapsed');
+            data.parent.removeClass(prefix+'_open');
+            data.parent.addClass(prefix+'_animating');
+            $this._visibilityToggle(data.ul, data.parent, true, el);
+        }
+    };
+
+    // toggle actual visibility and accessibility tags
+    Plugin.prototype._visibilityToggle = function(el, parent, animate, trigger, init) {
+        var $this = this;
+        var settings = $this.settings;
+        var items = $this._getActionItems(el);
+        var duration = 0;
+        if (animate) {
+            duration = settings.duration;
+        }
+        
+        function afterOpen(trigger, parent) {
+            $(trigger).removeClass(prefix+'_animating');
+            $(parent).removeClass(prefix+'_animating');
+
+            //Fire afterOpen callback
+            if (!init) {
+                settings.afterOpen(trigger);
+            }
+        }
+        
+        function afterClose(trigger, parent) {
+            el.attr('aria-hidden','true');
+            items.attr('tabindex', '-1');
+            $this._setVisAttr(el, true);
+            el.hide(); //jQuery 1.7 bug fix
+
+            $(trigger).removeClass(prefix+'_animating');
+            $(parent).removeClass(prefix+'_animating');
+
+            //Fire init or afterClose callback
+            if (!init){
+                settings.afterClose(trigger);
+            } else if (trigger == 'init'){
+                settings.init();
+            }
+        }
+
+        if (el.hasClass(prefix+'_hidden')) {
+            el.removeClass(prefix+'_hidden');
+             //Fire beforeOpen callback
+            if (!init) {
+                settings.beforeOpen(trigger);
+            }
+            if (settings.animations === 'jquery') {
+                el.stop(true,true).slideDown(duration, settings.easingOpen, function(){
+                    afterOpen(trigger, parent);
+                });
+            } else if(settings.animations === 'velocity') {
+                el.velocity("finish").velocity("slideDown", {
+                    duration: duration,
+                    easing: settings.easingOpen,
+                    complete: function() {
+                        afterOpen(trigger, parent);
+                    }
+                });
+            }
+            el.attr('aria-hidden','false');
+            items.attr('tabindex', '0');
+            $this._setVisAttr(el, false);
+        } else {
+            el.addClass(prefix+'_hidden');
+
+            //Fire init or beforeClose callback
+            if (!init){
+                settings.beforeClose(trigger);
+            }
+
+            if (settings.animations === 'jquery') {
+                el.stop(true,true).slideUp(duration, this.settings.easingClose, function() {
+                    afterClose(trigger, parent)
+                });
+            } else if (settings.animations === 'velocity') {
+                
+                el.velocity("finish").velocity("slideUp", {
+                    duration: duration,
+                    easing: settings.easingClose,
+                    complete: function() {
+                        afterClose(trigger, parent);
+                    }
+                });
+            }
+        }
+    };
+
+    // set attributes of element and children based on visibility
+    Plugin.prototype._setVisAttr = function(el, hidden) {
+        var $this = this;
+
+        // select all parents that aren't hidden
+        var nonHidden = el.children('li').children('ul').not('.'+prefix+'_hidden');
+
+        // iterate over all items setting appropriate tags
+        if (!hidden) {
+            nonHidden.each(function(){
+                var ul = $(this);
+                ul.attr('aria-hidden','false');
+                var items = $this._getActionItems(ul);
+                items.attr('tabindex', '0');
+                $this._setVisAttr(ul, hidden);
+            });
+        } else {
+            nonHidden.each(function(){
+                var ul = $(this);
+                ul.attr('aria-hidden','true');
+                var items = $this._getActionItems(ul);
+                items.attr('tabindex', '-1');
+                $this._setVisAttr(ul, hidden);
+            });
+        }
+    };
+
+    // get all 1st level items that are clickable
+    Plugin.prototype._getActionItems = function(el) {
+        var data = el.data("menu");
+        if (!data) {
+            data = {};
+            var items = el.children('li');
+            var anchors = items.find('a');
+            data.links = anchors.add(items.find('.'+prefix+'_item'));
+            el.data('menu', data);
+        }
+        return data.links;
+    };
+
+    Plugin.prototype._outlines = function(state) {
+        if (!state) {
+            $('.'+prefix+'_item, .'+prefix+'_btn').css('outline','none');
+        } else {
+            $('.'+prefix+'_item, .'+prefix+'_btn').css('outline','');
+        }
+    };
+
+    Plugin.prototype.toggle = function(){
+        var $this = this;
+        $this._menuToggle();
+    };
+
+    Plugin.prototype.open = function(){
+        var $this = this;
+        if ($this.btn.hasClass(prefix+'_collapsed')) {
+            $this._menuToggle();
+        }
+    };
+
+    Plugin.prototype.close = function(){
+        var $this = this;
+        if ($this.btn.hasClass(prefix+'_open')) {
+            $this._menuToggle();
+        }
+    };
+
+    $.fn[mobileMenu] = function ( options ) {
+        var args = arguments;
+
+        // Is the first parameter an object (options), or was omitted, instantiate a new instance
+        if (options === undefined || typeof options === 'object') {
+            return this.each(function () {
+
+                // Only allow the plugin to be instantiated once due to methods
+                if (!$.data(this, 'plugin_' + mobileMenu)) {
+
+                    // if it has no instance, create a new one, pass options to our plugin constructor,
+                    // and store the plugin instance in the elements jQuery data object.
+                    $.data(this, 'plugin_' + mobileMenu, new Plugin( this, options ));
+                }
+            });
+
+        // If is a string and doesn't start with an underscore or 'init' function, treat this as a call to a public method.
+        } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
+
+            // Cache the method call to make it possible to return a value
+            var returns;
+
+            this.each(function () {
+                var instance = $.data(this, 'plugin_' + mobileMenu);
+
+                // Tests that there's already a plugin-instance and checks that the requested public method exists
+                if (instance instanceof Plugin && typeof instance[options] === 'function') {
+
+                    // Call the method of our plugin instance, and pass it the supplied arguments.
+                    returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
+                }
+            });
+
+            // If the earlier cached method gives a value back return the value, otherwise return this to preserve chainability.
+            return returns !== undefined ? returns : this;
+        }
+    };
+}(jQuery, document, window));
diff --git a/WebSites/errors/403/SlickNav/package.json b/WebSites/errors/403/SlickNav/package.json
new file mode 100644
index 0000000..64e4fea
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/package.json
@@ -0,0 +1,44 @@
+{
+  "version": "1.0.10",
+  "name": "slicknav",
+  "description": "",
+  "keywords": [
+    "slicknav",
+    "menu",
+    "css",
+    "sass",
+    "scss",
+    "jquery",
+    "javascript",
+    "component",
+    "responsive",
+    "mobile"
+  ],
+  "copyright": "Copyright 2016",
+  "homepage": "http://slicknav.com",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://github.com/titon/toolkit/blob/master/license.md"
+    }
+  ],
+  "author": {
+    "name": "Josh Cope"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/ComputerWolf/SlickNav"
+  },
+  "devDependencies": {
+    "gulp": "^3.8.11",
+    "gulp-header": "^1.2.2",
+    "gulp-minify-css": "^1.1.0",
+    "gulp-plumber": "^1.0.1",
+    "gulp-rename": "^1.2.2",
+    "gulp-sass": "^2.0.1",
+    "gulp-uglify": "^1.2.0"
+  },
+  "dependencies" : {
+    "jquery": ">=1.7"
+  }
+}
diff --git a/WebSites/errors/403/SlickNav/scss/core.scss b/WebSites/errors/403/SlickNav/scss/core.scss
new file mode 100644
index 0000000..2a22406
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/scss/core.scss
@@ -0,0 +1,88 @@
+.slicknav_btn {
+	position: relative;
+	display: block;
+	vertical-align: middle;
+	float: right;
+	padding: 0.438em 0.625em 0.438em 0.625em;
+	line-height: 1.125em;
+	cursor: pointer;
+	.slicknav_icon-bar + .slicknav_icon-bar {
+		margin-top: 0.188em;
+	}
+}
+.slicknav_menu {
+	*zoom: 1;
+	.slicknav_menutxt {
+		display: block;
+		line-height: 1.188em;
+		float: left;
+	}
+	.slicknav_icon {
+		float: left;
+        width: 1.125em;
+        height: 0.875em;
+		margin: 0.188em 0 0 0.438em;
+        &:before { // Firefox Mobile v42 bugfix
+            background: transparent;
+            width: 1.125em;
+            height: 0.875em;
+            display: block;
+            content: "";
+            position: absolute;
+        }
+	}
+	.slicknav_no-text {
+		margin: 0;
+	}
+	.slicknav_icon-bar {
+		display: block;
+		width: 1.125em;
+		height: 0.125em;
+		-webkit-border-radius: 1px;
+		-moz-border-radius: 1px;
+		border-radius: 1px;
+		-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+		-moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+		box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+	}
+	&:before {
+		content: " ";
+		display: table;
+	}
+	&:after {
+		content: " ";
+		display: table;
+		clear: both;
+	}
+}
+.slicknav_nav {
+	clear: both;
+	ul {
+		display: block;
+	}
+	li {
+		display: block;
+	}
+	.slicknav_arrow {
+		font-size: 0.8em;
+		margin: 0 0 0 0.4em;
+	}
+	.slicknav_item {
+		cursor: pointer;
+		a {
+			display: inline;
+		}
+	}
+	.slicknav_row {
+		display: block;
+	}
+	a {
+		display: block;
+	}
+	.slicknav_parent-link a {
+		display: inline;
+	}
+}
+.slicknav_brand {
+	float: left;
+}
\ No newline at end of file
diff --git a/WebSites/errors/403/SlickNav/scss/slicknav.scss b/WebSites/errors/403/SlickNav/scss/slicknav.scss
new file mode 100644
index 0000000..f861c5a
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/scss/slicknav.scss
@@ -0,0 +1,2 @@
+@import 'core';
+@import 'theme';
\ No newline at end of file
diff --git a/WebSites/errors/403/SlickNav/scss/theme.scss b/WebSites/errors/403/SlickNav/scss/theme.scss
new file mode 100644
index 0000000..35b18bd
--- /dev/null
+++ b/WebSites/errors/403/SlickNav/scss/theme.scss
@@ -0,0 +1,91 @@
+//colors
+$color_0: rgba(255, 255, 255, 0.75);
+$color_btn: #222;
+$color_text: #fff;
+$color_shadow: #000;
+$color_bg: #4c4c4c;
+$color_hover_bg: #ccc;
+$color_hover_text: #222;
+
+.slicknav_menu {
+	font-size: 16px;
+	box-sizing: border-box;
+	background: $color_bg;
+	padding: 5px;
+	* {
+		box-sizing: border-box;
+	}
+	.slicknav_menutxt {
+		color: $color_text;
+		font-weight: bold;
+		text-shadow: 0 1px 3px $color_shadow;
+	}
+	.slicknav_icon-bar {
+		background-color: $color_text;
+	}
+}
+.slicknav_btn {
+	margin: 5px 5px 6px;
+	text-decoration: none;
+	text-shadow: 0 1px 1px $color_0;
+	-webkit-border-radius: 4px;
+	-moz-border-radius: 4px;
+	border-radius: 4px;
+	background-color: $color_btn;
+}
+.slicknav_nav {
+	color: $color_text;
+	margin: 0;
+	padding: 0;
+	font-size: 0.875em;
+	list-style: none;
+	overflow: hidden;
+	ul {
+		list-style: none;
+		overflow: hidden;
+		padding: 0;
+		margin: 0 0 0 20px;
+	}
+	.slicknav_row {
+		padding: 5px 10px;
+		margin: 2px 5px;
+		&:hover {
+			-webkit-border-radius: 6px;
+			-moz-border-radius: 6px;
+			border-radius: 6px;
+			background: $color_hover_bg;
+			color: $color_text;
+		}
+	}
+	a {
+		padding: 5px 10px;
+		margin: 2px 5px;
+		text-decoration: none;
+		color: $color_text;
+		&:hover {
+			-webkit-border-radius: 6px;
+			-moz-border-radius: 6px;
+			border-radius: 6px;
+			background: $color_hover_bg;
+			color: $color_hover_text;
+		}
+	}
+	.slicknav_txtnode {
+		margin-left: 15px;
+	}
+	.slicknav_item a {
+		padding: 0;
+		margin: 0;
+	}
+	.slicknav_parent-link a {
+		padding: 0;
+		margin: 0;
+	}
+}
+.slicknav_brand {
+	color: $color_text;
+	font-size: 18px;
+	line-height: 30px;
+	padding: 7px 12px;
+	height: 44px;
+}
\ No newline at end of file
diff --git a/WebSites/errors/403/css/ess-old.css b/WebSites/errors/403/css/ess-old.css
new file mode 100644
index 0000000..45b68d4
--- /dev/null
+++ b/WebSites/errors/403/css/ess-old.css
@@ -0,0 +1,139 @@
+@font-face {
+  font-family: 'Titillium Light';
+  font-style: normal;
+  font-weight: 200;
+  src: url('../fonts/titillium-web-v7-latin-200.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/titillium-web-v7-latin-200.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-200.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-200.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/titillium-web-v7-latin-200.svg#TitilliumWeb') format('svg'); /* Legacy iOS */
+}
+@font-face {
+  font-family: 'Titillium SemiBold';
+  font-style: normal;
+  font-weight: 600;
+  src: url('../fonts/titillium-web-v7-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/titillium-web-v7-latin-600.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-600.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/titillium-web-v7-latin-600.svg#TitilliumWeb') format('svg'); /* Legacy iOS */
+}
+@font-face {
+  font-family: 'Titillium Bold';
+  font-style: normal;
+  font-weight: 700;
+  src: url('../fonts/titillium-web-v7-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/titillium-web-v7-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-700.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/titillium-web-v7-latin-700.svg#TitilliumWeb') format('svg'); /* Legacy iOS */
+}
+
+body {
+font-family: "Titillium SemiBold";
+background-color: #0c232d;
+color: #cef4ff;
+line-height: 20px;
+height: 100%;
+overflow-x: hidden;
+overflow-y: auto;
+}
+
+.tickLabel { 
+font-family: "Titillium SemiBold";
+font-size: 13px;
+color: #cef4ff;
+}
+
+.legend {
+font-family: "Titillium SemiBold";
+font-size: 16px;
+background: #0B2d3c;
+}
+
+.legendLabel {
+color: #cef4ff;
+padding-left: 5px;
+}
+
+.col {
+background: #ffffff !important;
+}
+
+.gridster .gs_w {
+background: #123B4A;
+padding: 0px;
+margin: 0px;
+overflow: hidden;
+z-index: auto;
+-webkit-touch-callout: text;
+-webkit-user-select: text;
+-khtml-user-select: text;
+-moz-user-select: text;
+-ms-user-select: text;
+user-select: text;
+}
+
+.gridster header {
+background-color: #0B2d3c;
+height: 30px;
+margin: 0;
+padding: 0 10px 0 10px;
+color: #8b8b8b;
+text-transform: uppercase;
+}
+.sub-section {
+padding: 0;
+border-bottom: solid 1px #49707e;
+position: relative;
+overflow: hidden;
+}
+
+.indicator-light {
+border-radius: 50%;
+width: 22px;
+height: 22px;
+border: 2px solid #49707e !important;
+float: left;
+background-color: #0b2d3c !important;
+margin-right: 8px !important;
+}
+
+.indicator-light.on {
+border: 2px solid #cef4ff !important;
+background-color: #09c96d !important;
+box-shadow: 0px 0px 15px #89F944;
+}
+
+.indicator-text {
+margin-top: 7px !important;
+}
+
+h1, h2, h3, h4, h5, h6 {
+font-family: "Titillium Bold" !important;
+margin: 10px 0;
+line-height: 20px;
+color: #cef4ff;
+text-rendering: optimizelegibility;
+}
+
+.tw-value {
+font-family: "Titillium Light" !important;
+position: relative;
+bottom: 5px;
+color: #cef4ff !important;
+}
+
+.widget {
+padding: 2px 10px 5px 10px;
+height: 100%;
+width: 100%;
+-moz-box-sizing: border-box;
+-webkit-box-sizing: border-box;
+box-sizing: border-box;
+}
+
+a {
+color: #cef4ff;
+text-decoration: none;
+
diff --git a/WebSites/errors/403/css/ess.css b/WebSites/errors/403/css/ess.css
new file mode 100644
index 0000000..5462502
--- /dev/null
+++ b/WebSites/errors/403/css/ess.css
@@ -0,0 +1,212 @@
+@font-face {
+  font-family: 'Titillium Light';
+  font-style: normal;
+  font-weight: 200;
+  src: url('../fonts/titillium-web-v7-latin-200.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/titillium-web-v7-latin-200.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-200.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-200.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/titillium-web-v7-latin-200.svg#TitilliumWeb') format('svg'); /* Legacy iOS */
+}
+@font-face {
+  font-family: 'Titillium SemiBold';
+  font-style: normal;
+  font-weight: 600;
+  src: url('../fonts/titillium-web-v7-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/titillium-web-v7-latin-600.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-600.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/titillium-web-v7-latin-600.svg#TitilliumWeb') format('svg'); /* Legacy iOS */
+}
+@font-face {
+  font-family: 'Titillium Bold';
+  font-style: normal;
+  font-weight: 700;
+  src: url('../fonts/titillium-web-v7-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+       url('../fonts/titillium-web-v7-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-700.woff') format('woff'), /* Modern Browsers */
+       url('../fonts/titillium-web-v7-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
+       url('../fonts/titillium-web-v7-latin-700.svg#TitilliumWeb') format('svg'); /* Legacy iOS */
+}
+
+body {
+font-family: "Titillium SemiBold";
+background-color: #0c232d;
+color: #cef4ff;
+line-height: 20px;
+height: 100%;
+overflow-x: hidden;
+overflow-y: scroll;
+-webkit-overflow-scrolling: touch;
+}
+
+.tickLabel { 
+font-family: "Titillium SemiBold";
+font-size: 13px;
+color: #cef4ff;
+}
+
+.legend {
+font-family: "Titillium SemiBold";
+font-size: 16px;
+background: #0B2d3c;
+}
+
+.legendLabel {
+color: #cef4ff;
+padding-left: 5px;
+}
+
+.col {
+background: #ffffff !important;
+}
+
+.gridster .gs_w {
+background: #123B4A;
+padding: 0px;
+margin: 0px;
+overflow: hidden;
+z-index: auto;
+-webkit-touch-callout: text;
+-webkit-user-select: text;
+-khtml-user-select: text;
+-moz-user-select: text;
+-ms-user-select: text;
+user-select: text;
+}
+
+.gridster header {
+background-color: #0B2d3c;
+height: 30px;
+margin: 0;
+padding: 0 10px 0 10px;
+color: #8b8b8b;
+text-transform: uppercase;
+}
+.sub-section {
+padding: 0;
+border-bottom: solid 1px #49707e;
+position: relative;
+overflow: hidden;
+}
+
+.indicator-light {
+border-radius: 50%;
+width: 22px;
+height: 22px;
+border: 2px solid #49707e !important;
+float: left;
+background-color: #0b2d3c !important;
+margin-right: 8px !important;
+}
+
+.indicator-light.on {
+border: 2px solid #cef4ff !important;
+background-color: #09c96d !important;
+box-shadow: 0px 0px 15px #89F944;
+}
+
+.indicator-text {
+font-family: "Titillium Light" !important;
+font-size: 28px;
+position: relative;
+bottom: 15px;
+}
+
+h1, h2, h3, h4, h5, h6 {
+font-family: "Titillium Bold" !important;
+margin: 10px 0;
+line-height: 20px;
+color: #cef4ff;
+text-rendering: optimizelegibility;
+}
+
+.tw-value {
+font-family: "Titillium Light" !important;
+position: relative;
+bottom: 5px;
+color: #cef4ff !important;
+}
+
+.tw-unit {
+font-family: "Titillium Light" !important;
+font-size: 28px;
+color: #cef4ff !important;
+vertical-align: top !important;
+position: relative;
+bottom: 5px;
+}
+
+.widget {
+padding: 2px 10px 5px 10px;
+height: 100%;
+width: 100%;
+-moz-box-sizing: border-box;
+-webkit-box-sizing: border-box;
+box-sizing: border-box;
+}
+
+a {
+color: #cef4ff;
+text-decoration: none;
+}
+
+.slicknav_menu {
+background: #0c232d;
+}
+
+.slicknav_btn {
+background-color: #123b4a;
+float: left;
+}
+
+.slicknav_nav a:hover {
+background: #123b4a;
+color: #cef4ff;
+}
+
+.slicknav_nav a {
+display : inline-block;
+}
+			
+#uhr{
+width: 90%;
+height: 90%;
+padding: 8px;
+}
+
+.rag-light {
+border-radius: 50%;
+width: 22px;
+height: 22px;
+border: 2px solid #49707e !important;
+float: left;
+background-color: #0b2d3c !important;
+margin-right: 8px !important;
+}
+
+.rag-light.green {
+border: 2px solid #cef4ff !important;
+background-color: #09c96d !important;
+box-shadow: 0px 0px 15px #89F944;
+}
+
+.rag-light.red {
+border: 2px solid #49707e !important;
+background-color: #0b2d3c !important;
+box-shadow: none !important;
+}
+
+
+.rag-light.amber {
+border: 2px solid #cef4ff !important;
+background-color:#FFB340 !important;
+box-shadow: 0px 0px 15px #FFC600;
+}
+
+.rag-text {
+font-family: "Titillium Light" !important;
+font-size: 28px;
+position: relative;
+bottom: 15px;
+}
diff --git a/WebSites/errors/403/css/freeboard.css b/WebSites/errors/403/css/freeboard.css
new file mode 100644
index 0000000..69a68d6
--- /dev/null
+++ b/WebSites/errors/403/css/freeboard.css
@@ -0,0 +1,2730 @@
+/* ambiance theme for codemirror */
+
+/* Color scheme */
+
+.cm-s-ambiance .cm-keyword { color: #cda869; }
+.cm-s-ambiance .cm-atom { color: #CF7EA9; }
+.cm-s-ambiance .cm-number { color: #78CF8A; }
+.cm-s-ambiance .cm-def { color: #aac6e3; }
+.cm-s-ambiance .cm-variable { color: #ffb795; }
+.cm-s-ambiance .cm-variable-2 { color: #eed1b3; }
+.cm-s-ambiance .cm-variable-3 { color: #faded3; }
+.cm-s-ambiance .cm-property { color: #eed1b3; }
+.cm-s-ambiance .cm-operator {color: #fa8d6a;}
+.cm-s-ambiance .cm-comment { color: #555; font-style:italic; }
+.cm-s-ambiance .cm-string { color: #8f9d6a; }
+.cm-s-ambiance .cm-string-2 { color: #9d937c; }
+.cm-s-ambiance .cm-meta { color: #D2A8A1; }
+.cm-s-ambiance .cm-qualifier { color: yellow; }
+.cm-s-ambiance .cm-builtin { color: #9999cc; }
+.cm-s-ambiance .cm-bracket { color: #24C2C7; }
+.cm-s-ambiance .cm-tag { color: #fee4ff }
+.cm-s-ambiance .cm-attribute {  color: #9B859D; }
+.cm-s-ambiance .cm-header {color: blue;}
+.cm-s-ambiance .cm-quote { color: #24C2C7; }
+.cm-s-ambiance .cm-hr { color: pink; }
+.cm-s-ambiance .cm-link { color: #F4C20B; }
+.cm-s-ambiance .cm-special { color: #FF9D00; }
+.cm-s-ambiance .cm-error { color: #AF2018; }
+
+.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; }
+.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; }
+
+.cm-s-ambiance .CodeMirror-selected {
+  background: rgba(255, 255, 255, 0.15);
+}
+.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected {
+  background: rgba(255, 255, 255, 0.10);
+}
+
+/* Editor styling */
+
+.cm-s-ambiance.CodeMirror {
+  line-height: 1.40em;
+  color: #E6E1DC;
+  background-color: #202020;
+  -webkit-box-shadow: inset 0 0 10px black;
+  -moz-box-shadow: inset 0 0 10px black;
+  box-shadow: inset 0 0 10px black;
+}
+
+.cm-s-ambiance .CodeMirror-gutters {
+  background: #3D3D3D;
+  border-right: 1px solid #4D4D4D;
+  box-shadow: 0 10px 20px black;
+}
+
+.cm-s-ambiance .CodeMirror-linenumber {
+  text-shadow: 0px 1px 1px #4d4d4d;
+  color: #222;
+  padding: 0 5px;
+}
+
+.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor {
+  border-left: 1px solid #7991E8;
+}
+
+.cm-s-ambiance .CodeMirror-activeline-background {
+  background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);
+}
+
+.cm-s-ambiance.CodeMirror,
+.cm-s-ambiance .CodeMirror-gutters {
+  background-image: url("data:image/png;base64,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");
+}
+
+/* BASICS */
+
+.CodeMirror {
+  /* Set height, width, borders, and global font properties here */
+  font-family: monospace;
+  height: 300px;
+}
+.CodeMirror-scroll {
+  /* Set scrolling behaviour here */
+  overflow: auto;
+}
+
+/* PADDING */
+
+.CodeMirror-lines {
+  padding: 4px 0; /* Vertical padding around content */
+}
+.CodeMirror pre {
+  padding: 0 4px; /* Horizontal padding of content */
+}
+
+.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+  background-color: white; /* The little square between H and V scrollbars */
+}
+
+/* GUTTER */
+
+.CodeMirror-gutters {
+  border-right: 1px solid #ddd;
+  background-color: #f7f7f7;
+  white-space: nowrap;
+}
+.CodeMirror-linenumbers {}
+.CodeMirror-linenumber {
+  padding: 0 3px 0 5px;
+  min-width: 20px;
+  text-align: right;
+  color: #999;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+/* CURSOR */
+
+.CodeMirror div.CodeMirror-cursor {
+  border-left: 1px solid black;
+}
+/* Shown when moving in bi-directional text */
+.CodeMirror div.CodeMirror-secondarycursor {
+  border-left: 1px solid silver;
+}
+.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
+  width: auto;
+  border: 0;
+  background: #7e7;
+}
+/* Can style cursor different in overwrite (non-insert) mode */
+div.CodeMirror-overwrite div.CodeMirror-cursor {}
+
+.cm-tab { display: inline-block; }
+
+.CodeMirror-ruler {
+  border-left: 1px solid #ccc;
+  position: absolute;
+}
+
+/* DEFAULT THEME */
+
+.cm-s-default .cm-keyword {color: #708;}
+.cm-s-default .cm-atom {color: #219;}
+.cm-s-default .cm-number {color: #164;}
+.cm-s-default .cm-def {color: #00f;}
+.cm-s-default .cm-variable,
+.cm-s-default .cm-punctuation,
+.cm-s-default .cm-property,
+.cm-s-default .cm-operator {}
+.cm-s-default .cm-variable-2 {color: #05a;}
+.cm-s-default .cm-variable-3 {color: #085;}
+.cm-s-default .cm-comment {color: #a50;}
+.cm-s-default .cm-string {color: #a11;}
+.cm-s-default .cm-string-2 {color: #f50;}
+.cm-s-default .cm-meta {color: #555;}
+.cm-s-default .cm-qualifier {color: #555;}
+.cm-s-default .cm-builtin {color: #30a;}
+.cm-s-default .cm-bracket {color: #997;}
+.cm-s-default .cm-tag {color: #170;}
+.cm-s-default .cm-attribute {color: #00c;}
+.cm-s-default .cm-header {color: blue;}
+.cm-s-default .cm-quote {color: #090;}
+.cm-s-default .cm-hr {color: #999;}
+.cm-s-default .cm-link {color: #00c;}
+
+.cm-negative {color: #d44;}
+.cm-positive {color: #292;}
+.cm-header, .cm-strong {font-weight: bold;}
+.cm-em {font-style: italic;}
+.cm-link {text-decoration: underline;}
+
+.cm-s-default .cm-error {color: #f00;}
+.cm-invalidchar {color: #f00;}
+
+div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
+div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
+.CodeMirror-activeline-background {background: #e8f2ff;}
+
+/* STOP */
+
+/* The rest of this file contains styles related to the mechanics of
+   the editor. You probably shouldn't touch them. */
+
+.CodeMirror {
+  line-height: 1;
+  position: relative;
+  overflow: hidden;
+  background: white;
+  color: black;
+}
+
+.CodeMirror-scroll {
+  /* 30px is the magic margin used to hide the element's real scrollbars */
+  /* See overflow: hidden in .CodeMirror */
+  margin-bottom: -30px; margin-right: -30px;
+  padding-bottom: 30px;
+  height: 100%;
+  outline: none; /* Prevent dragging from highlighting the element */
+  position: relative;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.CodeMirror-sizer {
+  position: relative;
+  border-right: 30px solid transparent;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+/* The fake, visible scrollbars. Used to force redraw during scrolling
+   before actuall scrolling happens, thus preventing shaking and
+   flickering artifacts. */
+.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+  position: absolute;
+  z-index: 6;
+  display: none;
+}
+.CodeMirror-vscrollbar {
+  right: 0; top: 0;
+  overflow-x: hidden;
+  overflow-y: scroll;
+}
+.CodeMirror-hscrollbar {
+  bottom: 0; left: 0;
+  overflow-y: hidden;
+  overflow-x: scroll;
+}
+.CodeMirror-scrollbar-filler {
+  right: 0; bottom: 0;
+}
+.CodeMirror-gutter-filler {
+  left: 0; bottom: 0;
+}
+
+.CodeMirror-gutters {
+  position: absolute; left: 0; top: 0;
+  padding-bottom: 30px;
+  z-index: 3;
+}
+.CodeMirror-gutter {
+  white-space: normal;
+  height: 100%;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  padding-bottom: 30px;
+  margin-bottom: -32px;
+  display: inline-block;
+  /* Hack to make IE7 behave */
+  *zoom:1;
+  *display:inline;
+}
+.CodeMirror-gutter-elt {
+  position: absolute;
+  cursor: default;
+  z-index: 4;
+}
+
+.CodeMirror-lines {
+  cursor: text;
+}
+.CodeMirror pre {
+  /* Reset some styles that the rest of the page might have set */
+  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
+  border-width: 0;
+  background: transparent;
+  font-family: inherit;
+  font-size: inherit;
+  margin: 0;
+  white-space: pre;
+  word-wrap: normal;
+  line-height: inherit;
+  color: inherit;
+  z-index: 2;
+  position: relative;
+  overflow: visible;
+}
+.CodeMirror-wrap pre {
+  word-wrap: break-word;
+  white-space: pre-wrap;
+  word-break: normal;
+}
+
+.CodeMirror-linebackground {
+  position: absolute;
+  left: 0; right: 0; top: 0; bottom: 0;
+  z-index: 0;
+}
+
+.CodeMirror-linewidget {
+  position: relative;
+  z-index: 2;
+  overflow: auto;
+}
+
+.CodeMirror-widget {}
+
+.CodeMirror-wrap .CodeMirror-scroll {
+  overflow-x: hidden;
+}
+
+.CodeMirror-measure {
+  position: absolute;
+  width: 100%;
+  height: 0;
+  overflow: hidden;
+  visibility: hidden;
+}
+.CodeMirror-measure pre { position: static; }
+
+.CodeMirror div.CodeMirror-cursor {
+  position: absolute;
+  border-right: none;
+  width: 0;
+}
+
+div.CodeMirror-cursors {
+  visibility: hidden;
+  position: relative;
+  z-index: 1;
+}
+.CodeMirror-focused div.CodeMirror-cursors {
+  visibility: visible;
+}
+
+.CodeMirror-selected { background: #d9d9d9; }
+.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
+.CodeMirror-crosshair { cursor: crosshair; }
+
+.cm-searching {
+  background: #ffa;
+  background: rgba(255, 255, 0, .4);
+}
+
+/* IE7 hack to prevent it from returning funny offsetTops on the spans */
+.CodeMirror span { *vertical-align: text-bottom; }
+
+/* Used to force a border model for a node */
+.cm-force-border { padding-right: .1px; }
+
+@media print {
+  /* Hide the cursor when printing */
+  .CodeMirror div.CodeMirror-cursors {
+    visibility: hidden;
+  }
+}
+
+/*! gridster.js - v0.1.0 - 2013-06-14 - * http://gridster.net/ - Copyright (c) 2013 ducksboard; Licensed MIT */
+.gridster{position:relative}.gridster>*{margin:0 auto;-webkit-transition:height .4s;-moz-transition:height .4s;-o-transition:height .4s;-ms-transition:height .4s;transition:height .4s}.gridster .gs_w{z-index:2;position:absolute}.ready .gs_w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s;-moz-transition:opacity .3s,left .3s,top .3s;-o-transition:opacity .3s,left .3s,top .3s;transition:opacity .3s,left .3s,top .3s}.ready .gs_w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-moz-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-o-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;transition:opacity .3s,left .3s,top .3s,width .3s,height .3s}.gridster .preview-holder{z-index:1;position:absolute;background-color:#fff;border-color:#fff;opacity:.3}.gridster .player-revert{z-index:10!important;-webkit-transition:left .3s,top .3s!important;-moz-transition:left .3s,top .3s!important;-o-transition:left .3s,top .3s!important;transition:left .3s,top .3s!important}.gridster .dragging{z-index:10!important;-webkit-transition:all 0s!important;-moz-transition:all 0s!important;-o-transition:all 0s!important;transition:all 0s!important}
+/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 8/9.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+	display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 8/9.
+ */
+
+audio,
+canvas,
+video {
+	display: inline-block;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+	display: none;
+	height: 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+[hidden] {
+	display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	font-family: sans-serif; /* 1 */
+	-ms-text-size-adjust: 100%; /* 2 */
+	-webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+	margin: 0;
+}
+
+/* Hacky hack. Remove scrollbars for 320 width screens */
+@media screen and (max-width : 320px) {
+	body::-webkit-scrollbar {
+		display: none;
+	}
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+	outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+	outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari 5, and Chrome.
+ */
+
+h1 {
+	font-size: 2em;
+	margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+	border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
+ */
+
+b,
+strong {
+	font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+	font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	height: 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+	background: #ff0;
+	color: #000;
+}
+
+/**
+ * Correct font family set oddly in Safari 5 and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+	font-family: monospace, serif;
+	font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+	white-space: pre-wrap;
+}
+
+/**
+ * Set consistent quote types.
+ */
+
+q {
+	quotes: "\201C" "\201D" "\2018" "\2019";
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+	font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+	font-size: 75%;
+	line-height: 0;
+	position: relative;
+	vertical-align: baseline;
+}
+
+sup {
+	top: -0.5em;
+}
+
+sub {
+	bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9.
+ */
+
+img {
+	border: 0;
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+	overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari 5.
+ */
+
+figure {
+	margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+	border: 1px solid #c0c0c0;
+	margin: 0 2px;
+	padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+	border: 0; /* 1 */
+	padding: 0; /* 2 */
+}
+
+/**
+ * 1. Correct font family not being inherited in all browsers.
+ * 2. Correct font size not being inherited in all browsers.
+ * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
+ */
+
+button,
+input,
+select,
+textarea {
+	font-family: inherit; /* 1 */
+	font-size: 100%; /* 2 */
+	margin: 0; /* 3 */
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+	line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+	text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+	-webkit-appearance: button; /* 2 */
+	cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+	cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to `content-box` in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+	box-sizing: border-box; /* 1 */
+	padding: 0; /* 2 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+	-webkit-appearance: textfield; /* 1 */
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box; /* 2 */
+	box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+	-webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+	overflow: auto; /* 1 */
+	vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+
+/* ==========
+freeboard
+============*/
+
+html {
+	background-color: #101214;
+	height: 100%;
+	overflow: hidden;
+}
+
+body {
+	background-color: #101214;
+	color: #8b8b8b;
+	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+	font-size: 14px;
+	line-height: 20px;
+	height: 100%;
+	overflow-x: hidden;
+	overflow-y: auto;
+}
+
+.modal {
+	position: absolute;
+	background-color: #2a2a2a;
+	top: 120px;
+	width: 900px;
+	margin: auto;
+	right: 0px;
+	left: 0px;
+	margin-bottom: 25px;
+}
+
+.modal.small {
+	max-width: 500px;
+	width: 100%;
+}
+
+.modal header {
+	background-color: #272727;
+	height: 40px;
+	margin: 0;
+	padding: 0 10px 0 10px;
+	color: #8b8b8b;
+	text-transform: uppercase;
+}
+
+.modal footer {
+	background-color: #272727;
+	height: 40px;
+	margin: 0;
+	color: #8b8b8b;
+	text-transform: uppercase;
+	clear: both;
+}
+
+.modal footer {
+	text-align: right;
+}
+
+.modal footer .text-button {
+	line-height: 40px;
+	padding-left: 15px;
+	padding-right: 15px;
+	display: inline-block;
+}
+
+.modal section {
+	padding: 25px;
+	padding-bottom: 55px;
+}
+
+.control-group:last-child {
+	margin-bottom: 0px;
+}
+
+.control-group {
+	margin-bottom: 16px;
+}
+
+.control-group:before,
+.control-group:after {
+	display: table;
+	line-height: 0;
+	content: "";
+}
+
+.control-group:after {
+	clear: both;
+}
+
+.control-label {
+	padding-top: 5px;
+	text-align: right;
+	text-transform: uppercase;
+	font-size: 11px;
+}
+
+.controls {
+	padding-left: 20px;
+	margin-left: 180px;
+}
+
+.input-suffix {
+	display: inline-block;
+	height: 22px;
+	padding: 4px 10px;
+	line-height: 23px;
+	vertical-align: middle;
+	text-transform: uppercase;
+	font-size: 11px;
+	min-width: 16px;
+}
+
+#plugin-description {
+	margin-bottom: 25px;
+}
+
+.align-right {
+	text-align: right;
+}
+
+select,
+textarea {
+	margin: 0;
+	font-size: 100%;
+	vertical-align: middle;
+}
+
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+	display: inline-block;
+	height: 20px;
+	padding: 4px 6px;
+	font-size: 14px;
+	line-height: 20px;
+	color: #d3d4d4;
+	vertical-align: middle;
+	-webkit-border-radius: 0px;
+	-moz-border-radius: 0px;
+	border-radius: -px;
+	width: 400px;
+}
+
+input,
+textarea {
+	width: 206px;
+}
+
+input.small,
+textarea.small {
+	width: 133px;
+}
+
+textarea {
+	height: auto;
+}
+
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+	background-color: #272727;
+	border: 1px solid #3d3d3d;
+	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	-webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+	-moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+	-o-transition: border linear 0.2s, box-shadow linear 0.2s;
+	transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+	border-color: rgba(255, 153, 0, 0.8);
+	outline: 0;
+	outline: thin dotted    \9;
+	/* IE6-9 */
+
+	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgb(255, 153, 0);
+	-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgb(255, 153, 0);
+	box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgb(255, 153, 0);
+}
+
+select {
+	width: 220px;
+	background-color: #272727;
+	height: 27px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+	margin: 10px 0;
+	font-family: inherit;
+	font-weight: bold;
+	line-height: 20px;
+	color: inherit;
+	text-rendering: optimizelegibility;
+}
+
+h1,
+h2,
+h3 {
+	line-height: 40px;
+}
+
+h1 {
+	font-size: 38.5px;
+}
+
+h2 {
+	font-size: 31.5px;
+}
+
+h3 {
+	font-size: 24.5px;
+}
+
+h4 {
+	font-size: 17.5px;
+}
+
+h5 {
+	font-size: 14px;
+}
+
+h6 {
+	font-size: 11.9px;
+}
+
+table {
+	max-width: 100%;
+	background-color: transparent;
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+
+.table {
+	width: 100%;
+	margin-bottom: 20px;
+}
+
+.table th,
+.table td {
+	padding: 8px;
+	line-height: 20px;
+	text-align: left;
+	vertical-align: top;
+	border-top: 1px solid #dddddd;
+}
+
+.table th {
+	font-weight: bold;
+}
+
+.table thead th {
+	vertical-align: bottom;
+}
+
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+	border-top: 0;
+}
+
+.table tbody + tbody {
+	border-top: 2px solid #dddddd;
+}
+
+.table .table {
+	background-color: #ffffff;
+}
+
+.table-condensed th,
+.table-condensed td {
+	padding: 2px 5px;
+}
+
+a:focus {
+	outline: thin dotted #333;
+	outline: 5px auto -webkit-focus-ring-color;
+	outline-offset: -2px;
+}
+
+#modal_overlay {
+	position: absolute;
+	z-index: 100;
+	top: 0px;
+	left: 0px;
+	height: 100%;
+	width: 100%;
+	background: rgba(0, 0, 0, 0.8);
+	overflow-y: auto;
+}
+
+a:hover,
+a:active {
+	outline: 0;
+}
+
+a {
+	color: #B88F51;
+	text-decoration: none;
+}
+
+a:hover,
+a:focus {
+	color: #005580;
+	text-decoration: underline;
+}
+
+.gridster header {
+	background-color: #272727;
+	height: 30px;
+	margin: 0;
+	padding: 0 10px 0 10px;
+	color: #8b8b8b;
+	text-transform: uppercase;
+}
+
+header h1 {
+	font-size: 12px;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	padding: 0;
+	margin: 0;
+	line-height: 30px;
+}
+
+.gridster section {
+	line-height: normal;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	margin: auto;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+#board-content {
+	overflow: visible;
+	position: relative;
+	padding-top: 10px;
+}
+
+#main-header {
+	width: 100%;
+	position: fixed;
+	z-index: 50;
+	display: none;
+}
+
+#admin-bar {
+	background-color: #313131;
+	width: 100%;
+	height: 200px;
+	position: relative;
+	-webkit-box-shadow: 0 0 5px #000;
+	box-shadow: 0 0 5px #000;
+}
+
+#toggle-header {
+	margin: 0 auto;
+	left: 0;
+	right: 0;
+	width: 50px;
+	background-color: #313131;
+	text-align: center;
+	cursor: pointer;
+}
+
+#toggle-header-icon {
+	margin-top: 4px;
+	margin-bottom: 7px;
+}
+
+.widget {
+	padding: 5px 10px 5px 10px;
+	height: 100%;
+	width: 100%;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.widget.fillsize {
+	padding: 0;
+}
+
+.pane-tools {
+	top: 0px;
+	right: 0px;
+	position: absolute;
+	display: none;
+}
+
+.sub-section-tools {
+	top: 0px;
+	right: 0px;
+	position: absolute;
+	display: none;
+}
+
+.datasource-edit-btn {
+	padding: 5px;
+	margin-right: 5px;
+	cursor: pointer;
+}
+
+.datasource-delete-btn {
+	padding: 5px;
+	margin-left: 5px;
+	cursor: pointer;
+}
+
+#board-tools {
+	width: 50%;
+	float: left;
+}
+
+.table thead th {
+	font-size: 10px;
+	text-shadow: none;
+}
+
+.table td {
+	border-top: solid 1px #3d3d3d;
+	color: #d3d4d4;
+}
+
+#datasources {
+	width: 50%;
+	float: right;
+	height: 100%;
+}
+
+#cam {
+	height: 100%;
+	background-size: cover;
+}
+
+#admin-menu {
+	left: 0px;
+	right: 0px;
+	width: 950px;
+	top: 20px;
+	margin: 0px auto;
+	padding-left: 10px;
+	padding-right: 10px;
+	position: absolute;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.sub-section h2 {
+	font-size: 14px;
+	font-weight: normal;
+	padding: 0px;
+	margin: 0px;
+	line-height: normal;
+}
+
+.sub-section {
+	padding: 0;
+	border-bottom: solid 1px #363636;
+	position: relative;
+	overflow: hidden;
+}
+
+.sub-section-height-1 {
+	height: 60px;
+}
+
+.sub-section-height-2 {
+	height: 120px;
+}
+
+.sub-section-height-3 {
+	height: 180px;
+}
+
+.sub-section-height-4 {
+	height: 240px;
+}
+
+.sub-section:last-of-type {
+	border-bottom: none;
+}
+
+#pump-icon {
+	padding: 10px;
+	padding-bottom: 12px;
+	display: none;
+}
+
+#admin-menu h1 {
+
+}
+
+.section-title {
+	min-height: 7px;
+}
+
+.small-text {
+	color: #d3d4d4;
+	font-size: 20px;
+	font-weight: 100;
+	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	letter-spacing: 1px;
+}
+
+ul, ol {
+	list-style: none;
+}
+
+#column-tools {
+	position: relative;
+	display: none;
+	margin: 0 auto;
+	left: 0;
+	right: 0;
+	top: 5px;
+}
+
+#column-tools .left-columns {
+	position: absolute;
+	left: 0;
+}
+
+#column-tools .right-columns {
+	position: absolute;
+	right: 0;
+}
+
+.column-tool {
+	cursor: pointer;
+}
+
+.column-tool.min.sub, .column-tool.max.add {
+	display: none;
+}
+
+.column-icon {
+	display: inline-block;
+	background-color: white;
+	width: 5px;
+	height: 100%;
+}
+
+.column-icon.right {
+	float: right;
+}
+
+.column-icon.left {
+	float: left;
+}
+
+.gridster {
+	max-width: 960px;
+	margin: 0 auto;
+	left: 0;
+	right: 0;
+	top: 0;
+}
+
+.gridster .gs_w {
+	background: #2a2a2a;
+	padding: 0px;
+	margin: 0px;
+	overflow: hidden;
+	z-index: auto;
+	-webkit-touch-callout: text;
+	-webkit-user-select: text;
+	-khtml-user-select: text;
+	-moz-user-select: text;
+	-ms-user-select: text;
+	user-select: text;
+}
+
+.gridster .preview-holder {
+	border: none !important;
+	border-radius: 0 !important;
+	background: rgba(255, 255, 255, .2) !important;
+}
+
+[class^="icon-"],
+[class*=" icon-"] {
+	display: inline-block;
+	width: 14px;
+	height: 14px;
+	margin-top: 1px;
+	*margin-right: .3em;
+	line-height: 14px;
+	vertical-align: text-top;
+	background-image: url("../img/glyphicons-halflings.png");
+	background-position: 14px 14px;
+	background-repeat: no-repeat;
+}
+
+/* White icons with optional class, or on hover/focus/active states of certain elements */
+
+.icon-white,
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:focus > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > li > a:focus > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"],
+.dropdown-submenu:hover > a > [class^="icon-"],
+.dropdown-submenu:focus > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"],
+.dropdown-submenu:focus > a > [class*=" icon-"] {
+	background-image: url("../img/glyphicons-halflings-white.png");
+}
+
+.icon-glass {
+	background-position: 0 0;
+}
+
+.icon-music {
+	background-position: -24px 0;
+}
+
+.icon-search {
+	background-position: -48px 0;
+}
+
+.icon-envelope {
+	background-position: -72px 0;
+}
+
+.icon-heart {
+	background-position: -96px 0;
+}
+
+.icon-star {
+	background-position: -120px 0;
+}
+
+.icon-star-empty {
+	background-position: -144px 0;
+}
+
+.icon-user {
+	background-position: -168px 0;
+}
+
+.icon-film {
+	background-position: -192px 0;
+}
+
+.icon-th-large {
+	background-position: -216px 0;
+}
+
+.icon-th {
+	background-position: -240px 0;
+}
+
+.icon-th-list {
+	background-position: -264px 0;
+}
+
+.icon-ok {
+	background-position: -288px 0;
+}
+
+.icon-remove {
+	background-position: -312px 0;
+}
+
+.icon-zoom-in {
+	background-position: -336px 0;
+}
+
+.icon-zoom-out {
+	background-position: -360px 0;
+}
+
+.icon-off {
+	background-position: -384px 0;
+}
+
+.icon-signal {
+	background-position: -408px 0;
+}
+
+.icon-cog {
+	background-position: -432px 0;
+}
+
+.icon-trash {
+	background-position: -456px 0;
+}
+
+.icon-home {
+	background-position: 0 -24px;
+}
+
+.icon-file {
+	background-position: -24px -24px;
+}
+
+.icon-time {
+	background-position: -48px -24px;
+}
+
+.icon-road {
+	background-position: -72px -24px;
+}
+
+.icon-download-alt {
+	background-position: -96px -24px;
+}
+
+.icon-download {
+	background-position: -120px -24px;
+}
+
+.icon-upload {
+	background-position: -144px -24px;
+}
+
+.icon-inbox {
+	background-position: -168px -24px;
+}
+
+.icon-play-circle {
+	background-position: -192px -24px;
+}
+
+.icon-repeat {
+	background-position: -216px -24px;
+}
+
+.icon-refresh {
+	background-position: -240px -24px;
+}
+
+.icon-list-alt {
+	background-position: -264px -24px;
+}
+
+.icon-lock {
+	background-position: -287px -24px;
+}
+
+.icon-flag {
+	background-position: -312px -24px;
+}
+
+.icon-headphones {
+	background-position: -336px -24px;
+}
+
+.icon-volume-off {
+	background-position: -360px -24px;
+}
+
+.icon-volume-down {
+	background-position: -384px -24px;
+}
+
+.icon-volume-up {
+	background-position: -408px -24px;
+}
+
+.icon-qrcode {
+	background-position: -432px -24px;
+}
+
+.icon-barcode {
+	background-position: -456px -24px;
+}
+
+.icon-tag {
+	background-position: 0 -48px;
+}
+
+.icon-tags {
+	background-position: -25px -48px;
+}
+
+.icon-book {
+	background-position: -48px -48px;
+}
+
+.icon-bookmark {
+	background-position: -72px -48px;
+}
+
+.icon-print {
+	background-position: -96px -48px;
+}
+
+.icon-camera {
+	background-position: -120px -48px;
+}
+
+.icon-font {
+	background-position: -144px -48px;
+}
+
+.icon-bold {
+	background-position: -167px -48px;
+}
+
+.icon-italic {
+	background-position: -192px -48px;
+}
+
+.icon-text-height {
+	background-position: -216px -48px;
+}
+
+.icon-text-width {
+	background-position: -240px -48px;
+}
+
+.icon-align-left {
+	background-position: -264px -48px;
+}
+
+.icon-align-center {
+	background-position: -288px -48px;
+}
+
+.icon-align-right {
+	background-position: -312px -48px;
+}
+
+.icon-align-justify {
+	background-position: -336px -48px;
+}
+
+.icon-list {
+	background-position: -360px -48px;
+}
+
+.icon-indent-left {
+	background-position: -384px -48px;
+}
+
+.icon-indent-right {
+	background-position: -408px -48px;
+}
+
+.icon-facetime-video {
+	background-position: -432px -48px;
+}
+
+.icon-picture {
+	background-position: -456px -48px;
+}
+
+.icon-pencil {
+	background-position: 0 -72px;
+}
+
+.icon-map-marker {
+	background-position: -24px -72px;
+}
+
+.icon-adjust {
+	background-position: -48px -72px;
+}
+
+.icon-tint {
+	background-position: -72px -72px;
+}
+
+.icon-edit {
+	background-position: -96px -72px;
+}
+
+.icon-share {
+	background-position: -120px -72px;
+}
+
+.icon-check {
+	background-position: -144px -72px;
+}
+
+.icon-move {
+	background-position: -168px -72px;
+}
+
+.icon-step-backward {
+	background-position: -192px -72px;
+}
+
+.icon-fast-backward {
+	background-position: -216px -72px;
+}
+
+.icon-backward {
+	background-position: -240px -72px;
+}
+
+.icon-play {
+	background-position: -264px -72px;
+}
+
+.icon-pause {
+	background-position: -288px -72px;
+}
+
+.icon-stop {
+	background-position: -312px -72px;
+}
+
+.icon-forward {
+	background-position: -336px -72px;
+}
+
+.icon-fast-forward {
+	background-position: -360px -72px;
+}
+
+.icon-step-forward {
+	background-position: -384px -72px;
+}
+
+.icon-eject {
+	background-position: -408px -72px;
+}
+
+.icon-chevron-left {
+	background-position: -432px -72px;
+}
+
+.icon-chevron-right {
+	background-position: -456px -72px;
+}
+
+.icon-plus-sign {
+	background-position: 0 -96px;
+}
+
+.icon-minus-sign {
+	background-position: -24px -96px;
+}
+
+.icon-remove-sign {
+	background-position: -48px -96px;
+}
+
+.icon-ok-sign {
+	background-position: -72px -96px;
+}
+
+.icon-question-sign {
+	background-position: -96px -96px;
+}
+
+.icon-info-sign {
+	background-position: -120px -96px;
+}
+
+.icon-screenshot {
+	background-position: -144px -96px;
+}
+
+.icon-remove-circle {
+	background-position: -168px -96px;
+}
+
+.icon-ok-circle {
+	background-position: -192px -96px;
+}
+
+.icon-ban-circle {
+	background-position: -216px -96px;
+}
+
+.icon-arrow-left {
+	background-position: -240px -96px;
+}
+
+.icon-arrow-right {
+	background-position: -264px -96px;
+}
+
+.icon-arrow-up {
+	background-position: -289px -96px;
+}
+
+.icon-arrow-down {
+	background-position: -312px -96px;
+}
+
+.icon-share-alt {
+	background-position: -336px -96px;
+}
+
+.icon-resize-full {
+	background-position: -360px -96px;
+}
+
+.icon-resize-small {
+	background-position: -384px -96px;
+}
+
+.icon-plus {
+	background-position: -408px -96px;
+}
+
+.icon-minus {
+	background-position: -433px -96px;
+}
+
+.icon-asterisk {
+	background-position: -456px -96px;
+}
+
+.icon-exclamation-sign {
+	background-position: 0 -120px;
+}
+
+.icon-gift {
+	background-position: -24px -120px;
+}
+
+.icon-leaf {
+	background-position: -48px -120px;
+}
+
+.icon-fire {
+	background-position: -72px -120px;
+}
+
+.icon-eye-open {
+	background-position: -96px -120px;
+}
+
+.icon-eye-close {
+	background-position: -120px -120px;
+}
+
+.icon-warning-sign {
+	background-position: -144px -120px;
+}
+
+.icon-plane {
+	background-position: -168px -120px;
+}
+
+.icon-calendar {
+	background-position: -192px -120px;
+}
+
+.icon-random {
+	width: 16px;
+	background-position: -216px -120px;
+}
+
+.icon-comment {
+	background-position: -240px -120px;
+}
+
+.icon-magnet {
+	background-position: -264px -120px;
+}
+
+.icon-chevron-up {
+	background-position: -288px -120px;
+}
+
+.icon-chevron-down {
+	background-position: -313px -119px;
+}
+
+.icon-retweet {
+	background-position: -336px -120px;
+}
+
+.icon-shopping-cart {
+	background-position: -360px -120px;
+}
+
+.icon-folder-close {
+	width: 16px;
+	background-position: -384px -120px;
+}
+
+.icon-folder-open {
+	width: 16px;
+	background-position: -408px -120px;
+}
+
+.icon-resize-vertical {
+	background-position: -432px -119px;
+}
+
+.icon-resize-horizontal {
+	background-position: -456px -118px;
+}
+
+.icon-hdd {
+	background-position: 0 -144px;
+}
+
+.icon-bullhorn {
+	background-position: -24px -144px;
+}
+
+.icon-bell {
+	background-position: -48px -144px;
+}
+
+.icon-certificate {
+	background-position: -72px -144px;
+}
+
+.icon-thumbs-up {
+	background-position: -96px -144px;
+}
+
+.icon-thumbs-down {
+	background-position: -120px -144px;
+}
+
+.icon-hand-right {
+	background-position: -144px -144px;
+}
+
+.icon-hand-left {
+	background-position: -168px -144px;
+}
+
+.icon-hand-up {
+	background-position: -192px -144px;
+}
+
+.icon-hand-down {
+	background-position: -216px -144px;
+}
+
+.icon-circle-arrow-right {
+	background-position: -240px -144px;
+}
+
+.icon-circle-arrow-left {
+	background-position: -264px -144px;
+}
+
+.icon-circle-arrow-up {
+	background-position: -288px -144px;
+}
+
+.icon-circle-arrow-down {
+	background-position: -312px -144px;
+}
+
+.icon-globe {
+	background-position: -336px -144px;
+}
+
+.icon-wrench {
+	background-position: -360px -144px;
+}
+
+.icon-tasks {
+	background-position: -384px -144px;
+}
+
+.icon-filter {
+	background-position: -408px -144px;
+}
+
+.icon-briefcase {
+	background-position: -432px -144px;
+}
+
+.icon-fullscreen {
+	background-position: -456px -144px;
+}
+
+.form-table td {
+	vertical-align: top;
+}
+
+.form-label {
+	text-align: right;
+	padding-right: 14px;
+	height: 42px;
+	float: left;
+	width: 160px;
+	padding-top: 4px;
+}
+
+.form-value {
+	float: left;
+}
+
+.form-row {
+	clear: both;
+}
+
+td.table-row-operation {
+}
+
+input.table-row-value {
+	width: 150px;
+	margin: 0px;
+}
+
+.sub-table {
+	margin-bottom: 3px;
+}
+
+.sub-table td {
+	border: none;
+	vertical-align: middle;
+}
+
+.form-table-value-subtable {
+	max-height: 110px;
+	overflow-x: hidden;
+	overflow-y: auto;
+	border-bottom: solid 1px #3d3d3d;
+	width: 414px;
+}
+
+.datasource-list-container {
+	max-height: 110px;
+	overflow-x: hidden;
+	overflow-y: auto;
+	border-bottom: solid 1px #3d3d3d;
+}
+
+ul.value-dropdown {
+	height: 75px;
+	position: absolute;
+	padding: 0px;
+	margin: 0px;
+	background-color: #272727;
+	border: 1px solid rgba(255, 153, 0, 0.8);
+	overflow-x: hidden;
+	overflow-y: auto;
+	z-index: 3001;
+}
+
+ul.value-dropdown li {
+	padding: 5px;
+	cursor: pointer;
+}
+
+ul.value-dropdown li.selected {
+	background-color: rgba(255, 153, 0, 0.8);
+	color: #000;
+	text-shadow: none;
+}
+
+ul.value-dropdown li .preview {
+	font-style: italic;
+	font-size: 10px;
+	width: 300px;
+	display: inline-block;
+	vertical-align: bottom;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	padding-left: 20px;
+}
+
+td.form-table-value > input[type="checkbox"] {
+	height: 15px;
+	margin-top: 7px;
+}
+
+.table-row-operation > i {
+	cursor: pointer;
+}
+
+#main-logo {
+	display: block;
+	margin-bottom: 20px;
+}
+
+#dash-logo {
+	display: block;
+	margin-left: 10px;
+	margin-bottom: 10px;
+}
+
+.value-editor-ds {
+	color: #B88F51;
+	cursor: pointer;
+}
+
+ul.board-toolbar {
+	padding: 0px;
+	margin: 0px;
+	text-transform: uppercase;
+	font-size: 11px;
+}
+
+ul.board-toolbar.vertical {
+	display: inline-block;
+}
+
+.board-toolbar li {
+	color: #B88F51;
+	float: left;
+	cursor: pointer;
+	margin: 0px 0px 0px 5px;
+	background-color: rgba(75, 75, 75, 0.0);
+	padding: 8px;
+	height: 14px;
+}
+
+.board-toolbar.vertical li {
+	float: none;
+}
+
+.board-toolbar li:hover {
+	background-color: rgba(75, 75, 75, 1.0);
+
+	-webkit-transition: 250ms linear;
+	-moz-transition: 250ms linear;
+	-o-transition: 250ms linear;
+	-ms-transition: 250ms linear;
+	transition: 250ms linear;
+}
+
+.board-toolbar li i {
+	float: left;
+	margin: 0;
+	padding: 0;
+}
+
+.board-toolbar li label {
+	cursor: pointer;
+	margin-left: 5px;
+	float: left;
+	margin-top: -3px;
+	margin-bottom: -10px;
+}
+
+.text-button {
+	color: #B88F51;
+	cursor: pointer;
+	text-transform: uppercase;
+}
+
+.datasource-name {
+	text-transform: none;
+}
+
+a:hover.text-button, a:focus.text-button {
+	color: #B88F51;
+	text-decoration: none;
+}
+
+.text-button > i {
+	margin-right: 10px;
+}
+
+.text-button::before,
+.text-button::after {
+	display: inline-block;
+	opacity: 0;
+	-webkit-transition: -webkit-transform 0.3s, opacity 0.2s;
+	-moz-transition: -moz-transform 0.3s, opacity 0.2s;
+	transition: transform 0.3s, opacity 0.2s;
+}
+
+.text-button::before {
+	margin-right: 5px;
+	content: '[';
+	-webkit-transform: translateX(10px);
+	-moz-transform: translateX(10px);
+	transform: translateX(10px);
+}
+
+.text-button::after {
+	margin-left: 5px;
+	content: ']';
+	-webkit-transform: translateX(-10px);
+	-moz-transform: translateX(-10px);
+	transform: translateX(-10px);
+}
+
+.text-button:hover::before,
+.text-button:hover::after,
+.text-button:focus::before,
+.text-button:focus::after {
+	opacity: 1;
+	-webkit-transform: translateX(0px);
+	-moz-transform: translateX(0px);
+	transform: translateX(0px);
+}
+
+.setting-description {
+	font-size: 10px;
+	text-shadow: none;
+	color: #6F6F6F;
+	margin-top: 5px;
+	margin-bottom: 15px;
+	max-width: 414px;
+	line-height: 1.5em;
+}
+
+.calculated-setting-row {
+	clear: both;
+	height: 30px;
+	margin-bottom: 5px;
+}
+
+textarea.calculated-value-input {
+	position: absolute;
+	width: 400px;
+	height: 20px;
+	resize: none;
+	white-space: nowrap;
+	overflow: auto;
+	Z-index: 3000;
+}
+
+ul.datasource-input-suffix {
+	margin-left: 409px;
+}
+
+.form-label .board-toolbar li {
+	float: right;
+}
+
+.styled-select select {
+	width: 414px;
+	height: 30px;
+	-webkit-appearance: none;
+	border: 1px solid #3d3d3d;
+	background: url(../img/dropdown-arrow.png) no-repeat right #272727;
+}
+
+.title {
+	font-family: 'Helvetica-Neue', 'Helvetica', 'Arial', sans-serif;
+	vertical-align: baseline;
+	-webkit-font-smoothing: antialiased;
+	font-style: normal;
+	color: #d3d4d4;
+}
+
+.title.bordered {
+	border: solid 3px #d3d4d4;
+	display: inline-block;
+	padding: 2px 17px 2px 17px;
+	line-height: 39px;
+}
+
+h1.title {
+	margin-bottom: 10px;
+	font-size: 23px;
+	letter-spacing: -1px;
+}
+
+h2.title {
+	font-size: 13px;
+	line-height: 20px;
+	margin: 0px;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+.form-value input[type="checkbox"] {
+	margin-top: 8px;
+}
+
+.table-operation {
+	font-size: 11px;
+	padding-left: 5px;
+	padding-bottom: 5px;
+	padding-top: 1px;
+}
+
+#add-pane {
+}
+
+#pane-holding-pen {
+	display: none;
+}
+
+@media screen and (max-width : 960px) {
+	#add-pane {
+		padding-top: 10px;
+	}
+
+	.text-button {
+		font-size: 14px;
+		line-height: 22px;
+	}
+
+	h1.title {
+		margin-bottom: 0px;
+		font-size: 13px;
+		letter-spacing: 0px;
+	}
+
+	.title.bordered {
+		padding: 1px 8px;
+		line-height: 25px;
+		border-width: 2px;
+	}
+
+	#admin-menu {
+		width: 100%;
+	}
+
+	h2.title {
+		font-size: 10px;
+		padding-top: 5px;
+		padding-bottom: 5px;
+	}
+
+	#board-tools {
+		width: 100%;
+	}
+
+	#datasources {
+		width: 100%;
+		float: none;
+		clear: both;
+	}
+
+	#board-actions {
+		float: left;
+	}
+
+	#board-logo {
+		float: left;
+	}
+
+	.modal header {
+		height: 30px;
+	}
+
+	.modal {
+		width: 100%;
+		top: 0px;
+		left: 0px;
+	}
+
+	.datasource-list-container {
+		max-height: 77px;
+	}
+
+	.form-label {
+		float: none;
+		height: auto;
+		width: auto;
+		text-align: left;
+		padding-top: 0px;
+	}
+
+	.form-value {
+		width: 100%;
+		padding-bottom: 10px;
+		float: none;
+	}
+
+	.control-label {
+		width: auto;
+	}
+
+	.modal section {
+		padding-bottom: 10px;
+		padding-top: 10px;
+	}
+
+	ul.datasource-input-suffix {
+		margin-left: 0px;
+		margin-bottom: 30px;
+	}
+
+	ul.datasource-input-suffix li {
+		margin-left: 0;
+	}
+
+	textarea, input[type="text"] {
+		width: 95%;
+	}
+
+	.styled-select select {
+		width: 100%;
+	}
+
+	.form-table-value-subtable {
+		width: 100%;
+	}
+
+	.table-operation {
+		font-size: 11px;
+	}
+
+	textarea.calculated-value-input {
+		position: inherit;
+		width: 95%;
+	}
+}
+
+.wrapperloading {
+	position: absolute;
+	height: 200px;
+	width: 200px;
+	top: 50%;
+	margin-top: -100px;
+	left: 50%;
+	margin-left: -100px;
+	z-index: 2000;
+}
+
+.wrapperloading .loading.up {
+	position: absolute;
+	height: 200px;
+	width: 200px;
+	border-radius: 150px;
+	border: 3px solid #fff;
+	border-top-color: #fff;
+	border-left-color: #555;
+	border-right-color: #555;
+	border-bottom-color: #fff;
+	-webkit-animation: rotation 3s linear infinite;
+	-moz-animation: rotation 3s linear infinite;
+	-o-animation: rotation 3s linear infinite;
+	animation: rotation 3s linear infinite;
+}
+
+.wrapperloading .loading.down {
+	position: absolute;
+	height: 100px;
+	width: 100px;
+	top: 50%;
+	margin-top: -50px;
+	left: 50%;
+	margin-left: -50px;
+	border-radius: 150px;
+	border: 3px solid #fff;
+	border-left-color: #fff;
+	border-top-color: #555;
+	border-bottom-color: #555;
+	border-right-color: #fff;
+	-webkit-animation: rotation 1s linear infinite;
+	-moz-animation: rotation 1s linear infinite;
+	-o-animation: rotation 1s linear infinite;
+	animation: rotation 1s linear infinite;
+}
+
+@-webkit-keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@-moz-keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@-o-keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
+	color: #636363;
+}
+
+input:-moz-placeholder, textarea:-moz-placeholder {
+	color: #636363;
+}
+
+::-webkit-scrollbar {
+	height: 0px;
+	width: 4px;
+	background: transparent;
+	padding-right: 10;
+}
+
+::-webkit-scrollbar-thumb {
+	background: rgba(255, 255, 255, 0.05);
+	-webkit-border-radius: 1ex;
+}
+
+::-webkit-scrollbar-corner {
+	background: transparent;
+}
+
+.validation-error {
+	margin-top: 7px;
+	margin-bottom: 7px;
+	color: #AA7575;
+	font-size: 13px;
+}
+
+.onoffswitch {
+	position: relative;
+	width: 78px;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+}
+
+.onoffswitch-checkbox {
+	display: none;
+}
+
+.onoffswitch-label {
+	display: block;
+	overflow: hidden;
+	cursor: pointer;
+	border: 1px solid #3D3D3D;
+	border-radius: 0px;
+}
+
+.onoffswitch-inner {
+	width: 200%;
+	margin-left: -100%;
+	-moz-transition: margin 0.3s ease-in 0s;
+	-webkit-transition: margin 0.3s ease-in 0s;
+	-o-transition: margin 0.3s ease-in 0s;
+	transition: margin 0.3s ease-in 0s;
+}
+
+.onoffswitch-inner .on, .onoffswitch-inner .off {
+	float: left;
+	width: 50%;
+	height: 29px;
+	padding: 0;
+	line-height: 29px;
+	font-size: 17px;
+	color: white;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.onoffswitch-inner .on {
+	padding-left: 6px;
+	background-color: #2a2a2a;
+	color: #8B8B8B;
+}
+
+.onoffswitch-inner .off {
+	padding-right: 6px;
+	background-color: #101214;
+	color: #8B8B8B;
+	text-align: right;
+}
+
+.onoffswitch-switch {
+	width: 21px;
+	margin: 4px;
+	background: #A1A1A1;
+	border: 1px solid #3D3D3D;
+	border-radius: 0px;
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	right: 47px;
+	-moz-transition: all 0.3s ease-in 0s;
+	-webkit-transition: all 0.3s ease-in 0s;
+	-o-transition: all 0.3s ease-in 0s;
+	transition: all 0.3s ease-in 0s;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+	margin-left: 0;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+	right: 0px;
+	background-color: #FF9900;
+}
+
+.code-window {
+	z-index: 5000;
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	background-color: #2a2a2a;
+}
+
+.code-window-footer {
+	height: 64px;
+	position: absolute;
+	right: 0;
+	bottom: 0;
+	line-height: 64px;
+	padding-right: 20px;
+	padding-left: 20px;
+}
+
+.code-window-header {
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: 20px;
+	line-height: 1.1em;
+	font-weight: 200;
+}
+
+@media screen and (max-width : 800px) {
+	.code-window-header {
+		font-size: 11px;
+	}
+}
+
+.code-mirror-wrapper {
+	width: 100%;
+	position: absolute;
+	bottom: 64px;
+	top: 100px;
+	left: 0;
+}
+
+.CodeMirror {
+	width: 100%;
+	height: 100% !important;
+}
+
diff --git a/WebSites/errors/403/css/freeboard.min.css b/WebSites/errors/403/css/freeboard.min.css
new file mode 100644
index 0000000..23bc7ce
--- /dev/null
+++ b/WebSites/errors/403/css/freeboard.min.css
@@ -0,0 +1 @@
+.cm-s-ambiance .cm-keyword{color:#cda869}.cm-s-ambiance .cm-atom{color:#CF7EA9}.cm-s-ambiance .cm-number{color:#78CF8A}.cm-s-ambiance .cm-def{color:#aac6e3}.cm-s-ambiance .cm-variable{color:#ffb795}.cm-s-ambiance .cm-variable-2{color:#eed1b3}.cm-s-ambiance .cm-variable-3{color:#faded3}.cm-s-ambiance .cm-property{color:#eed1b3}.cm-s-ambiance .cm-operator{color:#fa8d6a}.cm-s-ambiance .cm-comment{color:#555;font-style:italic}.cm-s-ambiance .cm-string{color:#8f9d6a}.cm-s-ambiance .cm-string-2{color:#9d937c}.cm-s-ambiance .cm-meta{color:#D2A8A1}.cm-s-ambiance .cm-qualifier{color:#ff0}.cm-s-ambiance .cm-builtin{color:#99c}.cm-s-ambiance .cm-bracket{color:#24C2C7}.cm-s-ambiance .cm-tag{color:#fee4ff}.cm-s-ambiance .cm-attribute{color:#9B859D}.cm-s-ambiance .cm-header{color:#00f}.cm-s-ambiance .cm-quote{color:#24C2C7}.cm-s-ambiance .cm-hr{color:pink}.cm-s-ambiance .cm-link{color:#F4C20B}.cm-s-ambiance .cm-special{color:#FF9D00}.cm-s-ambiance .cm-error{color:#AF2018}.cm-s-ambiance .CodeMirror-matchingbracket{color:#0f0}.cm-s-ambiance .CodeMirror-nonmatchingbracket{color:#f22}.cm-s-ambiance .CodeMirror-selected{background:rgba(255,255,255,.15)}.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected{background:rgba(255,255,255,.1)}.cm-s-ambiance.CodeMirror{line-height:1.4em;color:#E6E1DC;background-color:#202020;-webkit-box-shadow:inset 0 0 10px #000;-moz-box-shadow:inset 0 0 10px #000;box-shadow:inset 0 0 10px #000}.cm-s-ambiance .CodeMirror-gutters{background:#3D3D3D;border-right:1px solid #4D4D4D;box-shadow:0 10px 20px #000}.cm-s-ambiance .CodeMirror-linenumber{text-shadow:0 1px 1px #4d4d4d;color:#222;padding:0 5px}.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor{border-left:1px solid #7991E8}.cm-s-ambiance .CodeMirror-activeline-background{background:none repeat scroll 0 0 rgba(255,255,255,.031)}.cm-s-ambiance.CodeMirror,.cm-s-ambiance .CodeMirror-gutters{background-image:url("data:image/png;base64,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")}.CodeMirror{font-family:monospace;height:300px}.CodeMirror-scroll{overflow:auto}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumbers{}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror div.CodeMirror-cursor{border-left:1px solid #000}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor{width:auto;border:0;background:#7e7}div.CodeMirror-overwrite div.CodeMirror-cursor{}.cm-tab{display:inline-block}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable,.cm-s-default .cm-punctuation,.cm-s-default .cm-property,.cm-s-default .cm-operator{}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{line-height:1;position:relative;overflow:hidden;background:#fff;color:#000}.CodeMirror-scroll{margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative;-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-sizer{position:relative;border-right:30px solid transparent;-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;padding-bottom:30px;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;-moz-box-sizing:content-box;box-sizing:content-box;padding-bottom:30px;margin-bottom:-32px;display:inline-block;*zoom:1;*display:inline}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-lines{cursor:text}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-widget{}.CodeMirror-wrap .CodeMirror-scroll{overflow-x:hidden}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-measure pre{position:static}.CodeMirror div.CodeMirror-cursor{position:absolute;border-right:0;width:0}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:1}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.CodeMirror span{*vertical-align:text-bottom}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}/*! gridster.js - v0.1.0 - 2013-06-14 - * http://gridster.net/ - Copyright (c) 2013 ducksboard; Licensed MIT */.gridster{position:relative}.gridster>*{margin:0 auto;-webkit-transition:height .4s;-moz-transition:height .4s;-o-transition:height .4s;-ms-transition:height .4s;transition:height .4s}.gridster .gs_w{z-index:2;position:absolute}.ready .gs_w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s;-moz-transition:opacity .3s,left .3s,top .3s;-o-transition:opacity .3s,left .3s,top .3s;transition:opacity .3s,left .3s,top .3s}.ready .gs_w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-moz-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-o-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;transition:opacity .3s,left .3s,top .3s,width .3s,height .3s}.gridster .preview-holder{z-index:1;position:absolute;background-color:#fff;border-color:#fff;opacity:.3}.gridster .player-revert{z-index:10!important;-webkit-transition:left .3s,top .3s!important;-moz-transition:left .3s,top .3s!important;-o-transition:left .3s,top .3s!important;transition:left .3s,top .3s!important}.gridster .dragging{z-index:10!important;-webkit-transition:all 0s!important;-moz-transition:all 0s!important;-o-transition:all 0s!important;transition:all 0s!important}/*! normalize.css v2.1.2 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}@media screen and (max-width :320px){body::-webkit-scrollbar{display:none}}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}html{background-color:#101214;height:100%;overflow:hidden}body{background-color:#101214;color:#8b8b8b;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;height:100%;overflow-x:hidden;overflow-y:auto}.modal{position:absolute;background-color:#ffffff;top:120px;width:900px;margin:auto;right:0;left:0;margin-bottom:25px}.modal.small{max-width:500px;width:100%}.modal header{background-color:#272727;height:40px;margin:0;padding:0 10px;color:#8b8b8b;text-transform:uppercase}.modal footer{background-color:#272727;height:40px;margin:0;color:#8b8b8b;text-transform:uppercase;clear:both}.modal footer{text-align:right}.modal footer .text-button{line-height:40px;padding-left:15px;padding-right:15px;display:inline-block}.modal section{padding:25px;padding-bottom:55px}.control-group:last-child{margin-bottom:0}.control-group{margin-bottom:16px}.control-group:before,.control-group:after{display:table;line-height:0;content:""}.control-group:after{clear:both}.control-label{padding-top:5px;text-align:right;text-transform:uppercase;font-size:11px}.controls{padding-left:20px;margin-left:180px}.input-suffix{display:inline-block;height:22px;padding:4px 10px;line-height:23px;vertical-align:middle;text-transform:uppercase;font-size:11px;min-width:16px}#plugin-description{margin-bottom:25px}.align-right{text-align:right}select,textarea{margin:0;font-size:100%;vertical-align:middle}select,textarea,input[type=text],input[type=password],input[type=datetime],input[type=datetime-local],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=search],input[type=tel],input[type=color],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;font-size:14px;line-height:20px;color:#d3d4d4;vertical-align:middle;-webkit-border-radius:0;-moz-border-radius:0;border-radius:-px;width:400px}input,textarea{width:206px}input.small,textarea.small{width:133px}textarea{height:auto}textarea,input[type=text],input[type=password],input[type=datetime],input[type=datetime-local],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=search],input[type=tel],input[type=color],.uneditable-input{background-color:#272727;border:1px solid #3d3d3d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type=text]:focus,input[type=password]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=date]:focus,input[type=month]:focus,input[type=time]:focus,input[type=week]:focus,input[type=number]:focus,input[type=email]:focus,input[type=url]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=color]:focus,.uneditable-input:focus{border-color:rgba(255,153,0,.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #f90;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #f90;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #f90}select{width:220px;background-color:#272727;height:27px}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:700;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:700}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:2px 5px}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#modal_overlay{position:absolute;z-index:100;top:0;left:0;height:100%;width:100%;background:rgba(0,0,0,.8);overflow-y:auto}a:hover,a:active{outline:0}a{color:#B88F51;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.gridster header{background-color:#272727;height:30px;margin:0;padding:0 10px;color:#8b8b8b;text-transform:uppercase}header h1{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0;margin:0;line-height:30px}.gridster section{line-height:normal;bottom:0;left:0;right:0;margin:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#board-content{overflow:visible;position:relative;padding-top:10px}#main-header{width:100%;position:fixed;z-index:50;display:none}#admin-bar{background-color:#313131;width:100%;height:200px;position:relative;-webkit-box-shadow:0 0 5px #000;box-shadow:0 0 5px #000}#toggle-header{margin:0 auto;left:0;right:0;width:50px;background-color:#313131;text-align:center;cursor:pointer}#toggle-header-icon{margin-top:4px;margin-bottom:7px}.widget{padding:5px 10px;height:100%;width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.widget.fillsize{padding:0}.pane-tools{top:0;right:0;position:absolute;display:none}.sub-section-tools{top:0;right:0;position:absolute;display:none}.datasource-edit-btn{padding:5px;margin-right:5px;cursor:pointer}.datasource-delete-btn{padding:5px;margin-left:5px;cursor:pointer}#board-tools{width:50%;float:left}.table thead th{font-size:10px;text-shadow:none}.table td{border-top:solid 1px #3d3d3d;color:#d3d4d4}#datasources{width:50%;float:right;height:100%}#cam{height:100%;background-size:cover}#admin-menu{left:0;right:0;width:950px;top:20px;margin:0 auto;padding-left:10px;padding-right:10px;position:absolute;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sub-section h2{font-size:14px;font-weight:400;padding:0;margin:0;line-height:normal}.sub-section{padding:0;border-bottom:solid 1px #363636;position:relative;overflow:hidden}.sub-section-height-1{height:60px}.sub-section-height-2{height:120px}.sub-section-height-3{height:180px}.sub-section-height-4{height:240px}.sub-section:last-of-type{border-bottom:0}#pump-icon{padding:10px;padding-bottom:12px;display:none}#admin-menu h1{}.section-title{min-height:7px}.small-text{color:#d3d4d4;font-size:20px;font-weight:100;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;overflow:hidden;text-overflow:ellipsis;letter-spacing:1px}ul,ol{list-style:none}#column-tools{position:relative;display:none;margin:0 auto;left:0;right:0;top:5px}#column-tools .left-columns{position:absolute;left:0}#column-tools .right-columns{position:absolute;right:0}.column-tool{cursor:pointer}.column-tool.min.sub,.column-tool.max.add{display:none}.column-icon{display:inline-block;background-color:#fff;width:5px;height:100%}.column-icon.right{float:right}.column-icon.left{float:left}.gridster{max-width:960px;margin:0 auto;left:0;right:0;top:0}.gridster .gs_w{background:#ffffff;padding:0;margin:0;overflow:hidden;z-index:auto;-webkit-touch-callout:text;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.gridster .preview-holder{border:0!important;border-radius:0!important;background:rgba(255,255,255,.2)!important}[class^=icon-],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^=icon-],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^=icon-],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^=icon-],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^=icon-],.dropdown-menu>li>a:focus>[class^=icon-],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^=icon-],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^=icon-],.dropdown-submenu:focus>a>[class^=icon-],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url(../img/glyphicons-halflings-white.png)}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.form-table td{vertical-align:top}.form-label{text-align:right;padding-right:14px;height:42px;float:left;width:160px;padding-top:4px}.form-value{float:left}.form-row{clear:both}td.table-row-operation{}input.table-row-value{width:150px;margin:0}.sub-table{margin-bottom:3px}.sub-table td{border:0;vertical-align:middle}.form-table-value-subtable{max-height:110px;overflow-x:hidden;overflow-y:auto;border-bottom:solid 1px #3d3d3d;width:414px}.datasource-list-container{max-height:110px;overflow-x:hidden;overflow-y:auto;border-bottom:solid 1px #3d3d3d}ul.value-dropdown{height:75px;position:absolute;padding:0;margin:0;background-color:#272727;border:1px solid rgba(255,153,0,.8);overflow-x:hidden;overflow-y:auto;z-index:3001}ul.value-dropdown li{padding:5px;cursor:pointer}ul.value-dropdown li.selected{background-color:rgba(255,153,0,.8);color:#000;text-shadow:none}ul.value-dropdown li .preview{font-style:italic;font-size:10px;width:300px;display:inline-block;vertical-align:bottom;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-left:20px}td.form-table-value>input[type=checkbox]{height:15px;margin-top:7px}.table-row-operation>i{cursor:pointer}#main-logo{display:block;margin-bottom:20px}#dash-logo{display:block;margin-left:10px;margin-bottom:10px}.value-editor-ds{color:#B88F51;cursor:pointer}ul.board-toolbar{padding:0;margin:0;text-transform:uppercase;font-size:11px}ul.board-toolbar.vertical{display:inline-block}.board-toolbar li{color:#B88F51;float:left;cursor:pointer;margin:0 0 0 5px;background-color:rgba(75,75,75,0);padding:8px;height:14px}.board-toolbar.vertical li{float:none}.board-toolbar li:hover{background-color:rgba(75,75,75,1);-webkit-transition:250ms linear;-moz-transition:250ms linear;-o-transition:250ms linear;-ms-transition:250ms linear;transition:250ms linear}.board-toolbar li i{float:left;margin:0;padding:0}.board-toolbar li label{cursor:pointer;margin-left:5px;float:left;margin-top:-3px;margin-bottom:-10px}.text-button{color:#B88F51;cursor:pointer;text-transform:uppercase}.datasource-name{text-transform:none}a:hover.text-button,a:focus.text-button{color:#B88F51;text-decoration:none}.text-button>i{margin-right:10px}.text-button::before,.text-button::after{display:inline-block;opacity:0;-webkit-transition:-webkit-transform .3s,opacity .2s;-moz-transition:-moz-transform .3s,opacity .2s;transition:transform .3s,opacity .2s}.text-button::before{margin-right:5px;content:'[';-webkit-transform:translateX(10px);-moz-transform:translateX(10px);transform:translateX(10px)}.text-button::after{margin-left:5px;content:']';-webkit-transform:translateX(-10px);-moz-transform:translateX(-10px);transform:translateX(-10px)}.text-button:hover::before,.text-button:hover::after,.text-button:focus::before,.text-button:focus::after{opacity:1;-webkit-transform:translateX(0px);-moz-transform:translateX(0px);transform:translateX(0px)}.setting-description{font-size:10px;text-shadow:none;color:#6F6F6F;margin-top:5px;margin-bottom:15px;max-width:414px;line-height:1.5em}.calculated-setting-row{clear:both;height:30px;margin-bottom:5px}textarea.calculated-value-input{position:absolute;width:400px;height:20px;resize:none;white-space:nowrap;overflow:auto;Z-index:3000}ul.datasource-input-suffix{margin-left:409px}.form-label .board-toolbar li{float:right}.styled-select select{width:414px;height:30px;-webkit-appearance:none;border:1px solid #3d3d3d;background:url(../img/dropdown-arrow.png) no-repeat right #272727}.title{font-family:Helvetica-Neue,Helvetica,Arial,sans-serif;vertical-align:baseline;-webkit-font-smoothing:antialiased;font-style:normal;color:#d3d4d4}.title.bordered{border:solid 3px #d3d4d4;display:inline-block;padding:2px 17px;line-height:39px}h1.title{margin-bottom:10px;font-size:23px;letter-spacing:-1px}h2.title{font-size:13px;line-height:20px;margin:0;padding-top:10px;padding-bottom:10px}.form-value input[type=checkbox]{margin-top:8px}.table-operation{font-size:11px;padding-left:5px;padding-bottom:5px;padding-top:1px}#add-pane{}#pane-holding-pen{display:none}@media screen and (max-width :960px){#add-pane{padding-top:10px}.text-button{font-size:14px;line-height:22px}h1.title{margin-bottom:0;font-size:13px;letter-spacing:0}.title.bordered{padding:1px 8px;line-height:25px;border-width:2px}#admin-menu{width:100%}h2.title{font-size:10px;padding-top:5px;padding-bottom:5px}#board-tools{width:100%}#datasources{width:100%;float:none;clear:both}#board-actions{float:left}#board-logo{float:left}.modal header{height:30px}.modal{width:100%;top:0;left:0}.datasource-list-container{max-height:77px}.form-label{float:none;height:auto;width:auto;text-align:left;padding-top:0}.form-value{width:100%;padding-bottom:10px;float:none}.control-label{width:auto}.modal section{padding-bottom:10px;padding-top:10px}ul.datasource-input-suffix{margin-left:0;margin-bottom:30px}ul.datasource-input-suffix li{margin-left:0}textarea,input[type=text]{width:95%}.styled-select select{width:100%}.form-table-value-subtable{width:100%}.table-operation{font-size:11px}textarea.calculated-value-input{position:inherit;width:95%}}.wrapperloading{position:absolute;height:200px;width:200px;top:50%;margin-top:-100px;left:50%;margin-left:-100px;z-index:2000}.wrapperloading .loading.up{position:absolute;height:200px;width:200px;border-radius:150px;border:3px solid #fff;border-top-color:#fff;border-left-color:#555;border-right-color:#555;border-bottom-color:#fff;-webkit-animation:rotation 3s linear infinite;-moz-animation:rotation 3s linear infinite;-o-animation:rotation 3s linear infinite;animation:rotation 3s linear infinite}.wrapperloading .loading.down{position:absolute;height:100px;width:100px;top:50%;margin-top:-50px;left:50%;margin-left:-50px;border-radius:150px;border:3px solid #fff;border-left-color:#fff;border-top-color:#555;border-bottom-color:#555;border-right-color:#fff;-webkit-animation:rotation 1s linear infinite;-moz-animation:rotation 1s linear infinite;-o-animation:rotation 1s linear infinite;animation:rotation 1s linear infinite}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes rotation{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes rotation{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotation{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#636363}input:-moz-placeholder,textarea:-moz-placeholder{color:#636363}::-webkit-scrollbar{height:0;width:4px;background:transparent;padding-right:10}::-webkit-scrollbar-thumb{background:rgba(255,255,255,.05);-webkit-border-radius:1ex}::-webkit-scrollbar-corner{background:transparent}.validation-error{margin-top:7px;margin-bottom:7px;color:#AA7575;font-size:13px}.onoffswitch{position:relative;width:78px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:1px solid #3D3D3D;border-radius:0}.onoffswitch-inner{width:200%;margin-left:-100%;-moz-transition:margin .3s ease-in 0s;-webkit-transition:margin .3s ease-in 0s;-o-transition:margin .3s ease-in 0s;transition:margin .3s ease-in 0s}.onoffswitch-inner .on,.onoffswitch-inner .off{float:left;width:50%;height:29px;padding:0;line-height:29px;font-size:17px;color:#fff;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner .on{padding-left:6px;background-color:#2a2a2a;color:#8B8B8B}.onoffswitch-inner .off{padding-right:6px;background-color:#101214;color:#8B8B8B;text-align:right}.onoffswitch-switch{width:21px;margin:4px;background:#A1A1A1;border:1px solid #3D3D3D;border-radius:0;position:absolute;top:0;bottom:0;right:47px;-moz-transition:all .3s ease-in 0s;-webkit-transition:all .3s ease-in 0s;-o-transition:all .3s ease-in 0s;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0;background-color:#F90}.code-window{z-index:5000;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#2a2a2a}.code-window-footer{height:64px;position:absolute;right:0;bottom:0;line-height:64px;padding-right:20px;padding-left:20px}.code-window-header{position:absolute;top:0;left:0;padding:20px;line-height:1.1em;font-weight:200}@media screen and (max-width :800px){.code-window-header{font-size:11px}}.code-mirror-wrapper{width:100%;position:absolute;bottom:64px;top:100px;left:0}.CodeMirror{width:100%;height:100%!important}
diff --git a/WebSites/errors/403/dashboard.json b/WebSites/errors/403/dashboard.json
new file mode 100644
index 0000000..09b3e70
--- /dev/null
+++ b/WebSites/errors/403/dashboard.json
@@ -0,0 +1,75 @@
+{
+	"version": 1,
+	"header_image": "",
+	"allow_edit": false,
+	"plugins": [],
+	"panes": [
+		{
+			"width": 1,
+			"row": {
+				"1": 1,
+				"2": 1,
+				"3": 1,
+				"4": 1
+			},
+			"col": {
+				"1": 1,
+				"2": 1,
+				"3": 1,
+				"4": 1
+			},
+			"col_width": 4,
+			"widgets": [
+				{
+					"type": "html",
+					"settings": {
+						"html": "datasources[\"Clock\"][\"numeric_value\"]; // trick to trigger the update\nvar cols = document.getElementsByClassName('gs_w')[0].getAttribute('data-sizex');\ndocument.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"\";\nif (cols == 4){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 56px; color:#ffffff !important; position: relative; bottom: 35px; left: 160px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Error 403 Forbidden</div></img></div>\";\n}\nif (cols == 3){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 46px; color:#ffffff !important; position: relative; bottom: 45px; left: 100px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Error 403 Forbidden</div></img></div>\";\n}\n\nif (cols == 2){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 30px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\">Error 403 Forbidden</div></img></div>\";\n}\nif (cols == 1){\n    text = \"<div style=\\\"position: static; margin-top: -15px;\\\"><img src=\\\"img/ess-logo.svg\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"><div class=\\\"tw-value\\\" style=\\\"font-size: 30px; color:#ffffff !important; position: relative; bottom: 55px; left: 30px;\\\" title=\\\"Designed by Emanuele Laface with PyEpics and Freeboard. Graphics by Dirk Nordt.\\\"></div></img></div>\";\n    document.getElementsByClassName('gs_w')[0].firstElementChild.firstElementChild.innerHTML = \"Error 403 Forbidden\";\n}\n\nreturn text\n\n",
+						"height": 2
+					}
+				}
+			]
+		},
+		{
+			"width": 1,
+			"row": {
+				"1": 7,
+				"4": 7
+			},
+			"col": {
+				"1": 1,
+				"4": 1
+			},
+			"col_width": 4,
+			"widgets": [
+				{
+					"type": "text_widget",
+					"settings": {
+						"size": "regular",
+						"value": "This page is available only within the ESS local network.",
+						"animate": true
+					}
+				}
+			]
+		}
+	],
+	"datasources": [
+		{
+			"name": "POS",
+			"type": "JSON",
+			"settings": {
+				"url": "/data/pos.json",
+				"use_thingproxy": false,
+				"refresh": 1,
+				"method": "GET"
+			}
+		},
+		{
+			"name": "Clock",
+			"type": "clock",
+			"settings": {
+				"refresh": 1
+			}
+		}
+	],
+	"columns": 4
+}
diff --git a/WebSites/errors/403/docker-compose.yml b/WebSites/errors/403/docker-compose.yml
new file mode 100644
index 0000000..d05e077
--- /dev/null
+++ b/WebSites/errors/403/docker-compose.yml
@@ -0,0 +1,12 @@
+version: "2"
+
+services:
+    nginx:
+        image: nginx:1.13
+        ports:
+            - "8003:80"
+        volumes_from:
+            - freeboard:ro
+    freeboard:
+        image: freeboard
+        build: .
diff --git a/WebSites/errors/403/docs/build-docs.sh b/WebSites/errors/403/docs/build-docs.sh
new file mode 100755
index 0000000..6f3bcc9
--- /dev/null
+++ b/WebSites/errors/403/docs/build-docs.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docco --css docco-fb.css ./../examples/plugin_example.js --output ./
\ No newline at end of file
diff --git a/WebSites/errors/403/docs/docco-fb.css b/WebSites/errors/403/docs/docco-fb.css
new file mode 100755
index 0000000..4ceaed7
--- /dev/null
+++ b/WebSites/errors/403/docs/docco-fb.css
@@ -0,0 +1,630 @@
+/*--------------------- Typography ----------------------------*/
+
+@import url(http://fonts.googleapis.com/css?family=Montserrat);
+
+@font-face
+{
+	font-family : 'aller-light';
+	src         : url('public/fonts/aller-light.eot');
+	src         : url('public/fonts/aller-light.eot?#iefix') format('embedded-opentype'), url('public/fonts/aller-light.woff') format('woff'), url('public/fonts/aller-light.ttf') format('truetype');
+	font-weight : normal;
+	font-style  : normal;
+}
+
+@font-face
+{
+	font-family : 'aller-bold';
+	src         : url('public/fonts/aller-bold.eot');
+	src         : url('public/fonts/aller-bold.eot?#iefix') format('embedded-opentype'), url('public/fonts/aller-bold.woff') format('woff'), url('public/fonts/aller-bold.ttf') format('truetype');
+	font-weight : normal;
+	font-style  : normal;
+}
+
+@font-face
+{
+	font-family : 'novecento-bold';
+	src         : url('public/fonts/novecento-bold.eot');
+	src         : url('public/fonts/novecento-bold.eot?#iefix') format('embedded-opentype'), url('public/fonts/novecento-bold.woff') format('woff'), url('public/fonts/novecento-bold.ttf') format('truetype');
+	font-weight : normal;
+	font-style  : normal;
+}
+
+/*--------------------- Layout ----------------------------*/
+html
+{
+	height : 100%;
+}
+
+body
+{
+	font-family : "Helvetica Neue", Helvetica, Arial, sans-serif;
+	font-size   : 14px;
+	line-height : 18px;
+	color       : #30404f;
+	margin      : 0;
+	padding     : 0;
+	height      : 100%;
+}
+
+#container
+{
+	min-height : 100%;
+}
+
+a
+{
+	color : #000;
+}
+
+b, strong
+{
+	font-weight : 400;
+	color : #fff;
+}
+
+p, ul, ol
+{
+	margin : 15px 0 0px;
+}
+
+h1, h2, h3, h4, h5, h6
+{
+	font-family : montserrat, sans-serif;
+	color          : #fff;
+	line-height    : 1em;
+	font-weight    : normal;
+	text-transform : uppercase;
+	margin         : 30px 0 15px 0;
+}
+
+h1
+{
+	margin-top : 40px;
+}
+
+hr
+{
+	border     : 0;
+	background : 1px solid #ddd;
+	height     : 1px;
+	margin     : 20px 0;
+}
+
+pre, tt, code
+{
+	font-size   : 12px;
+	line-height : 16px;
+	font-family : Menlo, Monaco, Consolas, "Lucida Console", monospace;
+	margin      : 0;
+	padding     : 0;
+}
+
+.annotation
+{
+	color: #A5A5A5;
+	font-weight : 200;
+	font-size: 14px;
+}
+
+.annotation pre
+{
+	display            : block;
+	margin             : 0;
+	padding            : 7px 10px;
+	background         : #fcfcfc;
+	-moz-box-shadow    : inset 0 0 10px rgba(0, 0, 0, 0.1);
+	-webkit-box-shadow : inset 0 0 10px rgba(0, 0, 0, 0.1);
+	box-shadow         : inset 0 0 10px rgba(0, 0, 0, 0.1);
+	overflow-x         : auto;
+}
+
+.annotation pre code
+{
+	border     : 0;
+	padding    : 0;
+	background : transparent;
+}
+
+blockquote
+{
+	border-left : 5px solid #ccc;
+	margin      : 0;
+	padding     : 1px 0 1px 1em;
+}
+
+.sections blockquote p
+{
+	font-family : Menlo, Consolas, Monaco, monospace;
+	font-size   : 12px;
+	line-height : 16px;
+	color       : #999;
+	margin      : 10px 0 0;
+	white-space : pre-wrap;
+}
+
+ul.sections
+{
+	list-style : none;
+	padding    : 0 0 5px 0;;
+	margin     : 0;
+}
+
+/*
+  Force border-box so that % widths fit the parent
+  container without overlap because of margin/padding.
+
+  More Info : http://www.quirksmode.org/css/box.html
+*/
+ul.sections > li > div
+{
+	-moz-box-sizing    : border-box; /* firefox */
+	-ms-box-sizing     : border-box; /* ie */
+	-webkit-box-sizing : border-box; /* webkit */
+	-khtml-box-sizing  : border-box; /* konqueror */
+	box-sizing         : border-box; /* css3 */
+}
+
+/*---------------------- Jump Page -----------------------------*/
+#jump_to, #jump_page
+{
+	margin                            : 0;
+	background                        : white;
+	-webkit-box-shadow                : 0 0 25px #777;
+	-moz-box-shadow                   : 0 0 25px #777;
+	-webkit-border-bottom-left-radius : 5px;
+	-moz-border-radius-bottomleft     : 5px;
+	font                              : 16px Arial;
+	cursor                            : pointer;
+	text-align                        : right;
+	list-style                        : none;
+}
+
+#jump_to a
+{
+	text-decoration : none;
+}
+
+#jump_to a.large
+{
+	display : none;
+}
+
+#jump_to a.small
+{
+	font-size   : 22px;
+	font-weight : bold;
+	color       : #676767;
+}
+
+#jump_to, #jump_wrapper
+{
+	position : fixed;
+	right    : 0;
+	top      : 0;
+	padding  : 10px 15px;
+	margin   : 0;
+}
+
+#jump_wrapper
+{
+	display : none;
+	padding : 0;
+}
+
+#jump_to:hover #jump_wrapper
+{
+	display : block;
+}
+
+#jump_page
+{
+	padding : 5px 0 3px;
+	margin  : 0 0 25px 25px;
+}
+
+#jump_page .source
+{
+	display         : block;
+	padding         : 15px;
+	text-decoration : none;
+	border-top      : 1px solid #eee;
+}
+
+#jump_page .source:hover
+{
+	background : #f5f5ff;
+}
+
+#jump_page .source:first-child
+{
+}
+
+/*---------------------- Low resolutions (> 320px) ---------------------*/
+@media only screen and (min-width: 320px)
+{
+	.pilwrap
+	{
+		display : none;
+	}
+
+	ul.sections > li > div
+	{
+		display : block;
+		padding : 5px 10px 0 10px;
+	}
+
+	ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol
+	{
+		padding-left : 30px;
+	}
+
+	ul.sections > li > div.content
+	{
+		background         : #f5f5ff;
+		overflow-x         : auto;
+		-webkit-box-shadow : inset 0 0 5px #e5e5ee;
+		box-shadow         : inset 0 0 5px #e5e5ee;
+		border             : 1px solid #dedede;
+		margin             : 5px 10px 5px 10px;
+		padding-bottom     : 5px;
+	}
+
+	ul.sections > li > div.annotation pre
+	{
+		margin       : 7px 0 7px;
+		padding-left : 15px;
+	}
+
+	ul.sections > li > div.annotation p tt, .annotation code
+	{
+		background : #f8f8ff;
+		border     : 1px solid #dedede;
+		font-size  : 12px;
+		padding    : 0 0.2em;
+	}
+}
+
+/*----------------------  (> 481px) ---------------------*/
+@media only screen and (min-width: 481px)
+{
+	#container
+	{
+		position : relative;
+	}
+
+	body
+	{
+		background-color : #f9f9f9;
+		font-size        : 15px;
+		line-height      : 21px;
+	}
+
+	pre, tt, code
+	{
+		line-height : 18px;
+	}
+
+	p, ul, ol
+	{
+		margin : 0 0 15px;
+	}
+
+	#jump_to
+	{
+		padding : 5px 10px;
+	}
+
+	#jump_wrapper
+	{
+		padding : 0;
+	}
+
+	#jump_to, #jump_page
+	{
+		font           : 10px Arial;
+		text-transform : uppercase;
+	}
+
+	#jump_page .source
+	{
+		padding : 5px 10px;
+	}
+
+	#jump_to a.large
+	{
+		display : inline-block;
+	}
+
+	#jump_to a.small
+	{
+		display : none;
+	}
+
+	#background
+	{
+		position     : absolute;
+		top          : 0;
+		bottom       : 0;
+		width        : 350px;
+		background   : #313131;
+		border-right : 1px solid #e5e5ee;
+		z-index      : -1;
+	}
+
+	ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol
+	{
+		padding-left : 40px;
+	}
+
+	ul.sections > li
+	{
+		white-space : nowrap;
+	}
+
+	ul.sections > li > div
+	{
+		display : inline-block;
+	}
+
+	ul.sections > li > div.annotation
+	{
+		max-width      : 350px;
+		min-width      : 350px;
+		min-height     : 5px;
+		padding        : 13px;
+		overflow-x     : hidden;
+		white-space    : normal;
+		vertical-align : top;
+		text-align     : left;
+	}
+
+	ul.sections > li > div.annotation pre
+	{
+		margin       : 15px 0 15px;
+		padding-left : 15px;
+	}
+
+	ul.sections > li > div.content
+	{
+		padding            : 13px;
+		vertical-align     : top;
+		background         : #f9f9f9;
+		border             : none;
+		-webkit-box-shadow : none;
+		box-shadow         : none;
+	}
+
+	.pilwrap
+	{
+		position : relative;
+		display  : inline;
+	}
+
+	.pilcrow
+	{
+		font               : 12px Arial;
+		text-decoration    : none;
+		color              : #454545;
+		position           : absolute;
+		top                : 3px;
+		left               : -20px;
+		padding            : 1px 2px;
+		opacity            : 0;
+		-webkit-transition : opacity 0.2s linear;
+	}
+
+	.for-h1 .pilcrow
+	{
+		top : 47px;
+	}
+
+	.for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow
+	{
+		top : 35px;
+	}
+
+	ul.sections > li > div.annotation:hover .pilcrow
+	{
+		opacity : 1;
+	}
+}
+
+/*---------------------- (> 1025px) ---------------------*/
+@media only screen and (min-width: 1025px)
+{
+
+	body
+	{
+		font-size   : 16px;
+		line-height : 24px;
+	}
+
+	#background
+	{
+		width : 525px;
+	}
+
+	ul.sections > li > div.annotation
+	{
+		max-width : 525px;
+		min-width : 525px;
+		padding   : 10px 25px 1px 50px;
+	}
+
+	ul.sections > li > div.content
+	{
+		padding : 9px 15px 16px 25px;
+	}
+}
+
+/*---------------------- Syntax Highlighting -----------------------------*/
+
+td.linenos
+{
+	background-color : #f0f0f0;
+	padding-right    : 10px;
+}
+
+span.lineno
+{
+	background-color : #f0f0f0;
+	padding          : 0 5px 0 5px;
+}
+
+/*
+
+github.com style (c) Vasily Polovnyov <vast@whiteants.net>
+
+*/
+
+pre code
+{
+	display    : block;
+	padding    : 0.5em;
+	color      : #000;
+	background : #f8f8ff
+}
+
+pre .comment,
+pre .template_comment,
+pre .diff .header,
+pre .javadoc
+{
+	color      : #408080;
+	font-style : italic
+}
+
+pre .keyword,
+pre .assignment,
+pre .literal,
+pre .css .rule .keyword,
+pre .winutils,
+pre .javascript .title,
+pre .lisp .title,
+pre .subst
+{
+	color : #954121;
+	/*font-weight: bold*/
+}
+
+pre .number,
+pre .hexcolor
+{
+	color : #40a070
+}
+
+pre .string,
+pre .tag .value,
+pre .phpdoc,
+pre .tex .formula
+{
+	color : #219161;
+}
+
+pre .title,
+pre .id
+{
+	color : #19469D;
+}
+
+pre .params
+{
+	color : #00F;
+}
+
+pre .javascript .title,
+pre .lisp .title,
+pre .subst
+{
+	font-weight : normal
+}
+
+pre .class .title,
+pre .haskell .label,
+pre .tex .command
+{
+	color       : #458;
+	font-weight : bold
+}
+
+pre .tag,
+pre .tag .title,
+pre .rules .property,
+pre .django .tag .keyword
+{
+	color       : #000080;
+	font-weight : normal
+}
+
+pre .attribute,
+pre .variable,
+pre .instancevar,
+pre .lisp .body
+{
+	color : #008080
+}
+
+pre .regexp
+{
+	color : #B68
+}
+
+pre .class
+{
+	color       : #458;
+	font-weight : bold
+}
+
+pre .symbol,
+pre .ruby .symbol .string,
+pre .ruby .symbol .keyword,
+pre .ruby .symbol .keymethods,
+pre .lisp .keyword,
+pre .tex .special,
+pre .input_number
+{
+	color : #990073
+}
+
+pre .builtin,
+pre .constructor,
+pre .built_in,
+pre .lisp .title
+{
+	color : #0086b3
+}
+
+pre .preprocessor,
+pre .pi,
+pre .doctype,
+pre .shebang,
+pre .cdata
+{
+	color       : #999;
+	font-weight : bold
+}
+
+pre .deletion
+{
+	background : #fdd
+}
+
+pre .addition
+{
+	background : #dfd
+}
+
+pre .diff .change
+{
+	background : #0086b3
+}
+
+pre .chunk
+{
+	color : #aaa
+}
+
+pre .tex .formula
+{
+	opacity : 0.5;
+}
diff --git a/WebSites/errors/403/docs/docco.css b/WebSites/errors/403/docs/docco.css
new file mode 100755
index 0000000..f690a07
--- /dev/null
+++ b/WebSites/errors/403/docs/docco.css
@@ -0,0 +1,500 @@
+/*--------------------- Typography ----------------------------*/
+
+@font-face {
+    font-family: 'aller-light';
+    src: url('public/fonts/aller-light.eot');
+    src: url('public/fonts/aller-light.eot?#iefix') format('embedded-opentype'),
+         url('public/fonts/aller-light.woff') format('woff'),
+         url('public/fonts/aller-light.ttf') format('truetype');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'aller-bold';
+    src: url('public/fonts/aller-bold.eot');
+    src: url('public/fonts/aller-bold.eot?#iefix') format('embedded-opentype'),
+         url('public/fonts/aller-bold.woff') format('woff'),
+         url('public/fonts/aller-bold.ttf') format('truetype');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'novecento-bold';
+    src: url('public/fonts/novecento-bold.eot');
+    src: url('public/fonts/novecento-bold.eot?#iefix') format('embedded-opentype'),
+         url('public/fonts/novecento-bold.woff') format('woff'),
+         url('public/fonts/novecento-bold.ttf') format('truetype');
+    font-weight: normal;
+    font-style: normal;
+}
+
+/*--------------------- Layout ----------------------------*/
+html { height: 100%; }
+body {
+  font-family: "aller-light";
+  font-size: 14px;
+  line-height: 18px;
+  color: #30404f;
+  margin: 0; padding: 0;
+  height:100%;
+}
+#container { min-height: 100%; }
+
+a {
+  color: #000;
+}
+
+b, strong {
+  font-weight: normal;
+  font-family: "aller-bold";
+}
+
+p, ul, ol {
+  margin: 15px 0 0px;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  color: #112233;
+  line-height: 1em;
+  font-weight: normal;
+  font-family: "novecento-bold";
+  text-transform: uppercase;
+  margin: 30px 0 15px 0;
+}
+
+h1 {
+  margin-top: 40px;
+}
+
+hr {
+  border: 0;
+  background: 1px solid #ddd;
+  height: 1px;
+  margin: 20px 0;
+}
+
+pre, tt, code {
+  font-size: 12px; line-height: 16px;
+  font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace;
+  margin: 0; padding: 0;
+}
+  .annotation pre {
+    display: block;
+    margin: 0;
+    padding: 7px 10px;
+    background: #fcfcfc;
+    -moz-box-shadow:    inset 0 0 10px rgba(0,0,0,0.1);
+    -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
+    box-shadow:         inset 0 0 10px rgba(0,0,0,0.1);
+    overflow-x: auto;
+  }
+    .annotation pre code {
+      border: 0;
+      padding: 0;
+      background: transparent;
+    }
+
+
+blockquote {
+  border-left: 5px solid #ccc;
+  margin: 0;
+  padding: 1px 0 1px 1em;
+}
+  .sections blockquote p {
+    font-family: Menlo, Consolas, Monaco, monospace;
+    font-size: 12px; line-height: 16px;
+    color: #999;
+    margin: 10px 0 0;
+    white-space: pre-wrap;
+  }
+
+ul.sections {
+  list-style: none;
+  padding:0 0 5px 0;;
+  margin:0;
+}
+
+/*
+  Force border-box so that % widths fit the parent
+  container without overlap because of margin/padding.
+
+  More Info : http://www.quirksmode.org/css/box.html
+*/
+ul.sections > li > div {
+  -moz-box-sizing: border-box;    /* firefox */
+  -ms-box-sizing: border-box;     /* ie */
+  -webkit-box-sizing: border-box; /* webkit */
+  -khtml-box-sizing: border-box;  /* konqueror */
+  box-sizing: border-box;         /* css3 */
+}
+
+
+/*---------------------- Jump Page -----------------------------*/
+#jump_to, #jump_page {
+  margin: 0;
+  background: white;
+  -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777;
+  -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px;
+  font: 16px Arial;
+  cursor: pointer;
+  text-align: right;
+  list-style: none;
+}
+
+#jump_to a {
+  text-decoration: none;
+}
+
+#jump_to a.large {
+  display: none;
+}
+#jump_to a.small {
+  font-size: 22px;
+  font-weight: bold;
+  color: #676767;
+}
+
+#jump_to, #jump_wrapper {
+  position: fixed;
+  right: 0; top: 0;
+  padding: 10px 15px;
+  margin:0;
+}
+
+#jump_wrapper {
+  display: none;
+  padding:0;
+}
+
+#jump_to:hover #jump_wrapper {
+  display: block;
+}
+
+#jump_page {
+  padding: 5px 0 3px;
+  margin: 0 0 25px 25px;
+}
+
+#jump_page .source {
+  display: block;
+  padding: 15px;
+  text-decoration: none;
+  border-top: 1px solid #eee;
+}
+
+#jump_page .source:hover {
+  background: #f5f5ff;
+}
+
+#jump_page .source:first-child {
+}
+
+/*---------------------- Low resolutions (> 320px) ---------------------*/
+@media only screen and (min-width: 320px) {
+  .pilwrap { display: none; }
+
+  ul.sections > li > div {
+    display: block;
+    padding:5px 10px 0 10px;
+  }
+
+  ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
+    padding-left: 30px;
+  }
+
+  ul.sections > li > div.content {
+    background: #f5f5ff;
+    overflow-x:auto;
+    -webkit-box-shadow: inset 0 0 5px #e5e5ee;
+    box-shadow: inset 0 0 5px #e5e5ee;
+    border: 1px solid #dedede;
+    margin:5px 10px 5px 10px;
+    padding-bottom: 5px;
+  }
+
+  ul.sections > li > div.annotation pre {
+    margin: 7px 0 7px;
+    padding-left: 15px;
+  }
+
+  ul.sections > li > div.annotation p tt, .annotation code {
+    background: #f8f8ff;
+    border: 1px solid #dedede;
+    font-size: 12px;
+    padding: 0 0.2em;
+  }
+}
+
+/*----------------------  (> 481px) ---------------------*/
+@media only screen and (min-width: 481px) {
+  #container {
+    position: relative;
+  }
+  body {
+    background-color: #F5F5FF;
+    font-size: 15px;
+    line-height: 21px;
+  }
+  pre, tt, code {
+    line-height: 18px;
+  }
+  p, ul, ol {
+    margin: 0 0 15px;
+  }
+
+
+  #jump_to {
+    padding: 5px 10px;
+  }
+  #jump_wrapper {
+    padding: 0;
+  }
+  #jump_to, #jump_page {
+    font: 10px Arial;
+    text-transform: uppercase;
+  }
+  #jump_page .source {
+    padding: 5px 10px;
+  }
+  #jump_to a.large {
+    display: inline-block;
+  }
+  #jump_to a.small {
+    display: none;
+  }
+
+
+
+  #background {
+    position: absolute;
+    top: 0; bottom: 0;
+    width: 350px;
+    background: #fff;
+    border-right: 1px solid #e5e5ee;
+    z-index: -1;
+  }
+
+  ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
+    padding-left: 40px;
+  }
+
+  ul.sections > li {
+    white-space: nowrap;
+  }
+
+  ul.sections > li > div {
+    display: inline-block;
+  }
+
+  ul.sections > li > div.annotation {
+    max-width: 350px;
+    min-width: 350px;
+    min-height: 5px;
+    padding: 13px;
+    overflow-x: hidden;
+    white-space: normal;
+    vertical-align: top;
+    text-align: left;
+  }
+  ul.sections > li > div.annotation pre {
+    margin: 15px 0 15px;
+    padding-left: 15px;
+  }
+
+  ul.sections > li > div.content {
+    padding: 13px;
+    vertical-align: top;
+    background: #f5f5ff;
+    border: none;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+  }
+
+  .pilwrap {
+    position: relative;
+    display: inline;
+  }
+
+  .pilcrow {
+    font: 12px Arial;
+    text-decoration: none;
+    color: #454545;
+    position: absolute;
+    top: 3px; left: -20px;
+    padding: 1px 2px;
+    opacity: 0;
+    -webkit-transition: opacity 0.2s linear;
+  }
+    .for-h1 .pilcrow {
+      top: 47px;
+    }
+    .for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow {
+      top: 35px;
+    }
+
+  ul.sections > li > div.annotation:hover .pilcrow {
+    opacity: 1;
+  }
+}
+
+/*---------------------- (> 1025px) ---------------------*/
+@media only screen and (min-width: 1025px) {
+
+  body {
+    font-size: 16px;
+    line-height: 24px;
+  }
+
+  #background {
+    width: 525px;
+  }
+  ul.sections > li > div.annotation {
+    max-width: 525px;
+    min-width: 525px;
+    padding: 10px 25px 1px 50px;
+  }
+  ul.sections > li > div.content {
+    padding: 9px 15px 16px 25px;
+  }
+}
+
+/*---------------------- Syntax Highlighting -----------------------------*/
+
+td.linenos { background-color: #f0f0f0; padding-right: 10px; }
+span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
+/*
+
+github.com style (c) Vasily Polovnyov <vast@whiteants.net>
+
+*/
+
+pre code {
+  display: block; padding: 0.5em;
+  color: #000;
+  background: #f8f8ff
+}
+
+pre .comment,
+pre .template_comment,
+pre .diff .header,
+pre .javadoc {
+  color: #408080;
+  font-style: italic
+}
+
+pre .keyword,
+pre .assignment,
+pre .literal,
+pre .css .rule .keyword,
+pre .winutils,
+pre .javascript .title,
+pre .lisp .title,
+pre .subst {
+  color: #954121;
+  /*font-weight: bold*/
+}
+
+pre .number,
+pre .hexcolor {
+  color: #40a070
+}
+
+pre .string,
+pre .tag .value,
+pre .phpdoc,
+pre .tex .formula {
+  color: #219161;
+}
+
+pre .title,
+pre .id {
+  color: #19469D;
+}
+pre .params {
+  color: #00F;
+}
+
+pre .javascript .title,
+pre .lisp .title,
+pre .subst {
+  font-weight: normal
+}
+
+pre .class .title,
+pre .haskell .label,
+pre .tex .command {
+  color: #458;
+  font-weight: bold
+}
+
+pre .tag,
+pre .tag .title,
+pre .rules .property,
+pre .django .tag .keyword {
+  color: #000080;
+  font-weight: normal
+}
+
+pre .attribute,
+pre .variable,
+pre .instancevar,
+pre .lisp .body {
+  color: #008080
+}
+
+pre .regexp {
+  color: #B68
+}
+
+pre .class {
+  color: #458;
+  font-weight: bold
+}
+
+pre .symbol,
+pre .ruby .symbol .string,
+pre .ruby .symbol .keyword,
+pre .ruby .symbol .keymethods,
+pre .lisp .keyword,
+pre .tex .special,
+pre .input_number {
+  color: #990073
+}
+
+pre .builtin,
+pre .constructor,
+pre .built_in,
+pre .lisp .title {
+  color: #0086b3
+}
+
+pre .preprocessor,
+pre .pi,
+pre .doctype,
+pre .shebang,
+pre .cdata {
+  color: #999;
+  font-weight: bold
+}
+
+pre .deletion {
+  background: #fdd
+}
+
+pre .addition {
+  background: #dfd
+}
+
+pre .diff .change {
+  background: #0086b3
+}
+
+pre .chunk {
+  color: #aaa
+}
+
+pre .tex .formula {
+  opacity: 0.5;
+}
diff --git a/WebSites/errors/403/docs/plugin_example.html b/WebSites/errors/403/docs/plugin_example.html
new file mode 100644
index 0000000..a94b1f5
--- /dev/null
+++ b/WebSites/errors/403/docs/plugin_example.html
@@ -0,0 +1,1042 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+  <title>Building a Freeboard Plugin</title>
+  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+  <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
+  <link rel="stylesheet" media="all" href="docco-fb.css" />
+</head>
+<body>
+  <div id="container">
+    <div id="background"></div>
+    
+    <ul class="sections">
+        
+        
+        
+        <li id="section-1">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-1">&#182;</a>
+              </div>
+              <h1 id="building-a-freeboard-plugin">Building a Freeboard Plugin</h1>
+<p>A freeboard plugin is simply a javascript file that is loaded into a web page after the main freeboard.js file is loaded.</p>
+<p>Let&#39;s get started with an example of a datasource plugin and a widget plugin.</p>
+<hr>
+
+            </div>
+            
+        </li>
+        
+        
+        <li id="section-2">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-2">&#182;</a>
+              </div>
+              <p>Best to encapsulate your plugin in a closure, although not required.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>(<span class="function"><span class="keyword">function</span><span class="params">()</span>
+{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-3">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-3">&#182;</a>
+              </div>
+              <h2 id="a-datasource-plugin">A Datasource Plugin</h2>
+<hr>
+
+            </div>
+            
+        </li>
+        
+        
+        <li id="section-4">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-4">&#182;</a>
+              </div>
+              <h3 id="datasource-definition">Datasource Definition</h3>
+<hr>
+
+            </div>
+            
+        </li>
+        
+        
+        <li id="section-5">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-5">&#182;</a>
+              </div>
+              <p><strong>freeboard.loadDatasourcePlugin(definition)</strong> tells freeboard that we are giving it a datasource plugin. It expects an object with the following:</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>	freeboard.loadDatasourcePlugin({</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-6">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-6">&#182;</a>
+              </div>
+              <p><strong>type_name</strong> (required) : A unique name for this plugin. This name should be as unique as possible to avoid collisions with other plugins, and should follow naming conventions for javascript variable and function declarations.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="string">"type_name"</span>   : <span class="string">"my_datasource_plugin"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-7">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-7">&#182;</a>
+              </div>
+              <p><strong>display_name</strong> : The pretty name that will be used for display purposes for this plugin. If the name is not defined, type_name will be used instead.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="string">"display_name"</span>: <span class="string">"Datasource Plugin Example"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-8">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-8">&#182;</a>
+              </div>
+              <p><strong>description</strong> : A description of the plugin. This description will be displayed when the plugin is selected or within search results (in the future). The description may contain HTML if needed.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>        <span class="string">"description"</span> : <span class="string">"Some sort of description &lt;strong&gt;with optional html!&lt;/strong&gt;"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-9">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-9">&#182;</a>
+              </div>
+              <p><strong>external_scripts</strong> : Any external scripts that should be loaded before the plugin instance is created.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="string">"external_scripts"</span> : [
+			<span class="string">"http://mydomain.com/myscript1.js"</span>,
+		    <span class="string">"http://mydomain.com/myscript2.js"</span>
+		],</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-10">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-10">&#182;</a>
+              </div>
+              <p><strong>settings</strong> : An array of settings that will be displayed for this plugin when the user adds it.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="string">"settings"</span>    : [
+			{</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-11">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-11">&#182;</a>
+              </div>
+              <p><strong>name</strong> (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"name"</span>         : <span class="string">"first_name"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-12">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-12">&#182;</a>
+              </div>
+              <p><strong>display_name</strong> : The pretty name that will be shown to the user when they adjust this setting.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"display_name"</span> : <span class="string">"First Name"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-13">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-13">&#182;</a>
+              </div>
+              <p><strong>type</strong> (required) : The type of input expected for this setting. &quot;text&quot; will display a single text box input. Examples of other types will follow in this documentation.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"type"</span>         : <span class="string">"text"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-14">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-14">&#182;</a>
+              </div>
+              <p><strong>default_value</strong> : A default value for this setting.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"default_value"</span>: <span class="string">"John"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-15">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-15">&#182;</a>
+              </div>
+              <p><strong>description</strong> : Text that will be displayed below the setting to give the user any extra information.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"description"</span>  : <span class="string">"This is pretty self explanatory..."</span>
+			},
+			{
+				<span class="string">"name"</span>        : <span class="string">"last_name"</span>,
+				<span class="string">"display_name"</span>: <span class="string">"Last Name"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-16">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-16">&#182;</a>
+              </div>
+              <p><strong>type &quot;calculated&quot;</strong> : This is a special text input box that may contain javascript formulas and references to datasources in the freeboard.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"type"</span>        : <span class="string">"calculated"</span>
+			},
+			{
+				<span class="string">"name"</span>        : <span class="string">"is_human"</span>,
+				<span class="string">"display_name"</span>: <span class="string">"I am human"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-17">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-17">&#182;</a>
+              </div>
+              <p><strong>type &quot;boolean&quot;</strong> : Will display a checkbox indicating a true/false setting.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"type"</span>        : <span class="string">"boolean"</span>
+			},
+			{
+				<span class="string">"name"</span>        : <span class="string">"age"</span>,
+				<span class="string">"display_name"</span>: <span class="string">"Your age"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-18">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-18">&#182;</a>
+              </div>
+              <p><strong>type &quot;option&quot;</strong> : Will display a dropdown box with a list of choices.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"type"</span>        : <span class="string">"option"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-19">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-19">&#182;</a>
+              </div>
+              <p><strong>options</strong> (required) : An array of options to be populated in the dropdown.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"options"</span>     : [
+					{</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-20">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-20">&#182;</a>
+              </div>
+              <p><strong>name</strong> (required) : The text to be displayed in the dropdown.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>						<span class="string">"name"</span> : <span class="string">"0-50"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-21">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-21">&#182;</a>
+              </div>
+              <p><strong>value</strong> : The value of the option. If not specified, the name parameter will be used.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>						<span class="string">"value"</span>: <span class="string">"young"</span>
+					},
+					{
+						<span class="string">"name"</span> : <span class="string">"51-100"</span>,
+						<span class="string">"value"</span>: <span class="string">"old"</span>
+					}
+				]
+			},
+			{
+				<span class="string">"name"</span>        : <span class="string">"other"</span>,
+				<span class="string">"display_name"</span>: <span class="string">"Other attributes"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-22">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-22">&#182;</a>
+              </div>
+              <p><strong>type &quot;array&quot;</strong> : Will allow a user to enter in rows of data.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"type"</span>        : <span class="string">"array"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-23">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-23">&#182;</a>
+              </div>
+              <p><strong>settings</strong> (required) : An array of columns of the text to be entered by the user.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"settings"</span>    : [
+					{
+						<span class="string">"name"</span>        : <span class="string">"name"</span>,
+						<span class="string">"display_name"</span>: <span class="string">"Name"</span>,
+						<span class="string">"type"</span>        : <span class="string">"text"</span>
+					},
+					{
+						<span class="string">"name"</span>        : <span class="string">"value"</span>,
+						<span class="string">"display_name"</span>: <span class="string">"Value"</span>,
+						<span class="string">"type"</span>        : <span class="string">"text"</span>
+					}
+				]
+			},
+			{
+				<span class="string">"name"</span>         : <span class="string">"refresh_time"</span>,
+				<span class="string">"display_name"</span> : <span class="string">"Refresh Time"</span>,
+				<span class="string">"type"</span>         : <span class="string">"text"</span>,
+				<span class="string">"description"</span>  : <span class="string">"In milliseconds"</span>,
+				<span class="string">"default_value"</span>: <span class="number">5000</span>
+			}
+		],</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-24">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-24">&#182;</a>
+              </div>
+              <p><strong>newInstance(settings, newInstanceCallback, updateCallback)</strong> (required) : A function that will be called when a new instance of this plugin is requested.</p>
+<ul>
+<li><strong>settings</strong> : A javascript object with the initial settings set by the user. The names of the properties in the object will correspond to the setting names defined above.</li>
+<li><strong>newInstanceCallback</strong> : A callback function that you&#39;ll call when the new instance of the plugin is ready. This function expects a single argument, which is the new instance of your plugin object.</li>
+<li><strong>updateCallback</strong> : A callback function that you&#39;ll call if and when your datasource has an update for freeboard to recalculate. This function expects a single parameter which is a javascript object with the new, updated data. You should hold on to this reference and call it when needed.</li>
+</ul>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		newInstance   : <span class="function"><span class="keyword">function</span><span class="params">(settings, newInstanceCallback, updateCallback)</span>
+		{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-25">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-25">&#182;</a>
+              </div>
+              <p>myDatasourcePlugin is defined below.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			newInstanceCallback(<span class="keyword">new</span> myDatasourcePlugin(settings, updateCallback));
+		}
+	});</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-26">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-26">&#182;</a>
+              </div>
+              <h3 id="datasource-implementation">Datasource Implementation</h3>
+<hr>
+
+            </div>
+            
+        </li>
+        
+        
+        <li id="section-27">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-27">&#182;</a>
+              </div>
+              <p>Here we implement the actual datasource plugin. We pass in the settings and updateCallback.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>	<span class="keyword">var</span> myDatasourcePlugin = <span class="function"><span class="keyword">function</span><span class="params">(settings, updateCallback)</span>
+	{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-28">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-28">&#182;</a>
+              </div>
+              <p>Always a good idea...</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="keyword">var</span> self = <span class="keyword">this</span>;</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-29">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-29">&#182;</a>
+              </div>
+              <p>Good idea to create a variable to hold on to our settings, because they might change in the future. See below.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="keyword">var</span> currentSettings = settings;
+
+		<span class="comment">/* This is some function where I'll get my data from somewhere */</span>
+		<span class="function"><span class="keyword">function</span> <span class="title">getData</span><span class="params">()</span>
+		{</span>
+			<span class="keyword">var</span> newData = { hello : <span class="string">"world! it's "</span> + <span class="keyword">new</span> Date().toLocaleTimeString() }; <span class="comment">// Just putting some sample data in for fun.</span>
+
+			<span class="comment">/* Get my data from somewhere and populate newData with it... Probably a JSON API or something. */</span>
+			<span class="comment">/* ... */</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-30">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-30">&#182;</a>
+              </div>
+              <p>I&#39;m calling updateCallback to tell it I&#39;ve got new data for it to munch on.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			updateCallback(newData);
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-31">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-31">&#182;</a>
+              </div>
+              <p>You&#39;ll probably want to implement some sort of timer to refresh your data every so often.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="keyword">var</span> refreshTimer;
+
+		<span class="function"><span class="keyword">function</span> <span class="title">createRefreshTimer</span><span class="params">(interval)</span>
+		{</span>
+			<span class="keyword">if</span>(refreshTimer)
+			{
+				clearInterval(refreshTimer);
+			}
+
+			refreshTimer = setInterval(<span class="function"><span class="keyword">function</span><span class="params">()</span>
+			{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-32">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-32">&#182;</a>
+              </div>
+              <p>Here we call our getData function to update freeboard with new data.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				getData();
+			}, interval);
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-33">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-33">&#182;</a>
+              </div>
+              <p><strong>onSettingsChanged(newSettings)</strong> (required) : A public function we must implement that will be called when a user makes a change to the settings.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.onSettingsChanged = <span class="function"><span class="keyword">function</span><span class="params">(newSettings)</span>
+		{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-34">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-34">&#182;</a>
+              </div>
+              <p>Here we update our current settings with the variable that is passed in.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			currentSettings = newSettings;
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-35">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-35">&#182;</a>
+              </div>
+              <p><strong>updateNow()</strong> (required) : A public function we must implement that will be called when the user wants to manually refresh the datasource</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.updateNow = <span class="function"><span class="keyword">function</span><span class="params">()</span>
+		{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-36">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-36">&#182;</a>
+              </div>
+              <p>Most likely I&#39;ll just call getData() here.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			getData();
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-37">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-37">&#182;</a>
+              </div>
+              <p><strong>onDispose()</strong> (required) : A public function we must implement that will be called when this instance of this plugin is no longer needed. Do anything you need to cleanup after yourself here.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.onDispose = <span class="function"><span class="keyword">function</span><span class="params">()</span>
+		{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-38">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-38">&#182;</a>
+              </div>
+              <p>Probably a good idea to get rid of our timer.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			clearInterval(refreshTimer);
+			refreshTimer = <span class="literal">undefined</span>;
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-39">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-39">&#182;</a>
+              </div>
+              <p>Here we call createRefreshTimer with our current settings, to kick things off, initially. Notice how we make use of one of the user defined settings that we setup earlier.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		createRefreshTimer(currentSettings.refresh_time);
+	}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-40">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-40">&#182;</a>
+              </div>
+              <h2 id="a-widget-plugin">A Widget Plugin</h2>
+<hr>
+
+            </div>
+            
+        </li>
+        
+        
+        <li id="section-41">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-41">&#182;</a>
+              </div>
+              <h3 id="widget-definition">Widget Definition</h3>
+<hr>
+
+            </div>
+            
+        </li>
+        
+        
+        <li id="section-42">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-42">&#182;</a>
+              </div>
+              <p><strong>freeboard.loadWidgetPlugin(definition)</strong> tells freeboard that we are giving it a widget plugin. It expects an object with the following:</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>	freeboard.loadWidgetPlugin({</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-43">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-43">&#182;</a>
+              </div>
+              <p>Same stuff here as with datasource plugin.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="string">"type_name"</span>   : <span class="string">"my_widget_plugin"</span>,
+		<span class="string">"display_name"</span>: <span class="string">"Widget Plugin Example"</span>,
+        <span class="string">"description"</span> : <span class="string">"Some sort of description &lt;strong&gt;with optional html!&lt;/strong&gt;"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-44">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-44">&#182;</a>
+              </div>
+              <p><strong>external_scripts</strong> : Any external scripts that should be loaded before the plugin instance is created.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="string">"external_scripts"</span>: [
+			<span class="string">"http://mydomain.com/myscript1.js"</span>, <span class="string">"http://mydomain.com/myscript2.js"</span>
+		],</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-45">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-45">&#182;</a>
+              </div>
+              <p><strong>fill_size</strong> : If this is set to true, the widget will fill be allowed to fill the entire space given it, otherwise it will contain an automatic padding of around 10 pixels around it.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="string">"fill_size"</span> : <span class="literal">false</span>,
+		<span class="string">"settings"</span>    : [
+			{
+				<span class="string">"name"</span>        : <span class="string">"the_text"</span>,
+				<span class="string">"display_name"</span>: <span class="string">"Some Text"</span>,</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-46">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-46">&#182;</a>
+              </div>
+              <p>We&#39;ll use a calculated setting because we want what&#39;s displayed in this widget to be dynamic based on something changing (like a datasource).</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				<span class="string">"type"</span>        : <span class="string">"calculated"</span>
+			},
+			{
+				<span class="string">"name"</span>        : <span class="string">"size"</span>,
+				<span class="string">"display_name"</span>: <span class="string">"Size"</span>,
+				<span class="string">"type"</span>        : <span class="string">"option"</span>,
+				<span class="string">"options"</span>     : [
+					{
+						<span class="string">"name"</span> : <span class="string">"Regular"</span>,
+						<span class="string">"value"</span>: <span class="string">"regular"</span>
+					},
+					{
+						<span class="string">"name"</span> : <span class="string">"Big"</span>,
+						<span class="string">"value"</span>: <span class="string">"big"</span>
+					}
+				]
+			}
+		],</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-47">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-47">&#182;</a>
+              </div>
+              <p>Same as with datasource plugin, but there is no updateCallback parameter in this case.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		newInstance   : <span class="function"><span class="keyword">function</span><span class="params">(settings, newInstanceCallback)</span>
+		{</span>
+			newInstanceCallback(<span class="keyword">new</span> myWidgetPlugin(settings));
+		}
+	});</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-48">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-48">&#182;</a>
+              </div>
+              <h3 id="widget-implementation">Widget Implementation</h3>
+<hr>
+
+            </div>
+            
+        </li>
+        
+        
+        <li id="section-49">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-49">&#182;</a>
+              </div>
+              <p>Here we implement the actual widget plugin. We pass in the settings;</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>	<span class="keyword">var</span> myWidgetPlugin = <span class="function"><span class="keyword">function</span><span class="params">(settings)</span>
+	{</span>
+		<span class="keyword">var</span> self = <span class="keyword">this</span>;
+		<span class="keyword">var</span> currentSettings = settings;</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-50">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-50">&#182;</a>
+              </div>
+              <p>Here we create an element to hold the text we&#39;re going to display. We&#39;re going to set the value displayed in it below.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		<span class="keyword">var</span> myTextElement = $(<span class="string">"&lt;span&gt;&lt;/span&gt;"</span>);</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-51">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-51">&#182;</a>
+              </div>
+              <p><strong>render(containerElement)</strong> (required) : A public function we must implement that will be called when freeboard wants us to render the contents of our widget. The container element is the DIV that will surround the widget.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.render = <span class="function"><span class="keyword">function</span><span class="params">(containerElement)</span>
+		{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-52">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-52">&#182;</a>
+              </div>
+              <p>Here we append our text element to the widget container element.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			$(containerElement).append(myTextElement);
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-53">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-53">&#182;</a>
+              </div>
+              <p><strong>getHeight()</strong> (required) : A public function we must implement that will be called when freeboard wants to know how big we expect to be when we render, and returns a height. This function will be called any time a user updates their settings (including the first time they create the widget).</p>
+<p>Note here that the height is not in pixels, but in blocks. A block in freeboard is currently defined as a rectangle that is fixed at 300 pixels wide and around 45 pixels multiplied by the value you return here.</p>
+<p>Blocks of different sizes may be supported in the future.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.getHeight = <span class="function"><span class="keyword">function</span><span class="params">()</span>
+		{</span>
+			<span class="keyword">if</span>(currentSettings.size == <span class="string">"big"</span>)
+			{
+				<span class="keyword">return</span> <span class="number">2</span>;
+			}
+			<span class="keyword">else</span>
+			{
+				<span class="keyword">return</span> <span class="number">1</span>;
+			}
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-54">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-54">&#182;</a>
+              </div>
+              <p><strong>onSettingsChanged(newSettings)</strong> (required) : A public function we must implement that will be called when a user makes a change to the settings.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.onSettingsChanged = <span class="function"><span class="keyword">function</span><span class="params">(newSettings)</span>
+		{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-55">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-55">&#182;</a>
+              </div>
+              <p>Normally we&#39;d update our text element with the value we defined in the user settings above (the_text), but there is a special case for settings that are of type <strong>&quot;calculated&quot;</strong> -- see below.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			currentSettings = newSettings;
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-56">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-56">&#182;</a>
+              </div>
+              <p><strong>onCalculatedValueChanged(settingName, newValue)</strong> (required) : A public function we must implement that will be called when a calculated value changes. Since calculated values can change at any time (like when a datasource is updated) we handle them in a special callback function here.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.onCalculatedValueChanged = <span class="function"><span class="keyword">function</span><span class="params">(settingName, newValue)</span>
+		{</span></pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-57">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-57">&#182;</a>
+              </div>
+              <p>Remember we defined &quot;the_text&quot; up above in our settings.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>			<span class="keyword">if</span>(settingName == <span class="string">"the_text"</span>)
+			{</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-58">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-58">&#182;</a>
+              </div>
+              <p>Here we do the actual update of the value that&#39;s displayed in on the screen.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>				$(myTextElement).html(newValue);
+			}
+		}</pre></div></div>
+            
+        </li>
+        
+        
+        <li id="section-59">
+            <div class="annotation">
+              
+              <div class="pilwrap ">
+                <a class="pilcrow" href="#section-59">&#182;</a>
+              </div>
+              <p><strong>onDispose()</strong> (required) : Same as with datasource plugins.</p>
+
+            </div>
+            
+            <div class="content"><div class='highlight'><pre>		self.onDispose = <span class="function"><span class="keyword">function</span><span class="params">()</span>
+		{</span>
+		}
+	}
+}());</pre></div></div>
+            
+        </li>
+        
+    </ul>
+  </div>
+</body>
+</html>
diff --git a/WebSites/errors/403/docs/public/fonts/aller-bold.eot b/WebSites/errors/403/docs/public/fonts/aller-bold.eot
new file mode 100755
index 0000000000000000000000000000000000000000..1b32532a8e40e483069482c3650c3ef22ef16bdd
GIT binary patch
literal 29804
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
F>VRGqwvGS*

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/aller-bold.ttf b/WebSites/errors/403/docs/public/fonts/aller-bold.ttf
new file mode 100755
index 0000000000000000000000000000000000000000..dc4cc9c27a59ab14fbb7444c6ab35c5b33a034f6
GIT binary patch
literal 66836
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%0AAIIsziQtyhPht7#*LdNqb{-ye3^(
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/aller-bold.woff b/WebSites/errors/403/docs/public/fonts/aller-bold.woff
new file mode 100755
index 0000000000000000000000000000000000000000..fa16fd0aba81582de121d833c7bc50e8f1b1b981
GIT binary patch
literal 33244
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/aller-light.eot b/WebSites/errors/403/docs/public/fonts/aller-light.eot
new file mode 100755
index 0000000000000000000000000000000000000000..40bd654b5fe63501ae64d5673b5aa45051a69e65
GIT binary patch
literal 29509
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
E<QSu4@c;k-

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/aller-light.ttf b/WebSites/errors/403/docs/public/fonts/aller-light.ttf
new file mode 100755
index 0000000000000000000000000000000000000000..c2c72902a1b6ecb6e22376256a3ece17dd100a30
GIT binary patch
literal 68620
zcmdqK4R}=LnKypUnKK`mOlHn}B$H$^nM@|h5GIo$8ImwSNC*fqMw&*<Mj8<j5K%-#
zibyGC*%Xyhv?{f!Rm$>O%JR~4CaI;gbwO&awZ5+FE3DhP)%seSmRi@fUBzVb|K0bQ
z$xQfYyYF86zpi~bSI*a*kLS5RfA{^|&p{9cL2zRw3o{liT6*>JJNN%k5X8ASTef)N
z6^qQp#y4@?kK?|@J)gK{{xvr&#<400a}F%N=Gu;?(}^ntp|wX446{CQO|0=t58VEM
zAhh3$>sQ>g{>D3=_=k?^IQ}*6`Q=TYzN^CazZ`!QgpQx$_ql8CxOx3GBe8D?!UBsR
zNULwYanl_*uL!~ww6)xP+txK-{(SOQ9N#SnC(f;1ed8+egwQRB!YcgUycQ=Mx0t?#
z<HvAZwRZhocfa+iTdu_MNwnwiZ5wX7adkt>K|z$);{9jV-+1>Ol36?_h^BU2Uvc}5
z>sMFYx!_?OufXrgJ2q^(%lw7tmjuz`L3`f5<IdH0{Nv$+20^rr;djfH)hpK=S@+3S
zLA1%Z--JJ+p77JwgD=tchcAC6pSCaFv}}}rvEyI~oe?C#iZk2s_gUd{INB-f#{Run
zB;h{c8`wXLMH0R#oWlMy!fEXPP<R{rzY<2VPw$iXN%TgmP%m@};%ztHb-Q4pCok>2
zszN}UCnoqRT!THjQo8BJO{)d_t*h_6oqp$Yv=(ulNpSJ8L6k&Atm8ZH7H5c`l|Czt
z$sNY&#^YwI`5yCO%h9~=TaV=*vVE>#dBIV~5yu~$kGV_T9~OR4^mFh3DsC^4OCBy=
z<@;P&dD-XvW&S1pr^+kJ-wTWc{-xsnil0`bf<u+lDi4QdhyJCiyK1O<dG-F9FV*}q
z><JHqPlV4+Yn--n+T+uHUE5guK<%07GpDbd{>AC<N9rR(kyKr0om%&s=+fu|(SL}3
zSU<D=&icpe--s=Y-5Gm4_T$*tjH($+W_*6eu^GQ^=xn&F;jxAvHGI%m-q_vv>Bgh+
z&&Nk*-qqCI^vmYD<`vDqX{nmkJ?pP$9ZgJ2^d&|TKc9W)?89@4KmiMS-pe!zrH|g^
zts<-!Hh^cZ3TK2j1pS;O4&gURxCtB-g?8qP5tJ>*-!!2SzZ}D}G@+IE_D$}!@}2>|
z?h;h|stFr$zfour62fd@u5cx;e~+IwS6GN&ion6ai9Hi9rkBBqL)aUf*f?=+;w=8o
zO$ZYM>HV{~UgxYNlnDh`M4=LkB-CIr2-C61Xj>!RHxr8qZ*39Gcyj`MpN%CCEtm^A
zYQvI`wp=OLgzK;r2+Oe8g#j!M$mxA}+QY)5c+L<OqwoY4tMK<&9FW^nSU-cs2+92+
z&Y#7i2>*n|Df}}QMfe#OCrh*qt&@Z*EQ0XYtP7HGH}}6vs6+d$=>H4o>FJ5rxwpq@
zozqVn_d(=7NZfh@sM?ArT#v=bnq}hl8MrkDZjG5+W8v1AxiuC%QxvKNNu0-TUnAU(
z;|Sh<HoXwNX~}Fe=U?Y@=g>mpMs}M$(tkNSaSY24U6a%PO6HBoypfnU2Ih?n?k`09
z7hy38i?NuY>7C#caU~D3)eG7z#gZ@dVX+B+g{45~$6{xmIhbb(^UMheUN5+rb0Txj
zz??G(2VrfDur}YsTaF0-6VFd#aS0>BaXkM77OU_*;b}aRxa(x@I+?o$*rwC?^$jd;
z=4BrGMY47u)^9Ks=b`nY-~|;=Pdo=Yy@=i?C!Pl{-^7_;FwKsoDMyrj4}XVps8a$-
za^TpBMMSGycrr<}fh9&3qF6|GTF`ouVlzvzMVNynBg-TW`7F^kp$kg^G<iFoN75#<
zeAv_So0V1v%ZI}9;b8etgnz*zLi^w3wn#!)_!3(4S?=cyVHSRaze2wz7s12wqRR|R
z1Fp&FXFhXQWX?*=Sp)M_W}fOC5t$<f=7@<oA~Q#1ro4=&nP6+~7xoBW5cYy6lGx3y
zxd(j{g(kEn4oh)XmpRCuZbMFUt6pSokX}*C&Q1jI>)DBY_|t#SY%@ptv3``%0Blo#
z#2vYICwK{tg@n)~$C`y^aEy3jVhJ}h9V|?TJf?${xs)&TV6h3G#8SYNu?yE=aWH)p
z;aV(CmV6gWyPKum!&+aM!`mX3a5GD|h3RQ!dU}OnECozeJ5$xpRJEu1OxB<l{9VTs
zt%QDxkSGDPdJX#P0dJXdIGf?9l_gVTY0OxnZeSEyxEhOYBgyV-I75=ATOt$7m<i7z
z8z6z7<l&2j3LIk()P+Tvd<!83x{{VCu1@jQ3mFNOa_e56(3gyL;`<?!#IrXiUP&)+
z<M`afTT?8NAN?Z@CSM`3Ju<L8lGz?z$`X+c%42?5+3w^sCv41#0=7GLwmS;j9f|FZ
z%yvh<$l^Gd6M4*uJhnLbY;o*taqMhybh*!Ci=!|N>LK%1ra>3lA_{(%`K{oMzO+KB
zJD~#s_K~CuXQ2}VLM`{7Xh7!%p&<jfJHyFx$i-jkJ7+=jEo^)8*!Ec22W9LH@xOqn
zVrQy2m?}Cwrh3q?3XkJC<VW*aMhdw13in>&-s|2ppZ%AU?URdT$I14I5S%E)z`6g|
zEw33;`LOVauwVEx5XcaEtmCB)*bPxA0T*ji?}Dd?CSGNJlh>i;G_S2#pJO|h(GbGp
z8P5CCoF}g%!M-@LCa*Kq-;j4Pu?;h`4YRNf%VQg6WgC{yHq6F$tAI5`*MwZJ<6z5V
zVNJ+m%aqTSNnuSWU`;4sn^eFyi8%WP`yNq<qg`iM?q@>Y$TMa=tnOb=L#Cf18zroP
z<-gEY{W-r%9@WTFZDOf5vq!bCZ0B*$GZ>LPs*Nq&<@{<MTf01#+duDDMOYgN(oI&d
zS(t~ux!DTp+{$>K4DZOM=}RuAD!DAC()&di*Tg(CGtVr{v#FShFz!^OM7n8WZkd@|
zdCV;vb1Q?C2=!)g5!rYX_qu@flq?E)W%BmayGeWtUy_R&;fHZuMk3|3RVIrhfg;U#
zK1GY<{Y4x};)ndS{jeXRumH58*nlkBAdr^6oWmJ?ISo5Fn7)Fp+6dX8V_L%oP7q?j
zd9*0bchFOYc+t0nU$e*hTTbI{lCURv8>ioM+Ml=t9`GYdG5`~V&~iflM&_4^eGX}N
zBP=1sCwbgoE9;n!mu$?h0_K;Uk+6d`O<}a)WVGO7t#dP4@UZR`GFm8NwBTi&T+IHe
zge`L^TV|i|DJ*4dpZ$y?%Gq~SF<Pu<M4?9$0rqAl_GT9LW)|V=SSnbb^I1Y{EFpH5
zkRT%s9Z|bktKID1O4!2t*~0tT!dqC|-E7-KY}G?)G(wtR#n`i&kv3ssLK+e@gk-4{
z*n^@-!Y4zpaK~~uAWz|do@vmrEZs3n_$qQHUxV~W;sJiv=NMzm;%5y&3Xa2)KA&EI
z&RJeaX2`?Rn*N3$HzWrneWxe3v0r@}XP@Rp-=0k$>F4PjStZis0R58F;`+4AUu=c{
z^D;yB%E8j2u(UW?T3jqGZk84gOG_b3OA$+pm!+kcrJ{tT!p~Aso+A~dmyimItuB@a
zAIpQ2?S_lx!Nu}WoFfCS9E<N~zL$eO6y-{y9vy!gkq7w!0USAw2>C_CRQf{NsB0wA
z_E`Eai7N)^h>`14IGaKCnQg|V(s2gop96Zr`5fNVPLU=(BFn}1gdUBo$tKohGi$Pi
zbvTc0u9bB-pLIABkrCFnGd~>64~6;RWPZ4qA8zJH2H#UOTRH{hlf5>wPMTRK&8&@i
ztc_OIMq3W<*U_fJ)Ys9KnRQRkQk1anmE`DNDN}#;q-V<JX5PwrAV_m&$xx7Js-MfH
zVR2f%|L>4C^}T?l?N1}>{3(c<JW~cgQzpj7eY7#A&^^-}$kzL80kXd2EM#UQS@g8N
zlg^We7~qAx2}v5Q>2D1racJTMFC!C&QsmX>d?)`tgx_`Fp>GeRkM#3&ZgAplTuC(h
zKJGl0dXuimk-b@$wF~4?WcDaV_9!OyC}x&J3(H|1%b}G$N<K@Yjis@GrP0pP=wOec
zut#ySjc~C{x>+VYER%&SlSM3(UY5yXwh<+4BTCt$_}HVAu}AT<M=5995xB^snAn$B
zFgMLCy?HFXdF)YwEW<XI;R2Rn2g`6JTM#$%*TXXGVGB~q9;KW;N;zATJeF!tjy1{k
zA{0XzfQ6m_QjvsTGVj|#2@&yUHt$8UoLPuBWbL#5AT8lJT)I5^x?DypH;$w%Rwj-l
zNw+g?rXsOR=dAQtJ`+J^k(eGY+R;K0$W;=~aX+&$^8oskv6tjKU*;YjN=xF|i6i`b
zMvq^gi0AaR^b*$a;`|h$woBz&DUQg*i<A+uah9rprPIz*=wP`~(w0t-4ypHc#?+UO
z1vCC#6b_)rE4jxN$SqKgn=k^QgmV*rgeK?W=Dc+Dqvwn%2W((@mRX*SjAc!XPR!}7
z1?6$gc!R`k79g)Qf*~PaNT{S9{T4wXicQGVbM6yc%0`@nw_1b!-1iq<BKp#)No|o?
zJB>^i6SvFE?Xs|*<*}YwnO^zqo%M{Rm9;_7LEE_PIvUsQUna7mte%~bl@To#g)7hp
z!q@_ERW|dJi8W}O+inLkf22#4tCiTE7}%c3Y&VQ-F-)xcdbB68F3YUTX4YaOYq62F
z)yU%vB3ow4N=ta^H~-tyl(N@{(eJ+#jv~v9Q7y5E={uPrhWy7N6Q_||>*a`uEK6pA
z^a!o=C-hFdi7T@4Q6-)tW0XYCUFlI0;YOKxV&E8F=FFUtwabLDns&%6*`mKJZl~;e
zMh{mAEAT|JONDHkFOJ@IoIf>sr*R`a+oxlD4{MK`J+N+@W#)Dv`XxfjCFC_o_G+L(
zBCMexG_l4&YtVnj6G9+|22Q4d^%B}c5@}$GlvyH;9I2aFF3l{LdJhaNkw%utJeEi^
zOQep9%xV8Yt?NST{;TZ?z2_>t=K-d|WSoqi>+(Pp;Jq9gD9q7I=^%}lWUK~xnoPgR
zj*9GCbM^63y{C~^-7YLatMm+Q5fBG?Ps;dbZGi~8B;h>$8H7&=@9>!I{~z?~!8`x!
z-y;DJ4dYG!z3sahQZOQXTX;(N4o107{I~Cq2xLlQsAMxd$YGHDAq$GFo<$O&^`uj@
zEX8k6@|Dws8927lm4pM*ag4qlg_X_REg=J^=fiX3ak8HV_INVe7bDvj6MJW(Z!fGX
zjZWq<Mz*rGG_bbGY->zxYxEe!!nQ`wepqsB&9!LjTyAT2JcMG3Q#oyu`HdpKMPh_v
zVC#xn4J>_lLfurl<Y+757Tt4`g{JF8pic>zWuj!(?rfX%Lur46>oWN{=M)5ZF#@1`
zgOTZBVtSa_d+2d#uHCV))ip6COpF6eIq@fr%jmY{LR3QI;<UV}Z*y8k+{%uf{v|D=
zQQ*I<P1KrYxb_~V)Kp~2{)xO)PFo88B7}6|`!A1;=>4C<`!A*jV>C##zRmLK&rw4k
zqa(S^@ae+VT%JQ@>jw~fokEKqXNpXEZcu@;yBQoq+g!T1(sa@DD3{ZzT(3pg<8s<`
zDc_|_Hsud#oI?aYmV~tza81uv=zPn~9A*#&p>K)Nw*li>G@?m0Ax1{uru2v=)p+Pp
zfthi%u76+0eVzQaTnz>la%96aMNaj1(bF<|oQ-9Yc-nt&&m*E9O+qGu?8_vAAp4s`
z4+CQ~k!_j8wv5mORekB1{#n4UBJ4axRhflGw{jPfI2;RWfS9v7P(FpyByAL1T!;|K
zVwpJmVdm_Ig{@Z}XFoC(Cp7wQW1E|)IH77AeMF0D*S-nvQ8kH<C>73E==zh1&-I!T
zsvyxvhFlz*xw*eCM#k>6{nPtSQYV0Nnb9uFW4@JM_Cdoa3%Z{*?HIh-`kXQIi>*A-
zvYww;4vZ~AZs9k{V)6Z1{mf8KZ^1&oBWvquJTWt#p1nuHRk}|hO_g$DxeOPV@pG~j
zBNQ9I1%ADPzc(jFCf?!91GNPsl{wrqPT?Naut;eNQS_R5`bGT$4xokd3%UKt>`Oui
zw<qiEIww@*;q)bjR%ELWBycs?r(`sf=&5_zGI&j@N)d2BAqmLgW!^fA-<ln_(DN%J
zlUM(#cP-+3vynOF6(%ig4(|E$ywIPN%~Q}ghQ3f%h_aO{@Ye~68q8_gg{Xo0|6j}1
z3wh+4IDq#30u=tmL@h@7a^>XmJo>L~Bh?m89f>+eQZPxkjKt~MG>xy$dIjeHWv*Sp
z*G@+sR|FEJF{V!FJJl*>7RoU{HhH%MjV3wG@JS!XCw(-e^^qi3;+UKK6!GuU@|c@_
zzC2xZf7*zVa;j9L%qfkUP@U$B;1I3#ilOi0{JAM(bN}&nUPue7UO5Nbm!Sk%4UGK$
zr)Y7ZevyUB<i4ijmp^CgRx#(Y`lXK(?1z;bL5peq7U&emelDf|<5X$p_e@%I_`Xbg
zv+{RoKd^@H%vKs4LtiPzpoL`eRnYSl=)ZnMUN!fLQ?Uz;LP(r@G~`(3%S#w%LUTBE
zc?r{_pltsJCm!W?qCHdYH*%iB%2-cFQo3|s5F6&mpa^V7xbV_i@QVJHDet(P2bj&2
z%zA(~A%|y?O@DF9-Ir_OrR>2wlXp_<GJlyd@2n?&fw^;b;$6Hi>u<<|T<&eU7ESs*
zAh5F&TPJovYR+NA3KEd>Hp`T!Q11=w;r03;1J?)1Y*%!DoZ<I{_K+)=bJ{nR@)!31
z1X_{h?bK^)n9`H@5m&xB+1?D5bbij@E3;PiQJ{<LQ%NIoDWu<Xp{!(SG4<IOw<1gX
zsaNWFH!B%?m|rLU!!5bo^DoqXvV~-`P;op-mrM6`fax<Ctw9dRlaMu~+7^1o!JH?U
zr%>x+NuXG3stjDnRkkgYPn=4n3+bM1`=7jS3a-oMdGgVc3nh@=o-5mb`ngn3nbErJ
zbLai1pPP$Av(H_Q=U#wa;o(03M_vXOb8}glHj(UFao0aG53_ih^_TleRk|6!h%MDB
zPxeVdr6AQFUB2E`uPUcm5t-^Yij}5T`B7wU<GfA*kJ0HfdGs;Mi$~{ktNio|1RLjj
zY&=%0kIviBBFba^^Cjqf8s6w!&iG@NKZIb8GaY6F&x;tH$VP{q6ER4$m8CgL4MGi6
z0Y;;}Iz=hZM->T|nu~C8Js{Q4SvU`n$9VuNkH6(#Vzib<EiF7UozG)&`P^H5HikaF
z^_uW=wErKt{n-dFEv;xJFcb0f!X>BW#eY%Dsm+(FHzzLUGZ$@_Y5&Fb<N9cGKJzcr
zBZ_A8d1Tg%wn@O7Z(#k!3;IQ)&2iL75yIf=8uW{h#vxu$#fJqv!-4AjQ0d2&<p!?G
zl({O?$W@sp^osgL5nhHP6pdTCwjdwWe*(W!HKN|C?Hnz(U!XPQLkZ(hJ=Z92^-2sL
z8=s_fMph`}rKEk{g;wS)ssoY}doFp81NfMb_uuf_C;czKo8C{=Ce(u0C-0UpF8d#q
z%1hU7S}u?~@~Ko&Nm0wB2bh$xL)asF9GjrIcNv?L-AZC5-<ho=&@1Ao7ugy)(l@=r
zT=z&+eXgHbJH@kv{){c6T#boyHB&2ADOY3VTunabYBCkaG*iOP67Aqh6@_y(POedL
z@ff)~$6k3@>ZjT(s%X^5I4`bwE#iERUiq3C>7;y)E60u%fNE5iOmmuu!r5p&BUeO`
z6FGJFxm2cEM08gc<Dly3(tHp;eZlkTxrD4idyJOm#_hH=m1)*cMw_SxLuL)i%u1p0
zLURsv^s0Ql`rgR7P0}Np4RUD@`|cEUog*=zKJ_V!gN{$UiaZ|WW-@)3puuEoMQ%|h
z=Sp18okc=3LaAbh#w7`DikO9X(fCgehRr;kwwD@J)h#R8Sk(5w7G|!e`1w!k9?gEp
z%)HV)0_D;3E@4G!euF*_?_xdNiB?@GB^ghpTcvDPI@312FM8yijRc-!{iS<<F|j76
zAJ!?H*Q=<B&Qm$B&p)IJSu<PB49|(eA++(r92d#iTX<tu#&TOn`&Q8Bz(w<O%ix_S
zKn?N{2DHJ1_hn}68U+i_)NSPTtW|g1ezVZN=FS^$5*FQd%gr|mOL*OP`{wm`3IiMN
zTy;A}eM!b>4l*I4$+^flGDDi^EWLxS(bqIKNIkN$cGYoCm8{rOc<@!}Yx?*(GTQz_
z;g=${6!)YnHbhZJs-ieAeZD`v9Y}BA)mtHs>Bmwjwu|s&yHEi>&qa$&Kut8`c^a=f
z(`TOHGqfgDB4d0$vq!U_^>bBt!a~R>$vr(6Gas-PAag{`D$Z%soB`1IPh3NHT>1%(
zcsAuy|I`!c8hV0+UKoUJ!d=2<92=m^g`la(Bd|1=*n}Sc8t1PBb$^B9Zu~~|9aFC$
z9lnxl1thF9SC}T=;QemgcQ<@~73QYaV9wz**o*0yml_3Hj$s710rZH2hfVNgEs!>v
zMLY*IZiNNg1wT6|d>->0?}bKY<_UgL*oVrB2Qho`p(*odGIiijFxQC-Mo{xA^z&+X
z3=2kZj{`HG0EU~v<CC*+#ijaBbS=YQE@uo(qir~AK;7~V;d8jx4i4WYe1`vs+moD?
zJH!X@ZrM0wM18Xu(6@${g*7C)Xcnq2u#pc4!nb;aicjH)|1F$<^?Zzt6nre3)}+=5
zg84~lU4?*N;-6e(JcUgK-cOv@|EQJp@8>u}du3?FNo?zIos7N-$Togfm=LcK@0NZf
z{k+0j;i)LCD6gojsHuom%&xeh;%Kn)4dG)M+D!inaNhy3H+{8Gp;Q!Cl%=muOkOS0
zjQoi|z;Zk@amPgW_{8{c-gxefXWsbxH=cgudv6?nLw(~LZ|r)b<rmLXylvF62S5BT
zTR~UTox)Zp*VG%)PlIeUnJszNd|QFtp*US`PhpX_xTMrq<}VLa1S>;T)ivR1wbLVY
z(fZhohQ|2JrskGeiP>}Jw$5v7pWm?nUxQfOd1cpC-B&O9M9(LCuUUF+-(U4#x9n2`
z*Dt?e#f`$}ci*??p+_J8+k=Om{2$-==HDGT`ai#QOx1?JJ@VA??|lDzKX_WWbJglw
zUcdY6cij4aKD|!3cSzVI2sdxxX5RK0;qZx_H{DJL>$m^Q%D*1`@-wGjJ@d~$JNr-H
z6;Az7c<YTffAx;A^|hZ1fAfW1d+*=(z=L0WWWVt6V_*BK@a&H^;--7}G2pic{N5?t
zDQtm$-iwi_-J%_Ou$OCW9}^B?wEZ*Cjys?g4+yskHw#;#!|R2GMyD#&se=0|wY#TZ
z?fUd}st{@`R!x!q*6aA(_UkJCw<@~pi=(PoSMkrPEfQ6wx~qEouLxZijH-sZTZ${x
z_MZNr+J0SBmFwu%U?_M`|LeXNuk+!${&C;$uJeV0sxi{9F8cI!{KIwE;d#cof`MgG
z)l{cdiudB}755Gd_*4OpG1qBTe5!r&l%>w)tVqP7YF=H%c6!MV@%#$aP<>^nLX~T}
zRH3K;{?+&2SV23pe8J##zWe#8S3jZ`TJ_c`J|&2k<kwaFBX`GER}oXqk%9h-ip8Nt
zH?FJbuUNHGe*|4uKySvY@kxip_b<9JbbrPDA%0y*6?*&Cc3g@6(QDQA)pUS+?EI$I
zGsVH6uj0)8AOmi?5^cLS-8QrjmpSS}6=%{f4^{MEb&W5mir4kuj}BcKx<6EL|CRTL
zZlsn_cW6!RQHTvLu)#?kpdHr*9Y8}vi$XW9Tanuny478WPTaqn$kw$gbiY}x=;@#9
zJBeRBb;Clt*xu10UUggnyy7)od@WjDaer@rXeC-7>hNJBhB`p`_TK&^^nbxk9Z9i5
z#73>SNiA7j#x2DY3+q&z1zoU;l9a;I!xGRa#X^{~RmN*!h0H>|hFP3*lV-W>ca56K
z`183*gM?i{Gtg-xolcrf{;|19k<Q1RL1%T)8C)n;q^iV6Q)`Xap8var@{4%BBs@ED
zUff}P7Vq!_K_>ALl87c*Mw4zyh=^)=Ocl;(7UwAa4SOwuC8GIVqpClqd0nGgK#XW!
zztfeJ-L^y`A!u&N=~7D*Ga6cEwlv2Zy+wr{vnf;=u5r&3<BdgLgIx?&)`XumMIzCN
zNne*LL8m8Nn5P64CE)CvJa38^_e=Qq@msW}whkHgOCxA&f#8GpLZ^j@>WYsPpjmQ6
zEotO4=|fR1)7x$vRV|8UM@x%rqnclg2s0YoPQ5u!Zcg=-qak~(;;OORtKCYixFhGl
zFeHVkCF8HrI%l8h_>j<IeAKu{m@ix*enC*%V#Cp<=6O}#xMnbp4$IXY3#z=0$u@&E
zGTh!4&x@$D8&y+m*jTmj3cAQDj}GU%J!N!})kGIrow%sDQB)Vj)Ydavi*0n+*3t_4
zyYfbpHWyuDv*3~zMJq(-e0ih8^}a&<J~MArof*^W^G3DBVnl5&J<)dh{7#`TVwKg_
zdev30wkleS`y<t*Xg2ppC)%Dp{{a1}&a78`_3BIow|=Dh@YuYMjJS4KZne21!$w}`
z(;Dv_cDJ~&GgBG%%q+xCy)s-@@55zPysqYTl-6`j6JLY7n)xm~b6(~-9hv7WplgN~
zX0E(~&Krd9*j$Ca`k5`Q_33|NyCNHzQq@FYax|HrGF!F1RI8r}K`crTuV*&51l_@!
z@Jwu)8{@M@uOYirE*5%B=Aa>%+0g~m9ZXBAJ6JDP<MxLPl2{x{y=M~5VyWL1aw~qt
zFCO;0ASSdYNe0P~`XGcI{7ZchAZZRd1F8OiQmrV}&S2_&$sisQ4~J5H;;2%oi2Hrz
z{&KNbmQqLcwXMXCyHe|HK5U(--Si}JYi4Wn^@#g*n{Z^pB3GNXz$ScMNOq9MS`4Gf
z4hzXd$K1R~GQsEMQMERv6=PH0m@KZPUyFStREi1{>eOn?qoR66Of5X4)fJ4Yb&56*
z@>1NW%_a?RRA(z%J|wHzF{&-XwyqE)H73+~&ZN`Q0d-eryOK(61MTHI)y9O{?9xIt
zWCm(GoG#5!m>@$iPi!eS#2cHNX4XsLdP5V~(L|=9u(4e7+C_6cEP|=fgM)Gd@uHCI
zMU$x#cH)R!X!EyrFK<2lRN$(?)t#TaDUm!1ss*A0y$e0EJ-^{A-A5jd_H1bD+rMt!
zizEKhK)~j-ZhaycSnRhHDg{sOX#K0j9bw;`zO4iMzE}EPlS$39DW*Vsnc^F~wWVin
zLvg5c#jfSae=7gA$@DWRMD#TZeG|Vme*kRYMg?^g8htfpk|*(*mq@ae2z!NbG--tG
z(fr2I5r?<cSP;=1*o|MsyKy7Px`d672gb*vXr-W@6}wib7Ir(Z+o5Qk*qsHF^a*TB
zJx<rK(NQt2%A3$SLA~K%yfusiL32cKR6nbulYa8YabWe73OFFqo+rgY#zK!>3RTui
zEuJDKbPXt)C+a3n1SO}7;-9#(FE;SS70dTtAB$bTZ~5{s4#f7Y-?rt>+qP}lBo-Qe
zp@hgdk5ziAU9M@;`O97_+Xo)syl~;>#|H)u+||)>*MWhdzdiJop+kp0?l&GLNj~2%
zi(kLYHL&gXO}u0LqwzJwC<}!@2+0N_bizEEEFdFqk84E`<HE*~^7e*;f`~dju9cfc
z)llQGyP?1mQ9W^%WcaFP`>5Kis6Y@-%|f<6rundGRx|~4CIJsLYIQJ?m5n6TFpp|Y
zsi?V?`sW2rao0aj2J`*Msa<3ejjCHw3s0(wqS{ZM_~6hf8E5lVyE5#sEAEI<Erk6m
zbh{%-9Fxxvne0wiLQoy`;;`M}DI}8wb0li>d|+IGu_3`cZBIazgoNg9fbX>Uf>0ry
zn=SQX6SJx)qZ)Q_w<sQLYJnF|+bCx)yXQ$Q&S0foy03cCs`eG1Te$hFeGQvCWQRS{
zpIEYCQRUtt@#7tNh<ovGLg*WMb?3$(?e80U@#K9+Zm5z|_5Js+h>HhX2RAP-2|cu<
ze`jy4t*|;;YE^36dTTe_eqvkd1$)4$1eDa#?Z>yxo4M}r&PTs7f5U@4Vr~1n-MT%3
zUlzmcmqS8Q2E#`3*(HmrJ>!Fk7n<V|&NtWHPVun7K5J4>iswuTXrUV)kpt!fe-*g3
zp#GehF4z`b%Iy-!<SG|IHNqG5lC&n;H4s%Q6j#t)($_m@PH$g{GTmkOJE8+!QE9`F
zSUL8>0wPNE@E=ppo;;O$_JhMwI$rqWF_G=SCEjm51E)Co{&|wCX{J;!hV?d-ORhqX
z1dGOPSd)3HtI`En6CJp+zW&OAC>r3Jo;nge{DC;<)G2ZHAJZ@W$yn<3uMDMLAN%n_
zv;j6~v-GxMukktT<>T8(G^)Q)NIHnNg%&{p+%d+~DoA}errOSEE`YIVkZ+d_hBvR6
zY;d6w5@!$sAxNC+aB5No3t4lE*JL)d6nV`xZh~k55zU=0x^W&&H?%;;V3IeReE(+k
z-MKd&f1>FrTS=+6EMM_M3c8~$dp+Uet`F_X?`(zgU{myp*4e2KU-3nsFA<+jnM^5J
zOuZKgp7r?i#UCsvsrU8!U^BtXQ}_&?UET*?&K1-EoK9RbnnzW8V=`bQ&lD)h1KtFW
z{by8DqvnN%7BnXPUi!^1=0(y>cg<{?E4BnPh;33O*vf^S!Beuhf?RK<OI$(ROdW6q
zo#a&yNM8-nj<}6a57I>;XKGNE#ckBS)(MZ8K)pGAlSUO{swF-mT7-NVje-!1XEZYa
zn8hptU<t4%LM$WEWG`Az|9-X(uq=vdJ}IeYUF%Wm<5Kezn%RP_OlZWL1B9oGts8(0
zlxo-Qo+`x^dPjVO+jgsr0G!&?kHc-!9<-@aQ1fG&!8}TT)FMp~BO_)j0pE;T5za|l
zh<cH3_0iMD-^OZ@60uq%iZb15rBTw&!2B^pw+`fqvWPze{Y6#LwN^*{nv=EdLO{Pc
z7sBU)c07OG#Cho#klj4QI!UA#BMi(%)k@DDF<J#PS`BCcdc;M-0wR3=I`RELAXt?u
z2vi4*r%a~vZAeo{!iI@=<mJfmkT33l29RIy8aM(m8bAu&DtLfjGLE)@6_i~n+%l<x
z-wUm<3K=6i#bqk4c%#dyz<){`=I{8yJ==b;V?MUqwtauc{D+PoJ@Vb}9yxMC+WXMQ
zBdb=8oPYSC^CPQQkDPxf^=|5SqFZ!fai`uzpWjA4!DoyiyVoitF&!(SDR5AR#-x%@
zBCJ4!MYSlVI?reZ+i23@q_YMy1ltR}H8>$4kUw|<F>B~+2rLDi#(ME>NyrzgB%^E?
zFO-1_=cK;lDv@hN)5qP4kF2v&>zQUU{Pyb}nt8evZIO*l$Og_4lGW4}KPZ+L(_BQc
znwV-jqj^E5Fj%1ZtJxQ+dCsKC<|Q!aa;XkNZsI(kHNp}w2yEkYq+u2_VzyP>*SfwZ
z_T>lGKHh3|TUw59S@q=R_Ui6USEc@4+DOtjw#z3T>9}Xx*7-ZPH~D>S0bg5m`Q95l
zKD%pgPwE|oz%#^-WPRhra@k}gyp<FPwvus>8`XlC7J%n>$Fve^dwoo`p3$n%_Lv^p
z{QkjbsyTR(>+Py^Qi~w2iJnv?W!NCe2tK09a9uP42aUt5gHGZc`RNhKKnX1RCw^Np
z$e9COd#kJvn^GT1kg--LQh`%bsz9QEOLZo+5;xBJKq_xD>}I@io|L9nSPa(ahRQ1<
z<j8?&8(ra+{R90&ceEcl5bcjS#Cyk2$g-i<l3H)|S=WDgMP%TypKOdQzp;N{PP;D{
zTDs@voqJ5yVrd@23>Ylu`1ho)jk{Y1zxU}`7B@cUMYLNnu~Qy0b|EV67E~W(47L>v
zw>2hxY+HTBhzX27k~m`?$st1H5;n7LnA!YBii$ON2|5ECr5OQL08U5%;84Y&lQh&B
zFY<cKA!o+Uu8?jnX{{JPFMe1Z3|9UOVbRZAAw{WD#@khSNG@@WN#Y3HL3bz+EKiNX
z%Hjim)Ykprv&4M<8$pf4G!yu&#I&GkG^qqxQ``tqkY6ZF^V@SqD~G`?M?8wKq%f8&
zFQm)LDU!iSico5FdC&@hqE&Z7EqAIe#3Zg^lM;-O`>S!PW$2j+Oh?aD#hEmC5U3F6
zC_G8Ct{z6fWDdK7MV`Vk5kVpO^$fbM*>Ca`wrpF`_wa4)!QMT$bbK!C@JWx!^7vc!
z+Lg+hzq@<kz|c=NtURzbFsH&>9O}LA=GINiT0ADZbdX$UNJ$M?<kpRc))MOipatd-
z!M61qe}-|RCXD+faWbNX!MFzQJ<O$MG(qT_*&J6nM%5}st3!WF(cczqtKeQVhYRvp
z=Y&};3|JUlHiY5%9YU!KM+7Tf%~j;qJ!ZQB*u<RMt8~mjf=j)(OZ)qdi-8}T%+jtG
zhgO!z7AgMxeM`Q&t-E*k(f;)#JFfWJ;YT|^Gca>z-(4LG@42BxiXRi(#|{^{qRybz
zzH;dKyS%kUD|a+)Om5%u)VB6{dwvl)dZ>QcuB8LJdc*PS2Xz_PJF!OYh78ysvD8b6
zSPe}_l19)ZXdUE`8r~B0iZDGQV(`5t!?0<5XJl@v)HJS0l6<y0WIBJf)mI{)w*`?E
z+X7nlA!Z9>gkv$j$d?3$i)azV#RQrtW)sy;Cgd~_a+;#fq6mSbvKWP7IK{zPIezV+
zpAfrgSAxhLvz)GPJ4!;4xRI%Q1%&9^g4I(VZ%xw|5S-%LY%FG`NOo#ShS=9`a8s0<
zF{)eIR&PrrR(D4_Hhyhj;PH*~BUi0XB(|+?>)SItFp%8S_q8L34<Bh-wtZ3OJ<FP#
z8+z6>HQn6P@W9@^`@{_cyH|D;dE5FnbasDc*^C*>wqMn`p|8#BoxgJTz`Fg{M<Ulh
zvUTVFM|XCt?V02C&gs2HdOXqB5w+W+9es)QJ9ZEsBw_1BLY`xcvi$WSXo+ba_^d!o
ztJQ^&9c)_q;9wzr6uw%K4<PBQuX4IZ98RMr06M5vr&dx%rm_L1a@blTAeF^T%#cMg
z$>y3cz}q|n<pc;Mlk}A%f=$~^yR@};_mO2JW_`y~Z~oXOPLaaL?&*Fo-nSWYw|o{!
z;q`IDA_!Sq>lfZUcr0~l?69{wZgpDhH+|*#&E9EVmcm^ucLRgHM-RpNcTt}i`^fYK
z$^gd3vgpT!54mdP7Dx#Yh5d}GG-_7os9MCEH2Ay_13529a!$cSm%~SfM{_cqIv)so
z_M%M%$idztBo%5(88rpzSNj>Q2&q>~k$npC92WTmKq)0*r(#f{p75ujXcqHFs#(!Q
z^GDLKAet@Y=QtX*=it($>?(yRya<~@{mAf7W^kus)vny`<p5XtTT^<6uak;C*(GnG
zns+==q{rpa+GK`mAF&wvO{VeL(vK{%Ja$-?r59qQ;!UAoyd?F@)M%h4RBaVk+G$+<
znD`SpV0eLZzoi*8td_(yCjsKJSSGVO1qC~&934ZF?iNNRU#4}=zFmptTk8R$@~ySv
z=W`Bpdo`sG&Eyu*3lZq7B~L_>N;dS%vSsYB$s|2Do<M32txkQ-9x99ZQjZ5K<0WE1
zEDE3x{Szs}F5u!IMr4=k`D?8V7OIT0!a|t?9&JWUt0K-f#?;C)+H`Q<HN6s?x4}Y9
zSF{r7oyk6`#j&-yD8MVLsb{lP25nRW3DtnXDbhQ#@*uNaG8gJGu@j0n3FpKMnA^YX
zOUvH-!?JDLLoQ@1YwU~SYnRS^_VE>)T5L|SAeYz1hy32xzPEO0)od$87LwTNRpMPY
zFWB=%zssLE|Jy0-N1q2%r_4_p&thzUDUe;#OvX3{XJ0`=-UD;f5z`Vtc+Qv>#-^)L
z4J%p^xxH)ITF->xK}y<(4lhP(XR+=9ZHU7Abh)4RjraeR5TISXT2Ysr)T#<UQbQ+&
z;ZW7pOGx0w$vqbRy2Vb{cbr8P=2)VwgDF=;$(XqbHS7d-(0YKxN8p(1W@hY{p(@@e
z7a_JMiyqePRwhYfNMi>@2v*8ghy|H50)w20sH%~wIVIQP28^~#gNe=R`(peDkBRml
zZS36r+|K*@<~+8f`_nzO%MZS`wd=DBANO|$2llO+nR+_)v)5BkzI)G#!*A_ceyr2v
zHg!EWIF$P1k2XmwSKrZa{hYyg%fNvxi$rx>>bEZqEn9jdl{&WLkI!sv35Oc{?(Eq6
z?$H%q*SOVdyY=vkD@BhOIFLG@QjZ<^x5v7ICCbd&K;^&*(f87(_1=JVpS^3>Q)C-!
zC&uK%$m0}Y4FB^&64M8fS+>XHoYPUw@e#%Ak&%5Xj%x}$gad;UrOYHJIOEg@SuBuF
zFpDhG>8f*aoilbtEjek#I1GYgwFKF-5<7DJ#k4jEY6*B`b`+Now<vdS2MaV2p$Nx^
zEXZEUQXsKoNay9npja#Z*52sx#_ZxbTeQ$s>$qq9>vt)2E)NirRFL|2<0%r)^KC4o
zTT=Ittd1E_EMO2`0#;Z8nJhz%L^GnLBtB&n(JG*cCKAs$q_Vkjq%KlyLT0y)>`M!G
z(+?%AYgGM;Rt<4<+ee4<+|^Ld8IVyZZXRISEd1an>uN}-Gn~VwVtWM(S)>Bz08Q(h
zsy(5`U1}bbH13>-%(%>2ngbcqG6h5y5t}9xy5^TW-F^L`_eCk((I0Eua(zqx<7amS
zdzXIV4*!a#o}n#^TW{Uh`|{~0zjE+c(+WSjZ?VWHo^88jX~JQN58QX-h9}m|G@7hi
zWV3(Koqc_qyMlucZQ1aMMX&hT1)4mB{A(C_0UbM)f*zFSR!v~H3Byw%BQmWv<ea84
zH44G>LO2=pxRx2tiPU@xB~mT<dLs4rk!R-XB9O1B1-b~BPM-MJ&!74xPUov8W!P-8
zP$soN8MYPVBT&O}Hc%5Za{;Na$!x<`_g;cl8UisZXw)Go6#CQ2QzQdvgpo!R45Vxq
z=wdy<#EN4d4(&V|Msn2GvS^@n>&bhs?0xX`9V;GhQc6sVPOjVk@7hY~<>O-TxwX}{
z>V}ZTX|wbne*Y_vj}CQJ`vZwUD16iRIgpV^hKwG_kP|tMD}*GboJF)k#4@f%U5NZ7
zHbEwo3u1$@HW~%Uhlo^STMFB)6_^Mw`Ds`sKPwHeG)j=5QI2UbnP2i>bHnoRDY5Lt
zvT;Xb<@G(As#i7ded|D9>O|^|*!qz1lx#7{Yfq=%QO8lbVcj8HS|9r0DX~?YE_1mD
z{?7@+dEnzx$|J(9L4Ltslz&9DJj3XS)g_1!b}J!qM36|dy3y*q#-v-IXv>Z49M+Vs
zDAV&c*=%$s8<08klEFhdH@;P}@b*J#h_=R4wkpLQE=W0SA*VfT8y~TS6#F!)Wq)a6
z%<v@IR*br&B>pplNN&4|CfikViFQ$oKv=RAnfGI)JDmp8hj(9+Ug36}5I>}C%3`l}
zd8S>|oH%|%TLz&AFGCONP`R9(MszC9(E~e7LqX$k{xqn9s7Cb$K@Z%l2g8abWXDh}
zDCdi5Az(A$Wmv*XDMsrvb4f9bDk}z=M$(IaKJ~~Hy||28B%vylzd%y*LhaCeNJ?nN
zX(U?3(;!+Q(vxAq9jHt@v>Zi&P0cDwCZ}pQ0GW%@;LT5c_~6c?O)`RpM>lW&;ohFU
zhn~A*;ImPENIbM+{hhNON*%u?tuP^_x+$cDSY6(Ew9BDL8;IKDaaW0wcLQk+^I3ix
z{w08_>LfnHP2)DYZz+h6SW5ixEi{suN$Qn?j^;+SRG}0ZWKna1qI&KhmXoy|l?~~g
zG{_02d2UA(Qf-%B<zalgE$qRN{&*zKd2ZNVX%lUA2O+&Up5{MfQ5@j0jG&&!;|5-O
zBxAA_{PLIdcjml<pN)REPP`-aK)!wW5^EA4pN>#^Cg~#Gvk}rkItE!S1e{5$hqTRV
zhg4Igf@Y+o3^Eorrz*ijv`prioQR3_>>$IEnpTtFw`f{*cSmjNU#VN-P~ygI^INZ%
z5(_O3N2GUwTwsN|h4VjNwQO5g0B9Wk9(|RMa9{n10Xb`_mZmx4f}KxSf9Np=t5`0v
z-RTj=ytHr5?f;vS85s}c0#X)fkvCT4n&!&&#~(;9Q6tCO#s%6^UWn||t7wY@ny1?*
z8q=o1q{)0V=!5^i2K2EIee|^SBn#3y|B@|SNQ~c1&rQGbq%G`FLR6}U_ox$NMtV;*
zY6{uUsqS=-$+ICh3e#5s!K+Zz0Hpy$B%MSgA+f0dFoo?_@T-@8a$wK}DO3bt&^S4S
zG>q4&ne(u9xKtbTPllh;ECI?h#nXBJ%&@FGjc4@X*|4aW8>pSOCa<^2E<PrH**44L
zX|{JlfIVT`tkkV`zuoS0q&CdW5wNj{;Z^FWF2wTNW8DZwp8B{1r<kVTZxVg=<Np;(
z`bgh$`>J!d7#YA~-HX%E8ddZZ6Mm5sss+6%LT?m8F6a&Nf|>=ejDZWQpEy<f#EkOA
zoJ!O#owB1$B5b$C+&CI<!;z<2XUWGg`Q@B;KlgEhTTC(u9AaDu`|Ac0p%E|A7Nmal
z0rwCY2OWK+GydghuN6)e2t+GK`Y)aF4?%AxGyZJw%0+#2j%`~u?VxA9c6C4UtFH{b
zy}!GA|Jy@DZ$HxgaLXOXwrn}NsikGp(Jfn!-O(bw`K0Lm$;OR8NsT`FWa`&1Y~1*Q
zSp4Lk(ZknYe|U7yp5Ht<F!1DPMyCR3e+lHcS4bl38PNd&aw;QAz)O%4;5p+ws6wE$
zk;X2n&;x=8lw$Fu5o8t8%?uK115-f4WKuG$Q`}7z7MUa-z=Ef%f1rBnvwN5H?|<&L
z*rF(l%uY`r5Ds+h+q}4C&BM!@dVS!9)nsb8^~l{jzk6r1Y#e`@c=8;TvXpe+w{h9l
zD}yG0LxZp@^{%li&65~vhA+jH8LT-|xdO19EXTkTvbEEou?>1y@PX%4fLx!fPD9Q<
zhMc|YBU!CGDGg7H)WrzpiCP3(4%hzgc`73IHzLjO7w~qu-6no7-~Jcz_~X|?iNMm(
z+={e6+re0&TS($RE{kAPQ)hOF(v3Pi2!q22X)B1mh>eK76_lWrO(jlvWH@Kd%LBHd
z>6hTKL(Eu+rfmG4R<r1W_C>LkPd_@47}$ydrdK_+g(%e+AB!&9wQAn8ha+8a_DII(
zWMn34R~^~ev+I_tN=)Mz^OTNQY_7RWH!V5vglsy0gtbo;Hch-^co+RiVD?wCh59oq
z&ZR}A<f^I>0~lIL5d+Aul(U)NG<G!&(GQZR1=wvwYH&^#@)!h)1q6d03%pzU%olaY
zBOv>F(ykf^^B9L^gUKB^@%!3mC{oBDHqs%oSHlTm7Qz7>X2Ss#HX$2}VOpapL2@zz
zs5^`H($Z1@z%$}5t*&n&$~HQ+KqcXzY6Iw9;H_+=v!za?NwRfGy4L80NtEs900Ouu
zTarX!f6XQ?MY`&S)|Fozhz7a`S9R`OnfU#$q60k(3T212Vd$!CAyW6A=eKV?kf}kM
z@rm{At^HjK!oJr2Z39ofXt6m>fi}P5+jDD6Z)?0H)U|SO`MPi1F_(%C@V`p|3%?Ak
zP=s1{)-xVE)jWu|t%$e1G1Ya3vO!ugqh79Vn*w(+2#%69DDffE=G10;jmrbn4Tosl
zX|FD@RRRUr&a<i;J8XEVC_D|!OE|!f+&TLRtpJrb<a@cWW)cQaAthDO6zhmUQ)pP*
z$D@`RN1!J_O485(<Ep_5>1q3P#Z~Qy^zUAN;#)99%5?ktsj<}9`%;tP3)IN5-8+Zx
zjK7A$|E+v@SL(IYYhsw`(FPx;qHR2`is=ISShAWA5yWUJoV7_AMHtCps2$=*5@|7!
zBS85XDq<06sb=u|0{@%FEN!+K9#<pz+eavMFvFJe+nZgUMtd4M{KVKyEz<ofx2J1j
z%<N(O@Su>aM0+%U02vahMNL}l?s$9>MWh=>1S^8#11WHtcI-VTX@P2i@iU*)$_*&8
z44gc1D)rtpKJTyB0_7I9{G?rTPywd>B>r<Jv!k5k{VB7>?mz)POT3;eQK+xpYV`G@
zK4!2+y000W)@5rbbTv4{GO^b-%cab=i#=jc3A;TpTk0|UY?o)QJ@r)TxIN*<UYZWC
z8$(Qo%$Bn%M(KQt&VnuyzRNl$?*?5cuU@9d!)jSvPasfrRt3iR^f)cktUR)8l{MKz
z9TLUGJ*gw!V3AU%h`p&T3S_5NDi@bx$6M}A9TE4rB5u@77-Z=O^!D+^V;{<r!76>1
zk3KQ>9&MRd4QSIEw8@LvC<tV8Wv4i%7NM93f=nq@rHG{j;zA?3ml7A<<c6IMlxv!4
z7k7%=h-6V)s!>-kols+cFyzzg$5xKNPFt!d<o|I<UId+XV?GYIL(2!Ev5-;ap)U`{
z`v~pl)7w!NW}zx-D;X&o`eK-maoDt$`wjEQo9NMo!}(*!K?VF9t5%FLYmK6W^Bw13
zvesg_k-p@%CUqF4L}SQNG*L|p6&X_%fJn~CMMW(m5<UZhS|TS#Ir2tF?D~<hQFH6Y
zB^ybn-@ZoVlI+w6qK)30I&5BQ$GCKb^`nPvREIzyTNIX~{^ONQ{RgJ4MUr3$aQr3e
zKirw}kMQzpj1;2=q<pgcgYy<^(Fck9uvnnF7YThZ#<cu&ADm~BMvJ|%v2mn8Z+wBG
z831VwF@(-kAVb|V<9bItp6-<k<BA+UaUl^Ac&$;ir9O~FqxeV)#W$&c^A(tGv!d$F
zZ~yS9Er9>BO%xuK&Lci~4m0AMdX1Y%6*)GYPHgVHVkl31Q0#HlDUpcSvpe-x>eteF
z={Z?4jVGiP;|G{F62`x66EC4Q#w$>9BKkvrM4WU<j2G>rVUl2tWHF4HOk=WTZJ-$c
zRi>{5^XqEm<I=0f7lnM(1Tog2T07K(iK>mvVY<uYjbRX|U8r|<qr4_8)_NO?5sJN6
z9f(yMpT`ht>JKK67`nR=et(-BMU`0;GhC9G7KgEA6uA~sj^2jKR%4{B5P9Ees4Fm{
zq!NAzg&45C0Z=-iuxYb2Y9)vtP?n(ufL`@s>9BLyXe*?VKtZc2gHV?w)Cdhw;Hfxr
zB-BD0s;9AD8YV3AP7Y8saim$OtDO$ln_Haq<d`?MZT#8|UF$+Sw)gICw%VH>>wWHI
z=ZgbR|7>@>cV$D{hUU;Mv7v8>wY@w0qgJ_X_jV}vqJZK(c4GW$yZ_N+3qKig*z(2Q
zvh_~%9p6%u6PQC)hzh%_)7n{rzUNclQI)_IcIavmx{72(k)lz^L573s?aJ|Ns4aOK
zE(SrU9t38$P>|G;@rl$GAa)ufsL5pYsICU7ml0c?%^I~u4(?oWU}IbA)zq&Bj(#F`
z%bec*cP!ldc*CX@?E&L6q-o;^JJ!zGacXz!z0^-bn-oXWh9g@}yc)cE=S`5!t>E8%
z;9rnxkGP7Uh)R^H2X@kvN@f-kdRho#p%qauQI=5cNT24HAbqMDU8*IA3qZ|8X-W+h
zWrs5=gst;;{QdSNdutt*+U<)6?jMN0GSa#+YIV!;T|E;*>W`9j^K%a^Epqs-D6|*0
zZF+3^>n{~5o<&|)iHNL+B<w&t&x6)p(E5{UTKh6Bt)!Nsnh~@HzMz;Cgodnf#V6Cc
z7_>GrttrQ)DhaicWa+}zXUI<OBwgQ-79G2^qigrmn-&h%+M-razU>EVHa@#=>E0Jk
zEZi2V-LY`R-Wy`#2fJT+a7mFve2vI{ewL@adE1X4ef6}%YETs4{LP2Zk8SA3hpaDQ
zsx&|q4$={sepEwW0`^iW3P<HqCS0|nOMymI4s##?W6Ke11*(OUMkkHGVgNl^;Gy~}
zL35U(dw{BTr|O|vBTcZ9KxNClF=HW@Gt|u>7jT%iwQN+ktvRs11tL>)>g1BacB@UA
zb71-I)7$4fB;6ETbo-Kh2PApZk00$@wEfr`*KE(r&-#kI^GkjHo(F#PTH9v^5-QuN
z&WSPUobi3kBb}w^Ns<Q0lZvS-(_n$i8>wg~&p4`CiEWXXT5|^FT3Q9P1ViQ+f+0A9
z2rLfol}XF9NckrnS;nP?>cvh;N**~L=`4}+Ev|W?rrwr-7$Ewm-n2z*)_NNph~YKV
z2VH;aWWFifP$pZwb8cPQXGIaG-#WIOE;Ssq`Vp)4rX;xuylKTe*-r^C2+3~Z&J6fl
zC+Wj=@@TSzcFK{fPsFqZrqPj_Yr37_Rt<4$fXiunz^zE5Do~bZ9=g<{XeK0pOflNS
zxT6+CG3cUTAI5%WA}cj>5yiMOQIVuwj~{zbgp2VXtq;)bsXS**Lt;TUMIJ$C(o^2Z
z9PVBKS)PfCL<|yX2AorCTqsY%_8O;_hvcnV?i#iQd-~|U5)uQHDuJ9j8lbgqFEM^Z
zt|CO(AU!<E;~vJ$2~q$alZ0iBiNITClbc0Hx3s;>I>Sv@wRiT#Z+_&arMntD^R8S{
zZLys82j<=OrEB^-5;F?ISIiQvBSXCp|76R+(8kumXwSO2PrtfuYsw&hYSx_A?Vlgq
zv14%Xv+pi>pt7X9rDt6v`sgj)e{)kJ60#K9t%0g=Ai65ifA2s;QT2j|r#j#=%6m8W
z>>P;u+in?X=%}{uT()GsWNc0tI@W#Z!CTio_#n&Q2;!g*U@K|_RDD)~hm<QWAkO)+
zMmeY(<sfH>H7B%+423rc`WHZtd^9FbhHWxSNaJlqX|ED?rj4*Jh-p*o>F8VEF>*w=
z%bV7BerDNB62YkPO%k&4t<~MF)n`wSucsqv-LXfTZu#2H<L_f1c40ko$J-bKhcO#k
zuY9F>bXqkg)RFpV1zC$ATT$SM`ZaVRKSp~3PN48uR@5?*I|bDz(6KU9;Zky|3<>|F
zr3mpXBYnt1I@KL^LV-xt^xUkD5_KqDFQS>E)fOp$kJ%+jK<%z(m(qy(DM?Z=_n_I8
z)~k=t(J4|P@k#u^zc(tbW;gA*@LidS@2Bn)2hlelW|H3mFGJmGK)1MV#s-ssQVf6t
z5mV1NnT>8CspUYQ95L*v)2L7A43%n3L!X+cPY&?Mme8hAp=D(~nZBHaw*ibp30@0a
z5Q22-Wp2Xzay?!sJFT%!&)lXkI!wJs;nd8wUZC-dyPkT|yTId-{jGClixn_7X#M!%
zz71_Yr|H#85rMJN$i#WWDCDvL89r1uQ>8CueaN_EM#C+TLkxjmB4OU#(&$Cl12mSF
zHu6J}e-O6>!_nH*9`Sf}RWzbY+IhBre(@ueR;CKa&oWeluOFFsSE|PQODW2tu`*qz
z^f5bnvpzmI2|lJ)B-Bgk7nf8=UET)8nkV@e2O@n7YhN*94h1G#I-BPDOeVQxR*BW(
ziuY%9(WJnpc96Ggr*~G&psE1$IqASkEs1L_5P>j&;R5#Ht!RkZ+So`_4XIWo3UP=k
z1V1!Cep-laycNs`0*tbg3lTOHw3c>Af``3bMrR?=q_tc*cUk4VP?wc}1NE}9?3%q~
zRr{R2_K3@y=vp!7se`P`1-Gs5SUEqW>&5EjZMQCo@Ojxov-qml)P}nfA%FaeNbri5
z(96$^uOZ4v>z+K&v~26b@yGaR@bNFVZF+q9_y;(m_<-#dXfzGqX-L+PR21b<Nb{4?
zs%6@QGPDWl^*pG-)uw|WB{Zt-01^B(*rD+60uo%#aAi8{>FD3IaO99~y4J7n{Omw;
zZnti)h3yLG+OEX<18c^|r~_0B_>LSv`>D=8lXv%KFbyWUWd`LaVV$Y82cSeu|Cd(U
z=eV7%D1_O(`Pf}^=iYT}Gj<bu4<0)7^{*c~bWpNxdj6rMOCNfE)21IkymaZq&)@mn
z+rRqJb8n-(9#}n9A}7$sa#ZfE6q5LWSwsVDREx>B1W;7O63NJYI!>3xM3iL^prpve
z9Dq2MaInJg9ocBDg!1ebD*e&&IbAdz&^W1B!mzTyFFKM8aCCQZ${nbll7|@}kJMVV
zEraB*{NhW44Vz-D-uJ{-FYVcPYpaguQ-0&Wla%f2SVMSz_u2hDP9;@HGPTa-jsw<z
z|JC3p0PE4;?Wq#RnI%AB*QNU#K*wCv-%9kCA$|?c*wIyhFm#m$O)+AM(J`9g2JgZZ
z!-Oa`BX_Z;61$}YJ@6d^lClh}^kx8A1~}`rOdNFCrR_cYUf7lx=;;dE>S42N4VyaF
zpWN5Gch;KwmM+{;+xp4G+Q)B>i|2N~`bdw-=CtYdOB}U38}EK@aMc6LqlI=u&}O+}
z$I*;Ukq*jaLy>bV2PfINBehJkJ2I6MnAFT>glZ-P&0EfTp%&;dW3F~^m`g~A;ucfd
z!DF~Zw*s{fZ?zUVOeV!`-Sf>{l~`5VeTyMf9t=pL_S5lqSe2p66c0xsXALw)7$Ye|
z9kw0~LlaQ{qm~i}ib*R_sE33s;a&_6QZ3AMXa$+P3d%f6G>Z0ZqrK2y6C)@$-K7-+
z?ZeN-@GD}MQs=Pbs+f-7CP#O3X37$B)?={?($O1jzUaP=ZTljf%VP1>OJd)7y62Hv
zt1B|txqWTr-0n!r#(_C=ZhfeK<&bAytIM~(r=_!jCW*8!Td@5xzcOdG-QT}BJS$vQ
z;EF6-*VDCiX%rC}*|F%vsI=eMhw)&f**OzHu_R-EOI!=W%2U}_RZI;q;0NYHSWNX$
zf)=DKS}{u$0skp87D<*c=?t!~hFv+P+9h{bM4qCQdfOLi@pm@a&0RNbevqL4>p=C-
zZcjaJEpx&tkN3yt2CeR<dEV_`l#W@0+|Hxm(c6$8t|g$cO|1a!Bm=-XYkgV}{NZHI
z8lptTDwDI;3TT=Gw>A?nrd?&`P*;PawrD;?CfdKFXW_b9UG}?AtXy$qdzW}hx`tGF
z{M#G$_5>U@!&m7D>EVj%TaFVgn}8Mmh&H+rnI|#ij@&i1k8;<Ulpjz0xm3cDKthwP
z-lH_y#4hm@w&~zrL23oQy%N;j)Yw+TZhGIx=Ku{vVc`U-d+@Fx{;vhj0VKUXKeEyM
z%3+ILDZ*z4GN}L)hHQ{C=hQUl0=LYm>5cE=>qObqbeR|FXaC6)&wTZFzvc73dd**E
zQOhVbZQ|7QiPm5K{uuqH*&P;|ChI_rSCOK6^`vzfC9S_hNoy}Y9FxvkbB!ORt<_*o
z(weIYkgF2YiF!s!23{{j`GzvX_Ks*!!bO;3B1-R|gow!TkJXjo;8^Oz>QJ~MO_h5M
zcS{E2*u#d~GQ=^g7&}1diRv5A8&1nUfo4<!Jz2pK9uX&|6o5Fzm}R8nwmfkXs^#p4
zYsHq-yLj1jV6uM*Ro05fL{p?XSe^QVII}if9h8FNzY$(582^Py3hVpc@mDk0EtnEm
z9x73Hm=OgeVzp8-Bq3D(k`_^Em|94MyqcK@+b=zGF_SY%&26xEHQ^w#(n^C({FHc2
zT2Pv*cMnAR{Q;$;c1~yM(y%LLOA{#1!2aj_cQ!6l^4j7idtwQ)_^eZH80_65dvf#C
z2$wA&kDj8;2<=~#r*4yOOy|Jgw~Qa4*aLa$_kxC<I?^s3+iJzkOn)X%eHt8^iMk-Q
zE=G|!g+54Ei)vF$jqy|^iuDQ`lff8bZ6R2TTIqsDt(hpM0555%=OxS2G|$kAk>9u;
z1|fyz7pVri+<+}?Q2KNYuBn&S%(*sRa^xRLPI_0y6=!%sJiZ|8RN^;%lFq&I&64<1
zsmBsr(6_$pYcD@fiEe*>xNmTvXziD7UhMZTzWKphiUtPz!g}ia`Io=ewZ3lwa<tae
zA@L#1TP}c{O;!#;&j_CDbD*adPKZ`JMubCld&uRfMoxV%(dt7gPtt8N<-nh1`ZNe|
zIGRBZw>Z57`dH4W?nW&J`oQBeMM^N>sa5I}L1YM=f)4XE74CRClxi$uqIlt$v17v7
zwV=d`rYt3zZcJ0c+q87<oNJrBM6J|Yim%{OWUykIli!{uLvWIAHe@74p+S1ZaL{lV
zdiPxcibjbf6hUdGg2u*StFaiP%6Ul8<BZ4G2nT}+V3htt74h%B`^*uxKHhpYuU_>c
z6=V8H%~LQ}<)ah7d-a)v_%U5bnunrdiwSF7HC*WR;1ILcxTZ8OJBSRxm&9p|BSX!E
zVY8*Mh%A%%9s1yv2cNmhu~VX;St;!(C@fuiAd*dqBJoC3#%ho^>FlnIT|Y1otL<;_
z1+4K+OQOpMu8%aVYKR$PC6SQJS6&i~m9+SyO(o^Na12fi-`>HeKz8t46hCA?DUqVt
z)AK$6<uae$QTVev#i$M8>KuHHOS8%8G(dKah8bVk@ukOI_3EN2U)ix+@J$g+6vamI
zOf#IGtkW0Gk@L^UeiAwU(hhj_!Gsy}M}0t@y#fu~`N`{Ju!GE$jxxPKncxJCX=1df
z3b`>PYH4a(6$DwM2_*<)DqzS;dG5IYL#EnXlc|1u0mNH~BKb=un(+mYns8H%^g+vp
z|FJ$Xx8wHEMfv8~#s&U4{?~pXS=asGOUrEU+idU2h1Ltx&PtK-HH&2W7q5s)c9Ox@
zF)y~-cv@%|-Vl<g1lQ+>*(jA!h&&*;YeODThTGKUVOXZRl_YUKzH`L}h-TgSA`sWv
zrDi1lrUB=5=puUR8~?h8MYOeErjiD&y67WW^}!XQzF9W4qP*c$|NHNgpbi`95MS3B
zF7s8R?s?cxn<Ngh0*dMe#KsU!qsd1e6mwH$e|4*o_cJxnkvOP3lfK5H&Q4&mB*<=d
z5tW@hd6#pq**qatMRWQU8GUbNBvChpnWL~?UlN8HK(gckr7*tk(5AKb*P>cFv2{_;
z?Tdn5MN~;lQny-_cv$M7{jpa~v2at+t`r=_(J7#{w$CpfIJk8oJ~<VuEb%n-ZC$i*
z=X^@kmRp<FHm^Jy)~oS6Gs4SPu81_<(uA}vbYZ#hqP#(V9iFjG*dVCYF|7emdrpkL
ztRkxI$cy1CH864bN)1e$Rti%(AKN+^r5&O<zn0K-vvb(ys-$nIsHLu9x7Q!UE@q@*
zhVyW_p#Lz(iOaoyy2b%L0?FVt(s@-(a&EzdP(s}_g~O~9h$=#O+DA<oM5H-<*;*^R
zwEW3%BvyM=nOS<I>8}@e?rJ*bk2#Ok#-g>~P@+ZOY8ve7`kUs%q3BEaOwIg`+k2zY
z-rGAmZtsbT(L+tUI=cp2j)tPvqt%f}_?QwcQCkMP@Q}m)m~x~x5~)QtPW=0hJC-&y
zEWM+n<4)S%$+FyyvF)A4qli%kgk%LFnd+G8i)*!@T2UjsC}6NQ0|x}x5u}99sM9gg
z7kUdP>JL%E+K-}cs#g#B=_nM&QGFxFE`CZym~+rsW{_UgM<xsPO(tLr(p0EmlfLPu
z5%RbLBjooe(_Ef<TWX8gi<!V{#Ybt)rD(R)I*Ucz&+8@n=V8V-O8ZEl#{2xG!N5yc
zm8ZB!MeHc42$jB65)5IS1^K*5-|9oX3fImSoWW-#P<TmQqfL4$SlSk*8#!5$La@GO
zipMR;@xEdYH-bK&Ajxk_{N<W)IwBd}JMos`P2<z}BG6xnX8Oh#KE8(9C!V4%s{J7O
z8C7W1I?xgh5F?;AKJ>E$a>^g&Qq<WLH|F6qhT&(!fLxdMapE(-Bm-hs9g1o@sa*jN
zx9H@FbLXG=KWtZe74?%RwHdCD)P|F|WVpaVU*xjWI*E1GbWqwG<-?8{4OcAsWUoGF
zLU(84rB8E_T_io;l;`}mDKM?=%4<nG@NuWg>J}cYFttG(5Ufsfe%nx5JzM`BQ{XEp
zXiZO`=BPC$*7FCRvW6#Z;q~y9M<q<GR$Nqtkq9r&d3j<Q?iHbCd#wfb#KS8dKNgzP
zUHfYHil)N$h(FYR`(p#^9_Vx{iETIR_}j9XSJaB~z_$5Of6e@D$2P1yvY>m3Xt4)M
zYyrP#>5`PU&go6~BhfN%<%%WMO|^d8qLM^gS8dl_jsCxy-M0SfNQF1p6!3<Y_Sep;
z^4WU)>u&Dd))2UM_QKni)CLTeL}yu_Dc@=hMVbOl9mTyCr^UMzdM62Q$!{9`#>dk0
zN9o%jrE&UT9u$c-nKT)E_hjUWY`0$el9^J8ne-Ii)l^?F3-2vc7%GndqP8{~Hi^5<
zd}!h$V{5byAI!st3;45n*?o+8ZJ&7Cv_4&*d8P1Ml*f@vLk(iGnL?YUxE6&6uWuwL
zj<Icg^GlnH6LBPsx;SZ+PU_L%Ndm%~P_!A?<=R>Z=~XPGJc%JbgDU!F#Py24_XbY!
z)H|aZSJbAH>I_A#$0UYRr@l(Aj=l*OtDgaH*Q5;3Y>GoxahR3WB+l_9hS*HFxZ(QP
z%q9|5z3dZn@}6>(7(>wxd>#)reC`zx!4Axvaz2Hr*TS?!8%|U13X|K@)AKOFI8=!#
zcNZ4-dedWNX&(qt%o)@Mg4@2~M`Fp5BVzG$8#X+b`t^|`sds*~VNc(IUp@HXub$}Z
zdxEwH`aVqD^3byGzFOJph+G}pbMM20k!wSW(^`Ai+<`}KX_0<$P%Qb$=1o6MjUGCb
z`ppZQH@_ej9U2@xwtDrk(ZRvr99y;O*l+f%JhY|5X$wXDw)~MthyJ$E<&OkB{?<*8
zL$n}UJEWxs#drc3If5^xV{V;R2{zU0fFH#(`9R1x;ethneFsA1PciarH2!7|>d~XR
zL2*P*y~38mg(@=zh$LVB$c_nElk-VVSl>ALE^|pyhMfw&wU@*?hdJpPCc_1a%}Hz#
zzg?i@V_=i^(@d(SFFzXGJbPHHOxuv!^!!tO*jFEAgxmZR^&C5%e<J>=@^!biu8-mK
zG=rT_{_UJ&OVlIVYUksV0sRsGCqvu!82Wa9$t;K0e9CQCI!kP>J&%n4%<A2?r=c}q
zHCe=vZ0ZC3HVXanO@?<lz8Bot5I&r{zfoLM9S+x~zAoNS9j*=EKlM-wi9e(WzCG1q
zGKtUT8~{J6!g0fxGz#6HA<*{<@GYKX0e{i4z)GLhP{5)ynh_(y`TX6De9Y*jOl*2A
zd~(1JHAetahE6Kfidx4Pz`Y!#oma@~hzI!_J>+x#zv8|Hyshd=cb}u9hvk<fKjgP8
z%d#xXvMkBAtk{knCvhB;1SbR&(lmsSI)Nl40Rl}!8Zwljl%WHqg+hU$DWz#HH=`qq
zz?Y#kJW7F<LQ9*LcKRBiwDbX&k9K&(_WjpBN79ik*`{~qj+5i_kSy)J_S$Q&wf0*7
z`me|S$&?l60`WO5D^`&C(F%iqMJwq8D^^1v07#`GGlbaaOi3{Ut$)PA_i}=`3@VW^
zKva;|LU=42;WOCPswWi8Xe?-zd;9plwj5bR=D`Yt=qJpjtS-3VnXFjNiYMM!qCk-l
zo&e`Eqq5L1Y&Hu=0vAUkdp1Su{EMpIs;w`!)fP>?1N$skw`-N(Z>}x3S1)KvPoCA;
z4TkdWO~Zkei@XI>k4mDj&t|UmcDja!jFY5I(A*Z-t9momjf3zBs8~)gFkr_o1k34F
zd`Jj~IQavF!XaiC>rz2Mqsc^h@ngE1#QXIx@_ifZlyk|i+G}?Dc*PM~iUCUQ+CWPD
zeY-Ye0c`#E>>LdQMt8!yJQ_H#W!0)JbVv{N?Ofycui4p`Jg*raUxP!DYbO9l<dFUu
zefP7asoZ^p$GafV5Qk9{iu+55=lsw?d2E^QOso`MWvoTjp}5aYulZ;)A-oKeDMGv7
zs`b()%m)dUk@jDb6CZ3?llCuen-eSSK5@U!pg+cQDM?C$&=g~6Axi}tv9MIIrx!1g
zsM#gJ-r;+)vYjL(v?!xBE}0R=#1m@@v51k?o)VM_m>lpCiUntx^S-IkEuYxbvktg|
zhMw`>TOQoBdB3o2@;>nffsNiD9qud5FBovyiw^GJczn~9d%<TX#7!t^b`1V|P}-?1
z9Y9YiC0>Bn-gHK;!3?GR<r+k9%VkLLLD(xrOrU8c*0^8?ibph7O6aL%8I_awh@->6
z=?QF{PN!X0r^1^wop5a17#JIHyCNeVdrgVysi|j#cg!#Le=J%Zx#Wh?WfzGDFLwww
z-$20A<F-kKLgUV|sUI2wOV_xTT{hw=g0IYnc*dV5;~6O(H31m;obikV;0o)E+`@wI
zZF`%&GFU$KCwIUhJuc)U6c!<kpaJa@df^NAAqI%YvnvVBh#5_85MWVFuAxm}G6eQD
zad$WZn`C4}(K5>2ipVlX;uAtI<a&fygC5Dv0n#BTDnYRpN%XV`o+fT4syR6cWv}2L
z@1-a{CEg4hgy!Y~K(-w{a_S<!H<;WFoc#C4e(W4QvQ^xoc&%Z4EIVg#{Bx6JRdd~7
zeEMD8+n`f1e2PHzf;Z3?v#9aaR_?ow<sldz^W0!bAW9VwYZOhQdiepJq`J2GZl4uC
zV=G0+306=Otsfuw=ieXmcUM(!d+@-ZF5e%iu8v5S1IKp;KJXxU<VbMq9cPgN#8KJs
z)u8cy;T0hu-j4P_o>5$`3305X|6&nL`>s-}U)oPaif;x`irAU*MHv9HN<1-T6JLR4
zTgL_&#fum)zX}40a)~udzIb^7&8u?2BMSs1h+bEscgU{+z!Sxof{zQV6S`tcC0|%5
z52y|{Jq(m4a@KiD!bZ+Tm}6uK`b@>OOPoV%N0-!gR+_h6Gi)v~@A$->N2)hW`K!a_
z=AuB*?>0#$!F)p8x@zksi1?uXpM(ss>tm?rFvKNVG1>^Uw_=X=R?N}f$^tP9(B2>l
zbQWqdp}oZ|TwkyhLMoJl$#n4MsladUuvPU>b3;08h1zsdI8gb#sMCoQ0P^#HFSYB7
zj!uS)s*ws<R9#bDBf2))y3rny-HdsEjb6d5O|1iD{zE*GTvFEoFne+x0Gt1P>%h&y
zi*DYu>E??90p%RLY5#$1_V2&uz<$ZL@xJ|ogZuCO*yj7MTDI(}`#0b5jbmTB?VHDl
zW>o8HgY@yFeg^E6)E<jlbG=*GJarVs1-!!csk@+|3D3@WuvvIQc$Rdu-l-nwXqp?!
zRl5=S854Y58jx*!r|KJthGUBZv5qju7-<W|J&S2TJU*y6h~l0#cEA!BVBXI;d`MrC
zd!cPN!{?4!=MTvP>UhcmHrivo)`uI)Yg~<l;tOQtSQ8|PXE8?GMRFwDV5gicT(fZt
zkaJE{RRB~nfv*{iE)~h8(|O}ewh%r$6RG!i!dOpq>TN-C)Kt4JGYF#oGD~HF#aS}7
zCL0fZXilN@o)*7suAY1=1`@~Y4Hk!)J3)@Av^}BHwvT;7$$yFUhUG<I{%mxdXerKz
ztCS-mgZ^{P1|laV({^FHba`lWx_U52`c<07g$59nA~hZ<uc>#nhZhn07Lyktnn6i%
zmpxs0y~P$c7W(l{IZVN2?F*ze_SkZ)z_Uqx$qZ8KhH@;@^U%2>`w|X19|I4+2;ZIy
zGH^9Js>C3~RtI8B!*Ul$-4}|l?jjPc9)?8eTFt4o2)vxJ-h(qa4z;r6$7(FxkdK7q
z<zUy|5XYS+9blrYyp;zhoMTP6eW7p{G3;_%tP|wzS`8wGqOwj6S17S2pdf@h=`E$U
zc)1%PtMjV~3uo+O^C=WU{|xGjZ|7$8d9;toJ5oIVat@vs*^N^hbaCv_5N6XS5Q$1g
zQaju|KuIe{P;t2f#AoFkRS{lRtbBllAvg#^`5^eFLJr>qn~<_r3ZZ&YY)B!pA12Bj
zDs)pa9>3j+7&waa#ZH}KFWara?9235G-;umXwT<H1+@t<vPH`~x33RBt)MoUH{Q1K
z?Y{{df!)+bE+cXrl>)XYn$KaIrk*UfbgWFmHo0rdUy;6$T86PD1bMAf@PLdi<RaFC
z7hx-AK?HJgM4*N=A`p~JP+<ll5cEyj%gaCna-|S~TtEbJ5h73n{RScs_8@==)ZkKG
z4IB|@0*uG~`G|{CUAt;xTM85ik>(C1ZeUJ$pb~#1*#4^96?VU!11QMoFc@Al7(RSL
z!3*NJNSqFpIq5J98EL_E_=w0zphFcQ?ooJY4mvmm9oM(?P;lmhNxJJ*e@ABkArxU?
z$dHk#<T?sz#3Z2rq<GDc!4F<!w`b>v7S0d8G(RX=&@=b}S<tiip*6)1t>A}N;s+o7
z20yfNe(<%<;D=g@o61dx5;tcE?(h!?<Z^8)nTs)A7eu$m<voi8E=zmG(FcMai$9oy
zLkvAc6j&V6t+yJ)55EIONzRuj=1Y)u2-wlhGG9WRKG<PY5VR;syfsV_Ah2{N994d7
zgx4uK7G8*N?C#H=OxXV-;{7T1<XP_HYi*0wwb8~{we&tgqI#wGGiO>yin1M`YzJt1
z>UUrL&SLKV<2#Xcpml9Ee&bUnT3WrF^!Tl(;vHf71ME=NrM-i(+GyO@3WyafxIoeE
zsHtu7(b%*J0|mz7a0gY1qS{dWnfi<Sb&CM)1qOCgCN`5DNY|F#?O3*}kOYs=_M9xu
zV_=kcL={_2-FcsLK+ia~_V_n#Snu^l+?GnSb4#Cp!-jR9K-A@0o@-ox;p}(&8X8>o
zwn|5j%j<GGydSP3F@S1ciX5Ptcuhdgj<SEvI>H`4!pN0VM;QBZP&_NKX0&2NmArX%
zI#9B*13LxCp`!@k5H3R&xd@j8qo!oiXAY$|HI!Zqr57VJ(M-QFNxXcLG<%8OAhzrv
z)N2buSz|3$#l*-VFOu652%p3pL9HGq@(D5xw%k%=%Ha0}y#@nzJpBegQS~4abbJAW
zA>a*r3|VA~;kch(^#%L}ga5<By0CCi^B}$M9OA1^0Chxpe5h=z2!{!84#DP5WWzUv
zFn1Dp+$K!M`Br1?Md2C=1f-Y*0G1M2i*Sj=D<sUzHjov8znQX!>Y<zlLRZWR;$khT
zbX9<?4fI=wWGt*g!i2Rly&7>KlqwW$kXw*oBIgO@Lh-|eG9eWSr0x?NC%3@JTM4X7
zE`+r3bvjKrv{(4U(7DdOvCi-XeXh}EIRNdh?(6AUytt>QPk*X%|C-?XKDWDXeQ?$O
z$`6*2+}29$OMA{;)7!IV4e~aAIsJj*W!QyIAl?9TlB2-X^GKT%$X2W|l&Ec}C!8(d
zgaZnUUvelg;NeuCL79yd8W;zWE&={d3KL8ZEggzG#IP%!+LiRqX%dKa;4OejyIi`%
zI(Ru?(h@)zomGIav#(4(`pbaFCma{fnv(EblfP5Z!hWfsg;6~mfb{7`$p*iE%EmG4
zmb1TUFzc4UHKOF5E5LPN6RtJ)1`;05EgB@dAueB4B)cdWqy+{ta5gEBcLnE@Y}j4@
z4WM>%6fkfDW{bWG7Nfs?U<ntHy<K3cmT><7?*1OsJFTO`Gt&<eX%ofyAn|s2%$EEe
z+wX=q#FbaX{UqlO)^=9puR8p~ZKLyG<!u$Wk-x-J8G#qYuXs_Ov+X-2kS~Da(Ltv|
zDI1`cD~L}y5$Pa8NwcPX^DKyT@ZrcM6v@w_D6-+esq9F#1{4J`2S(lG(v)hLWWbql
zb;eq*8ghSzwh!~7>do5+Qe-sqMfGndp9m?9E?3)M&}wqovGxp6MU~5-zn{>d(4RRF
z0hMg;T=b`$Z=ye<qaX?A?!|1CELV4IS+ucSgQD~+sf}^lMHw42_^Sn|g4fR7L(0s-
zE_p51Xg}8Ip1Ig<qPm2t;JL6?!_4!c?_q54!xJRCkd-Vuu;9vJV1&o>twk`7=b^`p
zb#`V%KrZ57sZFoC!b6!WZjP}(rdehEnrn~?{9r)t;t9-0!X<DkxhC-<xZ^1*niBc|
zV#%R0Yy{7qN8KXm2G!isxWOBm45>NPuR+99=gs@y)o29tz1Jhp*tgK{MNBR2N#Kj^
zWZR^?@qBf?KF$9g%@?aY|NaZwFBYd?!1rE)@3le8@TwUocHUorc9xtW5JzsqQ>uAf
zDAXxKshiEenT-f%;o3jXYE6<;-~XPrQN*{?uc2LQfLlTJ82yM;RQ4}Q(K3oPfmTVe
zCiP%aWln12OduYWta-T!9I0%T>1HrkW@~4vc{N(L`lF`V4{JHhpyj0ZZ_sohL$y=*
z$_G5RFmO_<P=okVB@2S*USnU+j80Jzx`eL6Y6iSS5VaEF-D*MS!UWGk3FU;P=|vrj
za`JIix538+{f^QIixG|4L6eS9>8!{Y#4Z*^>J|fs4?Kd!F07#ICh=5xo~%GS0ob>(
z0E@w3Ov+ZLPZYmhd*0@YQUI%$Y#OclHgu{{_qNVkUgIdMzYgqj376CM%+wde*9%<v
zNMFi;T$RKVCf6h$rh!){UopE13tUv^nXne)2&t=O-GW}#!_sJclr;;R&<QiJAvDqC
z?0^~Q4$A?MqaEaka)C4hs&CN@Gcep1bGIQ92SFq6$J_|vff<-G^BOD@t_DP!PBhYQ
zylWyDMrh7Nh<?ZMlE%1ejK=YpjJqI$P+g6|5SbLhBUJR4O8wFu{cwve4HlR%me+Z?
zBhg}$OIm3}Qjmdi6C8+gE5gYLAEVC8O+8g=WX8gKR1m?O7T=3SxzPnbo!j73xHK#9
zpdpLRM{`lZB7}?}EW#kFN@T;mQ=ER8xOd#gN62*(#rkGH*W^ATAYodz&JSPrwUoSF
z5P+R7rYbQ1ll@C;GxPUPXh;k81@%z;zN+QS9K%I9#!y-BXN)1O=*cluAof4%7|vcR
z=I`uvS=Nt_(COsDLb5kGzERG<gY3O5{7buHePP)Lxzie&X!k9K+zEs^ApauB9VMB2
z24RrAo#B2$P1yjiDccIU6R==2NF#UPPx7}0AZXg?H&v7E>05-`Uiux!OB%V;7LDUE
z$(<g^9e-O-FG(5U5h^iGg~jQPev}A7b$Zcm1(Q=lBex@RQ0`g+LF2Q^&0%FRm>&T&
zr?{Da$hPGcItv;(-LBa#CmKIVl|N=aeri>lV$##Kc&JnzXfQ0dKr5gTQ%c;ZBS!I@
z?a))(EgYAA0G9)5lonP`DsIyaF%L9;mr~j$MMYXb7eKQay2VW8b$-&_sns_!)!2oR
zu1BNC&eUlI6wf}SdqEn3F2(Z1E^IiL6Z!(`k2K*W)6@r^h+q)%BA%%akj59DdVlI~
zVc{2oNyrQPrryJ&4%AHeAnFzjQ||$cP)GPh9Glh&%`A$F@I3Bbf&U3&FNg{a#q&t1
z0oE(`^hrD(yaCyk4NBTV87={~2G1T=X;LifP?eDq7fu%Dp{%gFA>;)#$0LGdL-kuX
z6%2(*6=^~c4j&TaCXoJXgkD3{CMo@o+;$X84W|>KHkGJKPDhjH@NL7(3ETFXZ?712
zyIc*ojEoS(?ZML{>s$@4E1P}d1CiS=CV<<oM83S00B?PP=f(xgQI2*y)W6$ccxv0!
zpB2d4;lX_d@r{Eojq2`=EC$@|<kdX`gnoPIC-BCQF3)i!v0m0<y+n+Pl9j7Pl2o93
zd0Eypk|d#<P*!fdx(>P<*YK0}gp!e)3f;F5nq+!u%!w=c^Yn^1H^QU=N#R&4{=c<7
zz3k;|yKqRe+Rfd1y)U)SX=&e{o%TVlL(ZUmC{25mwVR*zvzN4-9XXzDC0j^`GS@JL
zr_9_M>Z4qjnOsGo(159}hX5p184DU*MQS%Gf*rOH1$SY`N$$d>S_qgROewaYjdDk;
z3m4G!d4yd~Iy^CljGKoXcjuIDBIDSWm}_=;cCph`LQYQtA?4ZS0DLP~&@IVSB6Q2R
zkxLpFNw8<<M7T_E9p=Qk^ru-=QLAUeUP|Q}-Xz<{0qmeUU<UygiBJVNx@@AXv4$}J
zQR**|-^MS4NLeRzOb#*#qX=VJiJ?k@cW_yOwTsY$yoB+sz;;k6GT_0H>q!a7E2EPV
zC`<xU2@TFb$wpG}i%Kq%e<-l~nL9RQhss{D|JIeY9!Gtd($U{bQs<SA9yxOI%1%j|
z`YE~H5nd{a6{~LAx96r+71$3{<9!KNP}0AR2)64K%p7H%KvD*Z$xz-<Qo90F4x!|b
z6RilB*r*`0HV>D`ac#~Ab<lqT%n2YVaKcbuOW4N14#SvMxnN~QQMnT!O0hCZuY@Kv
z08-ROV-agSuZ$KKB8rj$K@ed;2jlf-h$?F44iE2?2vLlOz~DU!xe_RIxck8qi&iWO
zj*N{2!y66`uiG0ilot9o^|*&4uHf+c;b8Cb-aQ*vZ3<cySPg04$-_eretygK;}`e&
z2O`noEkkRNIp`>>?W?gl3L6H((cwsF$)=%^y*sZS-Ey&i(-*c901XjMr{GW`#<31Q
zyC^%N;!hxnE#5#&YZ{I+!r>^ftCobLRCd*TAexT@4pBNPfxgf}>myPX+W^DQ(?<x9
zvZ0CZ9Lo`?KZqBU3lKLb7gyp99FH>AV2d?#FT&zEP$@}eOoD6blGqWn0_R4kyg~!P
zIlUmXO8p2}ihw%L?$P2_YH3Bf$PF6Q&QK<;W<hr<w3-dwNwm^Jcb+6lwS{;%P^A(M
z<fD0(g<c_Btb1O1Wukai^TMb~DDT1$J$Gp1eHR4pscT9F1<&BG5OVlFr_!t&{N>7|
zSwH751hyslYmiH#F!&4p7220o`D-a?7S`}rkM$9vT76S1Wi`YqZL$Zx4kq^lwmci*
z0DI+~mvE`9Zm4+x@iUUrr=+3I3yHe=?b1M5X{husE|)D-di=OOU~^Y4i1DO;A&*w#
zssA*H(zm`PiD&m~8BjydW0<eqY=t1H^jr*jrl;z1PD)rP3Mo}b7oj$}LKB__IJ)Ej
z2}8wjQM1pMq$vz5g{;j#H$QoX2Rnq3&=f>MlZz6X+^0{y_WCmh3S^jQbg7Q5P&f$F
z61Qp768<cx)G#U=-KsO|VfeCAt}Jd)Mlp;N5EC3aeu*-U4W0m%funJ3;SR0k6u>zX
zzE<`mom*r#%_lOjED?YJRjQ&0Y>pqWz|mac80!m;j*R$RQLoeD*w7Og9Uk%eqNw?{
zurYnX6?J-?weCRJ8L9U;>z#qKmW)xAR2h5^#<UF>nyV>-mZJc5WQ=MLA62Mb>Zl@$
zWf<;D=wJiT!PXEuknBP9TfpPM05i-Rz)urG1u7v#QiD4&R2jj`i=mb+4#-1rTAz#g
z6v03wY-KfrBOpDKdpfd^d|pDU+FCNxGLyjC5IPEY$SHq5laY|A%OLV+wAq<C#gX*5
zCT;U<wT9TbuWMexbb`IlahMGoKzowu%h}g8QawGRW(ahs6Nx^)uMKxiBB;hgC>z_V
zkcaM@SY%`8A|+svg~F5*9m-ut26i(xyyXG-UmhXIW}iMnB8<r?nU9#o6k@Zy6v~L)
z0m#PrMj}({!!J)5emwF%qKSaWIRZCoX})&f<}Lg7Y~8YFdoU6Wg`$yQPP%JRo^@|+
zIB;OY*ntCModW}%or8m<Yiyf-!!QPnuU<9^Y_(G?jxc&(EEJXpA)2t`K=h`3dVpTU
zE(j&oHg*#N_BmmBEqwBj{$P9|wvjIjss@(_z8(q5Yr*A>q1alBybkmPFqr%?ocqAk
z3MO_QN;MahbyMxh*jm7Wt$^0C&N|@@bym}(dRyGp3gi}0zHtx|iM95vz;juT6-2J@
z#G4CHc?bnV6ooG*`8ke(5`5xRl@m2`O36}50>ct2jL_-fdW%~H5#Bbi_rA@;dm4^h
zyY91{gs{E##s@k&Po{8%+cw=co<bJhb82b-kM?f7bw~GS!{>b5>s-5Toy+AAT|4}D
ze?vSXZdD+MF;Iuc{3dBh3XXfzr5kq+9eRi$i1&Qu5}yh}9P056y4M`sKoiAK;;ibt
zXN^}fUH(%4r#44UP|U}HDI3SS9$={3SWn(C!Y5lyCIv^s1K@S6B_M|}O3^@~QJoF|
z@lXQ@uxCs75gw$B0KG%*f;oiDczt=jv$4hBN2!WTj)p;aPkS$gn9Jq$;Cn4vcADf_
z;Y)nN+))=z;#@G=mCa_GnttNSNK9Gv_*1#zwYMpmDHd(M$_p-`2z<`5s<}?>f%OG+
z_Y_*Sk8~bRGq*kyvRbjbW<yq!)m0D3>I5LGoB2+U2DF+&`+!p{yOHL`OE1Bzj3>dA
zgh(=Dc?Nz?61ZBcO)m(<+NIH@=K-`9pHh|RIqA{*-%XEJqDN?f^w8?Z3!=wuTJ?Ay
zf(Val6k{!qgy1{+w1!8xUd(wU3LXh7u;!RsLadk1DB_VYhczdom0->LaOUNuQH!|4
zdJ>#c-{j@Wuo*RYO6?RM$9O<DF-tVXEG{BWS{KgFEZH<+-2#x$Z^)tsm&}WXt_#jk
zfhSKS@zEu9UXh-pRGimREz6|J>ZVW6u<V|Csu@Kzg$}HE>aA67#Z#|NwwS~E5wPKt
zyZuR}Xr{k@L2PEqP>C`zD(2xjF{06Ue41<Wzd8_q@;%6@d>~8@D{-|-Q5^ypmMe+n
zP$toi%mS>hs5M*wWa$E4^;@<BmO$2_PFl=rMI}}ExG4393hZiyijk6r70(6_1#oEO
z$20Kbq+zmC#W7wdMCcSUHtA>_<6EpmJB!gy)Qd3D!b8y+9M4a|Vn#a&1_15Ur%=5u
zh%Uk?=0go2Of0=MZna?%M`KF?-GoQ9s$@2>Q<LnPiQ}!E=^Pe6-N?VDC$>2KGR3%{
zttH4>K#X0=?-sWcO@Za90(p|FgrIRtK~rG-QF5>Y+iSq815GQfabpqS#?Vv=5yc!b
zR>!x?%6Vatq(w^b^jiA*v&=b^chb-qIlGxA=C5bbTQ@z0K6Iz>RuHLHK@=~c4p5pq
zVq#j9n3x6_9_?HxsWCCt=tdbjh8o2dbPRc^xS}c53_}A!zz8KuM#m&)#LOX>X()&p
z%#Q-6n%)Q%T7w`1u4U@G866X@n!)>oz1*XJ1E|J5Y&VM|`37DERGLM70$}73vU(l5
z>O=<>soRb)XYA>b9@C6~W)itw@MJx#&#!j6eGsrf>WMXCz(|pav*vt^9)MqPjiRWy
zj@4P^dieX(nhaD!pzq*6a!x%^2t7b_A{&*%U{M4O?9^l}4JA<y5Y7+nU-d7Y$d;AN
z2G6#^pHx<vAB<ePR5Tf0y!{D#eZjxnbo(FPJD4~Sz3cvC$M3uU*q39%8@nI-+-krp
zl;&F+EPKAvdBh&9+*VtU(xgSc0{ewmSR(e#ho-K7XX=fqCsy6~t-bLd{xJT;>C-gt
zlzITifUiBsevt!VTiwlWg$n2oO$1x9n=NDAN_twe0dK3D*(vuzAKVK)a4-1Dy%5m2
z7ux*l{&jC(58Mm5)wmb%jJp@w0_vXi!`QM;?O1d7f{P3QFYQZLS`)>s9Z`;oQDTdA
zVVr`=P3yD=8{waG6f5BKFN-4~1$mqc3%oO@3qb`xp93Xazh;*EfMlXh!4Btg#(|vs
z^=g~};E@%-8eb0UXdD#O8aT9RD$@KUv=GX*uSWDUf@SIz?VyeVxy*p528IzNPNr5s
z$Wd(~Ha|&^<h+O?0VzjpPGs>N8gV}hWL$`TSAiK9OOl%6-2G}y>56|}zZ$7uEvX5Z
z+^Lw+FU<mwvtMTIVvxII*ws$rBWTBqYyu#u^QZy@fy66P{Q~+PujK%<sTt#i0*|zV
zM&m_RKr^jls7=#meYm)+x~_?|l9-w7Brr3AUzO3TpkCHx>19?uE<K=zS-rhE%VOfl
zi5U;SZ|1@>xh{nwpB~p^SQp990%^kgj~*-LP=q`HJk}DK^RbH1M2+1GNrH-4$@HBz
zP^3-Ss3D4wLs;vhq`Ia}5F!;MM5;7Gq_Uz4K`_mh2~Tqqga~dmLIlsa5UH$c@=%zI
z@NflPHq*5l^wOr1y#r*o>m7})D%k;~EJxtsRLEXKSt(BVE0gj)&0e|WhIKCDAI>Q=
za*se_mZ&)UXU!N$s?4|tW8lEL*H4ut_$X*=4p5BiqOjZmw;~~N0t6D=sA83=3pp_+
zVU=~mhuCeQQt+Hd;Xsz#kzF=XY_C-`=32^zBAGIqC|XC<d^++h&P-J<@Mh=+GZf=o
zRSm>l8dV@uC5Bu*Art^N=N?{b#0{K$RR2s^P0R{E9<uF$J_XR|L@j^7OIH`2K`r4#
zshRcQ9rYnKEr%;LDYP5{M^1X+teWc#lpG<lEF2sj4u+Q{&*F<3c$}&4s4t2ys~72Y
zAOfG71FLj9(73p-K`GNf!i5SmC^HNt3xt>wkf7As=E8-Fs!>2fJ#l#j7cQnUyWYjI
zJrPryhj@DUBVjU9ajYh5qNtWNw9^#G&#YgDGU*f`V^>Nd@uW8BG?7vzK*ms_tQ;Ob
zmYcsESyJhC)*ad=P%(;QdxEv~?&|G5i*8vgyy4xm;(?=wRvmias{uu{M#JX;7UAC8
ze@@jY#`+9~>qnluDt4K;%NKZk@`uZQ_ss2=LRaC~^jHsRHM}4hv5;I1QxNsaVmJe$
zo)$w4s13j~F^hGg+T|gAjwR9RvF(A^_=1=jBa^E4qU<VY4WBs>><?=e#W~UJB@{hL
z*9*+mKfWr?-#-fWnW(OB<Up+z)|f}rzeegGUl`}?pP*S9=jfl{)~=3o_E2|QYJmhZ
zYsWC0%$wsC1~U7oc*<ssAuW*UF-%lDJuSTQa0Trur-yQZUCp*u&e7!!SysyVI-a>$
zDsx#G<9pK5d1j4;tioBPghn`1jR6F%PjpvUu!izz!~jWaj^0Zm8mvvzdV%E_=9ABJ
zQ0A671oWH~k}Nrew8%K7KjwM^_RG3h+>>+#APy%5?H>rx8Z`^rKjyK;{Inh^F)JyQ
z44T4Co(zD0ord2R1omI6W&Amj|6zqEHA8M^QH>qcm!cXwh_=d7V~2Y95o+vs(qTH;
zs_WSKJWpyU=};XdPa{=brxm4j7E)Zt_%ub6Og=Dgbsf?Jm9e`AV;6!|iR@UlJcl}P
zv_c^`8pYdUolrjz4DC82`=DqjF(z^kxR?TSd_YT%S2X}ingUE@V;%AH-&4k6raNM$
zgKj}1|IInrd`?Ela9PaIMNo?f`(+;hW7dmox=*T=ud5LB>LzDJ02jQRF;d<Y2*NIe
zbXhCiR0Y#Y!LUk*eG9^0kzGrRJk=?(gm~Uu2!-!uJscBMo4tW(N1#4Hov{+@uok>v
zvBtt&b5lcL)r3ye@tu(->E!F5kgR&Bl#He7MfbjWcmI)yh*B3|56V2Ib29Vzz33MP
z?tbI0Rkts?>R+$!|72(9?*41y2YS^QWOGsWjJkrtecux*9=!Pv$3C8CksdF~M@%fY
zhq31Zmzf_?OkL1y?@_%K$hvNWJz)=V9f-hOv8N6!pG2gziRgq1YDpcJfTO`=a8hw~
zHxeSyu5R2};0-3-mfKiOdQhg+Dw_~C8|y~Gp`8a4TdeVts#@-_qv%Eo2E&`G=uHvZ
zgoXLIH@?HlD<dZ36_W9CGb@XxHw#ndwn3ltxKkCcTb}C-KlLTG;;8-f6KihhHy5Jf
z=takV+ZlQ4mW<+Fx>{@pF5g2HNV!6MWZ%9ctByRhSzCql`h)v#(v<z$Iec(K_yp#v
z67Oh6yd(MB&&!N>j3G}QTenr1sgym|9f(z+CKF~VYBCYZ8Z=83r{TpRu>#4I=uJV9
z1aZEAfXI0wKXZmj{xNstXU?$68*+wx66T!rsBVb+S=t%T-j5l>DqJFumn<a%DPiK^
ze@aDhfmF#N%$#gm#K|nG!YrRG?YTZAeOI?0n39$3K^6n59gyX9U|lIRVbYahRp-E$
zKxV*~qY5{W2g$dSVG)<YBDTRImdGMDXe?sAWPn9nYMCf0B@ANRYAj+r;})^rU@IXT
z7<CZnvXrhBi<rq}7E&SLN|$v|D`f^>r@EqMagRNe(~{M%nq{z(9we|d4lm0zr04}+
zzG{*Hm4+-nv)N~{w3vb3`#<n^@REy?B;L$x&ZyQQS%@58wpev`!$F_211YwPkq|sf
zzlYW8Gff3W$aFya>GMn<@$-=8h@bbeejXc_Ji=DQ02i_?YTa_9iRHsiEet7f%M2iv
z@a7kuk&P&>YcLjqu^8qp0*4GR4ABSTs3#Y_wUpw(bP$zQav`y|E*dlN2v{R+PEdld
zqED#+!Q-|ji^Xld+~TrX8cUUlH+7jLVQe$nl*AsTHkm>^J{i-Cw@FaiWHJirHX*`1
z*`~f{v~A*3E}!bYVGAmTHc8Z`<owfdY`^h6HUP}JZI_oeT5K*9Z@+^mhgNagv+?Ot
z0bV)KY7;Q00ooc)2%K08YRyw`Eg}j@z@Lv9Pm3|5k}##VOEzMfC~dN<gwkQnY!Sxy
zfJ&)0y&-&wH)$u#IsAxhyVL}n)~C^?YW4u*so@EA1j`_DvFDY8N--nKz(U}{>pM|i
zRtyT#wkHrn%RxcxiSbeGOSYM{(fbAC`!NO-4&(c$o>X6=!02*3hU2){_`aAx0#7lo
z+oSZ(DDYm%<p@upN}@#ZI&up~bZr7+?DUirle*ik5Z<bES=gF!t3N%3UhC5YP%c4(
zaSaVVrApvpE`h-`aZ^!wD5NlsY%B|db^hOo(x(pOspJLcc`YyTadXcxio&*xK?S3w
zMpe^4KEB{N@u!^Usu8gcuA}}S7+>W)UPk1<ravlUrn*J-;>u2opqVPu0fCp%r;pG>
z4clgPP+)h9E^%D<HvElk44|k9y@};XKJ`TP_-OSqoB2cK#8=SS-om>Z7q1Tn)-P_v
zIS|BIXU3h|&F?rS59q05`=>vUe!>#iCno>qa?BV~l&e~h-at^fwg#{Yf5bs^Gd3={
z$qeNM$^4nym63Tgk(u^F2F$MTGN1s{5PunWW2xub_heo}UIJfVyprR$mZS1Y0VkQ>
z%m8RC7xE=$4xIfAV10ZRuwcbK{Ii_N&x(nm1dtEZkCTlg+y$D-TBz8W@UR(Zu=v~{
z_EH}L-q8}uAL!*fsjx|GFj}c_IM4%>YO!SqXBiNCZHVc^{_y~`nLsE}WabZmN={K^
zbr5Ta`!*nwwdfCVkAV;fJbpsi48;u`q13=|R}hjZ3fyCW_EFqVrr!W|U9qi4tP=@0
zb<j?#iz?)VZH&OHlXWPJN)eqRp{z!*E7y=w2n|-^^y-<;)f6;+9%A@blj;6|&^dMF
zA&*p4)c^H0kH6{_*BcCzcae;~6c@+5|M_oQ?(4Kv8ir2qoMuzs@!ew*gRbgQpWV?{
zL$z~|@mT0CbO%wB>4m4L#7=Ero!wVjTkWiS`P=SVN7Ui+2>F7c5^}Cz++!F6{%9HY
zqwi#~5`ZjoXa*Q&;Mx+7U|eDW?voc$n0!;(dPdH-!NY4MBIN_;IF_$y-UN-?h2kKn
zdy}x+*mYQ3;l%D#u8@mGHN%<^i${Cd<-pm-%7ko4#6!rP6l?&SrPV5<b*iF1VXt+#
z;SeR-s@jZ^2OR)?+lsOZ$?B2G<(3Me;iY^Pe~X`6fFUZ0S4%qMG_zD&iX27LOwx(J
z@t``I&24?_FDR5|b6J2Ghu4bhe^XGJZ!RtTX^o}YTIA60#-HGoYRBY&gk+y5E%r&f
zu9L5or2>x?Ir{>=uyJYyJro|9JdTtgzKFt??|@`rL95eB*B|~C&xcXx{vG{0@Rwuf
zAF3l9_e#x93O;Sawm)J?%L1}V^_aJER1Cr_uL{Lmn~2=4#D&Okqf{>{u1(gp3x=O;
zGl6`ys3cG6ZM;Mna->KvA<%iEUl^>(D{E6AqmEKXYk|-Ol2OW3>H=V#!>HE!y=R<}
z-X*^Bg4#f^t8s9A$R+OPrKSs~sww%Wt$-@GzJf@Hk3Vr*$^-3ss?Aoj!QQuX{a7+U
z<?Lo63e}k>9eH^AFH!=1?`4;;cqjGU9#-QMQHFv$W4sEuaC?aAW17f9?nAmCCqf8B
zXburz9+kx_K+hNB><FRfCLjPK6^bHj;73P~^D}x3$n(sQ*ft=!lbXN@kn||1bWpqh
z+{;^!`YYW25_`MVY*MPGFZH@Nw+((`nM*KJx2FC!iw@Q158ass)rX~fOeTBZ?)774
z)I_T_Ybm18<g8&EXtEl%R(y!$S4SVJxaLEE#hegK3P%(Htd2@adAwLpz#DQ+9cCs`
zOtuH`=p0m+=w3pT6S4R!Ik}dCT;-wo%B93JD~V^8@>p<eaLSAD8p;D9I2^(GauB4X
zK>UHFL`oP`sMvw4CKLvsG9HaiBCd4^#BG{E)>N4}@X>;JYbKK&f7CZxDV3OQy{^u6
z5r^=n=fA6PT_L!x(>*x8+$HW(s7zc}X!aLOm1a_X-4mya44!bMRA}$nxqj6Gm{BtX
zoF|PQ(Emcp4{9U&uUrR$x>bgh?HCRD0+4svYSa@)P!Y1w@-P5qnxKdWKc5r(Tu$uR
zxfXd9G+a=42oHKgu_2zFmWm2rb#9WvVUSa<L3jw0FK~mh%~3gzEL#U4Q?!#cwR~_^
z<uv|C+&nMApCvx8bo*`gpv9c0@cA<ExqoncsfN!NM)`%af5sTlJYZWs|EZTQD(?L&
zb0EeJKQCOek-TgCJpI@d)CA)p+!D5q@`JxIJ~(*?9*s{wHvO!LEWFI0H^o1(W%Oxe
zXVIUDOWAjHtJ&T9SJ~~-_t|mNI2$vRvYUj{&==RTaXNIbvi*4N3E^w3Py7+vfb)Lc
zN_H8Z?ZNRnjsrOM;n;%X4)wSN=WB2rp!W;Uus&QL$8mzry5F)5CLg;&dWm_ZID1k0
zKkRz_oj9+>A+Z<rH?SM@x3CvQ9|Hmy{`PU4-)AoxZeTI}5xo8kyI#6nJ=5Qx$F9`<
zmAUmh*yGY$tlzkqjYy|hSh|x1rM;|H+<|_qWSeo`A?;wdNd*knzu=Xs(C$ZBLibbj
z;RHJ@?P3ST@3UcPC0i%m&JtpP?G~fckD*Nov4<rLF_xg`_}l~1Nt_>Ihw%P{?q0S}
zJjwjhUGNq8Sf@c^%XEK4-|CoC_bBVv`9RBi1vAb&bUy-?j!Jvb;$0lS#IYI2DtZsv
zdke<rRl^_HA)F6OKj5^D5$)Ayuc8Li7~X$EcNe=4#|iYshuV<|X`GD{z3Cp$PvY-y
z#`|_-TyIp5W1#(wobE*X8Hdp~{Yx4PJ`OY%>Va`E;J9A&O}~KSHT_BEOO6ALh4zrX
zFEHF6rm@f-d@Sz5XKq0|iSAhr!}Dw#9}A2FjYaanI5_xN1g2jW1JhGd0`yOg1C53D
zAReQ88Vl`#vEXBdvvDmuWV{}q5B|`7$m#Tu?s3c?%&6p9JdA1hYaIQ`!QR3d&k(7>
zXe^S4#HP=ha0t(W_UfVQW7~0z^Mhf2t;8I_--^EmpZuEbrq9K=1PxEJe((sBz7C#y
zo(&r-aP%SmmjPc|`S%a(CD9<B)a{klNS~5UN$=^m=wtd13{8eH!?lK&jOE6?rXtfe
z)0=tYdAFKd%nz9VlD{ecy8OrU|D#}2VW{xIqV}R^i|dOoFHTstS`wCDSzD}otq<6$
zY**QST(Y?2d1ObvTh>-~ZQ0Z1qvdy(|H@uvAG2R;KW%@lLaJ!1c&M_da%<%?Rozuz
zto~&6k7@>Lp01T@7uUX2*IxGzbsso(I8N4g)PJ`A=T3|BsPjJ>LJgNUoN1VHZE?Nn
zdb6>s@u+)mld0)5O;38BZZ2wm$NL5Eliv4Q8e4vY?X1ndXIe{JceUQ(XZ~UT)&6JO
zENxrcz8Dw`{H^`5;G*E;p~29P!cTTw-C5K5xvm{u&qtagU+!-2-qn4q``zfK=x-LC
z>S^h@r?;y2gTA}_o?N_cajf6cf9-&2VDrGwmRvDt8a%pmWLd|uca|R;`pk-&6%P!z
z4L`eb@5-k~sz$CI`O7)ity;6{)as_y53bp<=7V$BoqJ|<X!Oyw-D|(Uu4CQt^9Ig4
zv;MmC#q$@R|5%QHKRf^3G0Rx@*p{*5V}H9~;DRSNv~Re7!_O`p#J?REe(}ODZtU9l
zn~i_^*kvDkcT?iyS7TI3BEJc*mL6vk!2*tQdMx}Cf5K3?=F`xT1t|{?@rrsavLf6m
z&vk47n4!wG1SIBd>b0I#V9i#Z8}RO<>a~g0vq#ly8=n76y?z$ge^IZWW9`UaUBY(Z
z-zV4=_={CQtJ}_Yu&dZQJlT%SnO*E+ys`|xcj4(Cb~$vki}7ze-g^~V(T1I|`W&B8
zj~&K#{Oiv7dgix`@m5@kHqiIfLt?h^zfZT&uW6ySP4%f(Q6H3crT<FXuM6-UTiH1O
zhO1KFv0D8`>KoA^h=29??oRZs6Z={8JAx<FpCF<KX%zX-^mcq!wx2gKzM`N5r6r8J
zff=!8=V6@lSpmF>MevYVm=!pTC8(uShB2{Y94mnrSdBV}wb+Mt;M<(oqjh1_-575V
zqKmxPTk}Ce_(7KdZ%GJk>EJDlfXY#{vj=uXA8Nq#gI|_le|IUyZaJ#;tblx3$wt^Y
zpwDVxpPq{hz_l3V^ANduJ{v>C&IV|I8`;Oerys|z@I~-gUkvW}8v6|L?7zkCV83Vo
z$Ue_*X7{phvIl_X_c``+c0IctU_wTA3p}--WlynR33=>3cAWi{y$f{WqwIgP=h%1I
z2~hkJb}P8$d!YWa?0MkeexJR-e!%_!>b=ZfVm}0`_;&U-yN#V;KW0Ax2mX=$8Cd(5
zffshdM%)E{xF2J*kL|_yTnWCsie1gF!L0fu`xJ8G4zfc)JAIUWl^w=Rx(;5DKY`0n
z!J{X$e*^EoBA8+37YKzgiHik`U=?gaiBKw(3FU$v{=W%!l0CwnhUe;G_8oR3`(Hu@
zYEgb$s1&N$KMB=BjZh26s>85-*MYq|g2w%qU)tW@zDzkUX;;tc{a{GB9}KJKPW2q6
za|nN^p84nCp1&Vw{(hW0)Ytjn;l4|~kErKv^_={?CCYtJ{oG*CJbvl+{a1Wq+r?Mz
zP+kfRDd)~1Y5D#u_R!68wH-r)?Ytd0^LF6O+ktZj`1(;{`i7Wr3p*!f8r>iZ!sjoP
zhYY?A&Y0!Gb7H0IaB<y*wK0Ql(*_pP)i00fe9K~n`sH!mBchMr=y7AXM!k`6qaRjp
zjP$k#)f*FTjE%~T5X)0P$&9CY77+!bhOWj3=i}B~mbxv#ZT@)bwh*@k-KpCm+!lIM
px5c<EYEIo+a9doNy0zlgVo%-LaBEF{?}f2a9~0L09lw;Z{|m`05KjOA

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/aller-light.woff b/WebSites/errors/403/docs/public/fonts/aller-light.woff
new file mode 100755
index 0000000000000000000000000000000000000000..81a09d18ecdfdc5be11d55912268014b4d2d4d9f
GIT binary patch
literal 33124
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/fleurons.eot b/WebSites/errors/403/docs/public/fonts/fleurons.eot
new file mode 100755
index 0000000000000000000000000000000000000000..26189bb4016b70af8ab0ed01c4864270d22905fa
GIT binary patch
literal 35557
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/fleurons.ttf b/WebSites/errors/403/docs/public/fonts/fleurons.ttf
new file mode 100755
index 0000000000000000000000000000000000000000..7b1b017268642b8fc7f9dbc09f3e5e4fa74af886
GIT binary patch
literal 64772
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/fleurons.woff b/WebSites/errors/403/docs/public/fonts/fleurons.woff
new file mode 100755
index 0000000000000000000000000000000000000000..10b7e1a1dc83779f20ad9987a5bb2220c9f4f5f3
GIT binary patch
literal 36284
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
bvUJ*`Gw-aLpC3A3DHs3%00B`wc;5g3syVV0

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/novecento-bold.eot b/WebSites/errors/403/docs/public/fonts/novecento-bold.eot
new file mode 100755
index 0000000000000000000000000000000000000000..98a9a7fbabb1083aca5143bc306e228886ff2eeb
GIT binary patch
literal 18190
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%0AP$0a
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/novecento-bold.ttf b/WebSites/errors/403/docs/public/fonts/novecento-bold.ttf
new file mode 100755
index 0000000000000000000000000000000000000000..2af39b08b07df11423ac44c1fb2ff0ca82e81346
GIT binary patch
literal 48136
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
D9^^K3

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/fonts/novecento-bold.woff b/WebSites/errors/403/docs/public/fonts/novecento-bold.woff
new file mode 100755
index 0000000000000000000000000000000000000000..de558b5a29bcb4445be8ffd739c929bf4d3730af
GIT binary patch
literal 20576
zcmafa1CS@dv*vGX+qP}(*q$Bj*tTuY?AW$;Y}>YN+jH}O_g=(Z#6?_1eqEJcWOh||
zMR!+JX1mIZi2;BBKSe<gfbyTZ1M+|C|7ri<MNCXZ761S${b6zc10#MHHgOSAu^(>W
zN5}sGArKM(R9rz``G-3I0Kmck0N5jyx`;AyWz}B*0EE?#jqeW{=!EHm<&_zjf4GYu
zUH%7pE=g|6hSvIa001QKkAK7u&UQin#2LCc5dr{EBR@7j_5fy#eB?$GJ5%c)?&HU%
z761S?R&HP@G1Yhc@r9}Rv4Q+=AevgaoBVJs0074@01(EQk=o>FW~^@n00{g2*s%V9
z9cUg<Y4$_@a1B2?;SWd=D!^0BtexC`xP_lS+5iBMI6GlUUn^U~A3M>wAFk^MW7P@K
z?AH2jKmCd;{I@S5Fc46zjlQ+<5BI}^|6Ch7yy+9itDUW*696FF^W(SiGv?YypHg}|
z2jd?b`OF{Rjvt;u0rk?~)!5)?%nIs19Qc1wZl=ihQ~%d2P4MMU|Fi*PS#JNikAO)-
z%_FxpLp>usy&Vt(C~!nQ13l2bVZjODBPIX<9tH><0B~C?N|v=!QAHj8b~NR_&xCi<
zH1iii1o2t0#RR1iMZr^eMZ`ozwLpm~BuA8hqj8#@LuaL?BrX%FDWYqeQACoI4YFuo
zj4q2AYN3Sr{io)vZhE_u#k!<15qV4C+x>XcbF1|@+i{Dpz^|~hyitd|(PrOea-;ir
z28ayRK)Z{9hahFO&c2^`a6W_MmWLaErTIA;<gW4nGk(_w6^@MtvE#t%VwS<*DR(tU
zc0(nVta!|dsZm0I1`wN}W;f;3=DDIBv}v}Gt}}1@#TKY+38u^T*}IH&KCOi-Y>BTw
z%=EAwpd+w^aAFhuS!z(O5}u<%MH}e&$-k#kMmC}PuE7_a`Kwx}I`I9I2v1E3E{d&>
zqy~z;AKeW#Tl8PFCl4<Ij~>NE0LBj5k*6L*lzG#4rdq8OT4e}B|DPK0rQZ4*=nMZ&
zJ0u?pv|E;!)CK6PVB6ylSqq4L6goD>Ey&m&@)cOE9YwR>=KEXl)BW%(Q0+Tl>L>oa
z$CWz5&}Q&TamTQKu@>~z3!#UQCGP)pykTA%Hh^X+ab}c&P0%{o#zdQxw*HMmHR-!D
zBRvyJT17JXmuEgR-ty|_DbQoJc3L=VKHInp#1q1rpH}Q)eNc&p!-Z3%&|5yMX!)p_
zTZ32M2>4xVf>tR;VO$^70kd?Y4S|Dc86>WUViiJnQ#wg_Z@sa;>%IcSqmR*{S3mBB
za1jjDod1|BRy4(;72X6~Qr=QlPS>-Ht;XbHTBePbUeKB@ZghMuM`vRDT)P$MArX6`
z$X8sXDVCXHNv5h=w79U4FhE*l`q;s4R-iLuVm+%y+$y`?n1H=rw5g(A^`vC@?i44%
ziX2Q%Jd^+Y&=qqY#6J_tT^8#kMR4ArS=QtzQkZ4tgcwfmUG^_=cKJ<g`z*g}p3M8-
z_*wB;wUTpZ8#xM>xqP;Q#;mOyf8@MH&vZPWqN%dB4~%`s=^?^VrJg-NyF0w8Ucy<9
zKcn!B`n8y*Y*osFR~DXp8Cg{=JXE6_h3jnT+cQ9iz2wrg%E#tUL&%4j&C&Oop^xkh
zBU~YehH^j1#fyxNW!SZ0+wVlpG(@gcEN^ZWpI9$~x+UuYn+7TR$b`ecX%`P04mwe*
z{~FHW5u!DWno-LAHV$~lqby*fj9dmH)-BhDykCNJbH<51ye}-{)7upJT3Vxm+f5xU
zV;8maf)#Ctj+uCR)jo~(QK~zh=|LpV9epNs-P@A9Vw=nQIOV&1Y;?icm^deKO@>AD
zv%TTlu8Aw!@7}xk>BoUQ#so5-4quOVPGsz}p`KY81T?SYI{n^%C$uB0huPDUqt41q
z7E5C$+3|;DChjcAtR#eVsr0QMijYjLYPfA)y*qqY?G=1Qbw|#7+*OnUka)um^zS4%
zV|p}cM@g=-ZLdFD=A-3ls)SNf^n_d-eq+&8x}J-NE3dpF&BA8WUP!T=`WAgm0plxX
z74VGg@E(9^j(iyG%yuW=T=5YWd-@;0X~-Y|rXL$q@xhVa)|C#7dkXr={-%J)#|EaV
z`C&PACK+8rA-a4r2tsH_UoZBU!BG}t6sz0Qg_+~sXxm2BW;~8Gi4QeEiJT;9{k?2G
zpQURivW3Xj0cE-bu$<)bXxx$^x^%J%a%@gUu=SjvDahzn32#C0zMTvC;JoN678>@<
zuRkndZa%U)(A+$P^AE0R=$+K(Fs%=LM-h9&^Lh)#M$Z~Ekhp@#3!I2Q`~wJgcaB*h
zFuq9&u&l#G`79G09Lj$VUIT70X<RiD#?@yIX%8IK4jj;nJ!n$p<LF|wtMr?xo*V_f
zQJ>Dtn=4E=s+DYhTRKBl8rqhGo6%%1?>!qkwcqa09rrRF_wq~yx_*Pi(3%JQ&wJXy
zPA|+r&%yp4N`Gful6KTEPG1iwg5~3Tx(Bon6AKhG71*l-4HGor!`q)U9#&aX(SR95
z*WO%+DG*XU2uKFl7<0vsdex7Y9GnOot_GGQ5DJ7P4i(sdzf=lxh<<FK2PCn~h|+`-
z=q}BlJ&ZXF2;l#Pi23s!Fw`@79c&2o&+-pmOg*Fp0qLiOoODW_%{(QFo9^iy1Att>
zN)U3=4g?GN`#%GLtgreC;$2{*S)gKKk_R5Bo7PSND?!7`0Q&FX$NuYldU_^)dRX9M
z;D~O(2TTF4w6GL@4fuh;af1*>x6BJnl_o2FH#tnHwE?G?^LSwNU`Sw8U|e8iU~FLC
zU^KyQ!E6yy2$)~r5E%n73$1?obp7l@gry$fU_f9{U|6Ld(xi`3-`!unAKx?If!_!p
z)9=@h&)3@+2r>MeH+t8Bd<ZW5D^Gfxfkg<|1gTpBxi^?+a>xJ@91v|35|lW-U%vsc
z!02l1F7R^nHuyUHK0rc5`bdgQ_E3^k=2#kB?qH&1#%QW+&Tz7H)_8yTyg`IX3{jL>
z9ATtsEOE4WJR!s>Ofi0QxFX0i*b?XpeEap}?!?X1+=Pvko}{j{yab7aBriQph0h<+
zYS);J?iG#yu2ygKxJ-9G=djsoFkWB!!{d6bPbnig+3|;6K;T``99?)FHiQ^F#3}6D
zp&T>$vQ!?t-m&7El#NxM&+g_f35VmK&iYi%H)4Ok=d(Za;j%3gt23L6>%-IIvrKj$
zqxsTB8f<7RDxiqk4-;Ur8E)~Pl>k^eSUS)zU{N4cAR-_tAbKD+AYLE^AQd2WAn+eh
z04e<(4S`I7Yyigq5iq3xtPB1qw##V=A#TDUfcOur5OS@d)~Ce{dFFvZ4J<|*81V!j
zLYi|p{Ef5+A`tW!fm{2Bm77;6kpWJGA>s9lp9q=7GAy5!ho|0gDvd>Y>~Fd2spYit
zF=<@iCio=#r<_D%J>a?U{5(3UArL~-%H(0p`TYw9JYzPI#{zK3XG?{ECClTl*--K|
z`vD#D{y}ihgW143|FFOfbxH(!lwmI&c#SpLHjeNXu()f$$XJ+Kyhkrktn}5)dTcRX
z)A)C`Baj8@b(B?5+0q&`{cC|}@!lR)I&QqUmOVAK?u!(qH+a-ZRk?BEWv%y5UHyq(
zAoZj_#7e)KJ1jmt0y*kjGwB#D9MY3P#Q-Ey0xmSy;l}7!q2Q|o@=%AQ6wiK0BlytY
z<(^!2`TB3(3|VViyuKF=++NpiENSkSk&rb^Bm*7;DnBTZUt+4SA=uNMwBQFy@6&>b
zeuuZQzFCkBS1TgCDUHtXOlpuGKI<EI;}Pv@ty7V|Ty4uOO6RC1-*u+ChC#CNVfuv(
zdo!lrzoh)%cxkIy&EP?WJvcnR^Bd2?DmpOu>nP^CYc>Bf%|HO4?{5Ht+uEf!j2G%*
z<BQk*%Cn(K&Z-f?s#Uyf9Vtw^Rq~Alp&u_PBFQg7K`>F6(xlJ`l@5#93biV0)dBQ^
zMyaH^w8>xI0v2ex3z2G8mPoB?)|L6oPqt|ByS`H#^`qpV7nhgc&)=J#{@YU%Q#McU
zQ?FC5TgR~d%*vP{e7`vZcQHxka}mk8_)QN!a|%%dZ$fXmVuGc`c5j;enjOW2C9hv_
zd*98es8vOaPEeb)t4K2zVS-rT1$cwE`+MY>|G)}&p*GEI<Mkix==>tmmY35@1LZ?p
zO-xMlX3kOKG>x^Apb|5UH6Vu)Lkc^He=Yu7U<V5PkAAMqh9s*{)jNW>@6*#Zb#`dy
z>E7Hs>K0ZeLUQC6_w))DOpYHxvFk(gn;kU8<49)d4QU=GnRUnCf(=Ho#2A)v2_xj@
z9Nsdyp%iwxWc?@&%#x^Z#!H!MRK35Q<{nd6_6nBi+4shU3uf|^N{m@*V^Mq&>p4<~
zU@==xA-lx@j>#vLh>=4{GO1yD5_8vyEEn-s%8ohhsIL46K7VDG^QUzOE!PbxlP$qt
zb{)5k?XKGo74112g*L5{pXcO{)fpqY;Z7NA!nmYDziyyQ3HGGDmAw&ka!??;ZdlZj
zi=R%Md{XiPv4*w#M-1cLx295oG|)!91c&Ee3NJQGR9Za`s1>n<ksTzZM*E<XiVrGF
zF@fyOZDW~%rc`y*Ddq}|h9#;yvi_CgD4yCX&54Z`1(C?gM)mbWNEs?CCukF08ijG-
zO7?Rc_(@YySq3~h{|=VqUQET>>>0)hnm8G<B0qye>7EfZKm-3rLHp9*v24ibQIH0%
zByA#grMcQlsj|G)MxUMCYP8ofb1p!Z#nGWqbp*1_<$dHO&dXe2Qf9k$HoiXpU0k~E
z(~z?<+j^s091TT2P9trRnQdm$mkC3@@i4rG*N)uXVY1s-uXV;Z8^%DYmMX<^3DeDX
znT=rSGO}p9*9H@Hd}12H5EP0Dvu`MsMs0$651DYkUp_BPhI`itKQut$Kqj&D&_hJz
zcCy*guRXfDE3!R0dgragFY_-vQ)<jecZ*u-LQ7PXIJ`s1(-bj@u%lvWOEq!~(hZ~N
zI*~Q^Pn}e?4a+fus8wuf2nX5j7@$Kxu~66Ha4bMkuyxPAhfNq(Hq1O_B~|VfkW>rZ
zJS=Xn14rqSz*>g;MKWFS?9zEBwe0=XbOcpzB5P&?bKmzx(rNWcBYfqUbr2BCKj!)!
zzOmWlV7#8Gih=JgxZ>dUswHeY-^u!U;@Rh-kD&~=(vh9Vsd5&@$AyzCYmeh`XFMvE
z!ABIT2f^h*nXR`xq`#aF<Si9mA|4Yd#g|J&{CGh8m@M)<ATd*^Pi_MqaFCw(hAbFi
zR#7Qz5h+oJqNog!!zAmFR(OM}P`IAtm@XQD%Ym!|l7jUoP3{)^mP?&shnRY>10MpX
zqO>wUHO<e6>vPLFe2R-|@AH9ePp%w-dRl9Pu}Dd?DXQYky7MZw*|(@mZtb6X$F1%H
z8b*95{by?=+F7wK^Xshqwnx7A>)y<W(dYu$neK8<&imD=xDU(c1q=tR0Ll~D4YNbs
zT^*_NL^Jq3V^>fAiS&u7&L6Pi!5#dZYWyAbe)QrXdlnJ+nQnW4Bi&+`K-+4nGmiS~
z;W0L-i-+4nS$%SLla-R!R{itV`$fmBsTH^HV;R*`I9#{yjps1~ZUS{}MQoHR!L{cf
zZ-dIWFcl`xTLc0UcH9yvz8-u^{NZkSrsvoMXAT(pm9-(xW5;kS)!h_`XbggvK>|1y
zLgC$01Azm2pbgGc?2s!455hVYs`~f4fF>3ZbzlErwkCF>I1OL&%gMKBAHxmIX%|_K
zkI53voOXxdw#Bg|uk#AJe;spoXQ}ViTV0>!?~P0zQ2pO=+f(Xk@M0$Mbxc)=dE)3w
zHNkO1n2}gZ0lm_FY5I0rN=+9DtBD5ao(fB;bT4VEkh=A$w{v{})isDwjE`;UbU%#P
z-?|FhMyBz|%*vZZUy_@mCKmUp5EE}uFC<8I(Dw?JyjH+eWi1T^7UXGG9sYodLailE
z21g&x4aWV-b98I&-=Dm1^NHacQ~29$2OCdh-B|^@HssrVbYN|F^V=Y~H^GG}G6EZX
zoLG<YPVhJ}K9G*3VA>1JTr5`#@T9K00Rix+#sKJn6mSC<CjpGIExV<IrNKxoiX3O*
z^LR2lZWtewuUmVm?Zb5TT)eop(>$|Z1rmuh@1ql4=td;m)9Mhs!bW`)PUNP;;cnLH
z^m(Axj0KPm%A&wWgyB*E%HE4p#j#!7I6tVnfKI4EMZ^QN$~=wZuxb+}d~*7Kp@)WO
za6xVgm~08NDlam+4?9S6Gws&5YLAU6SG;$GwNc%t0f*b>=C4zCbj|hV%;{ka|FoX#
z-d2;B7jn8guF&pg4#$Ek+7J%aE|;GO`|X(gmc!rE#1&qNZXzVpwnN(x?tFsx%V-B5
z2}_@%Y{03@><}r^<i0-A+M<skrHKv4HCrwZW_Ay)=<Nr~R1?O?_ta?s&D#(k3(VFs
z^g%0B`yQwWlmt!%l=djOrSw$4`||w>5sDp>zzb)_7!}Nb*{bUhAuTvYthnf%SwhU{
z80AtWNf<@IIdk<ueNLu}(_igNW7wEAWF;_v8%f+O6U0Ttj}(TGjmmiRqb^y+EH%qy
z3G6Y5f3-wuH(Ncn;x#wl-ER0iMy3p9ZnJYZTZpP2Zg>DfjJcBieqp4_qfZGOXO12p
zP;JF@4R1r#kfy52RHN(fPV%)XQRB(*xo0#sp(aw{M1&yKNIz38)|?PWgv7N|P=p}T
z&w|_Kg+b;~D<SnaHs7gWs}(RCBqW;2paAjvmYT<rD`gQXb;Gi%5rMlU0*Nswae(CO
zagQeJG`1LCl0`26)2(^gh<Qp<be@(_YJFDTv(9WUwDH#Ye5CMPpco~)Uz^rpv^?`N
zI8R;SHr<Mk5%+yREvT|IS*W|{Z|=y&_l_MCR&Ss7m!p+IB^r_~##2`lIG~ebfkFN&
zPlHZEJqFsqw%Q>NUx<ogQD2rB&WxJ?<QBUsvWj?@jj7iYg!~umB@10jmzjpjA2L{-
zSdofuP+<_foB)EiC~exvF!2a>>-6HA$XKhXRK7H}j%5A(ioC|)1>0Uq@6k$|?<!{N
zI?$u6&zX*>BuL)e91E{mW0(Q@Pj{+WhZR`m;U_=~w($tkn1Jx~vL%^#Ie~#m{GukA
ztR*=~a<xVts?Ve}Km!7<#s;3EIwK8aGoDCI3(?p;ywJ^i&EwIMdWf3iMwLWv9f6lp
z=7gE8hGyiYR^UwA@f2&jLT$S(UHYkWWSx(9I!42O_`6kf^S(EN!dCs4$@HezX+W^$
z)b-B9nR51RqzDC0=STDMwemNo{_A2}SKl=NGl0-@O5Xt}D1T!ifo11zhloKH0=D#l
zM7gRclL<6~mQ?A((_d(*mkS)Ha-9%N1~T|}d^AAQnM?50*bk8m3SDYmBz={(M!>gT
zC~!bfLs|8&4m;nH%Npq(k>!G=h5<)}oUOt~Z#%}fAm5s^>-Ha`Syk!jPKW(E$A6^n
zJXbA-pI#2NWAy`LTA(1F<DMKF4tk%)d|Ff5oi4rk(n~wovVgaC{GEijWf%#!U;gq`
zu*{ynmF!6(31KIa>&*&L9{Wf$Bw@mbakZ_01?p{+J!n=nnyEFXxHBIMhCSSCmRtzR
zj#JYFaFTw_<+1hx@gv+d_kP9nz)v%CFsARN*aNhrsF~tg8YRihL+pnYRFXmbQzGvm
zH+Cq^CMAu7!kQB;dMu#4()(gF4Pt=}RI&1?{2Zjt;D;=%!>mfAZ{7aJTNnZaq4IgC
zobT}&LUT;CBj&xL;7hID2D$?=aaIf-Fe*mon{`pseWXC_JG)X^u;tS5+sxi4#eH7-
zw=zZ>qD>h#?G9I^yV2V0uCQo+Px2X}t$Ov(7gg%3tgj{KblgwLYc4fKGuQN%d_6{B
zEF;%F4cbm~*}hu2)t)Z3-jip~wIZ4$tPl()K^T$GWW!;E;JXcIV6Nn;8|?c(i4=BH
ziee&WUZ5p0Z@kxJP{)Dm9~$9UbZvI1HYf|{iGUid;Q2+>6f%<Ifg~lKh`^(B*!1wJ
zz`9=|KssJ;o+ZmK;+=WiVdC(9-j&d237Vim#&{mSLok5s0b3slJLA2^M>lS-@Lf+x
zFPRmB-zanjtOGoPbIJ&2XpL-@?1{^g6hi&zf-QnC@+nY{gd1SYIb{t?hkCbk6!`44
zXUgFFT8J<9kfOBHRd_kIDXB7^MwO&$`|Z9Gk-@cBWeLeS@h<~*7wD?pE{GQ^lyQ8=
z;tib`t4#$VxCd~LY!A0V#^ZtJw`B4|R|r=N15i~sYI4fZ@4#MRrkYb4{OGxZ-`J#J
zG;tPV?XqM?iT{B`?CVrlJX=-6xR7Xm5$ylH(>3tBZ8G0iO|us?@XJ%L3x|8`bj1``
zzAP8Lx6j3G12v-qb%1OLW2}}1ZQw5#Ow0!c`bE(pkFG3*x{^UcCN4UNfXU)l9Gppy
zE%v1l!BfQwJQ2ghDGZ_sYC|;@7SgehYCVB|Koh`-_p*LY$Rl1zZ)weOd)DL)cj<B!
z^?F=cW=5Xnby2(R{dPi?(o9zlWO(Q~;2}HMQYkz}%e|ku<>3Tr&by`n=9mN9_O2yU
z4R(2#Xp*uoH%h^3xxrBd#xA{8qOm`fc!6@ixVBvGP03b4GZF4pljTEGx_(+hB720x
zs@367o$^XWydUJMEMiP9IdWL$CG*ZnPR({xtHC011gvBt_gA~!ONjrkg}Jy3N`iyU
zGUkGih2O10(LxGv$1a^QcIsWkI2=Kfv^$IPydQffuG1(|8_%CGu^bpAsD%_#cm?GO
zmPEqOQyI;^D(YzPSqSV5nCgtyh8&;fy7a|{46EW=f6=Z-*0knp9b`BCMg|to{>m5}
z(j`~R_1K*4cJDVOi1+sNzbR!5U&BO?MH!yHoW_$2Dp;<bR#RgT7_MameBZJzs2WR|
zT%jbp4<my2?iY@>f5E1!wyJ#Gu3H*YTw*l1gRM2+t_os5?LF-3&QiG(TDnOS7Ad}5
z{;fUp{Wcd&*DoC_Hoy=NFC?Hnv&x}ipDK5v7kd*99j_-0jnaFLnxh3xlSVihcMl9F
z>N$gzh{!J7D`JLnskktklL;~7wQv$|1y4Sk6mtRQ3bt0Wy*lwM+sCT2YvnrvQytXO
z7cbb`5n2-Zs7+EXsg5#tD1#YlR`BiwZMl4vnF{9-WPMP;lcC~xH~=A&o9R#VE67=m
zs6hdy(m+K+plyO<okf%)5i;!vfIvqDYag=x3jx6@$&k`+B;;sk5fu!L!_O`OG3bcl
zIh&xX&HC8Ev)IM|I8$Ou+r9H3uba_kx4W<$MCaRbd{GU+@jC4*`Tms;Q!<??4{Mz=
zHRoiu3%7zGL|$b{OW$row`zsGA2`aRzaN4W$&OK~PCj(;X#VcpP+{MLWN@Q|6o;mO
zQf5^0Z(UZ~^^y!`O7R-!v4_|FS_^@0TSFe5PQ_N>ro7FYqx~3v?|qTO_w!y9rI=vi
zd+(Br1%v<nYu?DGmx4A|egzuY8aAPRZ^9}wMt>~6)5(NgutK&FozDS-KyJ<u1QgpT
z@z$)NH%LMSMQ)bf<*}l0f6$qsJZH1WM^Nh8`zLm^fDlCI-uV7lb*AfEo7vFy_uL2K
zQh&!$ewIsSzH`nb6-d?9ZAKC-dJI&#JI&I?;)sv!b5hL_*ve;eYMD;AVJTnda&fTz
zO-|p?`+XH7i0(|;S55aC1b*;j-zM08azezU=b^|j9hAEmsu6#j(a^zUvo=>90({|P
zF>|ds&iTPRCeVMuyXYEbGX!}n<nf;&yV+B&OPI1$4ZOlHeg$ldxO~M*QfLt(9#Jw-
zFE~;Ig^SVP0M2j)KnQ_9c@j$4AZ-ivej=A-9Tb)iZeejk`00?UPzqmij9~lZOj#_%
zr9E&s5dsb3qNUNU(qq@dr=ZHUv#Zy8l$c~^_GbAPd}Yj0^KUeyW&AYc<$Z`fWz(pg
zu#)G=IT68w)+HAyGt}iiFsJB}lgxosdJza#lRgc~vB(ZAH9@Y7U-FgVdKZ3TBp1Rr
zvLr}WP+}x+U!+#2o(ZykR65(w;L7TTd`F6tu=`uN)jTh%UQnOiu-y`yxHr%EHEbS~
z2-szwTr<}Jf5AL*=|KXI3=-_*F?-pSFqMoDdao62#fn0m8mKt>ZNEkMZXU+ZPznuq
zA6x0Pt*<?8OFcQh+kCtFNEow2M^D_4oq1R1-zpp7PV+`)*@+uLqN>TQY4SsO;V*}2
zRn5YXc7fWn$@1zoM~LqPbum1v+my08byn_XU$t<?QX1n}-hCF{k$GG@HB}oJf`FGx
z7%_Gy6?(K{3fBEm{E(wXVFIP^{AvzI*jLOSo?$U7!dbGoWv22N7a!UaX_QW6#Q66?
zRqN6DMqnFLj1|W;X5_@)g_=0fdY;bo5*W4ou)W!;(VehRNH7Zah7pvoi`mjv&NJ|W
zNMepW3?P_V`bX+$v3SzfmpY>}c$0g0NG>*-uxO;Ee@_u^hNdKtHKWAK<<uwtMu>;(
ze#&&x<nw6v*zWNFD$LExD(*j;(?@}+QB_z`5C(ai2=4_hsm?z2<04yy056etc?MBc
zf>kjDcY;QTqLM;H55zb~fS)RT;j^59>*)h``{m8^-t+o^=U3zPK+vWw6v`Q&SVcMy
z6r*MO=(YUEz;U6xyIaj$Zh02CCxLW^QU5nL`0LG>0(J1|!k->L?R=&D_Zwof!`2xb
z!dy(c`@W(yDiek_N&q|ah*UA{p{m1>bV^qtej7|HgvM7!&ZXP^B%Z)~^ptqElJ8rF
z=R)=|Jy6qaMivCZ)rRwqppe|Hu96NN6U$?kjB#Sn##&!4y55}CK5%nWp;3J)XX(uK
zEUXC(HN~%lJ}Hpd35Ob?{93?i$`z9V@#7iJS<1hUvkhr_uIJx=<Nar5k73;Y`xq{C
z3(k&@_dXkwrf-VmJc4k0p$72BdZAdW5G1oPvxL1`V$O059Y9p;A_YXkvsBDt>Yo-N
zu#s|)xBSlQzt0##2a7!<{$#0ohUbNQg@%DpE*c9ASzJb?a4DDQIBE)4V9Z!JDm1Jq
z+`Lipx=c<0IJLPoXE*Ft%OZ8r1t-)I(IKe8$<I`fpe4kjp;Hx^^1TPdusQxnl9&E2
z(;dmlWb*yO$^q1UJM6UEMxDP$b>uBMe!MPcO`9>zJ-__%yN0a~8!akBm|GAo@RS;W
zytgbwnuF$GM5H6+o?9<4+SSej6EQAmNN7$Gu`q9NER?2#*^?pZIOwA^)37TnHiHZI
zVIJ&LLhvTmN5FU{O%v#n5sStrzbfncSoCpzuCbpEO)GeBMnHM++8u#FwLzHqv{Zp0
z7(aj=v>{BBo&|7A5GdF<0y`7H<fb0L0_$MUY;$rZU+oh7HZ5Cs!)_D+HjNIo2Hrei
z#uOe1<2wWf&)O#8GLw;^uJMXm2;>yol?m?|Q1sR%7~H2RK}Kj&;i?aJ+7cVH1(|wK
ze#CR`ena#m!#MlAp9&?|8g=*FR?boOl|i?(hqN%|R21Ve#|0j4Dmujytt8jNDyg=G
zH+Z`7<-1K>i0FA4SVP_;JAd~n*`l>Nz2q{UZ?Vsi+x?&%`x}Bev=HDB=2sk<o}yh2
zN0fpZGIxM@`!pi5UID~__RGQW)DY#2zs#@$DpHs|yzUXJXzU{i*Yl|Mc!Pjp*(Ow!
z>m_Q>Z+(s>R<_3XgL$K=FQt8wyn<)ex_95O+v^zxrSlrGJqsS{D$*@T;0iuC@Fo~a
zfaihYEttBty^i`w?7Oz{W9SaY5L^#QwyuZ@qIs7Z!dJ&h*J`X6p$Cm+R^J)4LdGOg
zIq}!7x^aK5@4*1UIEplsApArrYYb0NctOg78O`#O_|Nn9kt>~#<t~QWGOOuOdjY$q
z&zGsXg&}cnV_Sr>wIVE+rd>Ftmg6;#Qj4^t7v{F5k^{)HR-8Xvy(rpW(c2~%{*!Lq
zVF2qXaAN1msymActuwpP{A(SeZ?MLNh&<1cT5?~dPMC*eT(o+Ol2%F~AxBDK#y7&m
zoE)Ty@|ftl9IMW`oeE!Uk<w;OuBk8Db@6aL3JW%5fdjj_*0x^0f`Gf&w0<6sbcUns
zUj$>5X#G0+dJJ>$C)EKJf-IUR2$gCYw928x7<>6t{tHCnn$szW+kNjwT$ufJoF$|{
zv~jC>5XJB3&MJP;iJLQ9uR!fZ&l+2lcA-d+J~xeW+l7-hjqoChW0CBgol<c~RT#Zq
zGCxpaa|=*&6P5*<C>cN0J+af$2LH}64tLOVrx;uorkQ7gkEX6FW94#<z*&r#<!JaC
z@VT)qW#+tykPt|R=&nfN5|wj%2&I~Wg%r-nUDuuh<|r!}YG83bL)zs6)0cy2ouQF}
zq>#$;n;2<0*+>1~rJ-Tc-lL@D@&r0n{Ct#RqY{{bUdgoAk$DdA&y-(_DJvBxD`>Ef
z{YVzn2O8Yq@VPZXb#P7^=r4rrb=NL?KbruSB(v(iJl!HA{!?1jgKud5%j%UxlB!z4
zkin`fC<SRwe?bm<o)<gPkDuZLEe<T0<-H}Ap%$lu-pe2g8gd0-_#W~p^PyK_U7$X8
zbskw>G75B|Jy+d_GR$bzj^f>wGXE&}iM>nHOGgzu7n+vsejzOOyUQl$JS=8DEPh<y
zEXv@eSKNH}=sV8o{-1I`eX~44b+q!moykt&{r`|ZX9%qs(cr~E7o4rsWh%gqb>wI;
zQxs{5mQVVRzcJNAQ^$fW<2ZsVdR*!Y6aUuq_p$lGO=#4s<v%G4lj*Vu_yZ9BQsY{M
z=_N~3PxOkWN=qL`fnKCVyFyjJsmIBXI`1D%Ry~JMdj;%NK)R2MPo^*BUMc5LRm7~X
zc2-i&I*6{{Pbkin@?YY8GaPI4zmHKp!i#?<(wP3s>GUvYRP|10Wfsq|ZO<>7%I$T0
z0IutgE9QFq3<+2f)=kgbDe<T_tlv%g$IOiffLHGkN;fw!iZ6t1V=V(kgeXXG=;v?c
z6|Jw|q#_F(asm;=6W4+(Tig*U{Y1tzLK!(RX$ocq00YKS7ZBWn0}D!THeN@MxF9nE
ziS?$A<gct!m)OfYFhQ*64bJ8ruRk7}SxZ6jptj#0vm6&osumN}ruo5P0R7m>NaS`n
zsgQ#Hzyk4Vv@zLNN|Do`eOo}uCxZGJN@oR+>=Az9!^D4B=(C{f%~VW4Ato)0oY^fa
z>(%}+yX?u1cPT2)tC)}pIl3I}i9X^9bQe`OQJEQ=Hvh}Pt&&_yTv&QBk^LA-1fL#A
zj!$oi<<iN@b3t^n{9NG{u2wJ|VNrP?P&OUGyNEVpR?y;^0MY?z6UB1OJ}MZM<|RR|
z8@GB$9}&_F+(9i9!Y5ofRwp)qf=WM@k_0?*Kxq^QrF<z_cwLi5t?oVL&h@sVPUWVM
zqeAbRk)fYBX#lCmbEKDLf9c1xaC|UVbul^ai{fzTI30^9<#;`=pHXl*B!1A8Np*d;
z&+w&8=(zMBb7-&E3dQht^Q>OazhLTN_G;^>L}OJ{OaBA}q?)D|5;!oi+VKXn4SJ%q
z)u%i(ix87N9Q3oVCI~4Jy)YTv6$lY?;94Yw<i{Mzie{<Pb)?{u%tVzF_E^p&t-}sY
z;z^mP@cx0@tYexe{w$3Vg$gFFSukO=OU@q}(l+gy%-WAWEsH;Iwko6-L3X8&r_wAP
z;wly=D{Jc_*wTL84&9chCD2G#IQGs#)>`X+uUBw3Rp0x=tn*ACy|P(vD}JA))pIZC
znkkGpULf)Yz$`IORT?w4a~WI-6%Q07L+<g_AZ$`PC=}WVRg|u#38~j*Rff8K8n>vR
z#qaIue^yp!ffuY^p;9d%F?zYI;pGn>4>PDrO7*M-owp_E!;w3tkrUOY7F|uhMeCL7
zyZ`L+`IAZM4H-j_Vc52xw&n2Kt-IoPxNqg3H*ebQ$6j|{y;*0VPp*G=qG9-aLsWF#
zdixAEWuViwnXgYSf4)#O_i%6@_Z~NI`cAtpG%s&>jIY`HJhu<tmB21<M&tDJseB!D
z@^cu93#C0<wEi`q*2T_!wmS7HbD56MC%pnM0Bev;!J+CQ0|rx9=4yu7Ztc9G7c9eT
z5}0f0;ebmvFt=Th__S4GMTr(?IqhYZ^=2=*l8SRa13MEwld2=n<0r;2%1qzb?$DKu
z@3ial-kuJOCcKa2Xf3sNs8!fFzuw+xKy+bQpKT884$hi+#+|GU>7?uH!W?!&>^n%e
zbG_G8GJ~{N=8A(j+oVV-PQ1P8x5qT(Wg|IIR+1v=kS=1}MrrI3_SfCYFY}aBY~m}B
zdGIEacL(2cTF+viIl^^Iq=?u|AeZxRu6p3aisfoiF8tTXKAMo>a3lT#j(QSqa*Ud>
z$z-o|en9-kIyFN@7$-KFgUTPz3>3^7gP<IDc0tTh0jEgY-HEl4ibj9=%0R;0y`k1S
z%$;Na$BlNRioQBR1Sj-9l#5V1$K)81)dSl+DJO6NS@&cuxPE<5-C6o5N@BlqP?pWK
z!J6o!9s!ZO%xACNN$ftVr)8q`uztzgvG23)t$CZj%tz?r$<Dplru-YYfK=^8419=t
zNQNvXEnx~5&ox+T1K+fVHh50<Uc9-wlJ_!syxmrp#c{7t#9fk>FyKUTlK0;$#A<z)
zr{lAlOOeVEnrMZQ)3oyopIphRjguX@y7JRWN(goJ=1OlW7Ds|noVK=kFpK|WRv*d`
zRh&0YoQKH6IyEtELy8ijbb=MrX?xxGSc9Iy_{S?<!pPPuiWWMpS(@2OjeT!G^!?GS
zVct^Sj<C@67abTwgz$a-2@XvT_AcT@aL}QbJDd0K>V!=*?09=~s9}1fK)|ae-Fi#%
zk*;AAlb4ut$Qt7ai+sXGiqGy1bkSk0QN&%*8B)Au{@}%3Ap5imJ1ImkJopEbMkUM0
z46H$w_KIyKJ!e3@kJBgoe$gozeqG?pVyw@5^4skt!*<=rZo282X=77kBYmkm`%>pw
z@@^)_b?LVp@%uK};aU4xRiVdoaMo#Y4A%Vd)KsQ7)=pLO!D>oS=ngaunA0^B--rye
zypvC&$Tx_n5>%<OCTYxkzV{F+9q@qy^y-DgDLSjV8;KPJP?9AEF+haYzGSo3ZQ?|3
z7{<ewZhg`9$yDCEi{sAAZD<g_eH=2qa@3mQmCtj8_9?H+okk7ON9A+R$id!Q2;x=7
zEhq&G=xDq}a!F=ytu_+Z>z8+MA;GG4i{5kjUkVAdG7p((^y*aKO1T6A5#2^TU0x4d
z=!&ueR@H*q#&m9@CAP($O5rjuQc;1(lTsOkyyh7|=VDRZf#Aw9O#=>EAfz2DvYrG<
z4|v(SA~r^8q0?bUQp4F4!>DQvvNIcIoZTx8)(0oqD4MQ#luh`OHl}@1hZ51*lXJrh
z!I|oI`^A;+pVbCZ6%8!SJ2s=0XG@p$r0o{|il?q`{#8T<x(efw+2x?t3%n3f5X-%j
z-ruw7b~WS$E1P}V21?z94GM$XJzG{UurE<5X`x=^w#z4rSrd-j@!kzj+xhylzwp*P
zE(M%Z!qFS#xk$BW#T8*;<LHjXeCQP(YjU8_&S6x$SKL(jeHX=+3q|T0+0s%;S)Z@g
z7TXhykP}YmqSZWO@$;RhaQ6q&iDgj=7s=|_qQS`PxRUnE0>fPW$|)48<Qdapc41fZ
zl6cpZxa#u|uYfNJO&Kvdq$op*gz7lT2RE4;RE%>0Yr%yR^wcUs0$(k~w#yElE3zRB
zJvvs#2ZGGk%Z%zgenK_a70+mIWQhtqe-%GU9XQAR7A(w>ECYv*)5FF1!K=a=H892X
z$X88J1~UTLmfrBYoc06HE6zX+g)4h^;MA6*>Hn-W@7E|8LuGV|(WFFyosU(D?asVD
zZ`HeeMnuG^_-~Q+^$I+dX>IS395Gvl&mY$(FTb8kf1rj?tk403;pziMHO#R}z(t*b
zplA5*f$*|52dwg<2Ex6G1F-oP(8`HO4ils88zPdxuPWn_!~0gjcqT9w%GK+;`kqE$
zQEP{sVKEI@9ikhh8)IMTC0S#ta@eaJoXQOr)K4+KAQ;}CV(CX@_`Xe-tJep&b9A`#
ziFJHUy-8JA3?@pGe*f|Piek}l*}91AdbVy8`!2%;t}&D;G|d{rVMpo@wM9KE2xchN
zHG)s5XVk1jnARLbdR*YC8PH)eyoO+sXI+wuKdI-)b#2|DXVPexg3lC*=1Nfye}!+T
zLlZ&2_3GXHXR}_-UwZ;WFLmX1edFM>^*3|{3cJc$FXJJ-0UEplhO7GcMfB=wS895t
z`CWPvk-^(@blC3DfczBAhFo~sZ-uxAq9=EZr{Qo=1r$QfM@!FMHpoNDxV})`x+PPa
zJu84MYIwukumC~Wm1%xKd^jnkv-6>LAT6V~Ds!%xBjq8vhO{oE(`z*o&AIKL|GF?d
z_7+5|!qki#1nh`8NZX^5W3YM#^xzRwxCd&(m@b0k<|q63{Yf{H;g+U8!|lUYc;y|t
zN{Fn9ZdJR~yfrUj!8W2p&+&zfU#sBxxWY;qVMf&&+KqrDL`R}h2zbjyt~qA#7Myz3
z2|#~yGM!fK!XjW5b2D?c7>(wQtbyzyPTY`-UeKKlZF}%jN{5K;Usw6p6B>hOJ2p?J
z@!lz3f~MRt4}15^-qBAw;MKduG``FE!RvkTPhj^OGtFAe{*P$vAJT#=_n?jvv5|R@
zl=aXNtB!nT%*%>nv(HM5nk-|Vp#yD+$z4`HOC5)1{2}^(_WGFZtjTic*!bxC%ZbYV
z+5xmKGP4GG6nwxQvewiDOE#cNt#*am(6I_Myn8GZW|uVdmNDv`BRIrLQ+Tqwsw+i_
zZgI{FdX2RNG7f1HT-8KHOi_8`(|=jZ#(FjzIF6!?_srt!)p52`C(X9)YJ??8d+y(3
zAL2KS&YM~tbJmBjL1(orEQez!<ITetEe|-5Y_CHPei7!!iHV4RMF>5dUlVp(h<?4D
zH!FYdVv84T+T3T*H@rtB4q*=UoU~Y**qAy<(uJh|TV_oYYO#hU1!{gJ&sx(AA*@3x
zr7Qh?Ta*|se6vV->GTeqq)PG_!Gl0p$qxltfen_!F1gvIXIQ`07UmL5gnU!9uRkLb
zL*fV>982gFB2K&xU3XFr5%O2Gelw{Jl^dUV_2l*0=8xxK?OfSnPAS8`$3+M)!GDc@
z^H8~3%Zwy`nx-tBnkish3B||Scv_sGh!ym*ffG#&;C^=E(O`X(7C{+uhnjT~esq$K
z#JZEa7!M9(9gDxVHGa~a6B4uDp;tI^o#x5@#8pS~G9^u$aflT=q=|jZ%3wowFa@SW
zKML+#w&6~Qj*07485zP>pASv+430}kG5eEl#RsEV_Gm4}Go$gpmyAk3+c%5m83qJ?
zVyC@Xebc+!U2W*v7=rcB{ONOsm)KlGk}X4{bjGkydS2sSU$(}q`rS*$3XW_%rRQKw
z>CIc5tsRscX}RT#YT=QCDw7FSVn#0OE_IGhGz-Aar9Qqf(?4c(Fc`XEn2jDXp^yC2
zMjD9pjd7fjm(AfV@>Vxm0)=~uN+KU^acGXl5YArOz5QPHW?Gl-6rUldvE9_t<Zo!J
z++EZ1dsz-UM}zk|^J&=Uo5~f>xz$0l1HlP~r12XYf*BU#_~Zbt$)8oY1_*?8vq*0X
zZ4Q<x@GoqR1!n(%*kivT3Vfr{@D|jkdFb~6SE~@oUP#V7_1&zdsvSHFML7=~O9>w%
zMPe^SYJ#DjT#;mA6C(u#+hW9x5&6)|Z9H?r!TUiI0RcCwW2*a~kkOxHv&V|9WPjSp
zz71|Yo0U`j)!Sn=ozx6mS~IxTTr>`!86!ET$few}+}{Tx0@l}iVv=0M;dD9x#5hX_
zXC}hZLjBA<CX~k+dhnA0PI$cxm(5JBf9@tN<f63QEnJ<IhYJ$278{HTZ8jUK36+wn
z+bt~o%-Q83S=xYPh5)pBzP*X`ec|)7Q1qy>vj&6U3bP3A?8$djh!s_M>W3t$&D#sc
z{x1@-KxtcJwI$Nu0oemEHj}egz$elXxdb<=XhOVtOz8dm-n#?I?)RGHpB<PR!`u{2
zPA*L{3%yI3n&KYNGY*4abZ}Rlx#uBi+(!m@7UG(*-Q=}~2!hERXAXoy#ttHek4Q*b
zohNFHvZ_%E{<N)sHGWG<%|Mz)(wJiKC88|)fpsJ_uSn(w+~q3<v75}OH`<#?G5s#Y
zu0tVjE^yvh;<k#n@7OljQgWO($8o*dSn)C3-03j15zcR9`<uyH7WZw{5qm`Pl2+eP
zT0K$7#MQX2-;~x9z;S9`Zj&DJ7el7$OJ*^?kam_FW2HS*{!j+_a<kuHsuapmjA|T_
z5n;5X%F=hpf;Es(iq$#V8tLd+w&=8?J@!KbZ~Yck!wsYilLYRdju>z;QGYG3<XK_M
zFv)^H>csd7RpdasdcA|MnkkPRngnG|lh8-YQ*!VYENcfQWf+c>cx9C&m`px|%WaQc
zm!QxNwp6&CXs#EVk?Pg<HoiF<oMBNsC0({K_1d4d?ENsq)qg<s{qg7dSB={c11{bS
zEMbM^zOtV^9mWOK&b*p>)_fPerTRx(rT)c)@zpai{1gE>p?ZWvm?uXi2>~5WkB@KP
z#}3!zYssW!6I|9`tO2RnsJF_66Z&+e-jA!CdHmFbhetOD@6F7OPq+A(-h?!;R;8%Y
z$Weq5>t|nwQZoZEtht<R1jlo~R(Bx}uk(R=;bCviDo)wdt=QdT6nRzl$T}F5@5>&`
zOUc1t+295_av{A|MbLp5AJS<iKgRwbporb{W(5SO53Le(WJ+K=2|GW&H&EQM((eJz
z7U7K@@Yav6Us~FOBlBBg9*W==TFP;I3j%-TqL<()9(~;FcbW;_Abc~*$#2%{DK9y9
znyF?{ecnr9yFbZiq5;X@lzjUW3T8nSC45?M^Vv)>24c@>@|4`pWFS7>e<%Xd7=P(M
zBE-%ySNMa+*o4^g7u;g=*sU6;$4c<zazx`JLgt_k{#8n>*EEARXzsNEqL<M#mqZrk
z-jws`Cz<p4rOD{Wq93cGZ80i-tVYVE?*np8KSRRDd^!Oi^XT=+KK0wT;Bkh@tyCM*
zKoxot62srZyuBDXSF>-$-SZc{G|fQeUrR_?l8MEkyTo`EIVUB!64*+DlCTuHhmtc<
znxkK6kZ}Jp_%s>lHH~)X*D%G%@)S&V!P=ePG+ieDh-`FTiK=eRyRw*V8#k=&eF}W|
zTN6iH84T{9nQH0&CfMv{|AdRA_gF}I?3jiCJR8fTx4IM3wCko&6`G8bBzWu)a>Tch
ziGd46sEUcDL-V;hBtfm2G1|}%)Fm<l8e~+gO4k9wdK=}iz50Qy1jN@d11PKz^Sep|
z>BYOstvD5t%Gpfbo^Dmwpc*snzV?ns8_8IuuNpAvx|;IQ^gJb;4BRV13HhPrexgkL
zE0!k(VF7$qqI$r=GN)lx+h=$FW{<N=T~0)^TX#$gjB$ZVTf68T_;itkb^)2@sN4sZ
zcf~16^+Qep7v^937TXU`rtj$e{!9A}`Yc^EA>%JGKj}xC@I=~jKrihHU4NG|8E@ao
z?~oYtPzrq=E6Hb}@3%qjpIMkps`<a``aTNSt40YY2(%zmW+bSy1fFncXP1eh&UYT?
zdy+KnfknsV0I+D*8_TrAyfs-}uHSj`SDdo}R<xLkXH1rJLZ0`=sg_QuXE2OKLjDzU
zXIwa~77W(<hXHu%XH_A1n2T2_Vz)l#kgj?pqJnsYxpIZA&S3zVfa-Z9My0jW8|Ybu
zsu+JpJ;Fb}#2&aV>)v=$sl*kQ7#E%4X3m?w#2=vG*PUC#5Xg(K#Ju`y)07P&l*Png
zGODYLt8(~hY8`|$$YsB@PIF62*71x4SrcIkKLB!VI1^}g^=gHekT`-?dakEy$Wn($
zbc1Eo4!{ktrO<<=m@PcGO5`U;D<eL<jBRx6xWB6NewDap#6Uca`?N<fhNdyRR(+_Q
ztxmnYXAlzjeDBNib3WWc_<o&y;?sZkiih&Q9L&7uJal~j6|<bi0q(P`@g(-^SCx_b
z1*?Y2h*|fD8lUs{sa&M0s6>)<MS!4b%@ZB3MJdcrxUSu>R0+&;(^hL~nt&VMW-UWi
zC4!>ORj@jz62za5OlFQ*2&Fi%PZ7qRug_RbMAz)Tq-*k>nSa?kS^vdNBcHsSuvwt#
z`-G#k#OW}cVUMT9l6=K|&Gsmds;`{PU+07nUVUoBgA4JN-AJ(U8VyExY^K9=!~6I4
z!Lh@TWxccCxas}j0a(K#URJ5OUsU-eMB2d>WSF0P_H)1SprEMVxE<zLsbaUAmt&&s
z+C_psUEM6H#=|VNHLurhVq*ln{0)w$y{rvLF?Ab1H3#7x4Byn}Yxn3kGpZ{-K~~W@
zXT6hh(QT?b{tVlQK1DhnBPFMIH6G)#QgQt2k-bSI+=QXIQ|g%h4x(ysnQJ@e0isVW
zX4qBfqLGwYT7V=OG%oP_-?u*v9+2a-c(M*E|3C%636~i|2AFm(@zeEKX*2gjR?sxN
z2xg-3T6S0VO*7lySf*y3>eo&za5?UANm_<Ya;6LB-0k4GZSzp`S5tIn(&aen-Bx0@
z-6M~v8~qF>S|QGO_=4Z$f*Xs>f+^5Hu=q6DlMVXK{wYd_QKDjb&QqyxfZjf(7$i(B
z!zV<&jqNUPao_(We0fQ)++CkhShT<03b8jC-6MDMBODA7ry2%uwY!BR-oL`NHEIl-
zR~75aLFMiTg<W3OUZlCC(#z%&3{cK`n<SW37<W&>o%^k)bs(J)`Aa%rLeFK4_l*r#
zfEysJ4*h!bPKomw&48{g4uwi{d1P4r`iY#9a~ZFFuwZ1i-xS;?s3(-MYMvLTeJ?N3
zTasUF`*<uh(U@+u);b>5Da&iz9jbE7ZFo8utxF30{0#U1m+f<L-CvW~>)!x@x5ov{
zH`^=m>ly2k^)HII+0E}Tf=*Y?f{OE>wAk<1+X9Z$qm?jVVu@>k1M%Zjog?6{&^}a6
z8s#BY#?oWV*6cnI4PeOzX){$?d4ebdAnAdU#qKkCQ?4mPOOMv-F3V8<HZhtDrJUJv
zsARkA6AZ8~w>bgd|B-Lk_v7QQ=cj2$?rQGRLu6w$0t78}d5vr}Qo<<a%iS>Svo=08
zC*s){TuD~VHjoD~^@RqyjD)w*xO*yn8tsg+v9iz$PIde#8$R^&vy`@vyrYUEVB7}a
zi8yZiiS_Tfmm)iYD#A9Y{fj!D=ueNDJ#o(!90?s|YTMfOTX$RZgr%kA2h0A30IB@J
zj2LDW6<l_wAg)XkO}Oa0mI(+#DVywou&P5;a7!|}hF-muqPW~GPf&O7zxA-YMZv`y
z;b%nC@o5Y?JV_h~Zj+ieZi<_a2^jbt7Y%7R1YZ6Ry?0G~2GlDT#o{Y7F&qXLD7DMq
zzkA=dlYF{g<mVW;+Qi+WKQrH$^P^}<jp?%}Jd`sHu{ABTBO9_&lrL)f(&u7ZLHrm5
zo+R#2&x{=L;W1W0z`dHo@BPHC7OpZ%qiyTbQ9g-?Uq1EG%;)W(DEcw;2c2Ig;sV~k
z$4s%d2LG@th)+H4oTsjREn11$a*KQqz053sN6#vKaBO%i5gwG{E{>UHdBuKJUigbk
z#M(?0;|*9o%<mOPoK?#n>#TlL3U~R8+8(3w_1Vo_=UdC+i9z=x@M1a57$QGX{`zg=
zPCCcvJ$gVD$(}V{MR3)+aCTe?^rcDdGxfOr9@)=(n*L_c`ncf(?F;5|AlhRrugQ}_
zVJwbKU<7FuI8s}vB-y^8r$|bIh7aI|WKa#X9SG5j=m@@kqhLd|zZ~AN*YiPEUsA;;
zzvX&9@p>$osT3>9Qmh1i`d<NC52Wx<E!X;-4aGzB#F!xqPl)-UXk&35xczh;VoaU(
z1X$Ux#nVEm97p@e|MMqy%mNOxo<JkyHFi7qHs~ldT5UGpgD<@{J8$sPVngjTOoevW
zmWx*2wRzP=TiCZ&ZN6*eMO&~-*oLF;3(ql!Xdjp`_V*5=u4$CgX~pl*R2uCT=g^)j
z4!VwjUA#oaLK21cUg$*(i1ZQT+S5ttn3QIQTw$g7?2Bf%eY1`A%)V&OY&h5Ac}#Zp
zipJTq8^^S@jlpwvcK=!L*Yz1Ufz~H8Lwbn}v=ABmy(ptMUzXWap4STSvC*mC<&2>Z
z6Bu0JyuG-V8T*`lXvhG4)-g-8{+CL*wI^qxO?0h2d4|L-v^iLwDbz0K4FbLAOJi^x
z?|D)fpTsyM$RP|VS7NcO9BWb}gZ{`_Y`v16Kw_D6V^RB5><eY^_~EEMtCAKKGV$pv
zF1YPfa^+wCjdY%+-k-XA(b?O^g3Rb-S@M9oW6ZX*&)+eUbS_Xgzw^0z&8cMX{zzp1
zJH)zY$GqmL9W(Y@>MZ-Gopxs1yl4JMZ114{&1v=8Mkc}Br$2qc>`lY`d5SR;J~ds7
zG1D8`wGJ?LR2@NEHE4zF!#7n$S^+a8pU?ud3F_m^`?WA2CXFPptA{1tgwM0?7M)Ry
z!^(b_;-xKT87y;kiu!ZOGf{6$ib+ID0~?BvbQYhwoR(r4?E&#l5{rXAT@fZB;$bh|
zyN9SxuJTnFjjYjF;am0O^Z49&wmm&JJ<Grnj_2Qe{&_V)-c%Fpmix*li|}u9`F(xM
zpGtJZ*0r^*i*+P4S%NX?E!wj%MuDKg>%+_cFAZkVmH>F#V_;-pU|?c!yufR}IG*3;
zD}y`-0|=Z=j(P^8|Ihe)k;9(-A_F4>2T&~#003Qd4LNw)V_;-pV88gcg@J*i{r`;r
z%Q@^BfFda12>_&i2UB?3y^=jh98na7k8j@04ptUZrAX((lp<m!7Hh}^v#q4CNGT#w
z5Ny^)B&0Mc787hH1hKJ@t+ucTDI`TgNE)#aiy$h9ASf*UFn(7zDj}pxijVXD?!D*U
z8F#3mSd!t4Mdkj7^3sg@{ejX_r;>10nVVA{l$AlZ?@}Jtb>aFo;&+szHD8v(b?!eY
z^Sc@+HVZ4PPg!rGOB(Q7=$2A@??zQ4$C2d;>m8AADvKtF`AD9}%A=V5Aa$zv*=0Y%
zKBgA_!WVej=6r+mO?U*)iS29a6nA*{KY4eqmzFagQyR{*{|pV)f``1pGn)8I;wt2R
zQ?&kD{rBV|H<~bm>D$?_5Z_CUQFKFzz3~;L!9vlp-0oOu^o+Ben_6zA_~shwzWyFf
zX8Q%`BdT*}b1oMxM~`k#iN%GdXfI6Rui2jWABcM-n}PLzAGcVn<MS!H25%#L{_6jC
z@N{;qHiP@v4CpcXK+b<#|Ke};P2*R}3|j}j`05`Ntzcg&edph3t6P#fPM~^&&d}HB
zq-5XWmWJ~92_Bd4@UwRW!}uIf&0+)oAH(uS<M^%O>78^1%1Pj$004N}V_;y=fx<Y3
zNen+2`<N`4jxfDqmSYZLZec#b{DFmw#e^k@Wev+CRu9$#Y<g@H*csR@*w1m8aTIZE
z<2c3fj+2EmiOYqnh3gf!8FvNu7VcL(Sv<>lj`95Cb>Pk5y~bz4*Tr{<--N$QfK9+c
zph94cV3*)EAwHo9p*EpuLc4?>2>lY45{?o+Ai^W!C(<QyNYqKRPIR8=H8BY>2eEbH
zJmN{>Yb5w2QY0Qo3P}b@wn?Q(ZIF5)Z6rNQdW(#hOac&2lKCQAA^SltMy^4=M1Gxu
zm%<{2BMSEv`xI9w{!sE#TB9tZY@^(uyh8bvii}E)$^unC)gNll)V<WFsNd7j(O9G@
zr#VaWi&lo#Capi(UfO%KU+GBb_~<Ot<<ecC$D)^_cTPV^|CIrYL7l-FLm9&&!xu(6
zMs-H-j4h0tj4znDnH(~;Go4|^V-{w%!0erQf_b0$9`g?tUKZ;tT`X5vaaa{uvsw39
zU$ODCnPc<D*2#8<?H@ZoyF>OC_Ujy!9NZi_aKLE}OB^;ioN;*ODCB74nC7_6iNVRw
zslw?D5I%5b1HuXy9v2A!-guCO000010002w08;=30000000IC300ICO000310XP5v
z004N})mYtb6IT$P07c-o5~5I{su!!OLWyKTen=(YrWAq-3Xl>4g1fc7u`O(Gw7YQ#
zLVb!}_NsT4deH~yb=AH=AED}F^qX(ytk-r(eNm7i%e&`y&Y5p!zB6Y<<edC2CuQ!`
zSrHlFZ{<0;jGC2C$Qk*;%O~ZA{OILVvLt_b`2%@1ciPLR<;%J6y?jPKoBPSjXHovm
z%eC|8=fd0%W$BZDy!?@Tap97eKbBuE-0<=_`TWA)Uj9Qqy?DaQf6CIuOLALM*_8vy
zq$_RdNFkB@jQ<LDxQt&U4fIBGUt(w#$rFqpNFqJ_VvJ5@5v{jak1A4f))KrEyoY$U
zF!CYBYq^R4fU_gn$D9`Gk$i)CDlhr&p=|{-mbj0bvL#Qk_8pX_WdsRV%9*pR6P4qi
za+f(qq|~yy@+Q`fSgW>nFtUJr9X~|>GW!-~O};{JAK1KvOdYd>)*d7`eEuTd%d(2+
z+Dy8<9r?HSyg}<DXtgen@w|ukGqk*s8pd|8f?CI(1?q|0YRERVR7A-wj_SidGT*1R
zL@ZU&N}*$Ph%R-P6UiQA>~dBUEjjhmxjp*U4$B2gG1lvPdl#)a=5@Kd7FSYf3FKw;
z+r;G;7{7~_Hriv9RL3UU6Y8PQCfX9}+`zj4(h1u~806f2>Y8^TsYlIBzh$}3kx{9k
z?&6?=)ed)>Q<KTrVGWHdEib|<I<DuwXz`-fGgM>7Q;^)IFZH?ajJj#meM^5y+#Yoz
zR+N@id<u?@=@|#yd5V!4^(-bV-Qc*GNLjQ-6>k~0QIon@Pm8E(+z(u$#an}8_DYZH
zqgAo7otVUoNU0TDjFACl)#+m@ea~^|x(y3z80={CbH-xEz2!bCaV<<%gK^k#kJ7sC
zcBFaEcr^x7O<r@R>c3I)S;Dn~?z(!2iohzd>zJ|Dbi5MAPfFX4drK9!ksn;f8VO^$
zPR{Bu8j^|!HJlf0N2z0G@^+|Um+KnNy^`xJ#tZKHa3&s)zI{e&L>|jZ+wN0($0ZM4
zbJJ+o{WqY0ld-CZb;dlX<B})ia2c_&ivLKWwp?dR*oErX_O&e94%fweGe&z%jbg0U
zEAgv(gYn3~IV34Pvrlazna2vo;|rCY#V$YM{u>qT=H=_M7W`!aGHUo4FK>d6A0oD%
zvlPi)Ja3`C4YpqAX`@Vi8*N*t*YHdz*-qIj=uwW#%SdZ`f0LeJ969psgf^}AwP|5x
z$-Kg5iL<Qj^bU6TNFJd7GP!*l<;UF1C{~ur9b9+zYm*a`L-w{?GIr*ejq;5FX7$-)
zr&q@L^IT_|SDMt`cq7PIn24(Z*|JL>{cnj4Ka&Cj1#8`f#<zgB+G3B~rBYSXjCKuN
zox7fcQipId?$G}WN2NymwwY198zgg{v<c6M)T2XJ-GD7`<5`17Dc99VipM-<lOEC~
zpGIWlVdXSXT)Wgda}I8DZ@HiC#=wir6!-iLG)(QRiQsW5b+S|Wm7jhw<5_vW?JSpa
zbwhVZ^s4NqKHPLWzAjI&X6eO2<1PG_n7>}de+zcpK!nv8Lxpomko_IyD!PH^b8=Lb
z4fG`Ikv(I2Y|L|1&)=x@n{l7Co!le;_ZWpC&RSzEWK6O}{xSRu&t5{@59C*BGLOET
zT2=l1u$hNxsk39YFO)c|C%j^gXJ{IS^h+jhkUP6vVVbXFTE6Ew#wZ%97Fe0d0uPU{
zfcn(`h2lyD#g$`(;_6H&-g{3du2xW7Jw_;An+e7H?+L|g6%?->BNW$WLh<=~LUFBv
z;@Yu5@rh?shT^8zv|V%5J)Vgf`ocMHCu{XqIGG>hTz`?7<am$WJ#*&uN%;*V;M-%4
zf8d#H$c*ac-DKBq661H+?o{4kdcEM+hDTH0u|<t?&Q-g-CjP0fIcbeiZff@*)!uH$
zqnk%DhE(<bF&kp_x8$7lBeTa*Mm?Ql&F;@HD%zWW8w&5*^QOO$9H2GFbHM!#d2icC
zo2|Fc-%%qrsjX$scDLN|NH<MF#<mXs-hek~q^&!K+x}h9ZrGN)<$jlJQ`QK_g)(=H
z{L4kc%y9BPT9n@^a{6mQ@6O0KM|}@`HgSKmFL@6<gMZ*YX5T`UV{Y&ppFY>h@1(2$
z0;adn>i~G#ZO%z-jByyp@$b`4XWHq$FZQB#-uInOr$sT<8GG&f)>hk@q1u`nlv1L#
zlZwQRpr;c18iE62-(m?4PCcNA13ik?{N4O6pZuQWdGZj#-~8?n2mebONQi_Iiit4H
zSO_NqE0IJIO$@Qb5l;e%B#}%Csicuk2HogR4|>vz-t-}pzVxF%SqxwxgBZ*ZhBA!d
zj6g%jz(zK9a&VAK9wQmWX!04uSjOR`fbkUK!p#IGGKtAdVJg!oVmdRJ$t-3whq=sS
zJ_}gLA{MiRr7UAP#gvGN78+^dCWraN4i2!FBeY5wd-%Y14vAST>}MBu_$c8V<s`rO
zNe3r5%|q^UhEi70Oc{?U=K+s+&J&*UjL%f?iWj`(EFOMvkhi?%4PM&$#%@;PV->5Z
zq>5uyvxXY{)DmDV>sZehHn5R8HnEv{u5p|Owy>3LeC0dWImdZ!@Q(KqAy$c$D2bLB
ziIq5smjp?aBuSPOE^v`6T;(p8xXe9va!OLU#cfHGboNPx*;83p<JB#JDxaolg+ZN~
zQuP8uX;bEPX>=|qb)})SDYKP!WscIJ%vJuo=M1W=ySi?z@Oc9M^0JazZ*XL|gWBCD
zSHNH0Ra~8a`~ed{lE`@4J<dA{!axuP;N5H<o0oYPB0|y$+gRG!m^5jEASB=cJb|q?
zmU@<nm3RVg6-OP@&G-MqFb_UlfL~b+vT1wHZ(U!Rsx2VwYDl*@oVz)gYTq&tc?m*o
zK+ns&ked3!K<GBXL>N1Qg)r9yiLjOg8zC122VoZk7vW3^US2+#%WX#XvGiiX1mR~t
za0uwN2-D!Dsa{k^WQdGrBjeA(;54u?NpK-Pj7*V9GcrS_t3NwP)f-vGQ<wk&Q9Y_>
F001ed(;ol;

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/images/gray.png b/WebSites/errors/403/docs/public/images/gray.png
new file mode 100755
index 0000000000000000000000000000000000000000..6eb6669147761f589d64bea10d3d2e6d87082615
GIT binary patch
literal 56906
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
X$aFtydHQxA&FL`IHN8@%;}rQn^>STY

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/docs/public/stylesheets/normalize.css b/WebSites/errors/403/docs/public/stylesheets/normalize.css
new file mode 100755
index 0000000..73abb76
--- /dev/null
+++ b/WebSites/errors/403/docs/public/stylesheets/normalize.css
@@ -0,0 +1,375 @@
+/*! normalize.css v2.0.1 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/*
+ * Corrects `block` display not defined in IE 8/9.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/*
+ * Corrects `inline-block` display not defined in IE 8/9.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+}
+
+/*
+ * Prevents modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/*
+ * Addresses styling for `hidden` attribute not present in IE 8/9.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/*
+ * 1. Sets default font family to sans-serif.
+ * 2. Prevents iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    font-family: sans-serif; /* 1 */
+    -webkit-text-size-adjust: 100%; /* 2 */
+    -ms-text-size-adjust: 100%; /* 2 */
+}
+
+/*
+ * Removes default margin.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/*
+ * Addresses `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/*
+ * Improves readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/*
+ * Addresses `h1` font sizes within `section` and `article` in Firefox 4+,
+ * Safari 5, and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+}
+
+/*
+ * Addresses styling not present in IE 8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/*
+ * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+/*
+ * Addresses styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/*
+ * Addresses styling not present in IE 8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+
+/*
+ * Corrects font family set oddly in Safari 5 and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    font-size: 1em;
+}
+
+/*
+ * Improves readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/*
+ * Sets consistent quote types.
+ */
+
+q {
+    quotes: "\201C" "\201D" "\2018" "\2019";
+}
+
+/*
+ * Addresses inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/*
+ * Prevents `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/*
+ * Removes border when inside `a` element in IE 8/9.
+ */
+
+img {
+    border: 0;
+}
+
+/*
+ * Corrects overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/*
+ * Addresses margin not present in IE 8/9 and Safari 5.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/*
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/*
+ * 1. Corrects color not being inherited in IE 8/9.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0; /* 2 */
+}
+
+/*
+ * 1. Corrects font family not being inherited in all browsers.
+ * 2. Corrects font size not being inherited in all browsers.
+ * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome
+ */
+
+button,
+input,
+select,
+textarea {
+    font-family: inherit; /* 1 */
+    font-size: 100%; /* 2 */
+    margin: 0; /* 3 */
+}
+
+/*
+ * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/*
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Corrects inability to style clickable `input` types in iOS.
+ * 3. Improves usability and consistency of cursor style between image-type
+ *    `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+}
+
+/*
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+input[disabled] {
+    cursor: default;
+}
+
+/*
+ * 1. Addresses box sizing set to `content-box` in IE 8/9.
+ * 2. Removes excess padding in IE 8/9.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+}
+
+/*
+ * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/*
+ * Removes inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/*
+ * Removes inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/*
+ * 1. Removes default vertical scrollbar in IE 8/9.
+ * 2. Improves readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/*
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
\ No newline at end of file
diff --git a/WebSites/errors/403/examples/altGuage.js b/WebSites/errors/403/examples/altGuage.js
new file mode 100644
index 0000000..a747c5d
--- /dev/null
+++ b/WebSites/errors/403/examples/altGuage.js
@@ -0,0 +1,109 @@
+window.dyngaugeID = 0;
+(function() {    
+        var dynamicGaugeWidget = function (settings) {
+        var self = this;
+        thisDynGaugeID = "dyngauge-" + window.dyngaugeID++;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var gaugeElement = $('<div id="' + thisDynGaugeID + '"></div>');
+
+        var gaugeObject;
+        var rendered = false;
+
+        var currentSettings = settings;
+
+        function createGauge() {
+            if (!rendered) {
+                return;
+            }
+
+            gaugeElement.empty();
+
+            gaugeObject = new JustGage({
+                id: thisDynGaugeID,
+                value: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                min: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                max: (_.isUndefined(currentSettings.max_value) ? 0 : currentSettings.max_value),
+                label: currentSettings.units,
+                showInnerShadow: false,
+                valueFontColor: "#d3d4d4",
+                levelColors: ['#ff0000', '#ffa500','#ffa500','#ffff00', '#00ff00']
+            });
+        }
+
+        this.render = function (element) {
+            rendered = true;
+            $(element).append(titleElement).append($('<div class="gauge-widget-wrapper"></div>').append(gaugeElement));
+            createGauge();
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            if (newSettings.min_value != currentSettings.min_value || newSettings.max_value != currentSettings.max_value || newSettings.units != currentSettings.units) {
+                currentSettings = newSettings;
+                createGauge();
+            }
+            else {
+                currentSettings = newSettings;
+            }
+
+            titleElement.html(newSettings.title);
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (!_.isUndefined(gaugeObject)) {
+                gaugeObject.refresh(Number(newValue));
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 3;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "dyngauge",
+        display_name: "DynamicGauge",
+        "external_scripts" : [
+            "plugins/thirdparty/raphael.2.1.0.min.js",
+            "plugins/thirdparty/justgage.1.0.1.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated"
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            },
+            {
+                name: "min_value",
+                display_name: "Minimum",
+                type: "text",
+                default_value: 0
+            },
+            {
+                name: "max_value",
+                display_name: "Maximum",
+                type: "text",
+                default_value: 100
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new dynamicGaugeWidget(settings));
+        }
+    });
+    
+}());
+
diff --git a/WebSites/errors/403/examples/plugin_example.js b/WebSites/errors/403/examples/plugin_example.js
new file mode 100755
index 0000000..aa3cf2a
--- /dev/null
+++ b/WebSites/errors/403/examples/plugin_example.js
@@ -0,0 +1,298 @@
+// # Building a Freeboard Plugin
+//
+// A freeboard plugin is simply a javascript file that is loaded into a web page after the main freeboard.js file is loaded.
+//
+// Let's get started with an example of a datasource plugin and a widget plugin.
+//
+// -------------------
+
+// Best to encapsulate your plugin in a closure, although not required.
+(function()
+{
+	// ## A Datasource Plugin
+	//
+	// -------------------
+	// ### Datasource Definition
+	//
+	// -------------------
+	// **freeboard.loadDatasourcePlugin(definition)** tells freeboard that we are giving it a datasource plugin. It expects an object with the following:
+	freeboard.loadDatasourcePlugin({
+		// **type_name** (required) : A unique name for this plugin. This name should be as unique as possible to avoid collisions with other plugins, and should follow naming conventions for javascript variable and function declarations.
+		"type_name"   : "my_datasource_plugin",
+		// **display_name** : The pretty name that will be used for display purposes for this plugin. If the name is not defined, type_name will be used instead.
+		"display_name": "Datasource Plugin Example",
+        // **description** : A description of the plugin. This description will be displayed when the plugin is selected or within search results (in the future). The description may contain HTML if needed.
+        "description" : "Some sort of description <strong>with optional html!</strong>",
+		// **external_scripts** : Any external scripts that should be loaded before the plugin instance is created.
+		"external_scripts" : [
+			"http://mydomain.com/myscript1.js",
+		    "http://mydomain.com/myscript2.js"
+		],
+		// **settings** : An array of settings that will be displayed for this plugin when the user adds it.
+		"settings"    : [
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "first_name",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "First Name",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "John",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "This is pretty self explanatory...",
+                // **required** : If set to true, the field will be required to be filled in by the user. Defaults to false if not specified.
+                "required" : true
+			},
+			{
+				"name"        : "last_name",
+				"display_name": "Last Name",
+				// **type "calculated"** : This is a special text input box that may contain javascript formulas and references to datasources in the freeboard.
+				"type"        : "calculated"
+			},
+            {
+                "name"        : "age",
+                "display_name": "Age",
+                // **type "number"** : A data of a numerical type. Requires the user to enter a numerical value
+                "type"        : "number"
+            },
+			{
+				"name"        : "is_human",
+				"display_name": "I am human",
+				// **type "boolean"** : Will display a checkbox indicating a true/false setting.
+				"type"        : "boolean"
+			},
+			{
+				"name"        : "age",
+				"display_name": "Your age",
+				// **type "option"** : Will display a dropdown box with a list of choices.
+				"type"        : "option",
+				// **options** (required) : An array of options to be populated in the dropdown.
+				"options"     : [
+					{
+						// **name** (required) : The text to be displayed in the dropdown.
+						"name" : "0-50",
+						// **value** : The value of the option. If not specified, the name parameter will be used.
+						"value": "young"
+					},
+					{
+						"name" : "51-100",
+						"value": "old"
+					}
+				]
+			},
+			{
+				"name"        : "other",
+				"display_name": "Other attributes",
+				// **type "array"** : Will allow a user to enter in rows of data.
+				"type"        : "array",
+				// **settings** (required) : An array of columns of the text to be entered by the user.
+				"settings"    : [
+					{
+						"name"        : "name",
+						"display_name": "Name",
+						"type"        : "text"
+					},
+					{
+						"name"        : "value",
+						"display_name": "Value",
+						"type"        : "text"
+					}
+				]
+			},
+			{
+				"name"         : "refresh_time",
+				"display_name" : "Refresh Time",
+				"type"         : "text",
+				"description"  : "In milliseconds",
+				"default_value": 5000
+			}
+		],
+		// **newInstance(settings, newInstanceCallback, updateCallback)** (required) : A function that will be called when a new instance of this plugin is requested.
+		// * **settings** : A javascript object with the initial settings set by the user. The names of the properties in the object will correspond to the setting names defined above.
+		// * **newInstanceCallback** : A callback function that you'll call when the new instance of the plugin is ready. This function expects a single argument, which is the new instance of your plugin object.
+		// * **updateCallback** : A callback function that you'll call if and when your datasource has an update for freeboard to recalculate. This function expects a single parameter which is a javascript object with the new, updated data. You should hold on to this reference and call it when needed.
+		newInstance   : function(settings, newInstanceCallback, updateCallback)
+		{
+			// myDatasourcePlugin is defined below.
+			newInstanceCallback(new myDatasourcePlugin(settings, updateCallback));
+		}
+	});
+
+
+	// ### Datasource Implementation
+	//
+	// -------------------
+	// Here we implement the actual datasource plugin. We pass in the settings and updateCallback.
+	var myDatasourcePlugin = function(settings, updateCallback)
+	{
+		// Always a good idea...
+		var self = this;
+
+		// Good idea to create a variable to hold on to our settings, because they might change in the future. See below.
+		var currentSettings = settings;
+
+		/* This is some function where I'll get my data from somewhere */
+		function getData()
+		{
+			var newData = { hello : "world! it's " + new Date().toLocaleTimeString() }; // Just putting some sample data in for fun.
+
+			/* Get my data from somewhere and populate newData with it... Probably a JSON API or something. */
+			/* ... */
+
+			// I'm calling updateCallback to tell it I've got new data for it to munch on.
+			updateCallback(newData);
+		}
+
+		// You'll probably want to implement some sort of timer to refresh your data every so often.
+		var refreshTimer;
+
+		function createRefreshTimer(interval)
+		{
+			if(refreshTimer)
+			{
+				clearInterval(refreshTimer);
+			}
+
+			refreshTimer = setInterval(function()
+			{
+				// Here we call our getData function to update freeboard with new data.
+				getData();
+			}, interval);
+		}
+
+		// **onSettingsChanged(newSettings)** (required) : A public function we must implement that will be called when a user makes a change to the settings.
+		self.onSettingsChanged = function(newSettings)
+		{
+			// Here we update our current settings with the variable that is passed in.
+			currentSettings = newSettings;
+		}
+
+		// **updateNow()** (required) : A public function we must implement that will be called when the user wants to manually refresh the datasource
+		self.updateNow = function()
+		{
+			// Most likely I'll just call getData() here.
+			getData();
+		}
+
+		// **onDispose()** (required) : A public function we must implement that will be called when this instance of this plugin is no longer needed. Do anything you need to cleanup after yourself here.
+		self.onDispose = function()
+		{
+			// Probably a good idea to get rid of our timer.
+			clearInterval(refreshTimer);
+			refreshTimer = undefined;
+		}
+
+		// Here we call createRefreshTimer with our current settings, to kick things off, initially. Notice how we make use of one of the user defined settings that we setup earlier.
+		createRefreshTimer(currentSettings.refresh_time);
+	}
+
+
+	// ## A Widget Plugin
+	//
+	// -------------------
+	// ### Widget Definition
+	//
+	// -------------------
+	// **freeboard.loadWidgetPlugin(definition)** tells freeboard that we are giving it a widget plugin. It expects an object with the following:
+	freeboard.loadWidgetPlugin({
+		// Same stuff here as with datasource plugin.
+		"type_name"   : "my_widget_plugin",
+		"display_name": "Widget Plugin Example",
+        "description" : "Some sort of description <strong>with optional html!</strong>",
+		// **external_scripts** : Any external scripts that should be loaded before the plugin instance is created.
+		"external_scripts": [
+			"http://mydomain.com/myscript1.js", "http://mydomain.com/myscript2.js"
+		],
+		// **fill_size** : If this is set to true, the widget will fill be allowed to fill the entire space given it, otherwise it will contain an automatic padding of around 10 pixels around it.
+		"fill_size" : false,
+		"settings"    : [
+			{
+				"name"        : "the_text",
+				"display_name": "Some Text",
+				// We'll use a calculated setting because we want what's displayed in this widget to be dynamic based on something changing (like a datasource).
+				"type"        : "calculated"
+			},
+			{
+				"name"        : "size",
+				"display_name": "Size",
+				"type"        : "option",
+				"options"     : [
+					{
+						"name" : "Regular",
+						"value": "regular"
+					},
+					{
+						"name" : "Big",
+						"value": "big"
+					}
+				]
+			}
+		],
+		// Same as with datasource plugin, but there is no updateCallback parameter in this case.
+		newInstance   : function(settings, newInstanceCallback)
+		{
+			newInstanceCallback(new myWidgetPlugin(settings));
+		}
+	});
+
+	// ### Widget Implementation
+	//
+	// -------------------
+	// Here we implement the actual widget plugin. We pass in the settings;
+	var myWidgetPlugin = function(settings)
+	{
+		var self = this;
+		var currentSettings = settings;
+
+		// Here we create an element to hold the text we're going to display. We're going to set the value displayed in it below.
+		var myTextElement = $("<span></span>");
+
+		// **render(containerElement)** (required) : A public function we must implement that will be called when freeboard wants us to render the contents of our widget. The container element is the DIV that will surround the widget.
+		self.render = function(containerElement)
+		{
+			// Here we append our text element to the widget container element.
+			$(containerElement).append(myTextElement);
+		}
+
+		// **getHeight()** (required) : A public function we must implement that will be called when freeboard wants to know how big we expect to be when we render, and returns a height. This function will be called any time a user updates their settings (including the first time they create the widget).
+		//
+		// Note here that the height is not in pixels, but in blocks. A block in freeboard is currently defined as a rectangle that is fixed at 300 pixels wide and around 45 pixels multiplied by the value you return here.
+		//
+		// Blocks of different sizes may be supported in the future.
+		self.getHeight = function()
+		{
+			if(currentSettings.size == "big")
+			{
+				return 2;
+			}
+			else
+			{
+				return 1;
+			}
+		}
+
+		// **onSettingsChanged(newSettings)** (required) : A public function we must implement that will be called when a user makes a change to the settings.
+		self.onSettingsChanged = function(newSettings)
+		{
+			// Normally we'd update our text element with the value we defined in the user settings above (the_text), but there is a special case for settings that are of type **"calculated"** -- see below.
+			currentSettings = newSettings;
+		}
+
+		// **onCalculatedValueChanged(settingName, newValue)** (required) : A public function we must implement that will be called when a calculated value changes. Since calculated values can change at any time (like when a datasource is updated) we handle them in a special callback function here.
+		self.onCalculatedValueChanged = function(settingName, newValue)
+		{
+			// Remember we defined "the_text" up above in our settings.
+			if(settingName == "the_text")
+			{
+				// Here we do the actual update of the value that's displayed in on the screen.
+				$(myTextElement).html(newValue);
+			}
+		}
+
+		// **onDispose()** (required) : Same as with datasource plugins.
+		self.onDispose = function()
+		{
+		}
+	}
+}());
\ No newline at end of file
diff --git a/WebSites/errors/403/examples/rl78.json b/WebSites/errors/403/examples/rl78.json
new file mode 100755
index 0000000..5c9b547
--- /dev/null
+++ b/WebSites/errors/403/examples/rl78.json
@@ -0,0 +1,168 @@
+{
+	"allow_edit"   : true,
+	"header_image" : "https://raw.github.com/Freeboard/branding/master/renesas/renesas_logo.png",
+	"panes": [
+	{
+		"title"  : "Tilt",
+		"width"  : 1,
+		"row"    : { "3": 1 },
+		"col"    : { "3": 1 },
+		"widgets": [
+			{
+				"type"    : "pointer",
+				"settings": {
+					"direction" : "datasources.RL78.Acceleration_X * -90",
+					"value_text": "(datasources.RL78.Acceleration_X * -90).toFixed(0)",
+					"units"     : "degrees"
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"    : "Y",
+					"size"     : "regular",
+					"value"    : "(datasources.RL78.Acceleration_Y * 90).toFixed(0)",
+					"sparkline": true,
+					"animate"  : true,
+					"units"    : "&deg;"
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"    : "Z",
+					"size"     : "regular",
+					"value"    : "(datasources.RL78.Acceleration_Z * -90).toFixed(0)",
+					"sparkline": true,
+					"animate"  : true,
+					"units"    : "&deg;"
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Buttons",
+		"width"  : 1,
+		"row"    : { "3": 5 },
+		"col"    : { "3": 3 },
+		"widgets": [
+			{
+				"type"    : "indicator",
+				"settings": {
+					"value"   : "datasources.RL78.Button_1",
+					"on_text" : "Button 1 is ON",
+					"off_text": "Button 1 is OFF"
+				}
+			},
+			{
+				"type"    : "indicator",
+				"settings": {
+					"value"   : "datasources.RL78.Button_2",
+					"on_text" : "Button 2 is ON",
+					"off_text": "Button 2 is OFF"
+				}
+			},
+			{
+				"type"    : "indicator",
+				"settings": {
+					"value"   : "datasources.RL78.Button_3",
+					"on_text" : "Button 3 is ON",
+					"off_text": "Button 3 is OFF"
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Temperature",
+		"width"  : 1,
+		"row"    : { "3": 1 },
+		"col"    : { "3": 2 },
+		"widgets": [
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"    : "Indoor",
+					"size"     : "big",
+					"value"    : "datasources.RL78.Temperature",
+					"sparkline": false,
+					"animate"  : true,
+					"units"    : "&deg;F"
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "Outdoor",
+					"size"   : "big",
+					"value"  : "((datasources.Weather.main.temp - 273.15) * 1.8 + 32).toFixed(2)",
+					"animate": true,
+					"units"  : "&deg;F"
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Potentiometer",
+		"width"  : 1,
+		"row"    : { "3": 1 },
+		"col"    : { "3": 3 },
+		"widgets": [
+			{
+				"type"    : "gauge",
+				"settings": {
+					"title"    : "",
+					"value"    : "datasources.RL78.Potentiometer",
+					"units"    : "Ω",
+					"min_value": 0,
+					"max_value": "1000"
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Miscellaneous",
+		"width"  : 1,
+		"row"    : { "3": 6 },
+		"col"    : { "3": 2 },
+		"widgets": [
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"    : "Light",
+					"size"     : "regular",
+					"value"    : "datasources.RL78.Light",
+					"sparkline": true,
+					"animate"  : true
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"    : "Sound",
+					"size"     : "regular",
+					"value"    : "datasources.RL78.Sound",
+					"sparkline": true,
+					"animate"  : true
+				}
+			}
+		]
+	}
+],
+	"datasources": [
+	{
+		"name"    : "RL78",
+		"type"    : "rl78",
+		"settings": {
+			"device_resource_id": "14f762c59815e24973165668aff677659b973d62"
+		}
+	},
+	{
+		"name"    : "Weather",
+		"type"    : "JSON",
+		"settings": {
+			"url"     : "http://api.openweathermap.org/data/2.5/weather?q=Seattle,WA",
+			"refresh" : 5,
+			"is_jsonp": true
+		}
+	}
+]}
\ No newline at end of file
diff --git a/WebSites/errors/403/examples/weather.json b/WebSites/errors/403/examples/weather.json
new file mode 100755
index 0000000..771c3a4
--- /dev/null
+++ b/WebSites/errors/403/examples/weather.json
@@ -0,0 +1,164 @@
+{
+	"header_image" : "",
+	"allow_edit"   : true,
+	"panes": [
+	{
+		"title"  : "Wind",
+		"width"  : 1,
+		"row"    : { "3" :1 },
+		"col"    : { "3": 2 },
+		"widgets": [
+			{
+				"type"    : "pointer",
+				"settings": {
+					"direction" : "datasources.Weather.wind_direction",
+					"value_text": "var dir = datasources.Weather.wind_direction;\n\nif(dir <= 22.5)\nreturn \"N\";\nelse if(dir <= 67.5)\nreturn \"NE\";\nelse if(dir <= 112.5)\nreturn \"E\";\nelse if(dir <= 157.5)\nreturn \"SE\";\nelse if(dir <= 202.5)\nreturn \"S\";\nelse if(dir <= 247.5)\nreturn \"SW\";\nelse if(dir <= 292.5)\nreturn \"W\";\nelse if(dir <= 337.5)\nreturn \"NW\";\nelse if(dir <= 360)\nreturn \"N\";"
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"size"     : "regular",
+					"value"    : "datasources.Weather.wind_speed",
+					"sparkline": true,
+					"animate"  : true,
+					"units"    : "MPH"
+				}
+			}
+		]
+	},
+	{
+		"width"  : 1,
+		"row"    : { "3": 5},
+		"col"    : { "3": 3},
+		"widgets": [
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "Sunrise",
+					"size"   : "regular",
+					"value"  : "datasources.Weather.sunrise",
+					"animate": true
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "Sunset",
+					"size"   : "regular",
+					"value"  : "datasources.Weather.sunset",
+					"animate": true
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Temperature",
+		"width"  : 1,
+		"row"    : { "3": 4 },
+		"col"    : { "3": 1 },
+		"widgets": [
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "Current",
+					"size"   : "big",
+					"value"  : "datasources.Weather.current_temp",
+					"animate": true,
+					"units"  : "&deg;F"
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "High",
+					"size"   : "regular",
+					"value"  : "datasources.Weather.high_temp",
+					"animate": true,
+					"units"  : "&deg;F"
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "Low",
+					"size"   : "regular",
+					"value"  : "datasources.Weather.low_temp",
+					"animate": true,
+					"units"  : "&deg;F"
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Info",
+		"width"  : 1,
+		"row"    : { "3": 1 },
+		"col"    : { "3": 1 },
+		"widgets": [
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "City",
+					"size"   : "regular",
+					"value"  : "datasources.Weather.place_name",
+					"animate": true
+				}
+			},
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"title"  : "Conditions",
+					"size"   : "regular",
+					"value"  : "datasources.Weather.conditions",
+					"animate": true
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Humidity",
+		"width"  : 1,
+		"row"    : { "3": 1 },
+		"col"    : { "3": 3 },
+		"widgets": [
+			{
+				"type"    : "gauge",
+				"settings": {
+					"value"    : "datasources.Weather.humidity",
+					"units"    : "%",
+					"min_value": 0,
+					"max_value": 100
+				}
+			}
+		]
+	},
+	{
+		"title"  : "Pressure",
+		"width"  : 1,
+		"row"    : { "3": 7 },
+		"col"    : { "3": 2 },
+		"widgets": [
+			{
+				"type"    : "text_widget",
+				"settings": {
+					"size"     : "regular",
+					"value"    : "datasources.Weather.pressure",
+					"sparkline": true,
+					"animate"  : true,
+					"units"    : "mb"
+				}
+			}
+		]
+	}
+], "datasources": [
+	{
+		"name"    : "Weather",
+		"type"    : "openweathermap",
+		"settings": {
+			"location": "New York, NY",
+			"units"   : "imperial",
+			"refresh" : 5
+		}
+	}
+]}
\ No newline at end of file
diff --git a/WebSites/errors/403/favicon.png b/WebSites/errors/403/favicon.png
new file mode 100755
index 0000000000000000000000000000000000000000..b5a6b9d535e52c59fe1a773df34630c1720f80dd
GIT binary patch
literal 558
zcmV+}0@3}6P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm0001^
z0001^0r1C~&Hw-b;7LS5R9J=WmLW((Q51&HWX&075$gn-24^veGMlipfoL%}4VDSw
ziilbiVFr^kn1(QuU~>p2(+t`K7ZnW}#60;fJCFPBdxCA{{_uG3-Tn8R|D5yR#}YDA
z=tvLI*URL<3-AKG052fvE|lhTa=K9ptzF*T%i+b9w4U3+T4s1iwifb|%Z{1n_S?JE
zuA7Eu<6vdc#7qzLoBdqyG*(1Fb~F=FS(u)Z+{CyH=9dG`&C#|AY6~J+I+c>jS>3Gh
zjz~K;7XlQK5l|6Wt=1$lTa?MQig_m)zj1Hul!J;81y3udTIFl<xy^mU;o{luWJmy;
zs01j<CTlm~e0~3zVBA6T;W3EecCy)eihYg<pv{1wn%EB1e*Fk4q>Y+94saEWOAB)m
z5}?U6In}5kQI64+qZPY*wL-Xz5s{4UrG8>O@h<^v=-f8s^XlBJ5d>rX)mG__Mx2q+
zrIDrez;t-RHF<ahT>~me%w{!??Rs~g2Ik1RG3bQCjghp2C~#{W?3q(B$w;iNr7H;4
zc{2vPJ8p+U0^AwKK|dsLIf^3XP~hTT)jZQ`HLDGds%zX}1bPBobGaz)9*5dYmH5Lx
wl8B)YeOHctpltX*rCxv+;01UAy%iuLzljR=m4ygf@Bjb+07*qoM6N<$f_mrxD*ylh

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-200.eot b/WebSites/errors/403/fonts/titillium-web-v7-latin-200.eot
new file mode 100644
index 0000000000000000000000000000000000000000..42aa4ebfc99ddbbf45750259088b3b3f1235468e
GIT binary patch
literal 14535
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
C4GWh5

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-200.svg b/WebSites/errors/403/fonts/titillium-web-v7-latin-200.svg
new file mode 100644
index 0000000..df28c2d
--- /dev/null
+++ b/WebSites/errors/403/fonts/titillium-web-v7-latin-200.svg
@@ -0,0 +1,291 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<defs >
+<font id="TitilliumWeb" horiz-adv-x="485" ><font-face
+    font-family="Titillium Web ExtraLight"
+    units-per-em="1000"
+    panose-1="0 0 3 0 0 0 0 0 0 0"
+    ascent="1133"
+    descent="-388"
+    alphabetic="0" />
+<glyph unicode=" " glyph-name="space" horiz-adv-x="220" />
+<glyph unicode="!" glyph-name="exclam" horiz-adv-x="225" d="M93 0V80H133V0H93ZM95 214V700H130V214H95Z" />
+<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="348" d="M271 490H238L235 700H274L271 490ZM110 490H77L74 700H113L110 490Z" />
+<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="560" d="M530 190H410V0H374V190H186V0H150V190H30V222H150V448H30V480H150V670H186V480H374V670H410V480H530V448H410V222H530V190ZM374 222V448H186V222H374Z" />
+<glyph unicode="$" glyph-name="dollar" horiz-adv-x="560" d="M484 191Q484 84 435 39T285 -7Q270 -7 261 -6L247 -120Q212 -117 212 -113L226 -5L83 8L87 41Q164 31 230 27L269 326Q167 342 124 376T80 503Q80 669 283 669Q303 669 314 668L330 790H365L349
+666L470 654L466 621Q401 629 344 633L308 355Q402 339 443 305T484 191ZM115 505Q115 429 150 402T273 360L310 636Q299 637 283 637Q115 637 115 505ZM284 25Q449 25 449 178Q449 253 417 280T304 321L265 25H284Z" />
+<glyph unicode="%" glyph-name="percent" horiz-adv-x="560" d="M175 -1L360 669L392 660L206 -9L175 -1ZM38 669T141 669T244 535Q244 466 216 432T141 397T66 431T38 536Q38 669 141 669ZM73 536Q73 429 141 429T209 535Q209 587 194 612T142 637T89 612T73
+536ZM317 263T420 263T523 129Q523 60 495 26T420 -9T345 25T317 130Q317 263 420 263ZM352 130Q352 23 420 23T488 129Q488 181 473 206T421 231T368 206T352 130Z" />
+<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="680" d="M159 615T198 654T313 694T427 655T465 547T427 437T300 367L487 182Q498 212 508 268T522 367H557Q546 237 514 156L654 19L630 -7L499 123Q433 -9 277 -9Q151 -9 99 46T47 199T85 340T210
+409Q178 444 169 474T159 550Q159 615 198 654ZM279 24Q416 24 473 148L236 383Q150 360 116 323T82 201T128 70T279 24ZM194 550Q194 472 239 427L275 391Q362 421 396 454T430 550Q430 662 312 662T194 550Z" />
+<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="187" d="M76 490L74 700H114L109 490H76Z" />
+<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="234" d="M96 385T96 302T120 112T168 -60L191 -125H156Q145 -100 129 -57T86 99T59 301T83 502T132 682L156 750H191Q157 661 127 523Z" />
+<glyph unicode=")" glyph-name="parenright" horiz-adv-x="234" d="M176 390T176 301T152 106T104 -63L79 -125H44Q78 -41 108 88T139 301T116 497T68 680L44 750H79Q90 722 106 675T149 509Z" />
+<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="417" d="M362 519H225L267 390L235 380L193 510L83 431L64 458L174 538L65 618L85 645L195 564L237 693L269 683L227 553H362V519Z" />
+<glyph unicode="+" glyph-name="plus" horiz-adv-x="560" d="M59 234V268H261V480H297V268H501V234H297V20H261V234H59Z" />
+<glyph unicode="," glyph-name="comma" horiz-adv-x="197" d="M44 -123L86 87H126L75 -123H44Z" />
+<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="458" d="M76 264V298H383V264H76Z" />
+<glyph unicode="." glyph-name="period" horiz-adv-x="190" d="M75 0V80H115V0H75Z" />
+<glyph unicode="/" glyph-name="slash" horiz-adv-x="376" d="M33 12L310 702L343 688L66 -1L33 12Z" />
+<glyph unicode="0" glyph-name="zero" horiz-adv-x="560" d="M142 639T182 654T280 670T378 655T450 600Q510 526 510 316Q510 130 448 58Q417 22 377 7T280 -9T184 6T112 56Q49 127 49 315Q49 524 110 600Q142 639 182 654ZM428 584T388 610T280 636T172 610Q87
+556 87 314Q87 143 139 81Q165 50 198 38T288 25T384 47T448 135T472 321T450 513Z" />
+<glyph unicode="1" glyph-name="one" horiz-adv-x="560" d="M369 660V0H333V621L146 495L129 524L333 660H369Z" />
+<glyph unicode="2" glyph-name="two" horiz-adv-x="560" d="M490 0H72V31L299 273Q348 325 371 352T412 419T431 500Q431 573 390 604T263 635Q195 635 111 616L83 609L78 643Q171 669 268 669T417 630T469 500Q469 433 439 384T338 261L121 32H490V0Z" />
+<glyph unicode="3" glyph-name="three" horiz-adv-x="560" d="M79 648Q174 670 277 670T426 631T472 505Q472 470 461 442T433 398T400 371Q371 353 359 353Q424 336 457 300T491 174Q491 -9 283 -9Q194 -9 96 8L66 14L72 48Q177 25 283 25Q453 26 453 179Q453
+261 410 294T291 332H157V366H290Q339 366 386 403T434 508T399 606T275 636T110 620L85 614L79 648Z" />
+<glyph unicode="4" glyph-name="four" horiz-adv-x="560" d="M387 0V142H40V172L245 660H284L83 176H387V395H423V176H521V142H423V0H387Z" />
+<glyph unicode="5" glyph-name="five" horiz-adv-x="560" d="M468 660V624H130L112 361Q146 381 198 396T291 412Q499 412 499 220Q499 107 442 50T281 -7Q192 -7 102 11L72 17L77 51Q187 27 275 27T412 77T461 220Q461 378 290 378Q250 378 206 364T136 336L111
+323L77 327L96 660H468Z" />
+<glyph unicode="6" glyph-name="six" horiz-adv-x="560" d="M472 626Q390 635 299 635T153 565T98 358L126 370Q155 381 203 393T290 406Q508 406 508 208Q508 105 451 48T284 -9Q60 -9 60 337Q60 505 125 587T306 669Q380 669 452 662L476 659L472 626ZM289 372Q248
+372 200 360T124 336L97 323Q102 25 284 25Q375 25 422 72T470 204T423 331T289 372Z" />
+<glyph unicode="7" glyph-name="seven" horiz-adv-x="560" d="M83 626V660H485V595L217 -9L182 5L447 603V626H83Z" />
+<glyph unicode="8" glyph-name="eight" horiz-adv-x="560" d="M278 670Q389 670 452 630T515 505Q515 440 482 404T379 348Q449 328 487 290T525 179Q525 75 459 33T281 -9T102 32T34 168Q34 244 67 282T169 348Q107 370 76 406T45 506Q45 670 278 670ZM278 25Q376
+25 431 59T487 178Q487 255 440 286Q415 303 392 311T331 330H214Q144 313 109 277T73 169Q73 25 278 25ZM476 574T425 605T279 636T133 606T83 511T114 414T214 363H331Q404 380 440 413T476 510Z" />
+<glyph unicode="9" glyph-name="nine" horiz-adv-x="560" d="M247 25Q354 25 407 91T461 300Q347 256 259 256Q50 256 50 451Q50 551 110 610T270 669Q387 669 443 579T499 316T436 67T247 -9Q165 -9 101 -1L77 2L81 35Q163 25 247 25ZM261 290Q296 290 346 301T430
+324L462 335Q455 635 270 635Q186 635 137 585T88 451T131 329T261 290Z" />
+<glyph unicode=":" glyph-name="colon" horiz-adv-x="191" d="M75 344V424H115V344H75ZM75 0V80H115V0H75Z" />
+<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="228" d="M103 87H145L93 -123H62L103 87ZM100 344V424H140V344H100Z" />
+<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="560" d="M481 446L90 251L481 56V15L57 233V269L481 485V446Z" />
+<glyph unicode="=" glyph-name="equal" horiz-adv-x="560" d="M68 318V352H492V318H68ZM68 149V183H492V149H68Z" />
+<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="560" d="M469 251L78 446V485L502 269V233L78 15V56L469 251Z" />
+<glyph unicode="?" glyph-name="question" horiz-adv-x="453" d="M407 551Q407 490 389 458T321 382T256 323T224 281T208 228V190H174Q173 212 173 233T181 275T208 320Q238 353 287 397T354 471T372 551Q372 620 332 648T207 676Q164 676 76 655L46 648L41 682Q153
+709 207 709Q306 709 356 673T407 551ZM171 1V81H211V1H171Z" />
+<glyph unicode="@" glyph-name="at" horiz-adv-x="979" d="M925 305V288Q925 109 890 50Q878 28 867 17T836 -1Q806 -10 771 -10T714 -4T682 12Q660 33 655 53Q614 29 557 10T470 -9T422 -7T378 10T336 49T308 124T295 243Q295 379 341 444T505 509Q558 509 616
+489L637 482V500H672V300Q672 100 686 64Q691 50 702 38T728 23T768 20T807 23T840 40T867 82Q888 146 888 288V306Q888 507 800 597T502 687T194 591T97 261Q97 137 121 54T197 -77T323 -146T504 -167L647 -157L650 -190Q552 -199 504 -199Q388 -199 309 -178T172
+-104Q60 -5 60 251T168 613T503 719T827 620T925 305ZM399 36T418 30T466 23T541 38T618 68L648 83Q637 197 637 300V450Q564 477 505 477Q404 477 367 420T330 240Q330 99 377 56Q399 36 418 30Z" />
+<glyph unicode="A" glyph-name="A" horiz-adv-x="592" d="M28 0L243 700H349L564 0H528L463 215H129L64 0H28ZM268 666L140 249H452L324 666H268Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="620" d="M92 700H332Q534 700 534 527Q534 397 437 361Q561 327 561 193Q561 85 508 43T351 0H92V700ZM343 341H128V34H351Q434 34 479 69T524 193Q524 341 343 341ZM332 666H128V375H343Q424 375 460 412T497
+524T457 632T332 666Z" />
+<glyph unicode="C" glyph-name="C" horiz-adv-x="545" d="M501 11Q401 -9 321 -9T191 14T114 87T77 197T67 338T72 469T93 568T136 645Q196 709 316 709Q404 709 501 690L498 655Q402 675 332 675T222 659T161 618T126 548T109 458T105 347T109 236T126 148T162
+80Q213 25 316 25Q394 25 498 45L501 11Z" />
+<glyph unicode="D" glyph-name="D" horiz-adv-x="649" d="M352 0H92V700H352Q416 700 462 672T535 595T574 487T586 358T574 227T535 114T462 31T352 0ZM528 189T538 243T548 369T532 505T469 618T352 666H128V34H352Q406 34 445 63T506 140Z" />
+<glyph unicode="E" glyph-name="E" horiz-adv-x="552" d="M92 0V700H501V666H128V375H441V341H128V34H501V0H92Z" />
+<glyph unicode="F" glyph-name="F" horiz-adv-x="523" d="M92 0V700H493V666H128V350H442V316H128V0H92Z" />
+<glyph unicode="G" glyph-name="G" horiz-adv-x="619" d="M361 313V347H547V16Q418 -9 327 -9Q180 -9 123 80T65 347Q65 434 76 496T116 609Q172 709 327 709Q416 709 516 690L547 684L544 649Q418 675 338 675T213 653T145 585T112 484T103 348T112 212T146 112Q193
+25 327 25Q401 25 511 45V313H361Z" />
+<glyph unicode="H" glyph-name="H" horiz-adv-x="674" d="M546 0V334H128V0H92V700H128V368H546V700H582V0H546Z" />
+<glyph unicode="I" glyph-name="I" horiz-adv-x="220" d="M92 0V700H128V0H92Z" />
+<glyph unicode="J" glyph-name="J" horiz-adv-x="280" d="M191 700V81Q191 3 172 -26Q161 -43 150 -52T116 -66Q82 -73 18 -73V-39Q115 -39 131 -22Q151 0 153 30T155 96V700H191Z" />
+<glyph unicode="K" glyph-name="K" horiz-adv-x="553" d="M128 329V0H92V700H128V363H257L477 700H520L289 348L536 0H490L259 329H128Z" />
+<glyph unicode="L" glyph-name="L" horiz-adv-x="483" d="M469 0H92V700H128V34H469V0Z" />
+<glyph unicode="M" glyph-name="M" horiz-adv-x="828" d="M92 0V700H168L414 55L660 700H736V0H700V666H686L440 21H388L142 666H128V0H92Z" />
+<glyph unicode="N" glyph-name="N" horiz-adv-x="665" d="M92 0V700H177L510 34H537V700H573V0H488L154 666H128V0H92Z" />
+<glyph unicode="O" glyph-name="O" horiz-adv-x="666" d="M170 65T216 45T333 25T450 43T520 104T554 203T563 347Q563 515 515 595T333 675Q194 675 146 588Q122 544 113 488T103 347T112 207T145 109ZM118 82Q88 130 77 192T65 347Q65 531 123 620T333 709T543
+621T601 344T545 74T331 -9T118 82Z" />
+<glyph unicode="P" glyph-name="P" horiz-adv-x="595" d="M347 257H128V0H92V700H347Q455 700 504 648T554 485Q554 257 347 257ZM128 291H347Q516 291 516 485Q516 577 476 621T347 666H128V291Z" />
+<glyph unicode="Q" glyph-name="Q" horiz-adv-x="666" d="M443 5Q395 -9 324 -9T200 13T118 82T77 192T65 347Q65 531 123 620T333 709T543 621T601 347Q601 210 575 132T480 19L566 -121L530 -138L443 5ZM170 65T216 45T333 25T450 43T520 104T554 203T563 347Q563
+515 515 595T333 675Q194 675 146 588Q122 544 113 488T103 347T112 207T145 109Z" />
+<glyph unicode="R" glyph-name="R" horiz-adv-x="613" d="M128 290V0H92V700H343Q449 700 500 652T551 500Q551 323 406 295L564 0H523L367 290H128ZM513 500Q513 587 472 626T343 666H128V324H343Q513 324 513 500Z" />
+<glyph unicode="S" glyph-name="S" horiz-adv-x="540" d="M272 677Q94 677 94 537Q94 474 115 446Q127 431 140 421T178 402Q219 390 282 380Q391 363 438 328T486 203Q486 90 434 42T274 -7Q208 -7 97 5L60 9L64 44Q202 27 282 27Q448 27 448 200Q448 273 410
+301T293 341T180 362T115 392T70 446T56 535Q56 711 272 711Q341 711 438 699L471 695L467 660Q330 677 272 677Z" />
+<glyph unicode="T" glyph-name="T" horiz-adv-x="526" d="M13 666V700H513V666H282V0H246V666H13Z" />
+<glyph unicode="U" glyph-name="U" horiz-adv-x="638" d="M124 196Q124 105 173 65T317 25T463 64T514 196V700H550V196Q550 87 491 39T318 -9T146 39T88 196V700H124V196Z" />
+<glyph unicode="V" glyph-name="V" horiz-adv-x="568" d="M502 700H538L342 0H226L30 700H66L252 34H316L502 700Z" />
+<glyph unicode="W" glyph-name="W" horiz-adv-x="856" d="M38 700H74L214 34H253L406 690H450L603 34H642L782 700H818L671 0H575L428 641L281 0H185L38 700Z" />
+<glyph unicode="X" glyph-name="X" horiz-adv-x="551" d="M68 700L276 374L483 700H526L303 347L526 0H483L277 322L68 0H25L251 347L25 700H68Z" />
+<glyph unicode="Y" glyph-name="Y" horiz-adv-x="526" d="M281 0H245V301L17 700H59L263 341L467 700H509L281 301V0Z" />
+<glyph unicode="Z" glyph-name="Z" horiz-adv-x="539" d="M44 666V700H494V630L81 55V33H494V-1H44V68L457 642V666H44Z" />
+<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="311" d="M268 749V717H121V-91H268V-123H86V749H268Z" />
+<glyph unicode="\" glyph-name="backslash" horiz-adv-x="395" d="M365 14L330 0L29 687L64 701L365 14Z" />
+<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="311" d="M43 717V749H225V-123H43V-91H190V717H43Z" />
+<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="560" d="M447 323L280 624L122 323H82L262 660H298L487 323H447Z" />
+<glyph unicode="_" glyph-name="underscore" horiz-adv-x="640" d="M106 -104H534V-138H106V-104Z" />
+<glyph unicode="`" glyph-name="grave" horiz-adv-x="215" d="M26 732L218 636L203 609L10 701L26 732Z" />
+<glyph unicode="a" glyph-name="a" horiz-adv-x="495" d="M411 353V65Q415 29 486 23L484 -8Q411 -8 381 34Q279 -9 179 -9Q117 -9 83 28T48 133T81 238T186 281L376 301V353Q376 417 349 446T265 475Q208 475 107 462L76 458L73 491Q185 509 265 509Q411 509
+411 353ZM133 244T109 217T85 136T109 53T178 23T271 33T348 54L376 64V269L190 250Q133 244 109 217Z" />
+<glyph unicode="b" glyph-name="b" horiz-adv-x="514" d="M113 469Q196 509 289 509T419 451T455 252T408 51T227 -9Q157 -9 100 -2L78 0V730H113V469ZM113 29Q191 23 239 23T326 36T385 81T411 152T418 258Q418 376 391 426T285 477Q245 477 202 467T136 447L113
+437V29Z" />
+<glyph unicode="c" glyph-name="c" horiz-adv-x="429" d="M265 477Q170 477 134 429T97 254T130 75T265 23L385 32L387 0Q303 -9 265 -9Q143 -9 102 48T60 252T106 454T265 509L385 499L383 467Q303 477 265 477Z" />
+<glyph unicode="d" glyph-name="d" horiz-adv-x="515" d="M436 730V0H401V42Q372 23 320 7T236 -9T186 -7T142 9T100 48T71 123T58 242Q58 378 104 443T269 509Q326 509 401 497V730H436ZM163 36T182 30T234 23T309 36T377 62L401 75V465Q323 477 269 477Q168
+477 132 420T95 242Q95 98 141 56Q163 36 182 30Z" />
+<glyph unicode="e" glyph-name="e" horiz-adv-x="502" d="M399 30L429 32L431 0Q319 -9 246 -9Q140 -8 99 55T58 250Q58 509 260 509Q355 509 402 452T450 269V236H95Q95 128 129 76T242 23T399 30ZM95 268H413Q413 381 377 429T260 477Q95 477 95 268Z" />
+<glyph unicode="f" glyph-name="f" horiz-adv-x="313" d="M133 468V0H98V468H29V500H98V561Q98 666 126 702T225 739L317 736V705Q253 707 225 707Q172 707 153 678T133 560V500H295V468H133Z" />
+<glyph unicode="g" glyph-name="g" horiz-adv-x="501" d="M469 -166T419 -202T252 -239T97 -206T58 -80Q58 -23 96 11Q110 24 143 48Q121 62 121 113Q121 127 144 175L151 191Q65 219 65 343Q65 510 236 510Q288 510 328 500L342 497L482 500V465H374Q414 428
+414 341T371 216T232 179Q202 179 178 183Q155 126 155 111T157 88T165 73T188 64Q219 59 305 59T430 32T469 -81ZM94 -79Q94 -153 125 -180T253 -207T391 -179T432 -82T402 7T290 27L169 30Q124 -1 109 -22T94 -79ZM101 269T132 240T238 211T345 239T377 343T346
+448T239 478T132 448T101 343Z" />
+<glyph unicode="h" glyph-name="h" horiz-adv-x="526" d="M114 0H79V730H114V470Q202 509 295 509T420 459T452 260V0H417V258Q417 390 393 433T288 477Q248 477 205 467T138 447L114 437V0Z" />
+<glyph unicode="i" glyph-name="i" horiz-adv-x="193" d="M79 0V500H114V0H79ZM79 645V700H114V645H79Z" />
+<glyph unicode="j" glyph-name="j" horiz-adv-x="192" d="M79 6V500H114V5Q114 -80 83 -124T-45 -218L-59 -187Q28 -140 53 -106T79 6ZM79 645V700H114V645H79Z" />
+<glyph unicode="k" glyph-name="k" horiz-adv-x="455" d="M114 0H79V730H114V289H210L382 500H424L240 274L432 0H390L210 257H114V0Z" />
+<glyph unicode="l" glyph-name="l" horiz-adv-x="205" d="M85 0V730H120V0H85Z" />
+<glyph unicode="m" glyph-name="m" horiz-adv-x="834" d="M114 0H79V500H114V460Q123 465 138 473T196 495T286 509Q378 509 412 455Q448 476 500 492T596 509Q696 509 728 459T760 260V0H725V258Q725 390 701 433T596 477Q553 477 510 465T446 440L424 428Q442
+379 442 260V0H407V258Q407 390 383 433T278 477Q238 477 197 465T135 440L114 427V0Z" />
+<glyph unicode="n" glyph-name="n" horiz-adv-x="527" d="M114 0H79V500H114V460Q203 509 296 509T421 459T453 260V0H418V258Q418 390 394 433T289 477Q249 477 206 465T138 440L114 427V0Z" />
+<glyph unicode="o" glyph-name="o" horiz-adv-x="526" d="M152 509T263 509T420 453T466 251T425 48T263 -9T101 48T60 251T106 453ZM207 23T263 23T351 34T401 77T424 148T429 259Q429 385 394 431T263 477T132 431T97 259Q97 188 102 149T124 78T174 35Z" />
+<glyph unicode="p" glyph-name="p" horiz-adv-x="516" d="M79 -230V500H114V458Q143 477 195 493T287 509Q377 509 417 448T458 252T410 54T246 -9Q178 -9 114 5V-230H79ZM287 477Q249 477 206 464T138 437L114 424V37Q191 23 246 23Q342 23 381 76T421 252T388
+426T287 477Z" />
+<glyph unicode="q" glyph-name="q" horiz-adv-x="514" d="M400 29Q327 -9 233 -9T99 51T58 248T108 446T286 509L435 500V-230H400V29ZM287 477Q175 477 135 423T95 249T126 77T238 23Q278 23 318 33T380 53L400 63V471Q322 477 287 477Z" />
+<glyph unicode="r" glyph-name="r" horiz-adv-x="328" d="M79 0V500H114V422Q144 446 203 473T312 510V474Q268 465 219 444T142 406L114 389V0H79Z" />
+<glyph unicode="s" glyph-name="s" horiz-adv-x="461" d="M222 477Q88 477 88 377Q88 330 116 311T240 276T374 236T412 136T364 26T222 -9Q171 -9 86 3L57 7L61 40Q169 23 233 23T336 48T375 133T345 212T220 245T88 284T51 367T78 456T141 498T216 509Q297 509
+368 498L394 494L392 461Q290 477 222 477Z" />
+<glyph unicode="t" glyph-name="t" horiz-adv-x="342" d="M325 468H143V206Q143 91 159 57T235 22L333 30L336 -2Q270 -10 235 -10Q164 -10 136 26T108 168V468H29V500H108V663H143V500H325V468Z" />
+<glyph unicode="u" glyph-name="u" horiz-adv-x="516" d="M402 500H437V0H402V40Q393 35 378 27T320 5T238 -9Q138 -9 106 41T74 240V500H109V242Q109 110 133 67T238 23Q278 23 319 35T381 60L402 73V500Z" />
+<glyph unicode="v" glyph-name="v" horiz-adv-x="470" d="M31 500H72L213 32H257L402 500H439L284 0H186L31 500Z" />
+<glyph unicode="w" glyph-name="w" horiz-adv-x="756" d="M36 500H73L200 32H211L359 490H397L545 32H556L683 500H720L585 0H517L378 448L239 0H171L36 500Z" />
+<glyph unicode="x" glyph-name="x" horiz-adv-x="437" d="M28 500H69L218 277L368 500H409L239 250L408 0H367L218 223L69 0H28L197 250L28 500Z" />
+<glyph unicode="y" glyph-name="y" horiz-adv-x="471" d="M31 500H68L215 32H256L404 500H441L212 -230H175L247 0H186L31 500Z" />
+<glyph unicode="z" glyph-name="z" horiz-adv-x="455" d="M42 468V500H413V468L87 32H413V0H42V32L369 468H42Z" />
+<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="346" d="M168 169Q161 99 161 53Q161 -18 192 -53T304 -92L302 -124Q207 -120 167 -79T126 53L133 176Q133 224 110 251T29 294V326Q86 340 109 368T133 446L126 574Q126 664 166 705T302 751L304 719Q222
+715 192 681T161 574L168 455Q168 390 146 360T68 311Q124 293 146 262T168 169Z" />
+<glyph unicode="|" glyph-name="bar" horiz-adv-x="205" d="M85 -230V730H120V-230H85Z" />
+<glyph unicode="}" glyph-name="braceright" horiz-adv-x="346" d="M185 53Q185 99 178 169Q178 231 200 262T278 311Q222 329 200 359T178 455L185 574Q185 646 155 680T42 719L44 751Q139 747 179 706T220 574Q220 574 213 446Q213 396 236 368T317 326V294Q260
+278 237 251T213 176L220 53Q220 -37 180 -78T44 -124L42 -92Q123 -88 154 -53T185 53Z" />
+<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="560" d="M381 212Q351 212 278 248T186 285T143 272T100 246L82 233L71 265Q133 319 183 319Q213 319 286 283T378 246T421 259T464 285L482 298L493 267Q431 212 381 212Z" />
+<glyph unicode="&#xa0;" glyph-name="uni00A0" horiz-adv-x="220" />
+<glyph unicode="&#xa1;" glyph-name="exclamdown" horiz-adv-x="204" d="M121 500V420H81V500H121ZM119 286V-200H84V286H119Z" />
+<glyph unicode="&#xa2;" glyph-name="cent" horiz-adv-x="560" d="M284 -85V41Q188 44 149 86T109 244T150 408T283 461V591H318V460Q358 460 415 451L434 448L432 415Q352 425 294 425Q214 425 182 385T149 246T180 112T304 77Q356 77 414 83L434 85L436 50Q362
+42 319 41V-85H284Z" />
+<glyph unicode="&#xa3;" glyph-name="sterling" horiz-adv-x="560" d="M312 637Q250 637 230 601T210 454V406H392V374H210V34H384L466 50L473 18L391 0H83V34H175V374H106V406H175V458Q175 584 204 626T312 669Q346 669 410 660L432 657V625Q345 637 312 637Z" />
+<glyph unicode="&#xa4;" glyph-name="currency" horiz-adv-x="560" d="M341 82T280 82T173 120L103 49L77 75L148 145Q110 191 110 252T148 359L77 429L103 455L173 384Q219 422 280 422T387 384L457 455L483 429L412 359Q450 313 450 252T412 145L483 75L457
+49L387 120Q341 82 280 82ZM225 118T280 118T374 157T414 252T375 346T280 386T186 347T146 252T185 158Z" />
+<glyph unicode="&#xa5;" glyph-name="yen" horiz-adv-x="560" d="M57 331V365H228L35 660H76L281 351L483 660H525L334 365H502V331H312L299 311V216H503V182H299V0H263V182H58V216H263V311L250 331H57Z" />
+<glyph unicode="&#xa6;" glyph-name="brokenbar" horiz-adv-x="209" d="M87 730H122V354H87V730ZM87 146H122V-230H87V146Z" />
+<glyph unicode="&#xa7;" glyph-name="section" horiz-adv-x="487" d="M247 628Q107 628 107 518Q107 453 139 431T256 395T381 353T421 255Q421 226 412 195T392 146L382 128Q418 100 418 29T374 -83T245 -123Q201 -123 106 -113L77 -110L80 -78Q190 -92 245 -92Q383
+-92 383 34Q383 91 352 109T233 140T104 182T62 283Q62 313 75 343T102 388L116 403Q72 436 72 512Q72 660 247 660Q310 660 378 650L403 647L401 615Q295 628 247 628ZM141 389Q97 336 97 284T132 207T246 171T356 144Q386 196 386 252T354 330T245 364T141 389Z"
+/>
+<glyph unicode="&#xa8;" glyph-name="dieresis" horiz-adv-x="215" d="M0 638V700H35V638H0ZM190 638V700H225V638H190Z" />
+<glyph unicode="&#xa9;" glyph-name="copyright" horiz-adv-x="647" d="M68 323T68 434T141 622T323 700T505 623T579 434T506 246T323 169T141 246ZM100 532T100 434T163 269T323 201T483 268T547 434T483 600T323 668T164 600ZM323 281Q261 281 238 319T214
+433T237 548T323 587Q362 587 387 582L397 580L396 548Q355 555 323 555Q274 555 260 527T246 435T262 342T323 313L396 321L397 289Q354 281 323 281Z" />
+<glyph unicode="&#xaa;" glyph-name="ordfeminine" horiz-adv-x="366" d="M270 571V437Q281 420 307 414L305 386Q273 387 251 408Q188 386 132 386Q101 386 82 408T62 466Q62 536 137 542L239 549V572Q239 603 227 616T187 629L83 622L81 651Q150 659 190 659T250
+639T270 571ZM95 464Q95 417 135 417T223 430L239 435V520L142 514Q117 513 106 501T95 464Z" />
+<glyph unicode="&#xab;" glyph-name="guillemotleft" horiz-adv-x="497" d="M215 360L80 254L215 137V96L48 234V270L215 399V360ZM422 360L287 254L422 137V96L255 234V270L422 399V360Z" />
+<glyph unicode="&#xac;" glyph-name="logicalnot" horiz-adv-x="560" d="M71 332H493V126H457V298H71V332Z" />
+<glyph unicode="&#xae;" glyph-name="registered" horiz-adv-x="647" d="M68 323T68 434T141 622T323 700T505 623T579 434T506 246T323 169T141 246ZM100 532T100 434T163 269T323 201T483 268T547 434T483 600T323 668T164 600ZM253 402V286H221V581H314Q373
+581 400 561T427 492Q427 420 368 405L433 286H398L332 402H253ZM253 550V433H333Q367 433 381 446T395 492T376 537T315 550H253Z" />
+<glyph unicode="&#xaf;" glyph-name="overscore" horiz-adv-x="215" d="M-20 642V674H247V642H-20Z" />
+<glyph unicode="&#xb0;" glyph-name="degree" horiz-adv-x="560" d="M144 512T144 573T181 671T280 709T378 672T416 573T379 475T280 438T182 475ZM178 620T178 573T206 498T280 470T355 498T384 573T355 648T280 677T206 649Z" />
+<glyph unicode="&#xb1;" glyph-name="plusminus" horiz-adv-x="560" d="M59 308V342H261V480H297V342H501V308H297V164H261V308H59ZM59 84H501V50H59V84Z" />
+<glyph unicode="&#xb2;" glyph-name="twosuperior" horiz-adv-x="280" d="M230 478H36V509L134 616Q167 651 177 673T188 718T172 754T136 767Q101 767 56 760L41 757L39 786Q90 799 132 799Q223 799 223 714Q223 681 209 656T159 594L79 511H230V478Z" />
+<glyph unicode="&#xb3;" glyph-name="threesuperior" horiz-adv-x="280" d="M41 788Q94 799 141 799T210 780T233 728T222 675Q204 646 187 643Q216 635 229 619T242 562Q242 469 144 469Q96 469 53 477L37 480L40 511Q94 502 135 502T191 518T207 561Q207 623
+147 623H82V656H147Q165 656 181 675T198 719Q198 766 140 766Q94 766 58 760L44 757L41 788Z" />
+<glyph unicode="&#xb4;" glyph-name="acute" horiz-adv-x="268" d="M40 636L232 732L248 701L55 609L40 636Z" />
+<glyph unicode="&#xb5;" glyph-name="mu" horiz-adv-x="560" d="M426 500H461V0H426V40Q417 35 402 27T344 5T262 -9Q166 -9 133 36V-230H98V500H133V242Q133 110 157 67T262 23Q302 23 343 35T405 60L426 73V500Z" />
+<glyph unicode="&#xb6;" glyph-name="paragraph" horiz-adv-x="589" d="M421 0V667H269V0H233V350H226Q147 350 94 398T40 524T93 650T226 700H554V667H457V0H421Z" />
+<glyph unicode="&#xb7;" glyph-name="middot" horiz-adv-x="191" d="M76 270V350H116V270H76Z" />
+<glyph unicode="&#xb8;" glyph-name="cedilla" horiz-adv-x="263" d="M213 -127Q213 -201 131 -201L50 -197L52 -169Q96 -173 130 -173Q178 -173 178 -127Q178 -85 130 -85H76V1H109V-57Q165 -57 189 -72T213 -127Z" />
+<glyph unicode="&#xb9;" glyph-name="onesuperior" horiz-adv-x="280" d="M180 790V478H145V751L63 695L46 723L145 790H180Z" />
+<glyph unicode="&#xba;" glyph-name="ordmasculine" horiz-adv-x="353" d="M177 659Q235 659 262 627T290 524Q290 386 177 386Q62 386 62 522T177 659ZM134 418T177 418T238 442T256 524T238 604T177 627T115 604T96 524T115 443Z" />
+<glyph unicode="&#xbb;" glyph-name="guillemotright" horiz-adv-x="497" d="M417 254L282 360V399L449 270V234L282 96V137L417 254ZM210 254L75 360V399L242 270V234L75 96V137L210 254Z" />
+<glyph unicode="&#xbc;" glyph-name="onequarter" horiz-adv-x="525" d="M183 790V478H148V751L66 695L49 723L148 790H183ZM39 28L431 659L461 640L69 10L39 28ZM414 -100V-43H268V-12L357 212H395L308 -10H414V78H450V-10H487V-43H450V-100H414Z" />
+<glyph unicode="&#xbd;" glyph-name="onehalf" horiz-adv-x="520" d="M190 790V478H155V751L73 695L56 723L155 790H190ZM36 28L428 659L458 640L66 10L36 28ZM469 -100H275V-69L373 38Q406 73 416 95T427 140T411 176T375 189Q340 189 295 182L280 179L278 208Q329
+221 371 221Q462 221 462 136Q462 103 448 78T398 16L318 -67H469V-100Z" />
+<glyph unicode="&#xbe;" glyph-name="threequarters" horiz-adv-x="543" d="M58 28L450 659L480 640L88 10L58 28ZM62 788Q115 799 162 799T231 780T254 728T243 675Q228 650 208 643Q237 635 250 618T263 562Q263 469 165 469Q117 469 74 477L58 480L61 511Q115
+502 156 502T212 518T228 561Q228 623 168 623H103V656H168Q186 656 202 675T219 719Q219 766 161 766Q115 766 79 760L65 757L62 788ZM433 -100V-43H287V-12L376 212H414L327 -10H433V78H469V-10H506V-43H469V-100H433Z" />
+<glyph unicode="&#xbf;" glyph-name="questiondown" horiz-adv-x="447" d="M43 -50Q43 11 61 43T129 119T194 178T226 220T242 273V311H276Q277 289 277 268T269 226T242 182Q212 148 163 104T96 30T78 -50Q78 -119 118 -147T243 -175Q286 -175 374 -154L404 -147L409
+-181Q297 -208 243 -208Q144 -208 94 -172T43 -50ZM279 500V420H239V500H279Z" />
+<glyph unicode="&#xc0;" glyph-name="Agrave" horiz-adv-x="592" d="M28 0L243 700H349L564 0H528L463 215H129L64 0H28ZM268 666L140 249H452L324 666H268ZM193 922L385 826L370 799L177 891L193 922Z" />
+<glyph unicode="&#xc1;" glyph-name="Aacute" horiz-adv-x="592" d="M28 0L243 700H349L564 0H528L463 215H129L64 0H28ZM268 666L140 249H452L324 666H268ZM202 826L394 922L410 891L217 799L202 826Z" />
+<glyph unicode="&#xc2;" glyph-name="Acircumflex" horiz-adv-x="592" d="M28 0L243 700H349L564 0H528L463 215H129L64 0H28ZM268 666L140 249H452L324 666H268ZM146 809L280 934H310L444 809H399L295 905L192 809H146Z" />
+<glyph unicode="&#xc3;" glyph-name="Atilde" horiz-adv-x="592" d="M28 0L243 700H349L564 0H528L463 215H129L64 0H28ZM268 666L140 249H452L324 666H268ZM447 885Q408 833 381 833T294 863T221 893Q199 893 163 854L151 841L141 870Q185 924 218 924Q241 924
+301 895T374 865Q392 865 425 901L436 913L447 885Z" />
+<glyph unicode="&#xc4;" glyph-name="Adieresis" horiz-adv-x="592" d="M28 0L243 700H349L564 0H528L463 215H129L64 0H28ZM268 666L140 249H452L324 666H268ZM180 838V900H215V838H180ZM376 838V900H411V838H376Z" />
+<glyph unicode="&#xc5;" glyph-name="Aring" horiz-adv-x="592" d="M338 851T364 827T391 756T354 683L564 0H528L463 215H129L64 0H28L237 681Q197 705 197 753T223 826T294 851ZM268 666L140 249H452L324 666H268ZM230 759Q230 711 270 700H317Q358 711 358
+759Q358 789 341 805T294 821T247 805T230 759Z" />
+<glyph unicode="&#xc6;" glyph-name="AE" horiz-adv-x="879" d="M419 0V215H143L65 0H25L276 700H828V666H455V378H768V344H455V34H828V0H419ZM419 249V666H304L155 249H419Z" />
+<glyph unicode="&#xc7;" glyph-name="Ccedilla" horiz-adv-x="545" d="M431 -127Q431 -201 349 -201L268 -197L270 -169Q314 -173 348 -173Q396 -173 396 -127Q396 -85 348 -85H294V-8Q186 -2 133 59Q85 115 72 228Q67 279 67 348T72 469T93 568T136 645Q196 709
+316 709Q404 709 501 690L498 655Q402 675 332 675T222 659T161 618T126 548T109 458T105 347T109 236T126 148T162 80Q213 25 316 25Q394 25 498 45L501 11Q411 -8 327 -9V-57Q383 -57 407 -72T431 -127Z" />
+<glyph unicode="&#xc8;" glyph-name="Egrave" horiz-adv-x="552" d="M92 0V700H501V666H128V375H441V341H128V34H501V0H92ZM205 922L397 826L382 799L189 891L205 922Z" />
+<glyph unicode="&#xc9;" glyph-name="Eacute" horiz-adv-x="552" d="M92 0V700H501V666H128V375H441V341H128V34H501V0H92ZM192 826L384 922L400 891L207 799L192 826Z" />
+<glyph unicode="&#xca;" glyph-name="Ecircumflex" horiz-adv-x="552" d="M92 0V700H501V666H128V375H441V341H128V34H501V0H92ZM142 809L276 934H306L440 809H395L291 905L188 809H142Z" />
+<glyph unicode="&#xcb;" glyph-name="Edieresis" horiz-adv-x="552" d="M92 0V700H501V666H128V375H441V341H128V34H501V0H92ZM180 838V900H215V838H180ZM376 838V900H411V838H376Z" />
+<glyph unicode="&#xcc;" glyph-name="Igrave" horiz-adv-x="220" d="M92 0V700H128V0H92ZM-2 922L190 826L175 799L-18 891L-2 922Z" />
+<glyph unicode="&#xcd;" glyph-name="Iacute" horiz-adv-x="220" d="M92 0V700H128V0H92ZM17 826L209 922L225 891L32 799L17 826Z" />
+<glyph unicode="&#xce;" glyph-name="Icircumflex" horiz-adv-x="220" d="M92 0V700H128V0H92ZM-45 809L89 934H119L253 809H208L104 905L1 809H-45Z" />
+<glyph unicode="&#xcf;" glyph-name="Idieresis" horiz-adv-x="220" d="M92 0V700H128V0H92ZM-6 838V900H29V838H-6ZM190 838V900H225V838H190Z" />
+<glyph unicode="&#xd0;" glyph-name="Eth" horiz-adv-x="651" d="M17 334V368H94V700H354Q418 700 464 672T538 595Q588 502 588 360Q588 219 537 115Q511 62 464 31T354 0H94V334H17ZM550 300T550 360T540 471T509 568T448 640T354 666H130V368H307V334H130V34H354Q408
+34 447 63T508 141T540 245Z" />
+<glyph unicode="&#xd1;" glyph-name="Ntilde" horiz-adv-x="665" d="M92 0V700H177L510 34H537V700H573V0H488L154 666H128V0H92ZM485 885Q446 833 419 833T332 863T259 893Q237 893 201 854L189 841L179 870Q223 924 256 924Q279 924 339 895T412 865Q430 865
+463 901L474 913L485 885Z" />
+<glyph unicode="&#xd2;" glyph-name="Ograve" horiz-adv-x="666" d="M170 65T216 45T333 25T450 43T520 104T554 203T563 347Q563 515 515 595T333 675Q194 675 146 588Q122 544 113 488T103 347T112 207T145 109ZM118 82Q88 130 77 192T65 347Q65 531 123 620T333
+709T543 621T601 344T545 74T331 -9T118 82ZM242 922L434 826L419 799L226 891L242 922Z" />
+<glyph unicode="&#xd3;" glyph-name="Oacute" horiz-adv-x="666" d="M170 65T216 45T333 25T450 43T520 104T554 203T563 347Q563 515 515 595T333 675Q194 675 146 588Q122 544 113 488T103 347T112 207T145 109ZM118 82Q88 130 77 192T65 347Q65 531 123 620T333
+709T543 621T601 344T545 74T331 -9T118 82ZM219 826L411 922L427 891L234 799L219 826Z" />
+<glyph unicode="&#xd4;" glyph-name="Ocircumflex" horiz-adv-x="666" d="M170 65T216 45T333 25T450 43T520 104T554 203T563 347Q563 515 515 595T333 675Q194 675 146 588Q122 544 113 488T103 347T112 207T145 109ZM118 82Q88 130 77 192T65 347Q65 531 123
+620T333 709T543 621T601 344T545 74T331 -9T118 82ZM184 809L318 934H348L482 809H437L333 905L230 809H184Z" />
+<glyph unicode="&#xd5;" glyph-name="Otilde" horiz-adv-x="666" d="M170 65T216 45T333 25T450 43T520 104T554 203T563 347Q563 515 515 595T333 675Q194 675 146 588Q122 544 113 488T103 347T112 207T145 109ZM118 82Q88 130 77 192T65 347Q65 531 123 620T333
+709T543 621T601 344T545 74T331 -9T118 82ZM482 885Q443 833 416 833T329 863T256 893Q234 893 198 854L186 841L176 870Q220 924 253 924Q276 924 336 895T408 865Q429 865 460 901L471 913L482 885Z" />
+<glyph unicode="&#xd6;" glyph-name="Odieresis" horiz-adv-x="666" d="M170 65T216 45T333 25T450 43T520 104T554 203T563 347Q563 515 515 595T333 675Q194 675 146 588Q122 544 113 488T103 347T112 207T145 109ZM118 82Q88 130 77 192T65 347Q65 531 123
+620T333 709T543 621T601 344T545 74T331 -9T118 82ZM218 838V900H253V838H218ZM414 838V900H449V838H414Z" />
+<glyph unicode="&#xd7;" glyph-name="multiply" horiz-adv-x="560" d="M105 450L280 274L455 450L479 426L303 251L479 76L455 52L280 228L105 52L81 76L257 251L81 426L105 450Z" />
+<glyph unicode="&#xd8;" glyph-name="Oslash" horiz-adv-x="666" d="M333 -9Q253 -9 199 14L141 -109L111 -98L170 29Q111 68 88 145T65 347Q65 531 123 620T333 709Q419 709 475 680L528 792L558 780L503 662Q557 621 579 544T601 347Q601 156 545 74T333 -9ZM122
+544T113 488T103 333T121 166T186 63L460 647Q410 675 337 675T217 654T147 589ZM214 46Q260 25 332 25T450 43T520 104T554 203T563 347Q563 559 486 627L214 46Z" />
+<glyph unicode="&#xd9;" glyph-name="Ugrave" horiz-adv-x="638" d="M124 196Q124 105 173 65T317 25T463 64T514 196V700H550V196Q550 87 491 39T318 -9T146 39T88 196V700H124V196ZM226 922L418 826L403 799L210 891L226 922Z" />
+<glyph unicode="&#xda;" glyph-name="Uacute" horiz-adv-x="638" d="M124 196Q124 105 173 65T317 25T463 64T514 196V700H550V196Q550 87 491 39T318 -9T146 39T88 196V700H124V196ZM215 826L407 922L423 891L230 799L215 826Z" />
+<glyph unicode="&#xdb;" glyph-name="Ucircumflex" horiz-adv-x="638" d="M124 196Q124 105 173 65T317 25T463 64T514 196V700H550V196Q550 87 491 39T318 -9T146 39T88 196V700H124V196ZM169 809L303 934H333L467 809H422L318 905L215 809H169Z" />
+<glyph unicode="&#xdc;" glyph-name="Udieresis" horiz-adv-x="638" d="M124 196Q124 105 173 65T317 25T463 64T514 196V700H550V196Q550 87 491 39T318 -9T146 39T88 196V700H124V196ZM204 838V900H239V838H204ZM400 838V900H435V838H400Z" />
+<glyph unicode="&#xdd;" glyph-name="Yacute" horiz-adv-x="526" d="M281 0H245V301L17 700H59L263 341L467 700H509L281 301V0ZM190 826L382 922L398 891L205 799L190 826Z" />
+<glyph unicode="&#xde;" glyph-name="Thorn" horiz-adv-x="601" d="M347 169Q516 169 516 367Q516 459 477 501T347 544H128V169H347ZM347 135H128V0H92V700H128V578H347Q455 578 504 527T554 367Q554 135 347 135Z" />
+<glyph unicode="&#xdf;" glyph-name="germandbls" horiz-adv-x="549" d="M114 0H79V561Q79 661 118 700T252 739T383 707T421 603Q421 551 405 521T350 474T300 447T288 422T305 393T385 346T477 280T506 186Q506 83 460 37T306 -9Q271 -9 211 -2L191 1L193 34Q270
+25 306 25Q396 25 432 62T468 181Q468 234 444 262T354 323T270 375T251 421T268 464T322 497T371 537T383 610T354 682T251 705T145 674T114 548V0Z" />
+<glyph unicode="&#xe0;" glyph-name="agrave" horiz-adv-x="495" d="M411 353V65Q415 29 486 23L484 -8Q411 -8 381 34Q279 -9 179 -9Q117 -9 83 28T48 133T81 238T186 281L376 301V353Q376 417 349 446T265 475Q208 475 107 462L76 458L73 491Q185 509 265 509Q411
+509 411 353ZM133 244T109 217T85 136T109 53T178 23T271 33T348 54L376 64V269L190 250Q133 244 109 217ZM149 732L341 636L326 609L133 701L149 732Z" />
+<glyph unicode="&#xe1;" glyph-name="aacute" horiz-adv-x="495" d="M411 353V65Q415 29 486 23L484 -8Q411 -8 381 34Q279 -9 179 -9Q117 -9 83 28T48 133T81 238T186 281L376 301V353Q376 417 349 446T265 475Q208 475 107 462L76 458L73 491Q185 509 265 509Q411
+509 411 353ZM133 244T109 217T85 136T109 53T178 23T271 33T348 54L376 64V269L190 250Q133 244 109 217ZM132 636L324 732L340 701L147 609L132 636Z" />
+<glyph unicode="&#xe2;" glyph-name="acircumflex" horiz-adv-x="495" d="M411 353V65Q415 29 486 23L484 -8Q411 -8 381 34Q279 -9 179 -9Q117 -9 83 28T48 133T81 238T186 281L376 301V353Q376 417 349 446T265 475Q208 475 107 462L76 458L73 491Q185 509 265
+509Q411 509 411 353ZM133 244T109 217T85 136T109 53T178 23T271 33T348 54L376 64V269L190 250Q133 244 109 217ZM103 600L224 732H252L374 600H331L239 700L146 600H103Z" />
+<glyph unicode="&#xe3;" glyph-name="atilde" horiz-adv-x="495" d="M411 353V65Q415 29 486 23L484 -8Q411 -8 381 34Q279 -9 179 -9Q117 -9 83 28T48 133T81 238T186 281L376 301V353Q376 417 349 446T265 475Q208 475 107 462L76 458L73 491Q185 509 265 509Q411
+509 411 353ZM133 244T109 217T85 136T109 53T178 23T271 33T348 54L376 64V269L190 250Q133 244 109 217ZM392 673Q350 630 324 630T243 657T175 684Q153 684 115 650L102 639L92 668Q141 715 174 715Q195 715 250 689T318 662Q338 662 372 692L383 703L392 673Z"
+/>
+<glyph unicode="&#xe4;" glyph-name="adieresis" horiz-adv-x="495" d="M411 353V65Q415 29 486 23L484 -8Q411 -8 381 34Q279 -9 179 -9Q117 -9 83 28T48 133T81 238T186 281L376 301V353Q376 417 349 446T265 475Q208 475 107 462L76 458L73 491Q185 509 265
+509Q411 509 411 353ZM133 244T109 217T85 136T109 53T178 23T271 33T348 54L376 64V269L190 250Q133 244 109 217ZM132 638V700H167V638H132ZM322 638V700H357V638H322Z" />
+<glyph unicode="&#xe5;" glyph-name="aring" horiz-adv-x="495" d="M411 353V65Q415 29 486 23L484 -8Q411 -8 381 34Q279 -9 179 -9Q117 -9 83 28T48 133T81 238T186 281L376 301V353Q376 417 349 446T265 475Q208 475 107 462L76 458L73 491Q185 509 265 509Q411
+509 411 353ZM133 244T109 217T85 136T109 53T178 23T271 33T348 54L376 64V269L190 250Q133 244 109 217ZM153 610T153 650T181 717T249 745T316 718T343 650T316 583T249 555T181 582ZM187 676T187 650T205 605T248 586T292 605T310 650T292 694T249 713T205
+695Z" />
+<glyph unicode="&#xe6;" glyph-name="ae" horiz-adv-x="818" d="M715 30L745 32L747 0Q635 -9 562 -9Q464 -9 419 49L381 33Q288 -9 175 -9Q48 -9 48 137Q48 217 87 244T233 286L376 301V353Q376 417 349 446T265 475Q214 475 108 468L77 466L75 499Q185 509 265
+509Q380 509 404 413Q453 509 576 509Q671 509 718 452T766 269V236H411Q411 128 445 76T558 23T715 30ZM85 82T109 53T175 23T273 35Q350 52 404 74Q374 133 374 268L190 250Q135 245 110 218T85 137ZM411 268H729Q729 381 693 429T576 477Q411 477 411 268Z"
+/>
+<glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="429" d="M348 -127Q348 -201 266 -201L185 -197L187 -169Q231 -173 265 -173Q313 -173 313 -127Q313 -85 265 -85H211V-6Q122 5 91 64T60 261T106 454T265 509L385 499L383 467Q303 477 265 477Q170
+477 134 429T97 254T130 75T265 23L385 32L387 0Q303 -9 277 -9T244 -8V-57Q300 -57 324 -72T348 -127Z" />
+<glyph unicode="&#xe8;" glyph-name="egrave" horiz-adv-x="502" d="M399 30L429 32L431 0Q319 -9 246 -9Q140 -8 99 55T58 250Q58 509 260 509Q355 509 402 452T450 269V236H95Q95 128 129 76T242 23T399 30ZM95 268H413Q413 381 377 429T260 477Q95 477 95 268ZM144
+733L336 637L321 610L128 702L144 733Z" />
+<glyph unicode="&#xe9;" glyph-name="eacute" horiz-adv-x="502" d="M399 30L429 32L431 0Q319 -9 246 -9Q140 -8 99 55T58 250Q58 509 260 509Q355 509 402 452T450 269V236H95Q95 128 129 76T242 23T399 30ZM95 268H413Q413 381 377 429T260 477Q95 477 95 268ZM171
+636L363 732L379 701L186 609L171 636Z" />
+<glyph unicode="&#xea;" glyph-name="ecircumflex" horiz-adv-x="502" d="M399 30L429 32L431 0Q319 -9 246 -9Q140 -8 99 55T58 250Q58 509 260 509Q355 509 402 452T450 269V236H95Q95 128 129 76T242 23T399 30ZM95 268H413Q413 381 377 429T260 477Q95 477
+95 268ZM128 600L249 732H277L399 600H356L264 700L171 600H128Z" />
+<glyph unicode="&#xeb;" glyph-name="edieresis" horiz-adv-x="502" d="M399 30L429 32L431 0Q319 -9 246 -9Q140 -8 99 55T58 250Q58 509 260 509Q355 509 402 452T450 269V236H95Q95 128 129 76T242 23T399 30ZM95 268H413Q413 381 377 429T260 477Q95 477 95
+268ZM144 638V700H179V638H144ZM334 638V700H369V638H334Z" />
+<glyph unicode="&#xec;" glyph-name="igrave" horiz-adv-x="193" d="M79 0V500H114V0H79ZM-44 732L148 636L133 609L-60 701L-44 732Z" />
+<glyph unicode="&#xed;" glyph-name="iacute" horiz-adv-x="193" d="M43 636L235 732L251 701L58 609L43 636ZM79 500H114V0H79V500Z" />
+<glyph unicode="&#xee;" glyph-name="icircumflex" horiz-adv-x="193" d="M79 500H114V0H79V500ZM-39 600L82 732H110L232 600H189L97 700L4 600H-39Z" />
+<glyph unicode="&#xef;" glyph-name="idieresis" horiz-adv-x="193" d="M79 500H114V0H79V500ZM-19 638V700H16V638H-19ZM171 638V700H206V638H171Z" />
+<glyph unicode="&#xf0;" glyph-name="eth" horiz-adv-x="535" d="M303 657Q475 546 475 350T426 73T260 -9Q159 -9 102 49T45 208T100 367T249 425Q284 425 331 414T408 392L438 381Q433 537 271 636L152 556L132 583L238 655Q178 686 105 708L118 739Q205 713
+270 676L372 745L392 718L303 657ZM439 346Q323 391 248 391T127 342T81 208T127 74T266 25T398 94T439 346Z" />
+<glyph unicode="&#xf1;" glyph-name="ntilde" horiz-adv-x="527" d="M79 0V500H114V460L138 472Q163 484 207 496T289 509Q389 509 421 459T453 260V0H418V258Q418 390 394 433T289 477Q249 477 197 461T114 427V0H79ZM425 673Q383 630 357 630T276 657T208 684Q186
+684 148 650L135 639L125 668Q174 715 207 715Q228 715 283 689T350 662Q371 662 404 692L416 703L425 673Z" />
+<glyph unicode="&#xf2;" glyph-name="ograve" horiz-adv-x="526" d="M152 509T263 509T420 453T466 251T425 48T263 -9T101 48T60 251T106 453ZM207 23T263 23T351 34T401 77T424 148T429 259Q429 385 394 431T263 477T132 431T97 259Q97 188 102 149T124 78T174
+35ZM170 732L362 636L347 609L154 701L170 732Z" />
+<glyph unicode="&#xf3;" glyph-name="oacute" horiz-adv-x="526" d="M152 509T263 509T420 453T466 251T425 48T263 -9T101 48T60 251T106 453ZM207 23T263 23T351 34T401 77T424 148T429 259Q429 385 394 431T263 477T132 431T97 259Q97 188 102 149T124 78T174
+35ZM179 636L371 732L387 701L194 609L179 636Z" />
+<glyph unicode="&#xf4;" glyph-name="ocircumflex" horiz-adv-x="526" d="M152 509T263 509T420 453T466 251T425 48T263 -9T101 48T60 251T106 453ZM207 23T263 23T351 34T401 77T424 148T429 259Q429 385 394 431T263 477T132 431T97 259Q97 188 102 149T124
+78T174 35ZM128 600L249 732H277L399 600H356L264 700L171 600H128Z" />
+<glyph unicode="&#xf5;" glyph-name="otilde" horiz-adv-x="526" d="M152 509T263 509T420 453T466 251T425 48T263 -9T101 48T60 251T106 453ZM207 23T263 23T351 34T401 77T424 148T429 259Q429 385 394 431T263 477T132 431T97 259Q97 188 102 149T124 78T174
+35ZM414 673Q372 630 346 630T265 657T197 684Q175 684 137 650L124 639L114 668Q163 715 196 715Q217 715 272 689T340 662Q360 662 394 692L405 703L414 673Z" />
+<glyph unicode="&#xf6;" glyph-name="odieresis" horiz-adv-x="526" d="M152 509T263 509T420 453T466 251T425 48T263 -9T101 48T60 251T106 453ZM207 23T263 23T351 34T401 77T424 148T429 259Q429 385 394 431T263 477T132 431T97 259Q97 188 102 149T124 78T174
+35ZM146 638V700H181V638H146ZM336 638V700H371V638H336Z" />
+<glyph unicode="&#xf7;" glyph-name="divide" horiz-adv-x="560" d="M58 234V268H502V234H58ZM261 383V463H299V383H261ZM261 39V119H299V39H261Z" />
+<glyph unicode="&#xf8;" glyph-name="oslash" horiz-adv-x="526" d="M263 509Q316 509 349 498L393 605L423 594L378 487Q424 462 445 408T466 259Q466 105 425 48T263 -9Q214 -9 179 0L133 -114L103 -104L149 9Q98 32 79 89T60 272T106 453T263 509ZM263 477Q167
+477 132 431T97 272T110 110T163 40L337 468Q307 477 263 477ZM191 30Q218 23 268 23T351 34T401 77T424 148T429 265T415 389T366 456L191 30Z" />
+<glyph unicode="&#xf9;" glyph-name="ugrave" horiz-adv-x="516" d="M402 500H437V0H402V40Q393 35 378 27T320 5T238 -9Q138 -9 106 41T74 240V500H109V242Q109 110 133 67T238 23Q278 23 319 35T381 60L402 73V500ZM141 732L333 636L318 609L125 701L141 732Z" />
+<glyph unicode="&#xfa;" glyph-name="uacute" horiz-adv-x="516" d="M437 500V0H402V40L380 28Q358 15 317 3T238 -9Q138 -9 106 41T74 240V500H109V242Q109 110 133 67T238 23Q278 23 328 39T402 73V500H437ZM172 636L364 732L380 701L187 609L172 636Z" />
+<glyph unicode="&#xfb;" glyph-name="ucircumflex" horiz-adv-x="516" d="M437 500V0H402V40L380 28Q358 15 317 3T238 -9Q138 -9 106 41T74 240V500H109V242Q109 110 133 67T238 23Q278 23 328 39T402 73V500H437ZM121 600L242 732H270L392 600H349L257 700L164
+600H121Z" />
+<glyph unicode="&#xfc;" glyph-name="udieresis" horiz-adv-x="516" d="M437 500V0H402V40L380 28Q358 15 317 3T238 -9Q138 -9 106 41T74 240V500H109V242Q109 110 133 67T238 23Q278 23 328 39T402 73V500H437ZM149 638V700H184V638H149ZM339 638V700H374V638H339Z" />
+<glyph unicode="&#xfd;" glyph-name="yacute" horiz-adv-x="471" d="M31 500H68L215 32H256L404 500H441L212 -230H175L247 0H186L31 500ZM175 636L367 732L383 701L190 609L175 636Z" />
+<glyph unicode="&#xfe;" glyph-name="thorn" horiz-adv-x="515" d="M114 29Q192 23 240 23T327 36T386 82T412 154T419 259Q419 378 393 427T286 477Q246 477 203 467T137 447L114 437V29ZM114 469Q197 509 291 509T420 453T456 255T409 53T228 -9L114 -3V-230H79V730H114V469Z"
+/>
+<glyph unicode="&#xff;" glyph-name="ydieresis" horiz-adv-x="471" d="M31 500H68L215 32H256L404 500H441L212 -230H175L247 0H186L31 500ZM121 638V700H156V638H121ZM311 638V700H346V638H311Z" />
+<glyph unicode="&#x2013;" glyph-name="endash" horiz-adv-x="643" d="M72 286H572V252H72V286Z" />
+<glyph unicode="&#x2014;" glyph-name="emdash" horiz-adv-x="1143" d="M72 286H1072V252H72V286Z" />
+<glyph unicode="&#x2018;" glyph-name="quoteleft" horiz-adv-x="193" d="M140 727L100 527H62L111 727H140Z" />
+<glyph unicode="&#x2019;" glyph-name="quoteright" horiz-adv-x="191" d="M63 527L103 727H141L92 527H63Z" />
+<glyph unicode="&#x201a;" glyph-name="quotesinglbase" horiz-adv-x="192" d="M121 115L81 -85H43L92 115H121Z" />
+<glyph unicode="&#x201c;" glyph-name="quotedblleft" horiz-adv-x="326" d="M273 727L233 527H195L244 727H273ZM140 727L100 527H62L111 727H140Z" />
+<glyph unicode="&#x201d;" glyph-name="quotedblright" horiz-adv-x="335" d="M63 527L103 727H141L92 527H63ZM207 527L247 727H285L236 527H207Z" />
+<glyph unicode="&#x201e;" glyph-name="quotedblbase" horiz-adv-x="317" d="M119 109L79 -91H41L90 109H119ZM247 109L207 -91H169L218 109H247Z" />
+<glyph unicode="&#x2022;" glyph-name="bullet" horiz-adv-x="488" d="M119 110V400H369V110H119Z" />
+<glyph unicode="&#x2039;" glyph-name="guilsinglleft" horiz-adv-x="290" d="M215 360L80 254L215 137V96L48 234V270L215 399V360Z" />
+<glyph unicode="&#x203a;" glyph-name="guilsinglright" horiz-adv-x="290" d="M210 254L75 360V399L242 270V234L75 96V137L210 254Z" />
+</font>
+</defs>
+</svg>
diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-200.ttf b/WebSites/errors/403/fonts/titillium-web-v7-latin-200.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..7ef3efa1a3d4c56de299f02249128fad0d0d2a5c
GIT binary patch
literal 29976
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-200.woff b/WebSites/errors/403/fonts/titillium-web-v7-latin-200.woff
new file mode 100644
index 0000000000000000000000000000000000000000..c76294ca5998c88759acf8a08bf055ac6de7ace2
GIT binary patch
literal 16368
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
HkwE_+eP!@v

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-200.woff2 b/WebSites/errors/403/fonts/titillium-web-v7-latin-200.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..58277763584100c55848ffa69b3744fa5e868b5e
GIT binary patch
literal 12404
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-600.eot b/WebSites/errors/403/fonts/titillium-web-v7-latin-600.eot
new file mode 100644
index 0000000000000000000000000000000000000000..c427dceb6961400715c8586fbb8c4fec2c7ba4a7
GIT binary patch
literal 14585
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
BHn0Ey

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-600.svg b/WebSites/errors/403/fonts/titillium-web-v7-latin-600.svg
new file mode 100644
index 0000000..1177f15
--- /dev/null
+++ b/WebSites/errors/403/fonts/titillium-web-v7-latin-600.svg
@@ -0,0 +1,275 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<defs >
+<font id="TitilliumWeb" horiz-adv-x="500" ><font-face
+    font-family="Titillium Web SemiBold"
+    units-per-em="1000"
+    panose-1="0 0 7 0 0 0 0 0 0 0"
+    ascent="1133"
+    descent="-388"
+    alphabetic="0" />
+<glyph unicode=" " glyph-name="space" horiz-adv-x="220" />
+<glyph unicode="!" glyph-name="exclam" horiz-adv-x="266" d="M74 0V140H191V0H74ZM85 241L75 685H191L181 241H85Z" />
+<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="395" d="M329 453H234L230 685H335L329 453ZM160 453H64L60 685H166L160 453Z" />
+<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="560" d="M540 160H438V0H343V160H217V0H122V160H20V251H122V403H20V494H122V663H217V494H343V663H438V494H540V403H438V251H540V160ZM343 251V403H217V251H343Z" />
+<glyph unicode="$" glyph-name="dollar" horiz-adv-x="560" d="M503 196Q503 92 444 41T282 -11H274L260 -127Q196 -124 196 -120L210 -7Q146 -1 86 11L66 15L77 101Q156 90 222 86L249 293Q145 321 102 362T59 491T117 625T279 671H297L314 805H378L360 666L488
+648L479 562Q408 570 349 574L324 381Q425 352 464 314T503 196ZM166 491Q166 454 186 435T262 398L285 577Q166 575 166 491ZM395 190Q395 224 377 243T311 276L286 84Q395 88 395 190Z" />
+<glyph unicode="%" glyph-name="percent" horiz-adv-x="560" d="M138 -6L360 691L422 670L200 -26L138 -6ZM20 529Q20 671 135 671T251 529Q251 457 221 421T136 385T50 421T20 529ZM102 569T102 529T109 471T136 453T162 471T170 529T163 586T136 604T110 587ZM309
+133Q309 275 424 275T540 133Q540 61 510 25T425 -11T339 25T309 133ZM405 207T398 190T390 133T397 75T424 56T450 74T458 132T451 190T425 207Z" />
+<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="696" d="M123 627T174 667T317 707T457 667T506 555T474 442T361 354L483 233Q490 252 497 298T506 376L611 374Q597 252 562 169L681 60L619 -11L506 87Q473 41 418 15T297 -11Q156 -11 97 42T38
+199Q38 282 73 327T186 402Q147 447 135 478T123 558Q123 627 174 667ZM285 86Q333 86 373 102T432 148L243 337Q193 318 171 288T148 208Q148 86 285 86ZM233 536Q233 487 278 439L300 416Q353 446 374 472T396 539Q396 615 315 615T233 536Z" />
+<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="225" d="M64 453L61 685H167L160 453H64Z" />
+<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="289" d="M163 388T163 301T186 108T234 -62L258 -125H155Q141 -102 119 -49T82 52T55 168T43 320T71 515T127 688L155 750H258Q224 664 194 526Z" />
+<glyph unicode=")" glyph-name="parenright" horiz-adv-x="289" d="M246 365T246 301T235 170T206 52Q172 -54 146 -104L134 -125H31Q42 -99 57 -56T99 101T126 301T103 500T55 682L31 750H134Q148 724 170 666T207 558T234 436Z" />
+<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="423" d="M382 504H255L294 382L232 363L191 486L86 407L46 458L153 537L49 611L88 665L191 590L231 713L295 692L256 568H382V504Z" />
+<glyph unicode="+" glyph-name="plus" horiz-adv-x="560" d="M52 202V300H230V479H328V300H508V202H328V21H230V202H52Z" />
+<glyph unicode="," glyph-name="comma" horiz-adv-x="246" d="M26 -123L74 124H194L114 -123H26Z" />
+<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="421" d="M61 220V319H360V220H61Z" />
+<glyph unicode="." glyph-name="period" horiz-adv-x="239" d="M61 0V144H178V0H61Z" />
+<glyph unicode="/" glyph-name="slash" horiz-adv-x="443" d="M32 9L317 714L413 679L127 -25L32 9Z" />
+<glyph unicode="0" glyph-name="zero" horiz-adv-x="560" d="M155 671T280 671T467 591T529 327T467 66T280 -11T93 65T30 325T92 590ZM352 574T280 574T177 520T145 328T177 139T280 86T382 138T414 328T383 519Z" />
+<glyph unicode="1" glyph-name="one" horiz-adv-x="560" d="M405 660V0H294V534L139 434L88 517L303 660H405Z" />
+<glyph unicode="2" glyph-name="two" horiz-adv-x="560" d="M492 0H67V95L230 263Q304 339 334 382T364 476T335 550T240 572Q178 572 103 558L78 554L71 642Q168 671 272 671Q479 671 479 487Q479 415 448 362T335 234L194 97H492V0Z" />
+<glyph unicode="3" glyph-name="three" horiz-adv-x="560" d="M66 639Q159 671 270 671T431 629T482 494Q482 454 467 422T435 376T395 345Q448 320 471 291T495 195Q495 90 443 40T275 -11Q230 -11 176 -4T90 12L59 20L66 106Q176 86 260 86Q380 87 380 192Q380
+240 349 265T267 291H134V384H267Q304 384 335 414T367 488T340 553T264 574Q185 574 101 560L75 555L66 639Z" />
+<glyph unicode="4" glyph-name="four" horiz-adv-x="560" d="M337 0V118H40V203L214 660H337L153 215H337V409H449V215H521V118H449V0H337Z" />
+<glyph unicode="5" glyph-name="five" horiz-adv-x="560" d="M484 660V562H178L161 388Q229 419 295 419Q507 419 507 221Q507 109 449 49T283 -11Q238 -11 181 -3T90 14L56 23L68 107Q186 87 270 87Q328 87 360 119T392 210T364 295T291 321Q210 321 159 301L141
+294L71 309L89 660H484Z" />
+<glyph unicode="6" glyph-name="six" horiz-adv-x="560" d="M490 560Q393 574 314 574T196 525T156 388L179 396Q251 419 300 419Q524 419 524 209Q524 101 462 45T281 -11T102 77T41 330Q41 671 309 671Q384 671 471 653L500 647L490 560ZM174 299L155 292Q157
+86 287 86Q346 86 377 118T409 207T378 292T292 321T174 299Z" />
+<glyph unicode="7" glyph-name="seven" horiz-adv-x="560" d="M73 560V660H489V528L246 -11L142 19L377 530V560H73Z" />
+<glyph unicode="8" glyph-name="eight" horiz-adv-x="560" d="M168 671T278 671T453 626T519 495Q519 435 501 405T431 342Q482 309 505 275T529 179Q529 79 460 34T278 -11Q30 -11 30 168Q30 235 53 271T126 342Q79 373 60 406T41 496Q41 580 104 625ZM149 192Q149
+89 279 89T410 194Q410 263 326 289H230Q149 263 149 192ZM400 479Q400 571 280 571T160 479Q160 419 230 384H326Q400 419 400 479Z" />
+<glyph unicode="9" glyph-name="nine" horiz-adv-x="560" d="M248 86Q400 86 402 278L378 270Q302 244 256 244Q148 244 91 295T34 450T97 612T270 671Q395 671 456 582T517 319T449 67T248 -11Q173 -11 86 7L57 13L67 100Q164 86 248 86ZM265 342Q322 342 382
+364L403 371Q401 574 270 574Q213 574 181 541T149 451Q149 342 265 342Z" />
+<glyph unicode=":" glyph-name="colon" horiz-adv-x="239" d="M61 303V447H178V303H61ZM61 0V144H178V0H61Z" />
+<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="266" d="M84 124H204L124 -123H36L84 124ZM77 303V447H194V303H77Z" />
+<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="560" d="M474 377L180 253L474 123V11L64 206V296L474 488V377Z" />
+<glyph unicode="=" glyph-name="equal" horiz-adv-x="560" d="M61 301V399H499V301H61ZM61 103V201H499V103H61Z" />
+<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="560" d="M380 253L86 377V488L496 296V206L86 11V123L380 253Z" />
+<glyph unicode="?" glyph-name="question" horiz-adv-x="441" d="M406 534Q406 467 390 432T322 357T255 294T238 243V210H150Q126 241 126 288Q126 313 145 338T213 403T278 466T294 526Q294 599 188 599Q128 599 62 585L39 580L33 663Q126 696 202 696Q307 696
+356 658T406 534ZM133 0V140H249V0H133Z" />
+<glyph unicode="@" glyph-name="at" horiz-adv-x="975" d="M939 305V295Q939 130 893 64T754 -3Q709 -3 678 11T637 40L628 55Q540 -2 461 -2T334 53T286 243T330 440T482 502Q522 502 568 484L584 477V491H692V307Q692 155 702 122Q705 110 713 101T729 90T759
+88T796 102Q830 133 830 295V306Q830 477 753 554T502 631T241 538T152 254T233 -24T503 -111L646 -102L651 -197Q559 -206 503 -206Q388 -206 306 -184T164 -108Q44 -3 44 261Q44 496 164 611T504 726Q939 726 939 305ZM477 93Q519 93 591 127Q584 167 584 262V392Q534
+407 504 407Q440 407 418 371T396 248Q396 93 477 93Z" />
+<glyph unicode="A" glyph-name="A" horiz-adv-x="599" d="M20 0L189 685H410L580 0H468L431 147H168L131 0H20ZM275 592L190 245H409L325 592H275Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="612" d="M79 685H339Q444 685 496 643T548 507Q548 446 529 411T467 353Q565 315 565 194Q565 0 347 0H79V685ZM339 299H190V96H341Q396 96 423 119T451 198T419 276T339 299ZM333 589H190V393H337Q435 393 435
+494Q435 589 333 589Z" />
+<glyph unicode="C" glyph-name="C" horiz-adv-x="544" d="M309 -11Q159 -11 106 72T52 345T106 615T309 696Q398 696 505 671L501 581Q411 597 321 597T199 544T167 343T198 142T319 88T501 103L504 11Q401 -11 309 -11Z" />
+<glyph unicode="D" glyph-name="D" horiz-adv-x="641" d="M316 0H79V685H316Q474 685 532 605T590 354Q590 267 579 207T538 97Q481 0 316 0ZM475 354Q475 478 444 533T316 588H190V98H316Q415 98 448 171Q464 208 469 250T475 354Z" />
+<glyph unicode="E" glyph-name="E" horiz-adv-x="553" d="M79 0V685H511V588H190V394H451V298H190V98H511V0H79Z" />
+<glyph unicode="F" glyph-name="F" horiz-adv-x="529" d="M79 0V685H504V588H190V357H451V260H190V0H79Z" />
+<glyph unicode="G" glyph-name="G" horiz-adv-x="613" d="M358 262V360H553V12Q526 5 444 -3T324 -11Q168 -11 109 75T50 344T110 612T320 696Q408 696 518 676L553 669L549 581Q428 597 332 597T201 543T165 343T198 142T334 86Q407 86 443 95V262H358Z" />
+<glyph unicode="H" glyph-name="H" horiz-adv-x="676" d="M486 0V296H190V0H79V685H190V393H486V685H598V0H486Z" />
+<glyph unicode="I" glyph-name="I" horiz-adv-x="269" d="M79 0V685H190V0H79Z" />
+<glyph unicode="J" glyph-name="J" horiz-adv-x="296" d="M19 -71V27Q72 27 91 43T111 114V685H221L222 106Q222 -1 177 -36T19 -71Z" />
+<glyph unicode="K" glyph-name="K" horiz-adv-x="583" d="M190 0H79V685H190V376L292 384L432 685H559L390 341L566 0H437L292 286L190 279V0Z" />
+<glyph unicode="L" glyph-name="L" horiz-adv-x="475" d="M463 0H79V685H190V99H463V0Z" />
+<glyph unicode="M" glyph-name="M" horiz-adv-x="850" d="M79 0V685H272L425 150L578 685H772V0H660V562H645L483 28H367L205 562H190V0H79Z" />
+<glyph unicode="N" glyph-name="N" horiz-adv-x="686" d="M79 0V685H273L481 98H496V685H607V0H417L204 588H190V0H79Z" />
+<glyph unicode="O" glyph-name="O" horiz-adv-x="656" d="M232 86T328 86T457 144T491 338T457 537T328 599T199 537T164 340T198 145ZM483 -11T328 -11T111 73T49 339T111 608T328 696T544 609T606 339T545 73Z" />
+<glyph unicode="P" glyph-name="P" horiz-adv-x="591" d="M330 213H190V0H79V685H330Q563 685 563 455Q563 337 505 275T330 213ZM190 309H329Q449 309 449 455Q449 525 420 557T329 589H190V309Z" />
+<glyph unicode="Q" glyph-name="Q" horiz-adv-x="656" d="M328 -11Q172 -11 111 73T49 338T111 608T328 696T544 609T606 339Q606 219 581 145T497 32L581 -103L478 -151L389 -5Q370 -11 328 -11ZM232 86T328 86T457 143T491 338T457 537T328 599T199 537T164
+339T198 145Z" />
+<glyph unicode="R" glyph-name="R" horiz-adv-x="618" d="M190 244V0H79V685H339Q571 685 571 467Q571 321 459 269L572 0H450L351 244H190ZM457 466Q457 589 339 589H190V340H341Q401 340 429 374T457 466Z" />
+<glyph unicode="S" glyph-name="S" horiz-adv-x="543" d="M280 599Q153 599 153 510Q153 464 183 445T315 397T460 329T502 204Q502 96 441 43T273 -11Q188 -11 85 9L49 16L60 105Q195 87 266 87Q390 87 390 197Q390 240 362 260T236 305T90 373T42 509T102 649T270
+697Q347 697 452 679L487 673L478 583Q338 599 280 599Z" />
+<glyph unicode="T" glyph-name="T" horiz-adv-x="526" d="M13 586V685H513V586H320V0H208V586H13Z" />
+<glyph unicode="U" glyph-name="U" horiz-adv-x="650" d="M185 219Q185 86 325 86T465 219V685H577V221Q577 100 514 45T325 -11T136 44T73 221V685H185V219Z" />
+<glyph unicode="V" glyph-name="V" horiz-adv-x="594" d="M458 685H574L406 0H188L20 685H136L272 98H322L458 685Z" />
+<glyph unicode="W" glyph-name="W" horiz-adv-x="911" d="M24 685H141L239 96H260L390 683H520L650 96H672L770 685H887L752 0H573L455 549L338 0H158L24 685Z" />
+<glyph unicode="X" glyph-name="X" horiz-adv-x="564" d="M138 685L285 415L434 685H551L348 337L551 0H427L280 258L130 0H13L217 331L13 685H138Z" />
+<glyph unicode="Y" glyph-name="Y" horiz-adv-x="549" d="M331 0H219V282L4 685H129L274 391L420 685H544L331 282V0Z" />
+<glyph unicode="Z" glyph-name="Z" horiz-adv-x="534" d="M42 588V685H492V578L174 116V97H492V0H42V106L359 568V588H42Z" />
+<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="344" d="M306 749V652H183V-26H306V-123H73V749H306Z" />
+<glyph unicode="\" glyph-name="backslash" horiz-adv-x="471" d="M440 13L345 -27L31 670L125 712L440 13Z" />
+<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="344" d="M38 652V749H271V-123H38V-26H161V652H38Z" />
+<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="560" d="M400 316L276 554L151 316H37L227 660H321L514 316H400Z" />
+<glyph unicode="_" glyph-name="underscore" horiz-adv-x="625" d="M99 -81H527V-174H99V-81Z" />
+<glyph unicode="`" glyph-name="grave" horiz-adv-x="254" d="M24 748L260 647L234 576L-10 654L24 748Z" />
+<glyph unicode="a" glyph-name="a" horiz-adv-x="507" d="M436 346V118Q437 96 447 86T480 72L477 -11Q391 -11 344 26Q264 -11 183 -11Q34 -11 34 148Q34 224 74 258T199 299L328 310V346Q328 386 311 402T259 418Q195 418 99 410L67 408L63 485Q172 511 263
+511T395 472T436 346ZM212 222Q143 216 143 147T204 78Q254 78 310 94L328 100V233L212 222Z" />
+<glyph unicode="b" glyph-name="b" horiz-adv-x="536" d="M299 511Q402 511 447 454T493 250T439 47T249 -11Q202 -11 100 -2L66 1V708H174V481Q243 511 299 511ZM249 86Q329 86 355 123T382 251T360 377T286 414Q238 414 190 399L174 394V90Q229 86 249 86Z" />
+<glyph unicode="c" glyph-name="c" horiz-adv-x="442" d="M253 511Q306 511 378 497L403 492L399 406Q320 414 282 414Q206 414 180 380T154 252T179 122T283 86L400 94L403 7Q302 -11 251 -11Q137 -11 91 50T44 252T93 451T253 511Z" />
+<glyph unicode="d" glyph-name="d" horiz-adv-x="540" d="M474 708V0H366V26Q293 -11 232 -11Q134 -11 89 48T43 246T93 448T251 511Q287 511 365 498V708H474ZM348 104L365 111V407Q305 417 254 417Q153 417 153 249Q153 157 176 122T251 86T348 104Z" />
+<glyph unicode="e" glyph-name="e" horiz-adv-x="508" d="M422 90L450 93L452 12Q338 -11 250 -11Q139 -11 91 50T42 245Q42 511 259 511Q469 511 469 282L462 204H152Q153 142 179 113T276 84T422 90ZM362 288Q362 362 339 391T259 421T178 390T151 288H362Z" />
+<glyph unicode="f" glyph-name="f" horiz-adv-x="346" d="M197 407V0H89V407H31V500H89V532Q89 639 120 679T230 719L338 709L337 620Q288 622 256 622T210 603T197 531V500H329V407H197Z" />
+<glyph unicode="g" glyph-name="g" horiz-adv-x="525" d="M503 -68Q503 -232 266 -232Q152 -232 97 -201T42 -88Q42 -51 60 -25T118 33Q85 55 85 106Q85 126 112 171L121 186Q49 229 49 336Q49 426 103 468T249 510Q293 510 336 500L351 497L506 501V413L423 418Q450
+383 450 336Q450 238 401 201T246 163Q220 163 202 167Q188 133 188 115T206 89T296 81Q415 80 459 49T503 -68ZM149 -78Q149 -113 177 -128T273 -143Q394 -143 394 -74Q394 -35 373 -25T287 -13L189 -7Q167 -25 158 -40T149 -78ZM157 290T179 269T250 247T320
+268T342 336T320 403T249 425Q157 425 157 336Q157 290 179 269Z" />
+<glyph unicode="h" glyph-name="h" horiz-adv-x="546" d="M175 0H66V708H175V474Q249 511 312 511Q412 511 448 455T485 268V0H376V265Q376 346 359 380T287 414Q239 414 191 398L175 392V0Z" />
+<glyph unicode="i" glyph-name="i" horiz-adv-x="241" d="M66 0V500H175V0H66ZM66 585V700H175V585H66Z" />
+<glyph unicode="j" glyph-name="j" horiz-adv-x="242" d="M67 19V500H175V18Q175 -80 141 -127T2 -227L-41 -146Q29 -102 48 -75T67 19ZM67 585V700H175V585H67Z" />
+<glyph unicode="k" glyph-name="k" horiz-adv-x="499" d="M175 0H66V708H175V299L237 305L355 500H477L333 266L485 0H362L240 211L175 204V0Z" />
+<glyph unicode="l" glyph-name="l" horiz-adv-x="253" d="M72 0V708H181V0H72Z" />
+<glyph unicode="m" glyph-name="m" horiz-adv-x="838" d="M175 0H66V500H174V469Q245 511 304 511Q391 511 431 462Q522 511 612 511T739 456T776 268V0H668V265Q668 346 652 380T583 414Q538 414 486 394L469 387Q477 367 477 259V0H369V257Q369 346 353 380T283
+414Q233 414 190 394L175 388V0Z" />
+<glyph unicode="n" glyph-name="n" horiz-adv-x="546" d="M175 0H66V500H174V469Q247 511 312 511Q412 511 448 455T485 268V0H377V265Q377 346 360 380T288 414Q237 414 190 394L175 388V0Z" />
+<glyph unicode="o" glyph-name="o" horiz-adv-x="530" d="M145 511T265 511T436 446T488 251T438 55T265 -11T92 55T42 251T93 446ZM198 81T265 81T355 121T378 252T354 381T265 419T177 381T152 252T175 121Z" />
+<glyph unicode="p" glyph-name="p" horiz-adv-x="537" d="M66 -215V500H174V469Q243 511 303 511Q402 511 448 451T494 248T442 47T270 -11Q229 -11 175 -2V-215H66ZM284 414Q237 414 190 393L175 386V91Q215 83 263 83Q331 83 357 122T383 255Q383 414 284 414Z" />
+<glyph unicode="q" glyph-name="q" horiz-adv-x="535" d="M239 -11Q136 -11 90 47T43 250T97 453T286 511Q335 511 436 502L469 499V-215H361V19Q294 -11 239 -11ZM286 417Q207 417 180 378T152 249T176 123T252 86Q299 86 346 101L361 106V413Q313 417 286 417Z" />
+<glyph unicode="r" glyph-name="r" horiz-adv-x="361" d="M66 0V500H174V440Q259 495 344 511V402Q258 385 197 358L175 349V0H66Z" />
+<glyph unicode="s" glyph-name="s" horiz-adv-x="469" d="M413 397Q295 413 242 413T169 401T148 361T170 323T276 298T395 252T430 142T380 26T232 -11Q171 -11 78 6L47 11L51 102Q171 86 224 86T299 99T322 142T301 183T198 208T78 251T40 357T92 472T227 510Q291
+510 384 494L415 488L413 397Z" />
+<glyph unicode="t" glyph-name="t" horiz-adv-x="358" d="M335 407H197V187Q197 126 206 106T252 86L334 89L339 2Q272 -11 237 -11Q152 -11 121 28T89 175V407H25V500H89V645H197V500H335V407Z" />
+<glyph unicode="u" glyph-name="u" horiz-adv-x="543" d="M369 500H477V0H369V31Q296 -11 234 -11Q131 -11 96 44T61 239V500H170V238Q170 148 185 117T255 86Q309 86 354 106L369 112V500Z" />
+<glyph unicode="v" glyph-name="v" horiz-adv-x="491" d="M19 500H133L229 93H261L361 500H472L342 0H148L19 500Z" />
+<glyph unicode="w" glyph-name="w" horiz-adv-x="768" d="M27 500H134L213 93H233L328 490H440L535 93H555L633 500H741L635 0H462L384 343L306 0H133L27 500Z" />
+<glyph unicode="x" glyph-name="x" horiz-adv-x="464" d="M18 500H134L232 327L331 500H447L298 254L447 0H331L232 171L134 0H18L163 251L18 500Z" />
+<glyph unicode="y" glyph-name="y" horiz-adv-x="492" d="M20 500H127L233 93H260L366 500H474L284 -215H177L237 0H151L20 500Z" />
+<glyph unicode="z" glyph-name="z" horiz-adv-x="454" d="M41 403V500H412V403L172 97H412V0H41V97L282 403H41Z" />
+<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="357" d="M228 575L235 450Q235 387 214 359T126 313Q192 296 213 266T235 171L228 54Q228 11 247 -12T318 -39V-131Q211 -127 167 -88T122 42L129 163Q129 240 19 270V355Q76 368 102 392T129 456L122
+583Q122 677 166 715T319 758L320 666Q267 662 248 640T228 575Z" />
+<glyph unicode="|" glyph-name="bar" horiz-adv-x="252" d="M72 -215V708H180V-215H72Z" />
+<glyph unicode="}" glyph-name="braceright" horiz-adv-x="357" d="M129 54L122 171Q122 235 143 265T231 313Q164 331 143 359T122 450L129 575Q129 618 110 640T37 666L38 758Q146 754 190 716T235 583L228 456Q228 417 254 393T338 355V270Q228 240 228 163L235
+42Q235 -48 191 -87T39 -131V-39Q91 -36 110 -13T129 54Z" />
+<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="560" d="M409 181T382 181T277 206T180 232T135 222T91 200L74 190L64 278Q126 330 184 330Q212 330 287 305T382 279Q417 279 470 310L487 320L496 233Q478 215 444 198Z" />
+<glyph unicode="&#xa0;" glyph-name="uni00A0" horiz-adv-x="220" />
+<glyph unicode="&#xa1;" glyph-name="exclamdown" horiz-adv-x="248" d="M183 500V360H66V500H183ZM172 259L182 -185H66L76 259H172Z" />
+<glyph unicode="&#xa2;" glyph-name="cent" horiz-adv-x="560" d="M274 -78V32Q183 37 138 88T93 249Q93 455 273 468V576H364V464L452 452L449 369Q370 374 327 374Q259 374 232 345T204 249T231 154T330 126L450 131L453 48Q405 38 364 36V-78H274Z" />
+<glyph unicode="&#xa3;" glyph-name="sterling" horiz-adv-x="560" d="M456 564Q383 573 338 573T278 553T263 478V426H423V333H263V93H400L472 109L489 18L408 0H77V93H156V333H90V426H156V483Q156 592 193 631T314 670Q373 670 438 655L459 650L456 564Z" />
+<glyph unicode="&#xa4;" glyph-name="currency" horiz-adv-x="560" d="M371 86Q328 62 280 62T188 86L117 14L42 89L114 160Q90 200 90 250T114 343L42 415L117 490L188 418Q231 442 279 442T371 418L443 490L518 415L446 343Q470 300 470 252T446 160L518 89L443
+14L371 86ZM240 154T280 154T349 183T378 252T349 321T280 350T211 321T182 252T211 183Z" />
+<glyph unicode="&#xa5;" glyph-name="yen" horiz-adv-x="560" d="M58 301V393H170L13 660H137L281 424L424 660H548L392 393H502V301H341L337 283V238H502V146H337V0H226V146H58V238H226V283L223 301H58Z" />
+<glyph unicode="&#xa6;" glyph-name="brokenbar" horiz-adv-x="256" d="M74 708H182V335H74V708ZM74 164H182V-215H74V164Z" />
+<glyph unicode="&#xa7;" glyph-name="section" horiz-adv-x="509" d="M433 534Q322 550 268 550T190 533T166 478T195 425T309 392T427 344T461 245T414 109Q451 77 451 -6Q451 -173 246 -173Q192 -173 94 -157L64 -152L75 -64Q183 -79 238 -79Q347 -79 347 -4Q347
+31 322 44T252 67T205 78Q116 98 80 129T43 231Q43 267 63 306T105 362Q61 394 61 471Q61 644 267 644Q333 644 410 628L438 623L433 534ZM177 325Q152 288 152 252T169 201T241 174T330 148Q336 156 343 181T351 235T331 277T246 308T177 325Z" />
+<glyph unicode="&#xa8;" glyph-name="dieresis" horiz-adv-x="254" d="M-22 607V721H82V607H-22ZM187 607V721H291V607H187Z" />
+<glyph unicode="&#xa9;" glyph-name="copyright" horiz-adv-x="644" d="M205 155T129 235T52 435T128 633T323 713T517 632T592 433T517 235T324 155ZM106 528T106 434T167 274T321 208T476 273T538 433T476 594T322 661T168 595ZM331 595Q369 595 410 582L404
+510Q368 517 339 517T300 500T290 437T300 371T336 351L404 357L410 288Q378 272 320 272T233 308T205 434T234 559T331 595Z" />
+<glyph unicode="&#xaa;" glyph-name="ordfeminine" horiz-adv-x="403" d="M330 551V412Q338 402 353 400L351 332Q296 332 276 339T243 362Q195 333 147 333T73 360T47 435Q47 523 161 529L237 533V556Q237 582 191 582L67 575L64 638Q134 659 199 659T297 636T330
+551ZM177 470Q141 467 141 437T174 406Q199 406 228 418L237 422V474L177 470Z" />
+<glyph unicode="&#xab;" glyph-name="guillemotleft" horiz-adv-x="574" d="M251 330L135 247L251 153V42L42 204V285L251 440V330ZM514 330L398 247L514 153V42L305 204V285L514 440V330Z" />
+<glyph unicode="&#xac;" glyph-name="logicalnot" horiz-adv-x="560" d="M61 351H493V110H395V254H61V351Z" />
+<glyph unicode="&#xae;" glyph-name="registered" horiz-adv-x="644" d="M206 155T129 235T52 435T128 633T323 713T517 632T592 433T517 235T324 155ZM106 528T106 434T168 274T323 208T476 273T538 433T476 594T322 661T168 595ZM286 378V279H206V588H331Q445
+588 445 488Q445 450 436 429T401 391L449 279H365L328 378H286ZM285 527V438H326Q368 438 368 482T321 527H285Z" />
+<glyph unicode="&#xaf;" glyph-name="overscore" horiz-adv-x="254" d="M-9 609V691H273V609H-9Z" />
+<glyph unicode="&#xb0;" glyph-name="degree" horiz-adv-x="560" d="M134 485T134 550T174 655T280 696T385 656T426 550T386 445T280 405T175 445ZM198 587T198 550T220 490T280 467T340 490T364 550T341 610T280 634T221 611Z" />
+<glyph unicode="&#xb1;" glyph-name="plusminus" horiz-adv-x="560" d="M52 280V378H230V493H328V378H508V280H328V168H230V280H52ZM52 125H508V27H52V125Z" />
+<glyph unicode="&#xb2;" glyph-name="twosuperior" horiz-adv-x="280" d="M246 478H25V553L104 624Q152 665 152 692Q152 717 110 717L31 710L27 790Q94 800 145 800T220 778T244 713T231 648T186 599L137 557H246V478Z" />
+<glyph unicode="&#xb3;" glyph-name="threesuperior" horiz-adv-x="280" d="M134 800Q248 800 248 714Q248 661 214 642Q255 626 255 567Q255 468 142 468L24 476L30 553Q89 546 126 546T164 574Q164 600 129 600H63V672H128Q140 672 148 679T156 698Q156 722
+121 722L34 716L28 791Q93 800 134 800Z" />
+<glyph unicode="&#xb4;" glyph-name="acute" horiz-adv-x="268" d="M14 647L250 748L284 654L40 576L14 647Z" />
+<glyph unicode="&#xb5;" glyph-name="mu" horiz-adv-x="560" d="M380 500H488V0H380V31Q307 -11 245 -11Q206 -11 181 -4V-215H72V500H181V214Q182 140 198 113T266 86Q320 86 365 106L380 112V500Z" />
+<glyph unicode="&#xb6;" glyph-name="paragraph" horiz-adv-x="596" d="M403 0V592H318V0H224V303H217Q135 303 83 356T31 493T83 631T219 685H549V592H497V0H403Z" />
+<glyph unicode="&#xb7;" glyph-name="middot" horiz-adv-x="239" d="M61 194V338H178V194H61Z" />
+<glyph unicode="&#xb8;" glyph-name="cedilla" horiz-adv-x="264" d="M173 -43T201 -60T229 -128T202 -205T125 -231Q87 -231 48 -224L35 -221L39 -156Q73 -158 94 -158Q135 -158 135 -127Q135 -112 126 -106T94 -100H63V1H110V-42Q173 -43 201 -60Z" />
+<glyph unicode="&#xb9;" glyph-name="onesuperior" horiz-adv-x="280" d="M204 790V478H116V693L60 655L19 717L124 790H204Z" />
+<glyph unicode="&#xba;" glyph-name="ordmasculine" horiz-adv-x="403" d="M46 659T201 659T357 496T202 333T46 496ZM170 419T202 419T246 437T258 497T247 556T203 574T157 556T143 497T156 438Z" />
+<glyph unicode="&#xbb;" glyph-name="guillemotright" horiz-adv-x="575" d="M439 247L323 330V440L532 285V204L323 42V153L439 247ZM176 247L60 330V440L269 285V204L60 42V153L176 247Z" />
+<glyph unicode="&#xbc;" glyph-name="onequarter" horiz-adv-x="542" d="M211 790V478H123V693L67 655L26 717L131 790H211ZM32 29L425 660L472 630L79 -3L32 29ZM410 -100V-59H274V14L326 212H424L363 20H410L420 109H497V20H515V-59H497V-100H410Z" />
+<glyph unicode="&#xbd;" glyph-name="onehalf" horiz-adv-x="536" d="M213 790V478H125V693L69 655L28 717L133 790H213ZM31 29L424 660L471 630L78 -3L31 29ZM501 -100H280V-25L359 46Q407 87 407 114Q407 139 365 139L286 132L282 212Q349 222 400 222T475 200T499
+135T486 70T441 21L392 -21H501V-100Z" />
+<glyph unicode="&#xbe;" glyph-name="threequarters" horiz-adv-x="556" d="M151 800Q265 800 265 714Q265 661 231 642Q272 626 272 567Q272 468 159 468L41 476L47 553Q106 546 143 546T181 574Q181 600 146 600H80V672H145Q157 672 165 679T173 698Q173 722
+138 722L51 716L45 791Q110 800 151 800ZM47 29L440 660L487 630L94 -3L47 29ZM426 -100V-59H290V14L342 212H440L379 20H426L436 109H513V20H531V-59H513V-100H426Z" />
+<glyph unicode="&#xbf;" glyph-name="questiondown" horiz-adv-x="437" d="M32 -34Q32 33 48 68T116 143T183 206T200 257V290H288Q312 259 312 212Q312 187 293 162T225 97T160 34T144 -26Q144 -99 250 -99Q310 -99 376 -85L399 -80L405 -163Q312 -196 236 -196Q131
+-196 82 -158T32 -34ZM305 500V360H189V500H305Z" />
+<glyph unicode="&#xc0;" glyph-name="Agrave" horiz-adv-x="599" d="M20 0L189 685H410L580 0H468L431 147H168L131 0H20ZM275 592L190 245H409L325 592H275ZM186 939L422 836L394 760L151 842L186 939Z" />
+<glyph unicode="&#xc1;" glyph-name="Aacute" horiz-adv-x="599" d="M20 0L189 685H410L580 0H468L431 147H168L131 0H20ZM275 592L190 245H409L325 592H275ZM172 836L408 939L443 842L200 760L172 836Z" />
+<glyph unicode="&#xc2;" glyph-name="Acircumflex" horiz-adv-x="599" d="M20 0L189 685H410L580 0H468L431 147H168L131 0H20ZM275 592L190 245H409L325 592H275ZM117 776L251 919H345L479 776H363L299 843L234 776H117Z" />
+<glyph unicode="&#xc3;" glyph-name="Atilde" horiz-adv-x="599" d="M20 0L189 685H410L580 0H468L431 147H168L131 0H20ZM275 592L190 245H409L325 592H275ZM400 777T376 777T289 802T213 827Q188 827 149 794L136 783L112 861Q118 868 127 878T163 906T216 923T303
+898T376 873Q398 873 438 906L452 917L476 838Q461 817 431 797Z" />
+<glyph unicode="&#xc4;" glyph-name="Adieresis" horiz-adv-x="599" d="M20 0L189 685H410L580 0H468L431 147H168L131 0H20ZM275 592L190 245H409L325 592H275ZM142 783V897H246V783H142ZM351 783V897H455V783H351Z" />
+<glyph unicode="&#xc5;" glyph-name="Aring" horiz-adv-x="599" d="M436 731Q436 693 415 664L580 0H468L431 147H168L131 0H20L184 664Q163 693 163 731Q163 785 202 816T299 848T397 817T436 731ZM275 592L190 245H409L325 592H275ZM239 753T239 731T255 697T299
+685T343 697T360 731T344 765T299 778T255 766Z" />
+<glyph unicode="&#xc6;" glyph-name="AE" horiz-adv-x="873" d="M399 0V142H170L128 0H15L217 693H829V586H509V405H769V300H509V107H829V0H399ZM296 586L198 249H399L400 586H296Z" />
+<glyph unicode="&#xc7;" glyph-name="Ccedilla" horiz-adv-x="544" d="M381 -43T409 -60T437 -128T410 -205T333 -231Q295 -231 256 -224L243 -221L247 -156Q281 -158 302 -158Q343 -158 343 -127Q343 -112 334 -106T302 -100H271V-9Q145 0 99 83T52 351T106 615T309
+696Q398 696 505 671L501 581Q411 597 321 597T199 544T167 343T198 142T319 88T501 103L504 11Q412 -9 318 -11V-42Q381 -43 409 -60Z" />
+<glyph unicode="&#xc8;" glyph-name="Egrave" horiz-adv-x="553" d="M79 0V685H511V588H190V394H451V298H190V98H511V0H79ZM187 939L423 836L395 760L152 842L187 939Z" />
+<glyph unicode="&#xc9;" glyph-name="Eacute" horiz-adv-x="553" d="M79 0V685H511V588H190V394H451V298H190V98H511V0H79ZM164 836L400 939L435 842L192 760L164 836Z" />
+<glyph unicode="&#xca;" glyph-name="Ecircumflex" horiz-adv-x="553" d="M79 0V685H511V588H190V394H451V298H190V98H511V0H79ZM115 776L249 919H343L477 776H361L297 843L232 776H115Z" />
+<glyph unicode="&#xcb;" glyph-name="Edieresis" horiz-adv-x="553" d="M79 0V685H511V588H190V394H451V298H190V98H511V0H79ZM138 783V897H242V783H138ZM347 783V897H451V783H347Z" />
+<glyph unicode="&#xcc;" glyph-name="Igrave" horiz-adv-x="269" d="M79 0V685H190V0H79ZM12 939L248 836L220 760L-23 842L12 939Z" />
+<glyph unicode="&#xcd;" glyph-name="Iacute" horiz-adv-x="269" d="M79 0V685H190V0H79ZM10 836L246 939L281 842L38 760L10 836Z" />
+<glyph unicode="&#xce;" glyph-name="Icircumflex" horiz-adv-x="269" d="M79 0V685H190V0H79ZM-49 776L85 919H179L313 776H197L133 843L68 776H-49Z" />
+<glyph unicode="&#xcf;" glyph-name="Idieresis" horiz-adv-x="269" d="M79 0V685H190V0H79ZM-22 783V897H82V783H-22ZM187 783V897H291V783H187Z" />
+<glyph unicode="&#xd0;" glyph-name="Eth" horiz-adv-x="644" d="M23 292V398H83V693H318Q480 693 539 606Q569 561 581 503T593 358T582 210T541 98Q483 0 318 0H83V292H23ZM478 359Q478 478 447 532T318 587H193V398H335V292H193V106H318Q418 106 450 179Q467
+216 472 257T478 359Z" />
+<glyph unicode="&#xd1;" glyph-name="Ntilde" horiz-adv-x="686" d="M79 0V685H273L481 98H496V685H607V0H417L204 588H190V0H79ZM445 777T421 777T334 802T258 827Q233 827 194 794L181 783L157 861Q163 868 172 878T208 906T261 923T348 898T421 873Q443 873
+484 906L497 917L521 838Q506 817 476 797Z" />
+<glyph unicode="&#xd2;" glyph-name="Ograve" horiz-adv-x="656" d="M232 86T328 86T457 144T491 338T457 537T328 599T199 537T164 340T198 145ZM483 -11T328 -11T111 73T49 339T111 608T328 696T544 609T606 339T545 73ZM214 939L450 836L422 760L179 842L214 939Z" />
+<glyph unicode="&#xd3;" glyph-name="Oacute" horiz-adv-x="656" d="M232 86T328 86T457 144T491 338T457 537T328 599T199 537T164 340T198 145ZM483 -11T328 -11T111 73T49 339T111 608T328 696T544 609T606 339T545 73ZM181 836L417 939L452 842L209 760L181 836Z" />
+<glyph unicode="&#xd4;" glyph-name="Ocircumflex" horiz-adv-x="656" d="M232 86T328 86T457 144T491 338T457 537T328 599T199 537T164 340T198 145ZM483 -11T328 -11T111 73T49 339T111 608T328 696T544 609T606 339T545 73ZM148 776L282 919H376L510 776H394L330
+843L265 776H148Z" />
+<glyph unicode="&#xd5;" glyph-name="Otilde" horiz-adv-x="656" d="M232 86T328 86T457 144T491 338T457 537T328 599T199 537T164 340T198 145ZM483 -11T328 -11T111 73T49 339T111 608T328 696T544 609T606 339T545 73ZM432 777T408 777T321 802T245 827Q220
+827 181 794L168 783L144 861Q150 868 159 878T195 906T248 923T335 898T408 873Q430 873 470 906L484 917L508 838Q493 817 463 797Z" />
+<glyph unicode="&#xd6;" glyph-name="Odieresis" horiz-adv-x="656" d="M232 86T328 86T457 144T491 338T457 537T328 599T199 537T164 340T198 145ZM483 -11T328 -11T111 73T49 339T111 608T328 696T544 609T606 339T545 73ZM172 783V897H276V783H172ZM381 783V897H485V783H381Z"
+/>
+<glyph unicode="&#xd7;" glyph-name="multiply" horiz-adv-x="560" d="M132 467L280 317L429 468L497 399L346 250L497 102L428 33L280 184L132 33L62 102L213 250L63 398L132 467Z" />
+<glyph unicode="&#xd8;" glyph-name="Oslash" horiz-adv-x="656" d="M328 -11Q268 -11 221 1L164 -122L84 -83L142 41Q49 116 49 339Q49 520 111 608T328 696Q389 696 440 680L498 805L580 770L518 637Q606 557 606 339Q606 157 545 73T328 -11ZM234 599T199 537T164
+341T194 152L397 588Q367 599 328 599Q234 599 199 537ZM328 86Q424 86 457 144T491 332T464 522L265 94Q294 86 328 86Z" />
+<glyph unicode="&#xd9;" glyph-name="Ugrave" horiz-adv-x="650" d="M185 219Q185 86 325 86T465 219V685H577V221Q577 100 514 45T325 -11T136 44T73 221V685H185V219ZM219 939L455 836L427 760L184 842L219 939Z" />
+<glyph unicode="&#xda;" glyph-name="Uacute" horiz-adv-x="650" d="M185 219Q185 86 325 86T465 219V685H577V221Q577 100 514 45T325 -11T136 44T73 221V685H185V219ZM185 836L421 939L456 842L213 760L185 836Z" />
+<glyph unicode="&#xdb;" glyph-name="Ucircumflex" horiz-adv-x="650" d="M185 219Q185 86 325 86T465 219V685H577V221Q577 100 514 45T325 -11T136 44T73 221V685H185V219ZM144 776L278 919H372L506 776H390L326 843L261 776H144Z" />
+<glyph unicode="&#xdc;" glyph-name="Udieresis" horiz-adv-x="650" d="M185 219Q185 86 325 86T465 219V685H577V221Q577 100 514 45T325 -11T136 44T73 221V685H185V219ZM169 783V897H273V783H169ZM378 783V897H482V783H378Z" />
+<glyph unicode="&#xdd;" glyph-name="Yacute" horiz-adv-x="549" d="M331 0H219V282L4 685H129L274 391L420 685H544L331 282V0ZM148 836L384 939L419 842L176 760L148 836Z" />
+<glyph unicode="&#xde;" glyph-name="Thorn" horiz-adv-x="597" d="M329 216Q390 216 420 253T451 355T421 451T329 482H190V216H329ZM330 108H190V0H79V693H190V588H330Q564 588 564 357Q564 238 505 173T330 108Z" />
+<glyph unicode="&#xdf;" glyph-name="germandbls" horiz-adv-x="595" d="M175 0H66V532Q66 634 116 676T279 719T444 684T496 567Q496 514 476 488T413 442T360 414T349 391T365 365T447 321T539 259T567 170Q567 69 521 29T365 -11Q308 -11 244 3L221 8L225 96Q317
+85 364 85Q455 85 455 154Q455 184 438 200T356 246Q289 275 263 304T237 379T255 450T314 492T370 524T384 566T362 608T281 623T198 602T175 527V0Z" />
+<glyph unicode="&#xe0;" glyph-name="agrave" horiz-adv-x="507" d="M436 346V118Q437 96 447 86T480 72L477 -11Q391 -11 344 26Q264 -11 183 -11Q34 -11 34 148Q34 224 74 258T199 299L328 310V346Q328 386 311 402T259 418Q195 418 99 410L67 408L63 485Q172
+511 263 511T395 472T436 346ZM212 222Q143 216 143 147T204 78Q254 78 310 94L328 100V233L212 222ZM145 748L381 647L355 576L111 654L145 748Z" />
+<glyph unicode="&#xe1;" glyph-name="aacute" horiz-adv-x="507" d="M436 346V118Q437 96 447 86T480 72L477 -11Q391 -11 344 26Q264 -11 183 -11Q34 -11 34 148Q34 224 74 258T199 299L328 310V346Q328 386 311 402T259 418Q195 418 99 410L67 408L63 485Q172
+511 263 511T395 472T436 346ZM212 222Q143 216 143 147T204 78Q254 78 310 94L328 100V233L212 222ZM105 647L341 748L375 654L131 576L105 647Z" />
+<glyph unicode="&#xe2;" glyph-name="acircumflex" horiz-adv-x="507" d="M436 346V118Q437 96 447 86T480 72L477 -11Q391 -11 344 26Q264 -11 183 -11Q34 -11 34 148Q34 224 74 258T199 299L328 310V346Q328 386 311 402T259 418Q195 418 99 410L67 408L63 485Q172
+511 263 511T395 472T436 346ZM212 222Q143 216 143 147T204 78Q254 78 310 94L328 100V233L212 222ZM88 585L213 731H282L409 585H307L249 661L191 585H88Z" />
+<glyph unicode="&#xe3;" glyph-name="atilde" horiz-adv-x="507" d="M436 346V118Q437 96 447 86T480 72L477 -11Q391 -11 344 26Q264 -11 183 -11Q34 -11 34 148Q34 224 74 258T199 299L328 310V346Q328 386 311 402T259 418Q195 418 99 410L67 408L63 485Q172
+511 263 511T395 472T436 346ZM212 222Q143 216 143 147T204 78Q254 78 310 94L328 100V233L212 222ZM368 629T343 613T296 597T227 617T164 637Q140 637 101 612L88 603L64 666L80 682Q89 691 115 706T162 722T232 702T293 682Q315 682 356 709L369 718L393 654L378
+638Q368 629 343 613Z" />
+<glyph unicode="&#xe4;" glyph-name="adieresis" horiz-adv-x="507" d="M436 346V118Q437 96 447 86T480 72L477 -11Q391 -11 344 26Q264 -11 183 -11Q34 -11 34 148Q34 224 74 258T199 299L328 310V346Q328 386 311 402T259 418Q195 418 99 410L67 408L63 485Q172
+511 263 511T395 472T436 346ZM212 222Q143 216 143 147T204 78Q254 78 310 94L328 100V233L212 222ZM83 607V721H187V607H83ZM292 607V721H396V607H292Z" />
+<glyph unicode="&#xe5;" glyph-name="aring" horiz-adv-x="507" d="M436 346V118Q437 96 447 86T480 72L477 -11Q391 -11 344 26Q264 -11 183 -11Q34 -11 34 148Q34 224 74 258T199 299L328 310V346Q328 386 311 402T259 418Q195 418 99 410L67 408L63 485Q172
+511 263 511T395 472T436 346ZM212 222Q143 216 143 147T204 78Q254 78 310 94L328 100V233L212 222ZM213 530T181 561T149 640T181 720T260 752T339 720T372 640T340 562T260 530ZM239 691T225 677T211 641T225 605T260 590T296 604T310 640T296 676T261 691Z"
+/>
+<glyph unicode="&#xe6;" glyph-name="ae" horiz-adv-x="793" d="M706 94L735 97L737 12Q622 -11 528 -11T384 39L357 27Q271 -11 177 -11Q107 -11 71 31T34 150T76 261T211 301L328 310V342Q328 374 311 390T261 407Q186 407 102 399L70 396L66 492Q193 510 277
+510T400 458Q449 510 549 510Q753 510 753 282L746 203H436Q437 143 463 116T560 88T706 94ZM197 82Q242 82 287 93T335 107Q327 154 327 226L212 218Q143 213 143 148T197 82ZM436 288H646Q646 356 622 385T543 414T462 384T436 288Z" />
+<glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="442" d="M315 -43T343 -60T371 -128T344 -205T267 -231Q229 -231 190 -224L177 -221L181 -156Q215 -158 236 -158Q277 -158 277 -127Q277 -112 268 -106T236 -100H205V-8Q117 3 81 64T44 259T93 451T253
+511Q306 511 378 497L403 492L399 406Q320 414 282 414Q206 414 180 380T154 252T179 122T283 86L400 94L403 7Q303 -11 252 -11V-42Q315 -43 343 -60Z" />
+<glyph unicode="&#xe8;" glyph-name="egrave" horiz-adv-x="508" d="M422 90L450 93L452 12Q338 -11 250 -11Q139 -11 91 50T42 245Q42 511 259 511Q469 511 469 282L462 204H152Q153 142 179 113T276 84T422 90ZM362 288Q362 362 339 391T259 421T178 390T151
+288H362ZM149 748L385 647L359 576L115 654L149 748Z" />
+<glyph unicode="&#xe9;" glyph-name="eacute" horiz-adv-x="508" d="M422 90L450 93L452 12Q338 -11 250 -11Q139 -11 91 50T42 245Q42 511 259 511Q469 511 469 282L462 204H152Q153 142 179 113T276 84T422 90ZM362 288Q362 362 339 391T259 421T178 390T151
+288H362ZM122 647L358 748L392 654L148 576L122 647Z" />
+<glyph unicode="&#xea;" glyph-name="ecircumflex" horiz-adv-x="508" d="M422 90L450 93L452 12Q338 -11 250 -11Q139 -11 91 50T42 245Q42 511 259 511Q469 511 469 282L462 204H152Q153 142 179 113T276 84T422 90ZM362 288Q362 362 339 391T259 421T178 390T151
+288H362ZM99 585L224 731H293L420 585H318L260 661L202 585H99Z" />
+<glyph unicode="&#xeb;" glyph-name="edieresis" horiz-adv-x="508" d="M422 90L450 93L452 12Q338 -11 250 -11Q139 -11 91 50T42 245Q42 511 259 511Q469 511 469 282L462 204H152Q153 142 179 113T276 84T422 90ZM362 288Q362 362 339 391T259 421T178 390T151
+288H362ZM100 607V721H204V607H100ZM309 607V721H413V607H309Z" />
+<glyph unicode="&#xec;" glyph-name="igrave" horiz-adv-x="241" d="M66 0V500H175V0H66ZM-25 748L211 647L185 576L-59 654L-25 748Z" />
+<glyph unicode="&#xed;" glyph-name="iacute" horiz-adv-x="241" d="M34 647L270 748L304 654L60 576L34 647ZM66 500H175V0H66V500Z" />
+<glyph unicode="&#xee;" glyph-name="icircumflex" horiz-adv-x="241" d="M66 500H175V0H66V500ZM-44 585L81 731H150L277 585H175L117 661L59 585H-44Z" />
+<glyph unicode="&#xef;" glyph-name="idieresis" horiz-adv-x="241" d="M66 500H175V0H66V500ZM-40 607V721H64V607H-40ZM169 607V721H273V607H169Z" />
+<glyph unicode="&#xf0;" glyph-name="eth" horiz-adv-x="559" d="M377 633Q514 542 514 352T457 76T270 -9Q158 -9 99 47T40 210T94 376T254 435Q318 435 380 412L400 405Q395 460 370 500T288 573L164 490L119 553L204 610Q160 625 88 641L105 719Q217 704 298
+673L396 739L442 676L377 633ZM261 338Q209 338 182 303T154 215Q154 89 270 89Q337 89 368 139T400 310Q333 338 261 338Z" />
+<glyph unicode="&#xf1;" glyph-name="ntilde" horiz-adv-x="546" d="M66 0V500H174V469L194 480Q214 490 248 500T312 511Q412 511 448 455T485 268Q485 268 485 0H377V265Q377 346 360 380T286 414T175 388V0H66ZM419 629T394 613T347 597T278 617T216 637Q191
+637 152 612L139 603L115 666L130 682Q140 691 166 706T213 722T283 702T344 682Q366 682 406 709L420 718L444 654L428 638Q419 629 394 613Z" />
+<glyph unicode="&#xf2;" glyph-name="ograve" horiz-adv-x="530" d="M145 511T265 511T436 446T488 251T438 55T265 -11T92 55T42 251T93 446ZM198 81T265 81T355 121T378 252T354 381T265 419T177 381T152 252T175 121ZM165 748L401 647L375 576L131 654L165 748Z" />
+<glyph unicode="&#xf3;" glyph-name="oacute" horiz-adv-x="530" d="M145 511T265 511T436 446T488 251T438 55T265 -11T92 55T42 251T93 446ZM198 81T265 81T355 121T378 252T354 381T265 419T177 381T152 252T175 121ZM132 647L368 748L402 654L158 576L132 647Z" />
+<glyph unicode="&#xf4;" glyph-name="ocircumflex" horiz-adv-x="530" d="M145 511T265 511T436 446T488 251T438 55T265 -11T92 55T42 251T93 446ZM198 81T265 81T355 121T378 252T354 381T265 419T177 381T152 252T175 121ZM100 585L225 731H294L421 585H319L261
+661L203 585H100Z" />
+<glyph unicode="&#xf5;" glyph-name="otilde" horiz-adv-x="530" d="M145 511T265 511T436 446T488 251T438 55T265 -11T92 55T42 251T93 446ZM198 81T265 81T355 121T378 252T354 381T265 419T177 381T152 252T175 121ZM401 629T376 613T329 597T260 617T198
+637Q173 637 134 612L121 603L97 666L112 682Q122 691 148 706T195 722T265 702T326 682Q348 682 388 709L402 718L426 654L410 638Q401 629 376 613Z" />
+<glyph unicode="&#xf6;" glyph-name="odieresis" horiz-adv-x="530" d="M145 511T265 511T436 446T488 251T438 55T265 -11T92 55T42 251T93 446ZM198 81T265 81T355 121T378 252T354 381T265 419T177 381T152 252T175 121ZM107 607V721H211V607H107ZM316 607V721H420V607H316Z"
+/>
+<glyph unicode="&#xf7;" glyph-name="divide" horiz-adv-x="560" d="M105 241V351H173V428H386V351H455V241H105ZM225 23V141H333V23H225Z" />
+<glyph unicode="&#xf8;" glyph-name="oslash" horiz-adv-x="530" d="M265 511Q291 511 329 505L370 606L438 581L396 480Q488 425 488 253Q488 121 438 55T265 -11Q227 -11 197 -5L154 -110L87 -85L131 20Q42 77 42 253Q42 381 93 446T265 511ZM265 81Q332 81
+355 121T378 253T352 382L231 84Q246 81 265 81ZM265 419Q201 419 177 381T152 249T176 119L295 416Q282 419 265 419Z" />
+<glyph unicode="&#xf9;" glyph-name="ugrave" horiz-adv-x="543" d="M369 500H477V0H369V31Q296 -11 234 -11Q131 -11 96 44T61 239V500H170V238Q170 148 185 117T255 86Q309 86 354 106L369 112V500ZM139 748L375 647L349 576L105 654L139 748Z" />
+<glyph unicode="&#xfa;" glyph-name="uacute" horiz-adv-x="543" d="M477 500V0H369V31L349 20Q329 10 296 0T234 -11Q131 -11 96 44T61 239Q61 239 61 500H170V238Q170 148 185 117T257 86T369 112V500H477ZM141 647L377 748L411 654L167 576L141 647Z" />
+<glyph unicode="&#xfb;" glyph-name="ucircumflex" horiz-adv-x="543" d="M477 500V0H369V31L349 20Q329 10 296 0T234 -11Q131 -11 96 44T61 239Q61 239 61 500H170V238Q170 148 185 117T257 86T369 112V500H477ZM92 585L217 731H286L413 585H311L253 661L195 585H92Z" />
+<glyph unicode="&#xfc;" glyph-name="udieresis" horiz-adv-x="543" d="M477 500V0H369V31L349 20Q329 10 296 0T234 -11Q131 -11 96 44T61 239Q61 239 61 500H170V238Q170 148 185 117T257 86T369 112V500H477ZM117 607V721H221V607H117ZM326 607V721H430V607H326Z" />
+<glyph unicode="&#xfd;" glyph-name="yacute" horiz-adv-x="492" d="M20 500H127L233 93H260L366 500H474L284 -215H177L237 0H151L20 500ZM136 647L372 748L406 654L162 576L136 647Z" />
+<glyph unicode="&#xfe;" glyph-name="thorn" horiz-adv-x="536" d="M258 83Q332 83 357 122T383 250T360 377T286 414Q239 414 191 399L175 394V89Q228 83 258 83ZM299 511Q403 511 448 454T493 251T442 47T266 -11L175 -4V-215H66V708H175V481Q244 511 299 511Z" />
+<glyph unicode="&#xff;" glyph-name="ydieresis" horiz-adv-x="492" d="M20 500H127L233 93H260L366 500H474L284 -215H177L237 0H151L20 500ZM90 607V721H194V607H90ZM299 607V721H403V607H299Z" />
+<glyph unicode="&#x2013;" glyph-name="endash" horiz-adv-x="622" d="M61 313H561V220H61V313Z" />
+<glyph unicode="&#x2014;" glyph-name="emdash" horiz-adv-x="1122" d="M61 313H1061V220H61V313Z" />
+<glyph unicode="&#x2018;" glyph-name="quoteleft" horiz-adv-x="242" d="M201 691L156 456H42L118 691H201Z" />
+<glyph unicode="&#x2019;" glyph-name="quoteright" horiz-adv-x="238" d="M47 457L92 692H206L130 457H47Z" />
+<glyph unicode="&#x201a;" glyph-name="quotesinglbase" horiz-adv-x="239" d="M57 -57L79 56H133L97 -57H57Z" />
+<glyph unicode="&#x201c;" glyph-name="quotedblleft" horiz-adv-x="413" d="M372 691L327 456H213L289 691H372ZM201 691L156 456H42L118 691H201Z" />
+<glyph unicode="&#x201d;" glyph-name="quotedblright" horiz-adv-x="412" d="M47 458L92 693H206L130 458H47ZM220 458L265 693H379L303 458H220Z" />
+<glyph unicode="&#x201e;" glyph-name="quotedblbase" horiz-adv-x="394" d="M165 115L120 -120H6L82 115H165ZM339 115L294 -120H180L256 115H339Z" />
+<glyph unicode="&#x2022;" glyph-name="bullet" horiz-adv-x="460" d="M105 103V385H355V103H105Z" />
+<glyph unicode="&#x2039;" glyph-name="guilsinglleft" horiz-adv-x="311" d="M251 330L135 247L251 153V42L42 204V285L251 440V330Z" />
+<glyph unicode="&#x203a;" glyph-name="guilsinglright" horiz-adv-x="311" d="M175 254L59 337V447L268 292V212L59 49V160L175 254Z" />
+</font>
+</defs>
+</svg>
diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-600.ttf b/WebSites/errors/403/fonts/titillium-web-v7-latin-600.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..ad47e97d38844e67fd0e26063f16222bff6ad905
GIT binary patch
literal 29704
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
GX!<|gw#(-L

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-600.woff b/WebSites/errors/403/fonts/titillium-web-v7-latin-600.woff
new file mode 100644
index 0000000000000000000000000000000000000000..99fb0c69e542c33f187e7d2cbcef487f51322640
GIT binary patch
literal 16336
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
JEl4!L{{g$RVv+y=

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-600.woff2 b/WebSites/errors/403/fonts/titillium-web-v7-latin-600.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..8ba7955bba8b6c7480a5332099396892a06f9951
GIT binary patch
literal 12300
zcmV+nF!RrMPew8T0RR9105A*y4*&oF0CeO4057rt0RR9100000000000000000000
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-700.eot b/WebSites/errors/403/fonts/titillium-web-v7-latin-700.eot
new file mode 100644
index 0000000000000000000000000000000000000000..41796dc0800878a77d479ffefb6a457188c8046b
GIT binary patch
literal 13906
zcmaKzWl$VU5T<vR#U;4Q;_mLd=;H2>;2H=XJa`rf?gS0)4oQ&3-Q9w_1Pd0sd{=i@
zcYkiWrhDq0XS!$pP1V%siU0t#!T<p1pMe4YHH`o10RSMN6ZGFuT^s$M2mUYhzmN(5
zK>mwU6Mseji~nz<1n2{t0N(%l>wo41@Bz5~!;JuT0PBAs20#w*=AUl+Z|n;&{HJ;X
zy#7&d0B-*%egF@E@1F?(Bmvq0y?=@@K=glUeE&4Zf1EeK=6}+@|A*)K$NV?z3a|pW
z{LA<sWB+f}f7Px3<>L95<-aZr5d2qx|6gUM|IZ#F|JM!y069Hn?f>_D000Uga0Vbu
z3J|6Q@E#LRp2SYh5iAz4d9SAiM#SJN?DnxL;g;9G(drMSw;p{Zq+ACNbyXpgp8deJ
zpD<eSWkH9@GjecPU5S>P1Kayylurw4@K<`KYM57r5oqBj)A{RTr0p^+Q~SI9(hqra
zdXYQqjP8wcIQ4~fnVAGdKve`bt3;7V1MlQY0e-u@Zx!~h-CSE^Lly6sFGNl5O0KyJ
zeo40*sdOy6^gxi3aTXu^HGZoux}BOycmF=HIjCxSGcD^E_CDTUJ-I5p7ctE;94#-&
zer2uzhsX3^f@Ko)KbZ)qdLM8$4r}JP5FR?bLc@(7C20mf`WhQO+8G-yTHsjM*81Ku
zLeR2Z*zTkmGi0ZJ&Zsx6?(pl!#Bkw9Sv**_8J9j1U3>cyNVz6bToxa<S^%-k1~9aX
zX>QKEXyT`z;U{AJj;5k;ax&3Pg56h?VJql^6NM~~V3d)tI4$ngMYh~E5xhcO3Yt9~
ze{`)ZqE4I_D)EeLzFaRykBujP4&9$BfuORNyW$Kj=h=I@+k6`IM=r;2>~*t<0+>E3
z(wD|Ydg10(&^FvI)D>tay+&wn!dlQY7%fh&OC0}NWs!PHW?&mo=+hTe+H!hNi^nQB
z%QbPP!)rno88}B=bt&x?DqcADC7|%jwNMMHm3p$bMV_o{f&6toQ6tD1V*z4JdbJxP
ztQaM0iJ$X@f=p1Z_+O3f3Io$%GuTB$(u%hgP)AxKac`GL6VEDU(!;YYA?M>-zPZ6*
zCc7qTEXM`iL3axa1JI`Z70)dh#&7neAXrsfjD-R(;p9Ui4Yg@V>kIelAE36iU}@~O
zbgSbvQqV*sbttC*j)^w56^MBpKNQ6h!;+%#1r)U=9>pD}0Vo=26yGE7wl?dv>^wBU
zUFm8^so4@moL)<e_92}+K6-a?B_RJWBq!!++N4&Gylg!v7_(OH==$e_^J5K?G<;6A
zZ%BX~IwWs8AV7nq42HO|qXP@si01&-pd7oFty_7UNfLyiHh6gkyoh>4Ry3SA%kNcl
zVT8mGX#imdVOBj7>60~nJGzkd_%#NM`Q{=WR+`dR3m{JqL}S;2mP)*4C@01@%!yXh
zPH2c*z*_thy>HJL4bgkCt3!?7?T2VIjmBDFWBvudhS9_qeh@IX<Qnx)MMuLLkPEeZ
zv?XduYAln)+2>!g=@|C^hG~@CJB<Dj(kwAWzShj&(rq2_6~C}w9wH3TM>eLG=JUR*
zgPLI4p;Gv_Gnj3Mk_R2QB0RM^V4`2ySQ>(!)W6M#SE2n1<$B~u?51XfHR->UzZ83K
zOrh*2$Ty1;z}Pzwm^z&T@9hLA^>M?9OY?M;lrq;g`=#B_lZtm?^^)4%_E#S#8@Pwm
z1^!ZXkZoBDnBJl$M^mh%$WLzGZ6s4MB?`H~rmz5pBZmPM&kZ^9Aw=35RwAg5EHm5a
zU`BegM{nIL*KAu#K_S5cnP%;p_xNH(_E;kxg@VEPT(^E##La$O!9Rz3v4uKGF^g7|
zoAntA3thQk497`XTTl{wN)~CU8?dPIqfYks>@1yR+}U4F5b9UMqTAYULLFGMx$K0c
zRur5XR>Ow4Mf2G#ds3nfbdWl8waj3nLzN5ycr#b(xbTwtRGR%;5r-6eov%0_EaAXA
zBW!*hbTzehGyaz8DMk-lu7DA9`KHb9Z9nU~g2C2OsJVpLC_<_;a?P*82LoT>Mru0W
zm5G))Pc7UDkW4W{4`xPv=~EKEC97YE5$82ZG<(t0($>Zo(OxmUk;Fuj`V4BYE(cg^
z+IBCxd@ywyEDhJ1P|9*>(AgqnbY**4PKleOuq}9jGn(c0ZI?1EmSV3A(J-&z$Pk0C
zr$ae!Fn~b$+Y7MpDa1T(0V;S`hzHjyzz*EyG*?GBO={tJB9^KO_~M&H$!LU08_=d@
zxTuG!m45@c$kuijFUP;`3#?=a{XH<-j2g{ue%oFL@ZOZtr|m<xwixQZ8E(%@gM;+|
zpn_4NzX<)Cu{V&LQuI^|sYo!PM;N%6E?gI_dbph`yt7A(Xr*{iv@lfiLu?04Q@UG!
zJ3f)ydM{n_8>-0Ntz#HGpjM7?=Mx1<ZZ1sH8*`s~gxdl%EJiBfZXymeockSTJ_EF~
zA~nPeP;5<f1MG?tUX>Z<Tn!q!EF$XDOsqlU2x3fKHh~>_%U$}P3i3!sU;l1SY4bQf
z6kn?Ajmb^8)YqWe`(H}DGXT9{#))ZjwXtPxFMn>&Wzk|fq1$PNEsT3{9lVu4Af^lu
zQx%pwP`$XB@*sT&5Nj%xBn`p;;$1hW4Kq0u*1k+*1Laj`J^vbR;L){a<v!&F`a&2D
z`*gK^z=sb?133i9_>+BR51G^gna({eFMu3wx5hc%&9%&aOxd6V3#lS|h%rm7v0bbY
zF+q_r`96^l;|w~Ot7?}_dwR>Z#}jzI)#9HPy%#4^AmH2)$pbn_wm9OoR>@N6lv{mE
zT9EuY4Up{svTX%1=Lqwes^Mj`)^enH0$XRE31_(lzbOmoFbga*Ho=6_bXRY}WtQ=`
z40owE2-2a8UB)a~ow%=s$N-7=xHn-cx<`+O&TJ^YSd|^#W&wlxlM|n&!0Dq=ak0fp
zLgr2asp8+cvH+7dAQj;^@rt|DvGD!5;OWuV>EytoyGp3^lO8;cS#Q!PQ4GSYu1#2D
zlJT2BMJ*~TY^n;XT1=&y+S#ORKMGZRX4!HpFp3OW!_p^Q(2FYK-*!%DvTcYAYI0UB
z0ml`$;(Ta^l#@y)Ye%@>5wZO|<-(fH*;)iYVZ)t0oSXRe3vK7B<I$6TG|ZMtMSidx
zM&z$|9DYSYMN_;7b!9V}oJKe(F|c;nP7*l|ctl7Qk<kGqWr_Q@yh%UncMq&89k@J~
zmyY&Hqp4lTx7L68yf+SKM`HprG>{iu)8>P`Ixx3WFmhHml9Tnpi$WlI#s@umxfo1K
zeh~tO0Pf~+M3eq3l3r4X8H{Q7DP4Ci8;4khhK~rLv9jMl!G?VdwCW&wq-1@RAPg%w
zP9aC!;U++bkYWMX8t=JOAdIh?dRf>%5LYGsj!oD_p-Q`)x!VWhZwhlGPxsoVJ@&3=
z^r9M=O3?A#pEo{^$awaOU2~FpycG+n-#Ky9%h;H^0U`|`va1?rIifFH@a%^NNNPc(
z5>(xSZ2M%Mbzcmgh&&W?)R=R0QQOshhJ`$I6CO4A|B%8H;ao$+>>*i;0W<p#x0}oc
ziKac@B0D<%K9r6wI9o|0IFo}eJbn{+e=HPtB(nBH`V|cZ50dc2a#&(id?T9U7=clk
zj9rRD-EL5%WPr!R<6^%r65OJ)9lPpDQ^Er<pRqGG1p3S=Acx>;XH3W)SQnc>)w1mf
z@3CY|sLz|Jg)i~#(udk#t^Ce}>!n{gT}k?`?7@p{$r3^G9U0s0lm{3I-_gZQ+CzPx
zpSY@4cyoSoT4Ie?>ZaF|aJ^77@^N2WLCYJp=2s*(P&2B!*CUO`#LWn|`NABe2G^CH
z9g_$>I&n}@nBy9U7AWL$u%2oq&GOP>!N)#2!zUU(>EW|29H4>a{a#SPeYdQP1Xf<P
zz0d~&JcAUQF>DqRSk)R52Qg*Ysc;+B0rU0AYv^?MIgAWHDUD!=PY%HL{?KGEG?{x;
z=V{BY$=K6z?Z@F={I|2vD@DZ#4hb+gFgfe{8^+_H!~%kCuyH?_TzD#uUT=Zfug46i
z)#r-TQ7pa29)|efVw<}o3c{7&JnEkEn^4Vs;{#j_f%pZqksm`pG55>x@K2*-<JccF
z!>-gLG1aWl4LsFA4qZz*ft;0?6pz@=!I&NEDQS>}4PaYXj`asF(}DCfQ!m-s@cYgy
zds=<(NPlk&kI@uVh&&q5m~h_``;3<fyL$1eZ__Q54hzRaxH(vxUPsL~DoUgk9-gYr
zp;N1NNbz}&UTUdoD?2pOFf&hr__p~+zA*;s5ECMBoYk)2q+q!NO;uli4|NfBaacmu
zc`l5sKhkvDNTRo4|NWgtAxo4OEq$@=P<o7l5(auc(*j_s3qQgSH@3mG@MW&GI)PDd
zI0q?Be??tu55Y4Jfko<Qh+a3=B`>!IM8z=)JNz*Bt_%p^oo|E-3)2DN#^{-GLm#UZ
zwJA(FLOY&LA9)+P$9}3^)Qi<BW@Aa6>KFoy(E%cI14ZGpYSY{4lqpRZfK3ESRaD2l
zvpzIv+);dvK_5hhsCTF5&%4%8W(r|WrFs<V3Uu4=?JWIRrJu)g059&>HnbB{!9Yxx
zF_o`J=sByv+L|E)p{FIb{=gbRgOW!jAT5WIGS*e87|9-1*XI&Te&vkiCC_qW0{gJa
zdFL9xnQQ)Vge&(<TgA_rjK8Sp{%GH09d`+{wdGh$;_;dwMXU)tg;Y>M;;=~0bhj1z
zNgUUqEX|+cZL<l|wHYgrfcU8TRz3gWNdIzWZ(64K2g<2!XB#s&fo!ycZ-pG363mDl
z0qsKh3|*D;^oE$G7k!8Zumm|bJpk32*mp5$97su#OOZNf|2j%JFP7LAxv|n5$=Qmp
zhV$|lHU+oD0t~90Eo|@bagI!2XiOofor*c0v{j&xc`%uPX=O=3T=#p-GynBmR(St*
zJ}6?@_{EOH-?30W+co`I=aN-R@qWE0FZaGzH-n}l4YC1{*p30Ta&}7U)$3=%K|_k?
z&UaLk-iNa@Z?*IG(XPBxz9=kVK`SZ-<!h@vkdg=<@LDe4Wp3s8CtS^xZ{y~M_bkV4
zwSCPPjtbFsUYK_5y3=jS>;=ayj&0KO#a!e3p%^MOV9kV0*-g4Sj;or*L7jDDOh_Ek
z5QPBw8?jCd1*rgHbop32n2{(Rjqad9(-h*fJ||Z;vY3kQtP&>WNYL?UP_2>v0jAqX
zY$0R*Ds3l_b$%+fw5C`78K^fv3?QIZ8sLA;<xe8zMd=MDF3hPFe;i|Q{)_V=lv~mH
z4CyX|0(WGrb5#Ek@|(3t>IKd9Xb=}(>tD;reFRo{UhgPm7T4<QAMrc1C}O=!>xCus
zb1ID9YLCJgdW28Ig!~E2EsKYo1X5a2ri}?%vE=&=k=&DQ2d*;^d|IR=J34&90$`jU
z;)W}rK>a^zUu#Bl2ga=IA?a5B0$MH($^?4MA8gKCgpk@~m@7$LLUn?`LbAucWw{&t
zwxex5whtBcaqnq(XCjC7R6M;vFe;fT088|2xT8n*OTf;Uo76dpOSmB^O7ACF<yZut
zbD7*S8F@o_ttJFF6`YR3fj<@}tKf%z$78iwN)no(#^9F7M1gykVt=AWo~zAj<&_k*
zuQ6_8$E2qV5Q-oom-m9i+0zG{wK=LxsBK%D0ps~i|L`em;)<W8t><2fVA5ux1ojq9
z2e;Y(s3Tg(zXz)MuUq5oQoO_;>0XJ?m|{Vmn<2=n)t47q!g~p6Xt({SVhw-uz19E#
z8c%f53B37Z_`m=*JV?u~_JzBuA|Xo{!iE79jvr0Ox*f@A39_XJKP05uuJVtjh0Gj}
zF0g6aDSWyVkFZX-lkF$O&zta7pqEyMCqZWBoN47Fbz(51>bNBMnO#QLaB&re3o)x<
z<<BN4vyu@SRQ*h7t~hf>M*tfxsEO*p5NI9M_F7}V42xc?a7d0Wd@6PbxX=f@))9A%
z(yZCu8MrFc^?M2EVnqWl0vKw6KzuPdYYQHUIdZ)$vk(n&Yh=n6705ZaFQX)#w6QyN
z1L~eW{6gKCTGx!N6@C2LIJ6Tr3pq``X&5%s7V)k-h{X^f0XZhjQ6q6ZrbVFgxKs#7
z56A}cSkc3KwvMv!9pN1w7z2<JT(%^hY!=s2J#1`=%`jD%6t<3SQL@zw5Huz5B^&bn
zLaK%}c@A)H<jfI~>Vji!NnvpT{Ju;+;W9kaqRu>U2HIb)J$lT!)tDbfyd(W0NiQf)
z<h)6Qa-JgKRL_@^F-nNf@tG-^y;Q<$N4g{#LU{!m1~Kz3Rh&9-(e^1(PVo&o?|&Gp
z#mH)i8Qsfd<r;qVF{^er*;ha=6`b+v%yH?~N}*hpg-ZZ=HQ+>0@uyGF*?sX|RF6i`
z^kaNGH9?|k{(F?$A6Q<*t0+wMEnn8$drL$vYtv0jMWf$y`;Vc>a)8x;VMx-~O1%+0
z7?W|BSxr?!J?SGbr2ra+DVgtcnTWNDaV1Mm`Z)2cCwS+~5zM%+;;EhfLU;X2G#ZTU
z3Ng0mCscHbsR^5^mTN_FGD<u}p%W7l_`dHWeyj+G;O{tJ=+$b5pM)uul3>1NF3y$H
zRyip0k%JMc;&1)|Tu_4m4>C}u>$TK2kwOj6d;D$84L@?_SXqMUu|0_irKXu&zm3Bp
zk+7`MHZPI*D(~}HrWIQVkhfUViji+^^U?CsZ4t~DYmPdFx#AwzX@4OX_U)@R!&dSO
z*Y9UT18u$RA31l$<{g8m>qGryX~I}s5xQb1Pg7fyxJ?DqTl?Q*f^bXTt-aI@*gdp+
zd;bucgxbON1<;|3J2krW{Mg}#l=>yUd$nQ*gxEnt(wB{Pwm&04a^xTV2hOEoyHNLz
zN}`S+nwV`y0*S~;o;9n~SI_w0*2&mN-%}eB<1sM;$5;w716Lmf_C6ZxaoaQgk;gFy
z5Ik+0lM@~T>JIg`yT!wIlaiKfZh|)#h&jelVTt>DF!ia+@A#{cD4}NqzDfWB6<ze^
ztU@L>hX!&fZ9UoPA>}LLhk|IMqds2Di0=WkxB?Lkh}7e&aFYQMb2fu-qVe!T(O7a!
z>+hN3j6T_6IKI&#@(oz41xz>+z)PXSygqTAe16DNvV9vN0lF%!_Y8y)jsL3wBbZU>
znj9F?f)nb{ksRfef{$7feN4s2vm}fH#fLQce4&<&T#OH+E($7*Tg;(oSbbEc3Ul;f
zQ5yPO7%w}FST$IX#A#D@-dIDS<yUi|`7wCm-MEttHvCK-E(AIiUYCnV@i6Du<B3!w
z1X*a5;G?v#Qn`~zSvg;EvxZG5iDgXcO57Fu4}UARJ6Uzz*sW3>gph40QpEsO#)|8n
z-jPK4vhn_W{5+Og>@6}cp^tsTQHUX$+<S$#vbzh7jNJ@X<Mx{H_wHX703t$@<Fj<c
zP>AE?DMOGA2tv`SZhLxmB0!P35d2vl(G~l?s>tUDD-EaK0>*uz(nNf6pPXuj?nNR|
zEMNMI0jRqF_h7fLp6^!Q84$g=PB!npZW^QG@4bZMl0~uWMwfVeEERM`jWRW-`kTrZ
z)B31Jo%MHV1{EXlYmAE37Zj}1`fF1iqN2~W3*v+B8)YN`>005cE&OG?^4))XyrxfJ
z*%=LfTrQ?A0x}B6eFODGX-|dRnBUH`?tFK`#u%Zk3y_j;A)R)Qt<|{6+0@3eO^f}~
z0WS|U0>gO$XlX$vx+5sGR}Q91Z?nl}KZ=_abK1dOU-;^+!<d3^r1@ue5w>IY)Vry$
z2<Ih`$VY5D8*CHFgmT|&i2YV%Iy1MfMHT96N|z)!Q$WQ!dfmyw!HVYs?@pxiTjPuO
z)-s*C2!h&x1E_un#xPns@>yKSczmfV-y1Cxvqo1K4;S56lN~i(1t1?QN^V3?IyCS{
zW@Nuy;B~}$iwS8yxmXz?FBP_fDm%8kGJyhss*YhCy)EE_+ib$J!!2&bQ}62{gYX5k
z?{-Ps<i^-Ka9vDW^y^1w8}xH7h9`v`!72ri7~2R%31dV2SAvWx06J<ZhOsD_-5C^%
z#_>h@$7__|z1FCuy@8QgjgmZcJjCqXVHfjb4k+<|%P5;{wD?75W-Xgku|NeUHzWpH
z`&uMSauJ>ESlF<5Vzg*rMp`iAYxaQHdO$Un(KW<TQIz;ioWW=Q9209>pM9`D@>$(d
z<D^ZradMv?>DBpGCr(dZK&{o2IB2jmLUopiW|xRPnB3T55T+MEJhIcyT~$H<I^65r
zHo$m$WJQ4XgPJy>kIZgEt36OUZfOT2TmG0|09sVkFI;=DXKf|8lJr?z7td%^&U&#S
zEd$ZI<r+SuL&<zj9ErSweRY6?Fee(Dg<fP4w%<)fDF+rp<8+#Uc8i7m=VO78#dub{
zWZ@^#BA9K`{6NY(h{&mu#9H5MQ<50mF1uVc8^tV=TaaGeo?#&iB|J%jq}(hIso}|o
zTg+yN1`Ep``hp`FZzuq8p&`GFAVC6*U8UGDD8LhCN!&pMs|^^hNP|$Rz(wFshuuEe
zpJY2!6|?RyJf!V6T8ff(Xo<@DSC;JW1Gq#~l7+|QZd%`*gBGi)%@Ww2>Dr3vNkXn4
zW+q-n8Wa7%zXtz(y<9eeD5iOE8za<ux;_)4vO-;ENn~NI)g7$_D|<`hHQu^0xigu*
z5ahu~G_<;c5y==Wul1a9@rdx!TqT#ZZN9AT#!0fFF0~?1Il=9>ocKy+t0W+2@wWKU
z$wyc#TIN`iM&FWP^eekISzJ(WVcY}-`IBcEOJ*7ivwqX9b*)-UdQHpOD`b3x=BV1P
zOA8lNnTetI>n1AV%jP_h(C^s51y2Vz2&^Z9|12?X3Il)_-D8yZ*OPnX_9!6Z%^-|$
z?lYfnInlcYyx)tT+um{Yhs9?ZOy~&~RBifUl9Hz+g(f%Dc6fh2``V60wdCl3a}ZKd
zn<3>#i1=YZT8sJdDdBaFl%%FXft6{7?9hPWOrVjstsK1i^?o!tt`%Pv9nVd{wOO2k
zXA|vKFsjET3)lyr<1ycF`Yu_4fza>^n<SYVX4H+mGkiqJCTwLa?vRmiK4t7P_7v}6
zPKE@JNJ##NQ<3DkPsUqx7RlAPdf!TCLOYk?aro-ywkY6%x17loeF)wGa$m{Xq=>)V
z%A@-oaT@F)cxYV<UD`A?8R6f^C@C&0VLa&OJ$m~_WmjsEdRI@Vf%qKy!X>nW>1OEC
z_9<Y2e5ESbSd-&DUO1H_fj>oa-BP1JE!j`vUzH*;DdZRaclNoM`Q`J#I&%zp&G*<_
zF(Kir13fzHVV@>?{4d*i3o)L#1<M(e#ym;|_`Vp+69E!H!rRdJSfpTs(~QX0y@^Yx
zGQ0X4thR=w6qh|#nd)T&O`MzR^@10<o&BaOWmEZ|f8;?hQ@8*Dnd0Ycv<q`6l=kVF
z;ByWdy_EG&#6M4IifXoB3r8n3FFRj;Z!NNmxNjF2hmPr3{@`G>od|E<{=8zA7amrd
zqaLN2a3`<k3&krS{j5H*w^@^gJ)!c0JrcFg$eDQaH)Yp)&^FPA@Zb3s$_>~m$K(yB
z3gWG!CjZmHq=hJ7%xME}HC<EaRW3^a@Q;7As>H4Tz6FbGSC=jwFED$xXY1W&qVB~N
z7j(;(%pwr?nl?tM{MQe($*}X`&TB|A=U%IT`K^J{lhUI}wA(Bz(G+h3s-v9`n4)r$
zMrvTTX4=Q3!^0@g=lfDN3x6ZndbBvWG-5D|33ciLEgi=-U=2jJ0;8njI6#m}6fp>6
zp?(6)*Cl|ao?4o>eRA}<>DZo0gd;suTcPED5T3+Rq1mMGCk>(D3l_wQ7|6F1eLlDM
zd(uPK)l3yfMn`w6%#KUfGg?X{3`fr2Hf;9MTIcFJ5;5f-+v+kQ#wz=g!5pdt96#HG
zOjpPVs<4JUe##IP2&}3~tcShZ;OQFm_#p!bvge?V+jk%&|E`Xh7X#T{QBdahp2ibJ
z>2bxrbPb4#(z(h|yAl(3q`r*3yyOOG-(#u0@E{m{oo0FN-!v<MmR1cN<CX-DXVqaV
zUQk-L#g2~XBH5q?3u$)Rp|_WbSKBlkGN{nT2I(V)$EXRuzm@NFgZGYpUr?=j>Y7S5
zbH@3I$?xuI(-5LE#Ow@lxWAWps8Wn$C`i!xh7?e-qC<yq8C@eUO;aY!_)utWcrQex
zk7Pp?<&P<M(V20(2gP19E_z{nmJB2NcQddA_0dJS489XH4tENU7y3QDcGluZp9p>?
z?NI!2THJT@)Tico3#i&rrGxfY4WR0*0B=`+hh-5z;-HOiJz6UGd8{)$pXh&0HHOI7
z6wd|+TSP@NpndpIjwj>uM=%^Ng9ZpJKYKI1jYA_djf=mHEUeuA86Hjgc}AYIb*px)
z;8&(6`}{s@g14cHJ^EqwJN-`{Z{yGTqYIre+v;=L?xT<{&E6+CaTi4lQR$ADCJ|PE
zgwpP10?+;{QHdf{fy7*ax^zpmUf(d7N88993~;?};w)y+6UITdAc&fSP4ggP^t=;W
zMX(SHq}mHc3c^ZNK&CG`8Mpyg4D%+d{A)w>r$3P_m<`3;?%4VyvGahaF_KN1XqUY6
zyn#hc^@%=Crm#SVbgD@CjN7E(TKjOXEE^zqN3?M<s)&<fQG<TKuC65~yPxFZi35jH
z@dfG<w5a1ojQ@Tqi$;#dMP_RJqDfHosz<iYd?U<l-McxB_$+z=&jd~VQ_{Ke7n;M|
zESB20W^fSqtzj(TYUb-O+$?9WHqN1{2rTBSJ;_9^iC($gQX^k&A<|we3iraBCtxVf
zwvlE2pStsBO_!i=AwR3jr-nwY+A_D)cbYF!Rk6M>nx8a(`K2J4XO@5V4HPSBL3J>w
z1=!HV7|h%!teZG``hxx;j?Q8eJFoIailj)1qW{D5<hL^vKLn1dXeifYu^b=Dt+AO>
zxYXwBSL#}3pI>W8-bX=RgtuLMCLgEj(Gbx#t~%)KULoIU%s_!uml+;n-)6tYnUah2
zZNTm7V6(+@Ae2t(%_OSQlAr+51q|r3$-~B*6#J8|I<U4KR|8+wRZXmd6m|<ji^Mr@
z*JiD++b!v|SAy}sJ7(n(`s-A@sC3G{sUx$<XG%q@(S)i6nUf=V?{)s*X({|7?fChz
zBy`x{DmRv{2UBAQPQ4l6AY@0z^fjy*2!*>~Y!i^-!3V3PQ0QGJ%D5}VG!p!6K8la%
zUd>a0$-Ef`V3;b8mL~hrvSqa&Qs2HUU3!YEUXEVh&*saaeX%c!!q#h<0Y}4hILjZk
z*pz^mC-MO%GZ@CMcVhB2#bdOCOtLLoj*-jbCt|MjP52*}=;99;TTQL}*>DzrFlT*(
za~88>I}bWPJ!0_170|a`!S*c62?mDqh~`4K1K%18gJjuTB1FS#K10>cFciQp=(Pk#
zp?@4tIrlXKZQrJB(qC!6)^ZB5D3|dDS8{mRi)gbi@3S}jx~_@BEgp39kM&kbDwMxZ
zZU3q@`Sz65-77w`@<$zpnC-oY(M$Z(*y7A+C16h^pMOdXd9MJCXNH}}W#}3RVYObT
zPMk9<#Y@Zgw?3gc9q+VqC93+&4A)epyu{jZ1791%tD8#1jCt`h)t7dK8lvxTcN}^&
zv{JrF?#O<@Mus4%z2<=FSi?OfL=;;`qWW)lsa<ZgNKA2tK2t%d_z-C8Rxy>eV#MFP
z_TP1K@xhU7f1nkdL(5htGcNW=Ckr2b;G~om&87TaMWA64tL~9I{x+GxWb7#Avc7C(
zICn5K1AusaifkynKO6Z|C>K4PQri3s4DK2u*a4V31e5;^<4}ETVT_q^%B@?Nr%TdM
zZY+S!tvVdBbsgbYge7JdMg?CM_&q*1(RndpT9G@vc@dy1zJD-(Tmis*kY8jFmCe&D
zdvV}i_m?6U2Sv9KS5l(Tnj<Ts#(1&NjNh`wp5|HN=lXKDf#;}&STs1qjw}^bKT+R^
zPjcPRdZ3zLK}v^#Wjps-mGX*%+^~QHzQv56JXvDFYB!%|-f41TggV7Xm6(=tR6;?}
z8{gh~vk^A{nFLatPRyZMW+flb@^1N4d~P|3%I?mvsXl!rb48+tugZO*N|VMo2dzj+
zX48>sEkJ&>8~fN3LXj|159&)W)}!c~2G;0)IRLAt!L%zqKdlf2+;L)fWQ-R%6hN@w
zQaL>~!R|j`mNV)U+pcWX)tmhMbf|J(((!Z&qn@Xq>1(*ES)U;uE7yEmY3;(5M2V78
zaW9wDVG37S$mC1(ROn*`#U*F(l)y<n(eFz~@Ac5W>^9$;4H&yy(laN->g%zcK1D_1
zpKuLJ#=Z9^ye}i}^(@ZwA+Y_VTqX_b`>J0-@iG?Mm)NHC=^O{;$rR^h72-<EY#yD_
zKrR@%T?u54`Qj_iuz2CAEX%mMD~RDbWiZK*uSh9X45R4NwwO-L&$v2KCW_z7#suUm
zad)?|44;uFd6<G@E11WO|3qx}B-LKEJqs-qE~hM}fK)M!%j2<l$-y=e{0$NW^~3Fi
z3_9PyQmDFEhs!c<^24DMq%|KtnVjW-FsXdKI++Lx<=jU-h@m=|2E0^f2i!4)@#tst
zf&#lIwi4Y8_9;|V+>{M{97PWz1EYKmG?%%G#75P1A8DU(emjfSORTio_xgxxBABpa
z>gSYNUvIkGNto!Fl{Q2Ywvi77grJa|4G?H_qau`;&55>4dlP`69R27<0C6RC-0zty
zoM3H3Rxr!eA7XD@e}EvH+D4es`)da8BfI{SwJ6Y#(Z@qP39sfd&>Vf~iQYr@EpBUG
zsTHCB9PL;orQ3<FGW)7dB5o$Ye~5fhE7vfCupmYZJ&%f&?4nYVwTCa3Y4svO&~uJ{
ztjKTdm<*}O@A61-zP?gCF=s`@E&?PJRb9{ciYb7{0(%y9*jJ(&os<<Q!XUstGn~wV
z-M(DSkV8HCV!c-)iYP9fpU`#ngrBu3=lN1{7RtVwscq{Cpq;NppTQPttEnR49R67&
z;*~To7pdy|r>|t&DByrjv9*mQWFHJcx+C~=)HmN8@}bWR2#Y&c!Hn-qW&>=*Q7ZY6
zLV}DKXtpbF4WIqJ>Zs!Faev=vvtslE@O<k5G7(W0)$cOSH79J3rXd7hTyun6U%pWm
zOwg>@?a!UioC~@Uoj}!7Nl{u!l5BVXtJ6rCNd3m;^*U3vsmsSn&I=o1XxDoFyGc$i
zTxn#a*;9mZwkU6zDelOJ_weARqLMmBr?KY3a^EhJSb!wU)!J|Uh)oi7X1Xs{xj*$^
zjj@W`jOpn;@r^7_y$+WhijAQ1D4xAE3T)^2-W0&8TEHs$)zcH)_6Jjr_V>+RWiH=^
zT8UP1FkM>XHm80Nj?KH!^YV!rqJ$3db}#d6f!e-qQf(D<rbWW6L}UHBYsX)v^bHW(
zM-+k{tm7JcH%2`^e|_w>SdVDue*8FYONLOV9uj@QNDzy?EFcMm^iidW8}>HTDT$%#
zSpCa;+g>gqlxBJ2tM2p^KdI<UVys!?8Pj`w$|cULsV1ZS?LQRrdrbJ!S$j2c-4Y#C
zs1&e2kxIIh#r9Kpjy2%lt)UTzMt!;jU@`GmhW;mn!%2sg4<jBuB3HQ1@iOnte}8MM
z(Xe{uGo<zNwX?eygR9IW*kw>?0_~Bp*a7Q+0N0`7AdsJdPCc9B0JVA%7A9~Zb1iE1
z+>u!+Ueq}3=N|9UyKBO8*3wAmT&~c(8di2+r+Fix)$+v>v&izzq1mDgU)AKhw!n5s
zfA|_ZJEJA8#s019sOhIxtNka)biXuYBSKOUNuUu%Av;J>aNsq39i(Y&jq$@xK*2|u
zIxzB0cv`A=fM!rfzBJbF?#z~?+7=@Ij>{**wPrzFUTjFZhS+<_JGmCQL4zp6Z%1Ce
zhM7p;vm&!^r!P;1?^Dpu9OQm6oKLJ;SYiCQM{SXjU)meNxR+WGaGhfNg^a~I&1(~S
zjVu1(@iwNfJ}G_uYrYi2kP_e1ehuZUd$DAwI70zF=y1(>AxV^KEV1{x9uDF~OmsdD
zgn#0;#IAhXd+QhV4KiCu$F<=<yr(}W`L?|la38}?jxzotDTg+a6`l!2jDAdSGi-!k
z83QIib@36qC*58C{<uYd5?UJ9sFzv#?-fEr@%Tje$6*5^7i-t3!z^O9%E;cbNwE5N
z0`V$Lm?uQ?Nmge4j<>%2Ky!R_b%2Q-|B)?binx<Z8nRy^L94|Ae(3A(ZqjSRQ6#M<
zk9rYMn$@&2d40ipIy-Bc4ochZeHmFTn_|eq_47M8KCSEm1+`g(L>z^W$mkI-*j;+J
z9sj)GI+mEGc-+KkaV|Ha2A6Oy7fQ;Ucb)nxE`E;=V`5|~!3#$R8JJdJ(UE9{|77cH
zFw2yx*@6zRBOKRCGUvlN3y_f2(d_Fof+||ROP%u9eNzSpqFmBOwer5%rs%~pq*(<V
z7xX9h^l^ONG!6H#b1vyex&U8DQ7}*)psibv8O$<p*<r?1^X>ZC>{6_W_;hy4zEX2n
zR_Wbbb?KHX&`?sE^*>YRoi4iYzJF)F%pRc`@b)C(wa%|t`1coHO<y$+EgK}#X17Qg
z6B|nk;@FdaP$_1@?=0@F`skP&r`}6a5PvA%b@hJzmoG<OQsK@epQ&fzb~u-5>W}T7
z1w}r*zRh!~tQL^dAr5fd)M3(mH<T|Tgd=ccCw0)AB_j|iBv*n#?V<TmVQ*0#UC8nh
zS9N;*?!si*?9}~;%T}x4k$1yYGggH3`LFyYrXU#PU{3pKVQSx}o2&cXsz;9-i?Hh#
zN>R-v5kWnAz;4-=QJh9|53dQHAN&Q!JDKzlYL~C*U*q6k?SqQ4Hsl>0&pZf?K7gsN
zsXg+t37PTwTizJi*%KGaF(*3ld%ySZ_#T0KsitV1Wc&7l_4+#_ef#=(#DQqao1dZ@
zmCaRbW}ghYYz0U6=Hnbyl;e=1Xxr$8s{uk{MWHjlCYb&@VA!6?sJH2mG7jlza0xI_
zn$)}^`K(Lm`BG*}G6OdH<8Mxm49XG)AElI%xCE4R=aP@1_H6d5#T%nh_D?l0r|@aO
zsd`}bdy3?mM6lIFyK`c?-VfkVZ0W0C7UY_2v$TyEMkl)z)K;8=gKRs@SwAgM{n@!4
z-YQTqHYd9nfUl}XgHT`XtH-KRzB_qMP&yUS(&<d_1FT|##Jja%dbN9^tQZE|MpCzi
zkPDqKD-&X@U37U1Bf{UYh6b$2eKCPh?_;GvT6fJ0GBIe89cgFRw$Dht$&=9rZv&io
z9Ag1@l2drNp$-|YAl=^$(&Lc`KgV5p*#YiyL@^Eu!DS+<bv8<*n5m?nwZ25dQ-F%0
z-b1%A?V4-h;@}wr!-vG*KY?!F169vcHg)n{c+SM1WRq}f1V>rNkEpOH7pxobgWu2q
z_eI%K49VZw;W{}MaA~PwP_EyYKWz$S*tx)yX9`F(+OZInq8$m<e~eLMOHzn;q76NV
zN1MDvcu@LGl=I2Y_MKP~go<DMKsvCSOL5EGbH7SCgA%J8(YT;m(Dmhz-bQ8I*JQIE
z=Nc5&?4I;WjK3kuz4&bMFwA98j*jEgd!?2TkBIZ$CXTV|U=L+5@uF2P9`;N3+kWaj
z`#9|N0!6}LlOipVve&M8)y=tnO4Z18|M4xI^iW@@)#%C3H(qKHr^HBe<w<DFbLV}u
zI9t#v(uy!}z;q2{JfOu6aSp7N4i@#I;ZK6y&Ax|^Ks>~mJ~(fR4KD*6ROg+kz?Qgn
zFJ;NMW`@HK->xR0JN=SO^#&#6`w~;C!f*rTyq~7c=Cve}_tNLMcIBVYG6!8|Pe4P%
z0qz(ie+50G@KQG;#jx|<&b7%ouGYPH;<m4IB(;G&P^^-d9fu5tHe^+P#~PoE+hW>F
z{zJV4!o@qAO`J4^NR83cVJ3M!q|?JTq(X)DQ{K6oHJ1P>R`7d=2sJ5k%2;gD0k)Do
z!O>zZO@UtU20FF|@wsY|-FbUPYCw8=?ZW(5i>>ibSTC6&U>WR})3f;q{vN1`{u?je
zUF|$UfNHjl5vocV#S;X%*WD2Jtt&`dC1aEw&mAPv$Cl{lT7oczm(X&>W)dQi5k=;G
zGQBXTpf8f|OuvWm9}Z^*nN{4v7Z>ato%E-hz|Y~?k7zPnz`mQ#_!?JA!fZ3DE7DMk
zFWR1;hwN3f`%Biggu+Cj*H24T(ZYkyn*(ZaG_051HnK0J;%1v$>nX-9ud~)7Aq<=D
zj?CCt<z^4JO<SL*$z}oJ<C#Sn)&q{VY?PK|F+Tv~_@bRVxMwie)f`{$F3?-M8?y#R
z<WoVpw&&8TcU%H>ZV$9XfsZF?TC*iKm}V&Ck5Udb`_?}IdtSb;rE|MZ62$5zQs7H?
zg|2yh#*8bBkU+_#i07%hfV%2d)!F1}W}%Q44mT44jTBGhf--*oA{y(qXMIqDOJme+
z0ed7bJ<7~U2J2pFC*$-n_K*GpkQs;C>m0CbBp$2!_cZz_Kb&`of=+@~O>4Tz#*@Cx
z?iI)0Io!SPv25nzGn>sBcyp~CUP7Pexl}c=Kuwvd9vFZ3H1(7Y5QG0dBdB@usHh)}
zKYSk3!>m7V$_$_XB`Vj&yyO3K<tVaT4W%7gC-1$|<63pt)SZIiISyWy)qd3?3-~ia
zWUY>`PAnWhUUdaKiZ6i7urYYBLSKr0!)`=asYql?9lBS_8%qjwQ}QLDTWSo-0$%}T
zn1lCTMWIuGnc}>qm1<`0wp$03T#fmOEWdYC%SfRFj93G!XB-MUd%JOd(RSJXP!jHP
z+l{`q?VzYXqRsi{DtI?8)a>NQ9vR(P)|GQ?4)l?@kE5<OP1zELN+dfQwG`%;Fzn2H
zw{GS65q_F@Skdn&J6c>I_a&^scr`l_-T2HYCpL{<%7=T1Ty!Tp#fdT6gF)>T$dDg4
zTNUAvg;`>h$Qe+<An=hzM@PQcR3MZ-uS@X{!Y#9lYCpKYHqmWJxpgv~Cc$#HA=};s
zBat=yS}b?hr|$z6;JH<Pgx~Z-n9GgH#!sEUji$e}UiLRmOuHi$c6B2X-|a}*J1OB%
z2Ai|4e7<31=X$Vmo>FE5N_9TGK~KJfyf>rrJPlyuqDK(E=M3Wrbc0Et?Ap*qQsU}l
z-#(sP6F>=L`FH{@wH4gYg?7nP7xjyXZ(=zzx+tnDFsp#`W&DF-RLkUj9#5sCF!JXL
z=foe=RD%^vl)`qm3C^YU3H4cO^>gJTs&e`1QmdEUw@hgApN5_iKWO_#-#aFmim4t%
z9mdD;LY-{jXjS;==030*@>vs@q6aUo6+R~{A?(XsbeWR`+3`56`}D-4FjF}Mp+V&B
zplDC7i1VRHc#YoeJrhSSQh`jFE3Xzkt2PoCvL`qZ0glxu9FdTMhu$s@JyX4l;bOSp
zN$RE^<J#?^<&-3}vM9c;p<jHK_=cfU(i0_|b|m-^xBn^o$aVukgqqHtaO<^a<?8%I
zM@_g0hoF0b0-NmdzQV;-*Q_Jb>~cOb%QXzLr(C@oy=&Whmc#C86O6EnfyK0U6w@4N
zlx?Lb;jLmUU?kW1TA;COtEO<cnBnJ3K4O%_3#d4Zwu-jG6+CWlu+HgC*Bpg-9->JU
zl-fQ?W^-31={Ug?h@rhD0k1smL78C<2XtKwK^Y6$hz4dDH+srgJMQ_Ln|qA@jdk+g
z1sT$ahgbGh?+(e)yYG!3w)%>30t?bwq%0DCF!2|;PKv30*5_Z8pVZF7>aVm2YT71t
zA_MtlknQq?%#C{#&jTob;ez%n@O9rP7zbF8m4i_f<kSWD%4!21=S;u9XLp#kgcZXa
zr(J}065`aqd@8_-waiLl#XuKD;68OSpuOgtQu9ytf!Zs7hK&7rgFXDq$E}y>4T==n
zp90)b$@S5n`dzIDUx(^#B){q6IUF#+wcG+to<w&<dwC;1$>;7SkeZ3U8CSV*cp1r@
z@>p&HW1<jdBRnoAsc`>#H%jb8@aCjmu~{^Q!qBirg+HBek#L}Rl=PEni4KU4(^!zx
zKykN`B(0d)_B5Mn0}UlSi1Erdloh|?P=j4%*QCQA>u#jc-qKD%1)G_WlzN)5vU{Rm
z{1*O4G%GPj`ED#lS;;CxiP%=<oXU{ymB3uJWG!t6Q^5*n_UBhhA2?^WcVsE6B4Cnd
z>N@es+&ZIjY56&gsC>_!Vk-#SS{#lQg8_AKMynl%P>KBdR`(p_a9BuOtVmvlIWO0u
zx|fdqv;L+5_!vrxioN?=@~UB=sVFL(n~j*j30hKIvRz6-Ok8H9!G@aVB3?a0=RZal
Noq6vM|KGo){s$Gu8p8kp

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-700.svg b/WebSites/errors/403/fonts/titillium-web-v7-latin-700.svg
new file mode 100644
index 0000000..7585521
--- /dev/null
+++ b/WebSites/errors/403/fonts/titillium-web-v7-latin-700.svg
@@ -0,0 +1,276 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<defs >
+<font id="TitilliumWeb" horiz-adv-x="506" ><font-face
+    font-family="Titillium Web"
+    units-per-em="1000"
+    panose-1="0 0 8 0 0 0 0 0 0 0"
+    ascent="1133"
+    descent="-388"
+    alphabetic="0" />
+<glyph unicode=" " glyph-name="space" horiz-adv-x="220" />
+<glyph unicode="!" glyph-name="exclam" horiz-adv-x="280" d="M68 0V161H212V0H68ZM81 250L68 680H213L199 250H81Z" />
+<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="411" d="M350 440H232L228 680H357L350 440ZM178 440H60L55 680H184L178 440Z" />
+<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="560" d="M544 149H448V0H332V149H228V0H112V149H16V261H112V387H16V499H112V660H228V499H332V660H448V499H544V387H448V261H544V149ZM332 261V387H228V261H332Z" />
+<glyph unicode="$" glyph-name="dollar" horiz-adv-x="560" d="M508 199Q508 95 445 42T280 -12H279L264 -130Q190 -127 190 -123L204 -7Q130 2 80 14L60 18L73 122Q152 111 219 107L241 281Q138 312 95 356T52 476Q52 575 112 623T277 672H290L308 810H382L364
+666Q426 660 478 650L495 646L484 540Q411 548 349 552L329 391Q433 358 470 319T508 199ZM185 485Q185 461 200 446T258 415L275 554Q185 550 185 485ZM375 190Q375 214 362 229T313 259L294 106Q375 115 375 190Z" />
+<glyph unicode="%" glyph-name="percent" horiz-adv-x="560" d="M125 -8L360 699L433 673L198 -32L125 -8ZM14 672T134 672T254 527T134 381T14 526ZM112 563T112 527T116 476T134 461T151 476T156 527T152 577T134 592T117 578ZM306 279T426 279T546 134T426
+-12T306 133ZM404 170T404 134T408 83T426 68T443 83T448 134T444 184T426 199T409 185Z" />
+<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="701" d="M111 631T167 671T318 712T467 671T520 557T490 444T383 349L481 251Q487 266 493 309T500 379L630 376Q615 260 579 173L691 75L615 -12L509 75Q474 37 420 13T304 -12Q158 -12 97 40T35
+196Q35 277 69 323T177 399Q136 449 124 480T111 561Q111 631 167 671ZM287 108Q327 108 365 119T418 148L245 321Q171 285 171 207Q171 108 287 108ZM247 531Q247 491 292 443L309 425Q350 455 367 478T384 535Q384 598 316 598T247 531Z" />
+<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="239" d="M60 440L56 680H185L178 440H60Z" />
+<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="308" d="M186 389T186 301T210 107T258 -62L281 -125H154Q140 -103 117 -51T79 48T51 164T38 301T50 439T79 563Q115 675 142 727L154 750H281Q247 663 217 526Z" />
+<glyph unicode=")" glyph-name="parenright" horiz-adv-x="308" d="M270 368T270 301T258 166T229 47Q193 -58 166 -104L154 -125H27Q61 -48 91 82T122 301T99 501T51 682L27 750H154Q168 725 191 669T229 562T257 440Z" />
+<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="425" d="M389 499H266L304 379L231 357L190 478L87 399L40 458L145 536L43 609L89 672L190 599L229 720L304 695L266 573H389V499Z" />
+<glyph unicode="+" glyph-name="plus" horiz-adv-x="560" d="M50 191V311H219V479H339V311H510V191H339V21H219V191H50Z" />
+<glyph unicode="," glyph-name="comma" horiz-adv-x="263" d="M20 -123L70 137H218L128 -123H20Z" />
+<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="408" d="M56 205V327H352V205H56Z" />
+<glyph unicode="." glyph-name="period" horiz-adv-x="256" d="M56 0V166H200V0H56Z" />
+<glyph unicode="/" glyph-name="slash" horiz-adv-x="466" d="M31 8L319 718L437 676L149 -34L31 8Z" />
+<glyph unicode="0" glyph-name="zero" horiz-adv-x="560" d="M153 672T280 672T471 590T536 327T472 67T280 -12T88 66T24 326T88 590ZM394 453T368 502T281 552T193 502T166 329T193 157T281 108T368 157T394 329Z" />
+<glyph unicode="1" glyph-name="one" horiz-adv-x="560" d="M418 660V0H280V504L137 412L74 515L292 660H418Z" />
+<glyph unicode="2" glyph-name="two" horiz-adv-x="560" d="M493 0H65V117L206 260Q281 337 310 378T340 465T316 531T246 550Q179 550 100 538L76 535L69 642Q167 672 272 672Q482 672 482 483Q482 409 450 355T334 224L219 120H493V0Z" />
+<glyph unicode="3" glyph-name="three" horiz-adv-x="560" d="M62 636Q154 672 267 672T433 629T485 489T408 342Q456 316 476 288T497 199Q497 92 444 40T272 -12Q185 -12 89 14L57 22L64 127Q176 108 252 108Q355 108 355 196Q355 233 329 255T259 277H126V391H259Q292
+391 317 419T343 481Q343 552 244 552Q175 552 97 538L71 534L62 636Z" />
+<glyph unicode="4" glyph-name="four" horiz-adv-x="560" d="M320 0V109H40V214L203 660H355L178 229H320V414H458V229H521V109H458V0H320Z" />
+<glyph unicode="5" glyph-name="five" horiz-adv-x="560" d="M490 660V540H195L178 397Q240 421 296 421Q510 421 510 222Q510 110 451 49T284 -12Q238 -12 180 -3T86 16L50 25L65 127Q186 108 267 108Q316 108 342 134T368 208T346 279T284 301Q217 301 166 288L151
+284L69 303L87 660H490Z" />
+<glyph unicode="6" glyph-name="six" horiz-adv-x="560" d="M496 537Q394 552 319 552Q177 552 177 398L198 404Q264 423 303 423Q416 423 473 371T530 210T466 44T281 -12T97 76T35 337T106 590T310 672Q388 672 477 650L508 643L496 537ZM291 303Q244 303 193
+286L176 281Q176 108 288 108Q336 108 362 134T388 209Q388 303 291 303Z" />
+<glyph unicode="7" glyph-name="seven" horiz-adv-x="560" d="M69 537V660H491V504L256 -12L128 24L353 505V537H69Z" />
+<glyph unicode="8" glyph-name="eight" horiz-adv-x="560" d="M169 672T278 672T454 624T521 491Q521 433 507 404T449 340Q493 303 512 270T531 179Q531 81 461 35T278 -12Q28 -12 28 168Q28 232 47 267T111 340Q69 374 54 406T39 492Q39 577 104 624ZM176 200Q176
+112 279 112T383 200Q383 252 324 275H236Q176 252 176 200ZM280 548Q235 548 211 528T187 467T236 392H324Q373 426 373 470Q373 548 280 548Z" />
+<glyph unicode="9" glyph-name="nine" horiz-adv-x="560" d="M248 108Q381 108 381 270L360 263Q291 240 255 240Q146 240 87 293T28 450T93 613T277 672T460 584T523 321T453 67T248 -12Q170 -12 81 10L50 17L62 123Q164 108 248 108ZM267 360Q313 360 366 378L382
+383Q382 552 270 552Q222 552 196 526T170 451Q170 360 267 360Z" />
+<glyph unicode=":" glyph-name="colon" horiz-adv-x="256" d="M56 289V455H200V289H56ZM56 0V166H200V0H56Z" />
+<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="279" d="M77 137H225L135 -123H27L77 137ZM69 289V455H213V289H69Z" />
+<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="560" d="M472 353L211 254L472 146V10L66 196V306L472 489V353Z" />
+<glyph unicode="=" glyph-name="equal" horiz-adv-x="560" d="M58 295V416H502V295H58ZM58 87V208H502V87H58Z" />
+<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="560" d="M349 254L88 353V489L494 306V196L88 10V146L349 254Z" />
+<glyph unicode="?" glyph-name="question" horiz-adv-x="437" d="M308 692T356 653T405 536T390 423T324 350T261 292T248 248V217H141Q110 251 110 308Q110 344 173 395T251 465T266 513Q266 572 181 572Q121 572 58 560L37 556L30 657Q116 692 212 692ZM119
+0V161H263V0H119Z" />
+<glyph unicode="@" glyph-name="at" horiz-adv-x="973" d="M944 305V297Q944 143 896 72T751 0Q680 0 635 36Q625 44 618 56Q538 0 470 0Q376 0 330 58T283 247T326 439T474 500Q509 500 550 482L565 475V488H699V309Q699 171 704 151T716 123T730 114T749 112Q781
+112 795 151T810 297V306Q810 466 737 538T503 611T257 519T172 252T248 -7T503 -91L646 -82L651 -199Q561 -209 503 -209Q388 -209 305 -186T160 -110Q38 -3 38 261Q38 492 163 610T505 729T833 621T944 305ZM481 118Q519 118 571 143Q565 179 565 249V372Q523
+382 504 382Q452 382 436 353T419 251Q419 118 481 118Z" />
+<glyph unicode="A" glyph-name="A" horiz-adv-x="602" d="M17 0L170 680H432L585 0H447L420 123H182L155 0H17ZM277 566L208 243H394L325 566H277Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="609" d="M74 680H341Q447 680 500 638T553 500Q553 443 536 410T478 350Q523 331 544 295T566 195Q566 96 508 48T345 0H74V680ZM338 284H212V118H338Q383 118 404 136T426 202Q426 284 338 284ZM334 562H212V400H335Q413
+400 413 481T334 562Z" />
+<glyph unicode="C" glyph-name="C" horiz-adv-x="543" d="M505 11Q399 -12 314 -12T178 9T98 76T58 184T47 340Q47 537 102 614T307 692Q393 692 506 665L502 555Q403 570 338 570T244 553T203 486T189 319T216 156T326 110T502 124L505 11Z" />
+<glyph unicode="D" glyph-name="D" horiz-adv-x="638" d="M303 0H74V680H303Q391 680 448 662T536 601T580 501T592 351T581 199T540 91T451 22T303 0ZM448 270Q450 302 450 358T446 449T427 511T383 549T303 560H212V120H303Q378 120 412 158Q441 189 448 270Z" />
+<glyph unicode="E" glyph-name="E" horiz-adv-x="554" d="M74 0V680H514V560H212V401H454V283H212V120H514V0H74Z" />
+<glyph unicode="F" glyph-name="F" horiz-adv-x="531" d="M74 0V680H508V560H212V360H454V240H212V0H74Z" />
+<glyph unicode="G" glyph-name="G" horiz-adv-x="611" d="M357 244V364H555V11Q412 -12 323 -12Q164 -12 105 73T45 343T107 610T318 692Q411 692 519 671L555 664L551 557Q431 570 355 570T247 552T202 486T187 320T216 155T336 108L419 112V244H357Z" />
+<glyph unicode="H" glyph-name="H" horiz-adv-x="677" d="M465 0V282H212V0H74V680H212V402H465V680H603V0H465Z" />
+<glyph unicode="I" glyph-name="I" horiz-adv-x="286" d="M74 0V680H212V0H74Z" />
+<glyph unicode="J" glyph-name="J" horiz-adv-x="302" d="M19 -70V50Q59 50 77 65T95 121V680H232L233 115Q233 6 185 -32T19 -70Z" />
+<glyph unicode="K" glyph-name="K" horiz-adv-x="593" d="M212 0H74V680H212V381L304 391L416 680H573L425 339L577 0H418L304 271L212 261V0Z" />
+<glyph unicode="L" glyph-name="L" horiz-adv-x="472" d="M461 0H74V680H212V122H461V0Z" />
+<glyph unicode="M" glyph-name="M" horiz-adv-x="858" d="M74 0V680H309L429 184L549 680H784V0H646V526H631L498 30H360L227 526H212V0H74Z" />
+<glyph unicode="N" glyph-name="N" horiz-adv-x="693" d="M74 0V680H307L471 120H481V680H619V0H392L222 560H212V0H74Z" />
+<glyph unicode="O" glyph-name="O" horiz-adv-x="652" d="M245 108T326 108T436 160T466 336T436 516T326 572T216 516T186 337T215 161ZM481 -12T326 -12T108 72T44 337T107 604T326 692T544 605T608 337T545 73Z" />
+<glyph unicode="P" glyph-name="P" horiz-adv-x="589" d="M324 198H212V0H74V680H324Q566 680 566 444Q566 325 505 262T324 198ZM212 316H323Q426 316 426 444Q426 507 401 534T323 562H212V316Z" />
+<glyph unicode="Q" glyph-name="Q" horiz-adv-x="652" d="M326 -12Q170 -12 107 72T44 336T107 604T326 692T544 605T608 336Q608 114 503 37L586 -97L460 -156L370 -9Q360 -12 326 -12ZM245 108T326 108T436 160T466 336T436 516T326 572T216 516T186 336T215 160Z" />
+<glyph unicode="R" glyph-name="R" horiz-adv-x="620" d="M212 228V0H74V680H338Q578 680 578 456Q578 323 478 260L575 0H424L345 228H212ZM389 346T413 376T437 455T412 533T338 562H212V346H340Q389 346 413 376Z" />
+<glyph unicode="S" glyph-name="S" horiz-adv-x="544" d="M283 572Q174 572 174 500Q174 468 201 451T327 402T467 330T507 205Q507 98 442 43T272 -12Q194 -12 81 12L45 19L59 126Q193 108 264 108Q370 108 370 196Q370 228 346 246T248 285Q132 318 85 363T37
+490Q37 592 99 642T269 692Q343 692 457 672L493 665L482 556Q341 572 283 572Z" />
+<glyph unicode="T" glyph-name="T" horiz-adv-x="526" d="M13 558V680H513V558H333V0H195V558H13Z" />
+<glyph unicode="U" glyph-name="U" horiz-adv-x="654" d="M206 227Q206 108 327 108T448 227V680H586V230Q586 105 522 47T327 -12T133 46T68 230V680H206V227Z" />
+<glyph unicode="V" glyph-name="V" horiz-adv-x="603" d="M442 680H587L429 0H174L16 680H161L279 120H324L442 680Z" />
+<glyph unicode="W" glyph-name="W" horiz-adv-x="930" d="M19 680H164L248 118H263L385 680H545L667 118H682L766 680H911L781 0H572L465 517L358 0H149L19 680Z" />
+<glyph unicode="X" glyph-name="X" horiz-adv-x="569" d="M162 680L288 430L417 680H560L364 333L560 0H407L281 235L152 0H9L205 326L9 680H162Z" />
+<glyph unicode="Y" glyph-name="Y" horiz-adv-x="557" d="M348 0H210V275L0 680H153L278 409L403 680H556L348 275V0Z" />
+<glyph unicode="Z" glyph-name="Z" horiz-adv-x="532" d="M41 560V680H491V560L207 138V120H491V0H41V119L325 542V560H41Z" />
+<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="355" d="M320 749V629H205V-3H320V-123H68V749H320Z" />
+<glyph unicode="\" glyph-name="backslash" horiz-adv-x="498" d="M466 13L350 -36L32 664L146 716L466 13Z" />
+<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="355" d="M35 629V749H287V-123H35V-3H150V629H35Z" />
+<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="560" d="M383 313L274 530L161 313H21L215 660H329L523 313H383Z" />
+<glyph unicode="_" glyph-name="underscore" horiz-adv-x="620" d="M96 -73H524V-187H96V-73Z" />
+<glyph unicode="`" glyph-name="grave" horiz-adv-x="268" d="M23 753L275 651L245 564L-17 638L23 753Z" />
+<glyph unicode="a" glyph-name="a" horiz-adv-x="511" d="M445 344V136Q447 112 453 103T478 89L474 -12Q423 -12 393 -5T331 23Q259 -12 184 -12Q29 -12 29 152Q29 232 72 265T204 305L311 313V344Q311 375 297 386T252 398L64 390L60 483Q167 512 263 512T402
+472T445 344ZM220 212Q164 207 164 152T213 97Q251 97 296 109L311 113V220L220 212Z" />
+<glyph unicode="b" glyph-name="b" horiz-adv-x="544" d="M304 512Q409 512 457 455T506 249T450 45T257 -12Q214 -12 100 -2L62 2V700H196V485Q260 512 304 512ZM257 108Q324 108 347 140T370 257Q370 392 286 392Q246 392 210 382L196 379V112Q242 108 257 108Z" />
+<glyph unicode="c" glyph-name="c" horiz-adv-x="446" d="M249 512Q301 512 382 496L409 490L405 384Q326 392 288 392Q219 392 197 363T174 251T196 139T289 108L405 116L409 9Q302 -12 246 -12Q135 -12 87 50T38 251T88 450T249 512Z" />
+<glyph unicode="d" glyph-name="d" horiz-adv-x="549" d="M487 700V0H354V21Q284 -12 233 -12Q124 -12 81 51T38 250T89 449T245 512Q277 512 334 502L353 498V700H487ZM339 120L353 123V386Q298 396 255 396Q174 396 174 252Q174 174 192 141T251 108T339 120Z" />
+<glyph unicode="e" glyph-name="e" horiz-adv-x="510" d="M173 147T196 127T264 106Q357 106 430 112L458 115L460 16Q345 -12 252 -12Q139 -12 88 48T37 243Q37 512 258 512Q476 512 476 286L466 193H172Q173 147 196 127ZM344 295Q344 355 325 378T259 402T192
+378T171 295H344Z" />
+<glyph unicode="f" glyph-name="f" horiz-adv-x="357" d="M220 386V0H86V386H32V500H86V522Q86 630 118 671T232 712Q268 712 325 702L346 699L344 590Q300 592 270 592T230 576T220 521V500H341V386H220Z" />
+<glyph unicode="g" glyph-name="g" horiz-adv-x="534" d="M515 -148T449 -189T271 -230T98 -200T37 -91Q37 -28 109 28Q72 53 72 104Q72 124 102 170L111 184Q43 233 43 328T100 467T253 510Q296 510 338 500L354 497L515 502V395L440 401Q462 367 462 333Q462
+233 411 195T251 157Q228 157 210 161Q200 135 200 119T217 96T297 89Q423 88 469 56T515 -62ZM169 -77Q169 -120 274 -120T380 -70Q380 -43 362 -36T286 -27L196 -20Q169 -47 169 -77ZM177 259T253 259T330 332T254 406T177 333Z" />
+<glyph unicode="h" glyph-name="h" horiz-adv-x="553" d="M196 0H62V700H196V476Q265 512 320 512Q420 512 458 453T496 271V0H362V268Q362 331 347 361T287 392Q248 392 209 380L196 376V0Z" />
+<glyph unicode="i" glyph-name="i" horiz-adv-x="258" d="M62 0V500H196V0H62ZM62 564V700H196V564H62Z" />
+<glyph unicode="j" glyph-name="j" horiz-adv-x="259" d="M63 24V500H197V23Q197 -79 162 -127T19 -230L-34 -131Q11 -101 29 -84T55 -44T63 24ZM63 564V700H197V564H63Z" />
+<glyph unicode="k" glyph-name="k" horiz-adv-x="515" d="M196 0H62V700H196V302L247 311L346 500H496L366 263L503 0H352L251 195L196 186V0Z" />
+<glyph unicode="l" glyph-name="l" horiz-adv-x="270" d="M68 0V700H202V0H68Z" />
+<glyph unicode="m" glyph-name="m" horiz-adv-x="839" d="M196 0H62V500H195V472Q264 512 313 512Q394 512 438 465Q530 512 606 512Q705 512 743 455T782 271V0H648V267Q648 331 634 361T578 392Q546 392 500 378L485 373Q489 298 489 259V0H355V257Q355 331
+342 361T285 392Q246 392 208 378L196 374V0Z" />
+<glyph unicode="n" glyph-name="n" horiz-adv-x="553" d="M196 0H62V500H195V472Q263 512 320 512Q420 512 458 453T496 271V0H362V267Q362 331 347 361T287 392Q246 392 208 378L196 374V0Z" />
+<glyph unicode="o" glyph-name="o" horiz-adv-x="532" d="M142 512T266 512T443 444T496 251Q496 -12 266 -12T36 251Q36 375 89 443ZM213 102T266 102T339 138T360 251T340 363T266 398T193 363T172 251T192 138Z" />
+<glyph unicode="p" glyph-name="p" horiz-adv-x="544" d="M62 -210V500H195V473Q260 512 309 512Q410 512 458 452T506 246T453 45T279 -12Q246 -12 208 -6L196 -4V-210H62ZM283 392Q246 392 208 377L196 372V110Q241 104 269 104Q327 104 348 138T370 254Q370
+392 283 392Z" />
+<glyph unicode="q" glyph-name="q" horiz-adv-x="543" d="M239 -12Q134 -12 86 45T38 251T93 456T286 512Q347 512 445 502L481 499V-210H347V15Q283 -12 239 -12ZM286 396Q219 396 196 362T172 243Q172 108 257 108Q297 108 334 118L347 121V392Q310 396 286 396Z" />
+<glyph unicode="r" glyph-name="r" horiz-adv-x="372" d="M62 0V500H195V447Q279 497 355 512V377Q274 360 216 342L196 335V0H62Z" />
+<glyph unicode="s" glyph-name="s" horiz-adv-x="472" d="M421 375Q297 391 248 391T184 382T169 354T188 327T288 305T403 257T437 150Q437 -12 236 -12Q170 -12 76 6L44 12L48 124Q172 108 220 108T286 117T304 146T286 174T190 196T74 240T36 350T90 470T229
+511Q288 511 390 492L423 486L421 375Z" />
+<glyph unicode="t" glyph-name="t" horiz-adv-x="364" d="M339 386H216V181Q216 151 217 139T228 117T258 108L334 110L340 3Q273 -12 238 -12Q148 -12 115 28T82 178V386H23V500H82V639H216V500H339V386Z" />
+<glyph unicode="u" glyph-name="u" horiz-adv-x="553" d="M357 500H491V0H358V28Q286 -12 233 -12Q129 -12 93 45T57 238V500H191V236Q191 162 203 135T261 108Q305 108 344 122L357 126V500Z" />
+<glyph unicode="v" glyph-name="v" horiz-adv-x="498" d="M15 500H155L235 114H263L347 500H483L363 0H135L15 500Z" />
+<glyph unicode="w" glyph-name="w" horiz-adv-x="772" d="M24 500H156L217 114H241L317 490H455L531 114H555L616 500H748L653 0H443L386 306L329 0H119L24 500Z" />
+<glyph unicode="x" glyph-name="x" horiz-adv-x="474" d="M14 500H157L237 345L318 500H461L319 255L461 0H318L237 153L157 0H14L151 251L14 500Z" />
+<glyph unicode="y" glyph-name="y" horiz-adv-x="500" d="M16 500H148L239 114H262L353 500H485L309 -210H178L233 0H139L16 500Z" />
+<glyph unicode="z" glyph-name="z" horiz-adv-x="454" d="M41 380V500H412V380L202 120H412V0H41V120L251 380H41Z" />
+<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="361" d="M251 576L258 448Q258 385 238 358T146 314Q216 297 237 267T259 172L252 55Q252 21 266 2T323 -20V-134Q212 -130 167 -91T121 38L128 159Q128 232 16 261V365Q128 391 128 459L121 586Q121 681
+166 719T325 761V647Q282 643 267 626T251 576Z" />
+<glyph unicode="|" glyph-name="bar" horiz-adv-x="268" d="M67 -210V700H201V-210H67Z" />
+<glyph unicode="}" glyph-name="braceright" horiz-adv-x="361" d="M109 55L102 172Q102 236 123 266T215 314Q144 331 124 358T103 448L110 576Q110 609 95 626T36 647V761Q149 757 194 719T240 586L233 459Q233 391 345 365V261Q233 232 233 159L240 38Q240
+-52 195 -91T38 -134V-20Q80 -17 94 2T109 55Z" />
+<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="560" d="M411 170T383 170T276 192T178 214T132 204T88 184L71 175L61 282Q124 334 184 334Q212 334 288 312T384 290Q421 290 472 318L489 328L497 221Q478 202 445 186Z" />
+<glyph unicode="&#xa0;" glyph-name="uni00A0" horiz-adv-x="220" />
+<glyph unicode="&#xa1;" glyph-name="exclamdown" horiz-adv-x="264" d="M204 500V339H60V500H204ZM191 250L204 -180H59L73 250H191Z" />
+<glyph unicode="&#xa2;" glyph-name="cent" horiz-adv-x="560" d="M270 -75V29Q88 42 88 248T270 470V571H380V466L459 453L455 353Q376 356 326 356T250 332T224 250T250 168T339 143L455 147L459 47Q420 37 380 34V-75H270Z" />
+<glyph unicode="&#xa3;" glyph-name="sterling" horiz-adv-x="560" d="M333 551Q281 551 281 486V433H434V319H281V114H405L474 130L495 18L414 0H75V114H149V319H85V433H149V492Q149 596 189 633T315 671Q382 671 446 653L468 647L464 543Q396 551 333 551Z" />
+<glyph unicode="&#xa4;" glyph-name="currency" horiz-adv-x="560" d="M325 55T280 55T195 75L122 2L30 94L102 166Q83 207 83 251T102 337L30 410L122 502L194 429Q234 449 279 449T365 429L438 502L530 410L457 337Q477 297 477 252T457 166L530 94L438 2L365
+75Q325 55 280 55ZM245 166T280 166T340 191T366 252T341 312T280 338T220 313T194 252T219 192Z" />
+<glyph unicode="&#xa5;" glyph-name="yen" horiz-adv-x="560" d="M58 291V403H150L5 660H158L281 449L403 660H556L413 403H502V291H351V246H502V134H351V0H213V134H58V246H213V291H58Z" />
+<glyph unicode="&#xa6;" glyph-name="brokenbar" horiz-adv-x="272" d="M69 700H203V328H69V700ZM69 170H203V-210H69V170Z" />
+<glyph unicode="&#xa7;" glyph-name="section" horiz-adv-x="517" d="M444 506Q331 522 278 522T206 508T187 457Q187 435 214 424T327 391T444 341T475 243T425 102Q445 83 454 61T463 -7Q463 -104 412 -147T246 -190Q190 -190 91 -172L60 -167L73 -59Q181 -74
+234 -74T311 -61T335 -19T310 22T195 56T71 110T37 213Q37 248 57 287T101 347Q57 379 57 455Q57 638 274 638Q338 638 422 620L450 614L444 506ZM189 302Q172 276 172 243T183 198T234 176T321 149Q339 172 339 222Q339 247 323 259T279 279T225 293T189 302Z"
+/>
+<glyph unicode="&#xa8;" glyph-name="dieresis" horiz-adv-x="268" d="M-30 596V728H98V596H-30ZM186 596V728H314V596H186Z" />
+<glyph unicode="&#xa9;" glyph-name="copyright" horiz-adv-x="643" d="M203 150T125 232T46 435T124 637T323 718T521 636T597 432T521 231T324 150ZM108 527T108 434T169 276T321 210T474 275T535 433T474 592T322 658T170 593ZM414 287Q386 269 324 269T232
+305T202 434T232 563T334 598Q373 598 404 586L414 583L407 497Q372 503 346 503T313 489T305 439Q305 364 340 364L407 369L414 287Z" />
+<glyph unicode="&#xaa;" glyph-name="ordfeminine" horiz-adv-x="416" d="M351 544V403Q359 397 369 395L367 313Q299 313 276 320T240 346Q198 314 148 314T70 343T42 424Q42 519 169 525L236 528V550Q236 565 192 565L61 558L58 633Q128 659 202 659T313 635T351
+544ZM188 402Q206 402 236 418V458L189 455Q157 452 157 428Q157 402 188 402Z" />
+<glyph unicode="&#xab;" glyph-name="guillemotleft" horiz-adv-x="601" d="M263 319L154 244L263 158V23L40 194V290L263 454V319ZM546 319L437 244L546 158V23L323 194V290L546 454V319Z" />
+<glyph unicode="&#xac;" glyph-name="logicalnot" horiz-adv-x="560" d="M57 358H493V104H373V238H57V358Z" />
+<glyph unicode="&#xae;" glyph-name="registered" horiz-adv-x="643" d="M203 150T125 231T46 435T124 637T323 718T520 636T597 432T522 231T325 150ZM108 526T108 434T170 276T322 210T474 275T535 433T474 592T322 658T170 592ZM297 369V276H201V591H337Q389
+591 420 566T451 494T443 426T413 386L454 276H354L326 369H297ZM296 519V440H324Q358 440 358 479T323 519H296Z" />
+<glyph unicode="&#xaf;" glyph-name="overscore" horiz-adv-x="268" d="M-5 597V697H282V597H-5Z" />
+<glyph unicode="&#xb0;" glyph-name="degree" horiz-adv-x="560" d="M130 475T130 542T171 650T280 692T388 651T430 542T389 434T280 393T172 434ZM205 576T205 542T225 487T280 466T335 487T357 542T336 597T280 619T226 598Z" />
+<glyph unicode="&#xb1;" glyph-name="plusminus" horiz-adv-x="560" d="M50 270V390H219V498H339V390H510V270H339V170H219V270H50ZM50 139H510V19H50V139Z" />
+<glyph unicode="&#xb2;" glyph-name="twosuperior" horiz-adv-x="280" d="M252 478H21V568L94 627Q140 664 140 684Q140 699 103 699L27 693L23 792Q96 801 149 801T227 778T252 712T239 646T196 601L158 573H252V478Z" />
+<glyph unicode="&#xb3;" glyph-name="threesuperior" horiz-adv-x="280" d="M132 801Q253 801 253 712Q253 659 224 642Q259 627 259 572Q259 467 141 467L20 475L26 568Q87 562 118 562T149 578Q149 592 123 592H57V677H121Q141 677 141 691T114 706L30 701L24
+792Q92 801 132 801Z" />
+<glyph unicode="&#xb4;" glyph-name="acute" horiz-adv-x="268" d="M5 651L257 753L297 638L35 564L5 651Z" />
+<glyph unicode="&#xb5;" glyph-name="mu" horiz-adv-x="560" d="M363 500H497V0H364V28Q292 -12 239 -12Q216 -12 197 -9V-210H63V500H197V211Q198 153 211 131T267 108Q311 108 350 122L363 126V500Z" />
+<glyph unicode="&#xb6;" glyph-name="paragraph" horiz-adv-x="599" d="M397 0V566H335V0H221V286H214Q130 286 79 340T28 482T80 624T216 680H547V566H511V0H397Z" />
+<glyph unicode="&#xb7;" glyph-name="middot" horiz-adv-x="256" d="M56 167V333H200V167H56Z" />
+<glyph unicode="&#xb8;" glyph-name="cedilla" horiz-adv-x="264" d="M175 -38T204 -56T234 -129T205 -212T123 -241Q79 -241 44 -233L30 -230L34 -152Q65 -153 82 -153Q120 -153 120 -127Q120 -105 82 -105H58V1H111V-37Q175 -38 204 -56Z" />
+<glyph unicode="&#xb9;" glyph-name="onesuperior" horiz-adv-x="280" d="M212 790V478H106V673L59 641L10 715L116 790H212Z" />
+<glyph unicode="&#xba;" glyph-name="ordmasculine" horiz-adv-x="420" d="M211 659Q380 659 380 487T211 314Q40 314 40 486T211 659ZM182 419T211 419T249 435T259 488T250 540T211 555T171 540T160 488T171 436Z" />
+<glyph unicode="&#xbb;" glyph-name="guillemotright" horiz-adv-x="603" d="M447 244L338 319V454L561 290V194L338 23V158L447 244ZM164 244L55 319V454L278 290V194L55 23V158L164 244Z" />
+<glyph unicode="&#xbc;" glyph-name="onequarter" horiz-adv-x="548" d="M220 790V478H114V673L67 641L18 715L124 790H220ZM29 29L422 661L475 626L82 -7L29 29ZM409 -100V-65H277V23L316 212H434L382 30H409L423 120H514V30H525V-65H514V-100H409Z" />
+<glyph unicode="&#xbd;" glyph-name="onehalf" horiz-adv-x="542" d="M220 790V478H114V673L67 641L18 715L124 790H220ZM29 29L422 661L475 626L82 -7L29 29ZM512 -100H281V-10L354 49Q400 86 400 106Q400 121 363 121L287 115L283 214Q356 223 409 223T487 200T512
+134T499 68T456 23L418 -5H512V-100Z" />
+<glyph unicode="&#xbe;" glyph-name="threequarters" horiz-adv-x="561" d="M148 801Q269 801 269 712Q269 659 240 642Q275 627 275 572Q275 467 157 467L36 475L42 568Q103 562 134 562T165 578Q165 592 139 592H73V677H137Q157 677 157 691T130 706L46 701L40
+792Q108 801 148 801ZM43 29L436 661L489 626L96 -7L43 29ZM423 -100V-65H291V23L330 212H448L396 30H423L437 120H528V30H539V-65H528V-100H423Z" />
+<glyph unicode="&#xbf;" glyph-name="questiondown" horiz-adv-x="433" d="M126 -192T78 -153T29 -36T44 77T110 150T173 208T186 252V283H293Q324 249 324 192Q324 156 261 105T183 35T168 -13Q168 -72 253 -72Q313 -72 376 -60L397 -56L404 -157Q318 -192 222
+-192ZM315 500V339H171V500H315Z" />
+<glyph unicode="&#xc0;" glyph-name="Agrave" horiz-adv-x="602" d="M17 0L170 680H432L585 0H447L420 123H182L155 0H17ZM277 566L208 243H394L325 566H277ZM183 945L435 839L402 746L142 825L183 945Z" />
+<glyph unicode="&#xc1;" glyph-name="Aacute" horiz-adv-x="602" d="M17 0L170 680H432L585 0H447L420 123H182L155 0H17ZM277 566L208 243H394L325 566H277ZM162 839L414 945L455 825L195 746L162 839Z" />
+<glyph unicode="&#xc2;" glyph-name="Acircumflex" horiz-adv-x="602" d="M17 0L170 680H432L585 0H447L420 123H182L155 0H17ZM277 566L208 243H394L325 566H277ZM107 765L241 914H358L492 765H350L301 821L249 765H107Z" />
+<glyph unicode="&#xc3;" glyph-name="Atilde" horiz-adv-x="602" d="M17 0L170 680H432L585 0H447L420 123H182L155 0H17ZM277 566L208 243H394L325 566H277ZM403 758T377 758T288 781T211 804Q186 804 144 772L130 762L101 858Q121 882 152 902T213 922T304 899T376
+876Q399 876 442 908L457 918L486 821Q465 797 434 778Z" />
+<glyph unicode="&#xc4;" glyph-name="Adieresis" horiz-adv-x="602" d="M17 0L170 680H432L585 0H447L420 123H182L155 0H17ZM277 566L208 243H394L325 566H277ZM129 764V896H257V764H129ZM343 764V896H471V764H343Z" />
+<glyph unicode="&#xc5;" glyph-name="Aring" horiz-adv-x="602" d="M451 721Q451 690 436 662L585 0H447L420 123H182L155 0H17L166 662Q151 688 151 721Q151 780 194 813T301 847T408 814T451 721ZM277 566L208 243H394L325 566H277ZM274 762T258 751T242 722T256
+692T295 680H301Q328 680 344 691T360 721T344 751T301 762Z" />
+<glyph unicode="&#xc6;" glyph-name="AE" horiz-adv-x="871" d="M392 0V116H179L150 0H12L196 690H830V558H528V415H770V284H528V132H830V0H392ZM293 558L213 249H392L393 558H293Z" />
+<glyph unicode="&#xc7;" glyph-name="Ccedilla" horiz-adv-x="543" d="M379 -38T408 -56T438 -129T409 -212T327 -241Q284 -241 248 -233L234 -230L238 -152Q269 -153 286 -153Q324 -153 324 -127Q324 -105 286 -105H262V-10Q138 2 93 84T47 351T102 614T307 692Q393
+692 506 665L502 555Q403 570 338 570T244 553T203 486T189 319T216 156T326 110T502 124L505 11Q411 -10 315 -12V-37Q379 -38 408 -56Z" />
+<glyph unicode="&#xc8;" glyph-name="Egrave" horiz-adv-x="554" d="M74 0V680H514V560H212V401H454V283H212V120H514V0H74ZM180 945L432 839L399 746L139 825L180 945Z" />
+<glyph unicode="&#xc9;" glyph-name="Eacute" horiz-adv-x="554" d="M74 0V680H514V560H212V401H454V283H212V120H514V0H74ZM154 839L406 945L447 825L187 746L154 839Z" />
+<glyph unicode="&#xca;" glyph-name="Ecircumflex" horiz-adv-x="554" d="M74 0V680H514V560H212V401H454V283H212V120H514V0H74ZM105 765L239 914H356L490 765H348L299 821L247 765H105Z" />
+<glyph unicode="&#xcb;" glyph-name="Edieresis" horiz-adv-x="554" d="M74 0V680H514V560H212V401H454V283H212V120H514V0H74ZM123 764V896H251V764H123ZM337 764V896H465V764H337Z" />
+<glyph unicode="&#xcc;" glyph-name="Igrave" horiz-adv-x="286" d="M74 0V680H212V0H74ZM17 945L269 839L236 746L-24 825L17 945Z" />
+<glyph unicode="&#xcd;" glyph-name="Iacute" horiz-adv-x="286" d="M74 0V680H212V0H74ZM7 839L259 945L300 825L40 746L7 839Z" />
+<glyph unicode="&#xce;" glyph-name="Icircumflex" horiz-adv-x="286" d="M74 0V680H212V0H74ZM-50 765L84 914H201L335 765H193L144 821L92 765H-50Z" />
+<glyph unicode="&#xcf;" glyph-name="Idieresis" horiz-adv-x="286" d="M74 0V680H212V0H74ZM-28 764V896H100V764H-28ZM186 764V896H314V764H186Z" />
+<glyph unicode="&#xd0;" glyph-name="Eth" horiz-adv-x="642" d="M25 277V409H79V690H306Q394 690 451 671T539 609T583 507T595 356T584 202T543 93T454 22T306 0H79V277H25ZM453 354Q453 397 452 422T445 472T430 511T404 538Q373 559 306 559H215V409H345V277H215V131H306Q381
+131 416 169Q453 210 453 354Z" />
+<glyph unicode="&#xd1;" glyph-name="Ntilde" horiz-adv-x="693" d="M74 0V680H307L471 120H481V680H619V0H392L222 560H212V0H74ZM451 758T425 758T336 781T259 804Q234 804 192 772L178 762L149 858Q169 882 200 902T261 922T352 899T424 876Q447 876 490 908L505
+918L534 821Q513 797 482 778Z" />
+<glyph unicode="&#xd2;" glyph-name="Ograve" horiz-adv-x="652" d="M245 108T326 108T436 160T466 336T436 516T326 572T216 516T186 337T215 161ZM481 -12T326 -12T108 72T44 337T107 604T326 692T544 605T608 337T545 73ZM204 945L456 839L423 746L163 825L204 945Z" />
+<glyph unicode="&#xd3;" glyph-name="Oacute" horiz-adv-x="652" d="M245 108T326 108T436 160T466 336T436 516T326 572T216 516T186 337T215 161ZM481 -12T326 -12T108 72T44 337T107 604T326 692T544 605T608 337T545 73ZM167 839L419 945L460 825L200 746L167 839Z" />
+<glyph unicode="&#xd4;" glyph-name="Ocircumflex" horiz-adv-x="652" d="M245 108T326 108T436 160T466 336T436 516T326 572T216 516T186 337T215 161ZM481 -12T326 -12T108 72T44 337T107 604T326 692T544 605T608 337T545 73ZM135 765L269 914H386L520 765H378L329
+821L277 765H135Z" />
+<glyph unicode="&#xd5;" glyph-name="Otilde" horiz-adv-x="652" d="M245 108T326 108T436 160T466 336T436 516T326 572T216 516T186 337T215 161ZM481 -12T326 -12T108 72T44 337T107 604T326 692T544 605T608 337T545 73ZM435 758T409 758T320 781T243 804Q218
+804 176 772L162 762L133 858Q153 882 184 902T245 922T336 899T408 876Q431 876 474 908L489 918L518 821Q497 797 466 778Z" />
+<glyph unicode="&#xd6;" glyph-name="Odieresis" horiz-adv-x="652" d="M245 108T326 108T436 160T466 336T436 516T326 572T216 516T186 337T215 161ZM481 -12T326 -12T108 72T44 337T107 604T326 692T544 605T608 337T545 73ZM155 764V896H283V764H155ZM369
+764V896H497V764H369Z" />
+<glyph unicode="&#xd7;" glyph-name="multiply" horiz-adv-x="560" d="M142 473L280 332L420 475L504 390L361 250L504 111L419 26L280 168L141 27L56 111L198 250L57 388L142 473Z" />
+<glyph unicode="&#xd8;" glyph-name="Oslash" horiz-adv-x="652" d="M326 -12Q277 -12 230 -2L172 -127L74 -78L132 46Q44 124 44 336Q44 517 107 604T326 692Q384 692 427 680L488 810L588 767L523 627Q608 545 608 336Q608 157 545 73T326 -12ZM246 572T216
+516T186 352T201 194L374 565Q350 572 326 572Q246 572 216 516ZM326 108Q407 108 436 160T466 319T452 475L283 112Q300 108 326 108Z" />
+<glyph unicode="&#xd9;" glyph-name="Ugrave" horiz-adv-x="654" d="M206 227Q206 108 327 108T448 227V680H586V230Q586 105 522 47T327 -12T133 46T68 230V680H206V227ZM216 945L468 839L435 746L175 825L216 945Z" />
+<glyph unicode="&#xda;" glyph-name="Uacute" horiz-adv-x="654" d="M206 227Q206 108 327 108T448 227V680H586V230Q586 105 522 47T327 -12T133 46T68 230V680H206V227ZM175 839L427 945L468 825L208 746L175 839Z" />
+<glyph unicode="&#xdb;" glyph-name="Ucircumflex" horiz-adv-x="654" d="M206 227Q206 108 327 108T448 227V680H586V230Q586 105 522 47T327 -12T133 46T68 230V680H206V227ZM135 765L269 914H386L520 765H378L329 821L277 765H135Z" />
+<glyph unicode="&#xdc;" glyph-name="Udieresis" horiz-adv-x="654" d="M206 227Q206 108 327 108T448 227V680H586V230Q586 105 522 47T327 -12T133 46T68 230V680H206V227ZM156 764V896H284V764H156ZM370 764V896H498V764H370Z" />
+<glyph unicode="&#xdd;" glyph-name="Yacute" horiz-adv-x="557" d="M348 0H210V275L0 680H153L278 409L403 680H556L348 275V0ZM133 839L385 945L426 825L166 746L133 839Z" />
+<glyph unicode="&#xde;" glyph-name="Thorn" horiz-adv-x="596" d="M323 233Q374 233 401 264T428 353Q428 460 323 460H212V233H323ZM324 99H212V0H74V690H212V592H324Q568 592 568 353Q568 232 506 166T324 99Z" />
+<glyph unicode="&#xdf;" glyph-name="germandbls" horiz-adv-x="611" d="M196 0H62V522Q62 624 115 668T289 712T466 675T523 555Q523 501 502 476T436 432T381 403T370 380T386 354T468 312T561 252T588 164Q588 63 543 26T386 -12Q332 -12 256 6L232 11L236
+118Q333 106 370 106Q450 106 450 144Q450 167 435 179T354 219T260 280T232 365T250 444T312 490T370 519T385 551T365 583T292 594T217 577T196 519V0Z" />
+<glyph unicode="&#xe0;" glyph-name="agrave" horiz-adv-x="511" d="M445 344V136Q447 112 453 103T478 89L474 -12Q423 -12 393 -5T331 23Q259 -12 184 -12Q29 -12 29 152Q29 232 72 265T204 305L311 313V344Q311 375 297 386T252 398L64 390L60 483Q167 512
+263 512T402 472T445 344ZM220 212Q164 207 164 152T213 97Q251 97 296 109L311 113V220L220 212ZM143 753L395 651L365 564L103 638L143 753Z" />
+<glyph unicode="&#xe1;" glyph-name="aacute" horiz-adv-x="511" d="M445 344V136Q447 112 453 103T478 89L474 -12Q423 -12 393 -5T331 23Q259 -12 184 -12Q29 -12 29 152Q29 232 72 265T204 305L311 313V344Q311 375 297 386T252 398L64 390L60 483Q167 512
+263 512T402 472T445 344ZM220 212Q164 207 164 152T213 97Q251 97 296 109L311 113V220L220 212ZM96 651L348 753L388 638L126 564L96 651Z" />
+<glyph unicode="&#xe2;" glyph-name="acircumflex" horiz-adv-x="511" d="M445 344V136Q447 112 453 103T478 89L474 -12Q423 -12 393 -5T331 23Q259 -12 184 -12Q29 -12 29 152Q29 232 72 265T204 305L311 313V344Q311 375 297 386T252 398L64 390L60 483Q167
+512 263 512T402 472T445 344ZM220 212Q164 207 164 152T213 97Q251 97 296 109L311 113V220L220 212ZM83 580L209 731H293L421 580H298L252 647L206 580H83Z" />
+<glyph unicode="&#xe3;" glyph-name="atilde" horiz-adv-x="511" d="M445 344V136Q447 112 453 103T478 89L474 -12Q423 -12 393 -5T331 23Q259 -12 184 -12Q29 -12 29 152Q29 232 72 265T204 305L311 313V344Q311 375 297 386T252 398L64 390L60 483Q167 512
+263 512T402 472T445 344ZM220 212Q164 207 164 152T213 97Q251 97 296 109L311 113V220L220 212ZM368 619T340 602T290 585T221 603T162 621Q133 621 96 598L83 590L54 665Q74 688 104 706T157 725T226 707T285 689Q309 689 351 714L365 723L394 647Q388 640 378
+630Z" />
+<glyph unicode="&#xe4;" glyph-name="adieresis" horiz-adv-x="511" d="M445 344V136Q447 112 453 103T478 89L474 -12Q423 -12 393 -5T331 23Q259 -12 184 -12Q29 -12 29 152Q29 232 72 265T204 305L311 313V344Q311 375 297 386T252 398L64 390L60 483Q167 512
+263 512T402 472T445 344ZM220 212Q164 207 164 152T213 97Q251 97 296 109L311 113V220L220 212ZM65 596V728H193V596H65ZM281 596V728H409V596H281Z" />
+<glyph unicode="&#xe5;" glyph-name="aring" horiz-adv-x="511" d="M445 344V136Q447 112 453 103T478 89L474 -12Q423 -12 393 -5T331 23Q259 -12 184 -12Q29 -12 29 152Q29 232 72 265T204 305L311 313V344Q311 375 297 386T252 398L64 390L60 483Q167 512 263
+512T402 472T445 344ZM220 212Q164 207 164 152T213 97Q251 97 296 109L311 113V220L220 212ZM215 521T182 554T148 637T181 721T264 755T348 721T382 638T348 555T265 521ZM220 658T220 638T233 605T266 592T298 605T311 638T299 670T266 683T233 671Z" />
+<glyph unicode="&#xe6;" glyph-name="ae" horiz-adv-x="784" d="M446 149T469 130T537 111Q605 111 703 118L731 120L733 16Q618 -12 521 -12T372 36L349 25Q265 -12 185 -12T67 31T29 153T72 266T203 306L311 313V338Q311 358 297 370T256 383Q184 383 99 375L67
+372L63 489Q196 511 275 511T398 474Q450 511 531 511Q749 511 749 286L739 192H445Q446 149 469 130ZM311 118L310 211L220 207Q164 204 164 156Q164 103 205 103Q245 103 294 114L311 118ZM445 295H617Q617 348 598 370T531 392T464 369T445 295Z" />
+<glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="446" d="M319 -38T348 -56T378 -129T349 -212T267 -241Q224 -241 188 -233L174 -230L178 -152Q209 -153 226 -153Q264 -153 264 -127Q264 -105 226 -105H202V-9Q115 2 77 65T38 258T88 450T249 512Q301
+512 382 496L409 490L405 384Q326 392 288 392Q219 392 197 363T174 251T196 139T289 108L405 116L409 9Q312 -10 255 -12V-37Q319 -38 348 -56Z" />
+<glyph unicode="&#xe8;" glyph-name="egrave" horiz-adv-x="510" d="M173 147T196 127T264 106Q357 106 430 112L458 115L460 16Q345 -12 252 -12Q139 -12 88 48T37 243Q37 512 258 512Q476 512 476 286L466 193H172Q173 147 196 127ZM344 295Q344 355 325 378T259
+402T192 378T171 295H344ZM150 753L402 651L372 564L110 638L150 753Z" />
+<glyph unicode="&#xe9;" glyph-name="eacute" horiz-adv-x="510" d="M173 147T196 127T264 106Q357 106 430 112L458 115L460 16Q345 -12 252 -12Q139 -12 88 48T37 243Q37 512 258 512Q476 512 476 286L466 193H172Q173 147 196 127ZM344 295Q344 355 325 378T259
+402T192 378T171 295H344ZM105 651L357 753L397 638L135 564L105 651Z" />
+<glyph unicode="&#xea;" glyph-name="ecircumflex" horiz-adv-x="510" d="M173 147T196 127T264 106Q357 106 430 112L458 115L460 16Q345 -12 252 -12Q139 -12 88 48T37 243Q37 512 258 512Q476 512 476 286L466 193H172Q173 147 196 127ZM344 295Q344 355 325
+378T259 402T192 378T171 295H344ZM89 580L215 731H299L427 580H304L258 647L212 580H89Z" />
+<glyph unicode="&#xeb;" glyph-name="edieresis" horiz-adv-x="510" d="M173 147T196 127T264 106Q357 106 430 112L458 115L460 16Q345 -12 252 -12Q139 -12 88 48T37 243Q37 512 258 512Q476 512 476 286L466 193H172Q173 147 196 127ZM344 295Q344 355 325
+378T259 402T192 378T171 295H344ZM84 596V728H212V596H84ZM300 596V728H428V596H300Z" />
+<glyph unicode="&#xec;" glyph-name="igrave" horiz-adv-x="258" d="M62 0V500H196V0H62ZM-19 753L233 651L203 564L-59 638L-19 753Z" />
+<glyph unicode="&#xed;" glyph-name="iacute" horiz-adv-x="258" d="M31 651L283 753L323 638L61 564L31 651ZM62 500H196V0H62V500Z" />
+<glyph unicode="&#xee;" glyph-name="icircumflex" horiz-adv-x="258" d="M62 500H196V0H62V500ZM-45 580L81 731H165L293 580H170L124 647L78 580H-45Z" />
+<glyph unicode="&#xef;" glyph-name="idieresis" horiz-adv-x="258" d="M62 500H196V0H62V500ZM-48 596V728H80V596H-48ZM168 596V728H296V596H168Z" />
+<glyph unicode="&#xf0;" glyph-name="eth" horiz-adv-x="567" d="M405 625Q528 537 528 351T468 78T273 -9Q38 -9 38 216Q38 320 92 379T256 438Q318 438 369 420L386 414Q381 461 361 494T297 553L168 467L114 543L190 594Q144 606 82 618L100 712Q221 703 309
+673L405 737L459 661L405 625ZM264 320Q223 320 202 290T180 216Q180 111 273 111Q329 111 357 155T386 298Q336 320 264 320Z" />
+<glyph unicode="&#xf1;" glyph-name="ntilde" horiz-adv-x="553" d="M62 0V500H195V472L214 482Q232 492 263 502T320 512Q420 512 458 453T496 271Q496 271 496 0H362V267Q362 331 347 361T286 392T196 374V0H62ZM425 619T397 602T347 585T278 603T218 621Q190
+621 153 598L140 590L111 665Q131 688 161 706T214 725T283 707T342 689Q366 689 408 714L422 723L451 647Q445 640 435 630Z" />
+<glyph unicode="&#xf2;" glyph-name="ograve" horiz-adv-x="532" d="M142 512T266 512T443 444T496 251Q496 -12 266 -12T36 251Q36 375 89 443ZM213 102T266 102T339 138T360 251T340 363T266 398T193 363T172 251T192 138ZM163 753L415 651L385 564L123 638L163 753Z" />
+<glyph unicode="&#xf3;" glyph-name="oacute" horiz-adv-x="532" d="M142 512T266 512T443 444T496 251Q496 -12 266 -12T36 251Q36 375 89 443ZM213 102T266 102T339 138T360 251T340 363T266 398T193 363T172 251T192 138ZM116 651L368 753L408 638L146 564L116 651Z" />
+<glyph unicode="&#xf4;" glyph-name="ocircumflex" horiz-adv-x="532" d="M142 512T266 512T443 444T496 251Q496 -12 266 -12T36 251Q36 375 89 443ZM213 102T266 102T339 138T360 251T340 363T266 398T193 363T172 251T192 138ZM91 580L217 731H301L429 580H306L260
+647L214 580H91Z" />
+<glyph unicode="&#xf5;" glyph-name="otilde" horiz-adv-x="532" d="M142 512T266 512T443 444T496 251Q496 -12 266 -12T36 251Q36 375 89 443ZM213 102T266 102T339 138T360 251T340 363T266 398T193 363T172 251T192 138ZM405 619T377 602T327 585T258 603T198
+621Q170 621 133 598L120 590L91 665Q111 688 141 706T194 725T263 707T322 689Q346 689 388 714L402 723L431 647Q425 640 415 630Z" />
+<glyph unicode="&#xf6;" glyph-name="odieresis" horiz-adv-x="532" d="M142 512T266 512T443 444T496 251Q496 -12 266 -12T36 251Q36 375 89 443ZM213 102T266 102T339 138T360 251T340 363T266 398T193 363T172 251T192 138ZM93 596V728H221V596H93ZM309 596V728H437V596H309Z"
+/>
+<glyph unicode="&#xf7;" glyph-name="divide" horiz-adv-x="560" d="M213 352V484H345V352H213ZM50 191V311H510V191H50ZM213 17V149H345V17H213Z" />
+<glyph unicode="&#xf8;" glyph-name="oslash" horiz-adv-x="532" d="M266 512Q294 512 322 507L362 607L443 577L402 479Q496 420 496 251Q496 -12 266 -12Q232 -12 203 -6L162 -108L82 -78L125 25Q36 85 36 251Q36 375 89 443T266 512ZM266 102Q319 102 339 138T360
+245T346 350L246 103Q252 102 266 102ZM279 397L266 398Q213 398 193 363T172 258T184 156L279 397Z" />
+<glyph unicode="&#xf9;" glyph-name="ugrave" horiz-adv-x="553" d="M357 500H491V0H358V28Q286 -12 233 -12Q129 -12 93 45T57 238V500H191V236Q191 162 203 135T261 108Q305 108 344 122L357 126V500ZM138 753L390 651L360 564L98 638L138 753Z" />
+<glyph unicode="&#xfa;" glyph-name="uacute" horiz-adv-x="553" d="M491 500V0H358V28L338 18Q319 8 288 -2T233 -12Q129 -12 93 45T57 238Q57 238 57 500H191V236Q191 162 203 135T263 108T357 126V500H491ZM130 651L382 753L422 638L160 564L130 651Z" />
+<glyph unicode="&#xfb;" glyph-name="ucircumflex" horiz-adv-x="553" d="M491 500V0H358V28L338 18Q319 8 288 -2T233 -12Q129 -12 93 45T57 238Q57 238 57 500H191V236Q191 162 203 135T263 108T357 126V500H491ZM82 580L208 731H292L420 580H297L251 647L205 580H82Z" />
+<glyph unicode="&#xfc;" glyph-name="udieresis" horiz-adv-x="553" d="M491 500V0H358V28L338 18Q319 8 288 -2T233 -12Q129 -12 93 45T57 238Q57 238 57 500H191V236Q191 162 203 135T263 108T357 126V500H491ZM106 596V728H234V596H106ZM322 596V728H450V596H322Z" />
+<glyph unicode="&#xfd;" glyph-name="yacute" horiz-adv-x="500" d="M16 500H148L239 114H262L353 500H485L309 -210H178L233 0H139L16 500ZM122 651L374 753L414 638L152 564L122 651Z" />
+<glyph unicode="&#xfe;" glyph-name="thorn" horiz-adv-x="544" d="M269 104Q327 104 348 138T370 255Q370 392 286 392Q246 392 210 382L196 379V110Q241 104 269 104ZM304 512Q409 512 457 455T506 249T453 45T279 -12Q246 -12 208 -6L196 -4V-210H62V700H196V485Q260
+512 304 512Z" />
+<glyph unicode="&#xff;" glyph-name="ydieresis" horiz-adv-x="500" d="M16 500H148L239 114H262L353 500H485L309 -210H178L233 0H139L16 500ZM79 596V728H207V596H79ZM295 596V728H423V596H295Z" />
+<glyph unicode="&#x2013;" glyph-name="endash" horiz-adv-x="614" d="M57 323H557V209H57V323Z" />
+<glyph unicode="&#x2014;" glyph-name="emdash" horiz-adv-x="1114" d="M57 323H1057V209H57V323Z" />
+<glyph unicode="&#x2018;" glyph-name="quoteleft" horiz-adv-x="259" d="M223 679L175 432H35L120 679H223Z" />
+<glyph unicode="&#x2019;" glyph-name="quoteright" horiz-adv-x="254" d="M41 433L88 680H229L144 433H41Z" />
+<glyph unicode="&#x201a;" glyph-name="quotesinglbase" horiz-adv-x="256" d="M23 -117L70 130H211L126 -117H23Z" />
+<glyph unicode="&#x201c;" glyph-name="quotedblleft" horiz-adv-x="443" d="M407 679L359 432H219L304 679H407ZM223 679L175 432H35L120 679H223Z" />
+<glyph unicode="&#x201d;" glyph-name="quotedblright" horiz-adv-x="439" d="M41 434L88 681H229L143 434H41ZM225 434L272 681H413L328 434H225Z" />
+<glyph unicode="&#x201e;" glyph-name="quotedblbase" horiz-adv-x="421" d="M181 117L133 -130H-7L78 117H181ZM371 117L323 -130H183L268 117H371Z" />
+<glyph unicode="&#x2022;" glyph-name="bullet" horiz-adv-x="450" d="M100 100V380H350V100H100Z" />
+<glyph unicode="&#x2039;" glyph-name="guilsinglleft" horiz-adv-x="318" d="M263 319L154 244L263 158V23L40 194V290L263 454V319Z" />
+<glyph unicode="&#x203a;" glyph-name="guilsinglright" horiz-adv-x="318" d="M163 254L54 329V464L277 300V204L54 33V168L163 254Z" />
+</font>
+</defs>
+</svg>
diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-700.ttf b/WebSites/errors/403/fonts/titillium-web-v7-latin-700.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e8a5717d71d92c3abf5d38f71df466a62bd143ad
GIT binary patch
literal 28704
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-700.woff b/WebSites/errors/403/fonts/titillium-web-v7-latin-700.woff
new file mode 100644
index 0000000000000000000000000000000000000000..150e1a6b698834cd2fce0643b22e661f81b79b8e
GIT binary patch
literal 15744
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/fonts/titillium-web-v7-latin-700.woff2 b/WebSites/errors/403/fonts/titillium-web-v7-latin-700.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..d9a6058aa59ab5dfe54122919d46d9b0d92187f4
GIT binary patch
literal 11720
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/dropdown-arrow.png b/WebSites/errors/403/img/dropdown-arrow.png
new file mode 100755
index 0000000000000000000000000000000000000000..745e64be408109861b2881814198d5cd5f46a3aa
GIT binary patch
literal 229
zcmeAS@N?(olHy`uVBq!ia0vp^VnEEv!3HGFOzxBdDajJoh?3y^w370~qErUQl>DSr
z1<%~X^wgl##FWaylc_d9MeUw0jv*Dd=1g+rYETexoy!-{{vt*8fbq_ERu}hadsqw3
zN^|hK?DG6z_!oYDaVDiz4V=Fh6=lUriUsrRn^AE6(%-h}C#&}-c4>MTp4r;j>6mS6
z{rp@1pAP;zpJUE<XMb`zRUG?hR*aJG5!Ia`vpSP^ZY`VYWhwCYF*}1qhP0;o*Xcq9
b+y)HWovws53-|T_oy6ej>gTe~DWM4f7Uflv

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/ess-logo.svg b/WebSites/errors/403/img/ess-logo.svg
new file mode 100644
index 0000000..62da24f
--- /dev/null
+++ b/WebSites/errors/403/img/ess-logo.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="254.5px"
+   height="155.5px"
+   viewBox="0 0 254.5 155.5"
+   enable-background="new 0 0 254.5 155.5"
+   xml:space="preserve"
+   sodipodi:docname="ess-logo.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
+   id="metadata67"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs65" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1222"
+   inkscape:window-height="984"
+   id="namedview63"
+   showgrid="false"
+   inkscape:pagecheckerboard="true"
+   inkscape:zoom="1.8837658"
+   inkscape:cx="49.740216"
+   inkscape:cy="80.264432"
+   inkscape:window-x="0"
+   inkscape:window-y="27"
+   inkscape:window-maximized="0"
+   inkscape:current-layer="Layer_1" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<path
+   d="m 165.72305,93.80632 c 0,1.20404 -0.74347,1.5825 -1.85278,1.5825 -1.08231,0 -1.81253,-0.3652 -1.81253,-1.5825 v -6.34417 h -1.59645 v 6.34417 c 0,2.24544 1.19034,3.1382 3.40898,3.1382 2.24515,0 3.44924,-0.89276 3.44924,-3.1382 v -6.34417 h -1.59646 z m 30.37483,-13.08497 h 1.59645 v -9.36073 h -1.59645 z M 164.26263,59.91242 h -1.97556 v -3.1384 h 1.94806 c 1.02829,0 1.52868,0.5004 1.52868,1.52869 0,0.96052 -0.40611,1.60971 -1.50118,1.60971 z m 3.1379,-1.63721 c 0,-2.13712 -1.0278,-3.01612 -3.1654,-3.01612 h -3.53027 v 9.36117 h 1.58221 v -3.1929 h 2.08359 l 1.28512,3.1929 h 1.74475 l -1.47467,-3.65254 c 0.96102,-0.47339 1.47467,-1.28561 1.47467,-2.69251 z m -13.07706,37.16832 c -1.73199,0 -2.13761,-1.05579 -2.13761,-3.23317 0,-2.17856 0.41937,-3.36881 2.13761,-3.36881 1.71774,0 2.13711,1.19025 2.13711,3.36881 0,2.20478 -0.40611,3.23317 -2.13711,3.23317 z m 0,-8.13062 c -2.89532,0 -3.77482,1.75846 -3.77482,4.89745 0,3.1378 0.8795,4.76122 3.77482,4.76122 2.89434,0 3.77383,-1.59597 3.77383,-4.76122 0,-3.13899 -0.87949,-4.89745 -3.77383,-4.89745 z m 7.6999,-14.49137 h 0.63593 l 1.04155,4.53179 h -2.74653 z m 1.98832,6.06043 0.51415,1.83938 h 1.59645 l -2.20488,-9.36073 h -3.12514 l -2.23238,9.36073 h 1.59645 l 0.46013,-1.83938 z m 9.18046,0.31114 h -3.53419 v -7.83249 h -1.5827 v 9.36073 h 5.11689 z m 9.62733,-1.83978 1.06905,-4.53179 h 0.63593 l 1.04155,4.53179 z m 2.9626,-5.99271 h -3.12465 l -2.23189,9.36073 h 1.59596 l 0.45964,-1.83938 h 3.39571 l 0.51366,1.83938 h 1.59645 z m 0.70664,25.46226 h 5.84367 V 95.3079 h -4.27471 v -2.39453 h 3.46298 v -1.48778 h -3.46298 v -2.44841 h 4.27471 v -1.51503 h -5.84367 z M 198.592,56.72001 h 0.63593 l 1.04155,4.53154 h -2.74653 z m -1.4069,6.06023 h 3.39522 l 0.51415,1.84002 h 1.59645 l -2.20537,-9.36117 h -3.12465 l -2.23238,9.36117 h 1.59645 z m -9.19814,10.10857 h 2.59724 v 7.83254 h 1.59596 v -7.83254 h 2.57073 v -1.52819 h -6.76393 z M 182.45511,88.869 c 0.81174,0 2.39444,0.20237 2.39444,0.20237 l 0.054,-1.3932 c 0,0 -1.48793,-0.36526 -2.66501,-0.36526 -2.65127,0 -3.47674,1.43426 -3.47674,4.84274 0,3.19251 0.64967,4.81593 3.47674,4.81593 1.06855,0 2.65175,-0.33781 2.65175,-0.33781 l -0.0408,-1.43386 c 0,0 -1.6102,0.21597 -2.34042,0.21597 -1.78551,0 -2.1101,-0.87891 -2.1101,-3.26023 0,-2.50193 0.41936,-3.28665 2.05608,-3.28665 z m -8.8485,3.24638 h -1.97506 v -3.1382 h 1.94756 c 1.02829,0 1.52918,0.50025 1.52918,1.52864 0,0.96043 -0.40562,1.60956 -1.50168,1.60956 z m 3.1384,-1.63721 c 0,-2.13706 -1.02829,-3.01602 -3.1659,-3.01602 h -3.53026 v 9.36073 h 1.5827 v -3.19246 h 2.0831 l 1.28511,3.19246 h 1.74525 l -1.47467,-3.6521 c 0.96052,-0.47397 1.47467,-1.28522 1.47467,-2.69261 z m 27.17848,-11.13642 c -1.73149,0 -2.13711,-1.0552 -2.13711,-3.23352 0,-2.17738 0.41937,-3.36772 2.13711,-3.36772 1.71824,0 2.13761,1.19034 2.13761,3.36772 0,2.20538 -0.40562,3.23352 -2.13761,3.23352 z m 0,-8.13042 c -2.89482,0 -3.77383,1.759 -3.77383,4.8969 0,3.13855 0.87901,4.76236 3.77383,4.76236 2.89533,0 3.77433,-1.59656 3.77433,-4.76236 0,-3.1379 -0.879,-4.8969 -3.77433,-4.8969 z m -29.39269,0.14929 v 9.36073 h 5.11689 v -1.52824 h -3.53419 v -7.83249 z m 41.39875,0 v 7.38611 h -0.23031 l -2.97586,-7.38611 h -2.57023 v 9.36073 h 1.5827 v -7.38616 h 0.22982 l 3.05737,7.38616 h 2.50246 v -9.36073 z m -22.24182,-8.25579 h -4.27472 V 60.7104 h 3.46299 v -1.48793 h -3.46299 v -2.44845 h 4.27472 v -1.51493 h -5.84416 v 9.36117 h 5.84416 z m -50.63175,1.51543 h 5.84417 v -1.51543 h -4.27473 V 60.7104 h 3.463 v -1.48793 h -3.463 v -2.44845 h 4.27473 v -1.51493 h -5.84417 z m 37.85719,-7.83298 h 1.79877 c 1.06905,0 1.56944,0.5279 1.56944,1.65096 0,1.13583 -0.50039,1.82578 -1.56944,1.82578 h -1.79877 z m 0,5.00543 h 1.81252 c 2.12386,0 3.17915,-1.2311 3.17915,-3.35447 0,-2.12435 -1.05529,-3.17915 -3.17915,-3.17915 h -3.39572 v 9.36117 h 1.5832 z m -7.81236,-5.15373 c 1.71824,0 2.13712,1.18985 2.13712,3.36821 0,2.20489 -0.40562,3.23318 -2.13712,3.23318 -1.73149,0 -2.1376,-1.0553 -2.1376,-3.23318 0,-2.17836 0.41986,-3.36821 2.1376,-3.36821 z m 0,8.13007 c 2.89483,0 3.77433,-1.59645 3.77433,-4.76186 0,-3.13839 -0.8795,-4.8969 -3.77433,-4.8969 -2.89531,0 -3.77432,1.75851 -3.77432,4.8969 0,3.1384 0.87901,4.76186 3.77432,4.76186 z M 146.0996,91.39853 c -1.56895,-0.44692 -2.02859,-0.64968 -2.02859,-1.44766 0,-0.75772 0.55441,-1.10932 1.66324,-1.10932 0.78472,0 2.67876,0.21656 2.67876,0.21656 l 0.12178,-1.4206 c 0,0 -1.75899,-0.33781 -2.80054,-0.33781 -2.01533,0 -3.24643,0.89271 -3.24643,2.67822 0,1.67748 0.83874,2.29956 2.86831,2.82746 1.39315,0.3516 1.78551,0.63588 1.78551,1.36614 0,0.90656 -0.50088,1.25762 -1.6102,1.25762 -0.96052,0 -2.67827,-0.22923 -2.67827,-0.22923 l -0.16205,1.42006 c 0,0 1.82627,0.35161 2.85407,0.35161 1.89404,0 3.19291,-0.89217 3.19291,-2.84032 0,-1.63722 -0.69044,-2.16452 -2.6385,-2.73273 z m 8.42668,-26.65649 c 2.24515,0 3.44924,-0.89324 3.44924,-3.13888 v -6.34407 h -1.59645 v 6.34407 c 0,1.20409 -0.74396,1.5827 -1.85279,1.5827 -1.08231,0 -1.81301,-0.36486 -1.81301,-1.5827 v -6.34407 h -1.59645 v 6.34407 c 0,2.24564 1.19083,3.13888 3.40946,3.13888 z M 146.0996,75.297 c -1.56895,-0.44638 -2.02859,-0.64919 -2.02859,-1.44717 0,-0.75772 0.55441,-1.10932 1.66324,-1.10932 0.78472,0 2.67876,0.21607 2.67876,0.21607 l 0.12178,-1.42016 c 0,0 -1.75899,-0.33835 -2.80054,-0.33835 -2.01533,0 -3.24643,0.89276 -3.24643,2.67827 0,1.67748 0.83874,2.30015 2.86831,2.82726 1.39315,0.352 1.78551,0.63593 1.78551,1.36654 0,0.90621 -0.50088,1.2582 -1.6102,1.2582 -0.96052,0 -2.67827,-0.23021 -2.67827,-0.23021 l -0.16205,1.42026 c 0,0 1.82627,0.35219 2.85407,0.35219 1.89404,0 3.19291,-0.89275 3.19291,-2.84091 0,-1.63701 -0.69044,-2.16451 -2.6385,-2.73267 z m 6.39711,-2.40819 h 1.79926 c 1.06905,0 1.56895,0.5279 1.56895,1.65047 0,1.13633 -0.4999,1.82637 -1.56895,1.82637 h -1.79926 z m 0,5.00563 h 1.81252 c 2.12385,0 3.17916,-1.2313 3.17916,-3.35516 0,-2.12385 -1.05531,-3.17866 -3.17916,-3.17866 H 150.914 v 9.36073 h 1.58271 z m 59.51954,-22.63535 h -1.59597 v 7.38562 h -0.2303 l -2.97586,-7.38562 h -2.57023 v 9.36117 h 1.5827 v -7.38611 h 0.23031 l 3.05688,7.38611 h 2.50247 v -9.36117"
+   style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.0491065"
+   id="path3798"
+   inkscape:connector-curvature="0" /><path
+   d="m 102.01227,77.97158 c 4.76874,0.9702 6.36126,1.56296 6.36126,3.3469 0,1.63569 -1.57975,2.82456 -4.25066,2.82456 -2.88157,0 -4.72061,-1.33815 -4.87087,-3.32004 h -2.95229 c -0.17187,-4.25076 -4.0228,-6.09417 -8.72897,-6.98791 -4.72631,-0.89668 -6.28121,-1.53604 -6.28121,-3.31959 0,-1.58565 1.46725,-2.67631 4.072,-2.67631 2.60938,0 4.19734,1.23257 4.45612,3.03822 h 3.91232 c 0.0349,3.4846 2.8526,5.99001 8.2823,7.09417 z m -16.44989,6.17146 c -2.88118,0 -4.72017,-1.33815 -4.87112,-3.32004 h -9.64005 c -0.72373,1.64163 -2.58924,3.06474 -5.31023,3.06474 -3.56213,0 -6.36062,-2.68034 -6.59962,-5.83985 h 19.08092 c 0.14217,-0.53997 0.19049,-1.17777 0.19108,-1.91265 1.29842,0.79818 2.98091,1.41795 5.03857,1.83634 4.76878,0.9702 6.3613,1.56296 6.3613,3.3469 0,1.63569 -1.57975,2.82456 -4.25085,2.82456 z m -19.8214,-15.9493 c 3.30241,0 5.771,2.18917 6.59928,4.94797 h -12.9599 c 0.89119,-2.78139 3.28017,-4.94797 6.36062,-4.94797 z m 38.18055,-0.35455 c 2.60952,0 4.19763,1.23257 4.45642,3.03822 h 5.73073 c -0.0629,-2.17493 -1.01356,-3.97959 -2.85554,-5.36734 -1.90828,-1.43735 -4.36901,-2.18033 -7.38169,-2.18033 -6.60385,0 -8.82395,3.41732 -9.28948,4.21089 -0.46357,-0.75183 -2.80349,-4.21089 -9.27067,-4.21089 -6.93345,0 -9.07837,3.70411 -9.54626,4.69753 -2.06571,-2.64439 -5.28872,-4.69753 -10.07199,-4.69753 -3.68259,0 -6.74315,1.18936 -9.134,3.56808 -2.43902,2.42832 -3.63467,5.45082 -3.63467,9.16769 0,3.71687 1.19565,6.73938 3.63467,9.11859 2.39085,2.37877 5.45141,3.56867 9.134,3.56867 6.07998,0 9.07032,-3.45322 9.92143,-4.43688 0.50236,0.81527 3.05782,4.43688 9.99833,4.43688 6.39205,0 8.81938,-3.03007 9.23384,-3.53243 0.52593,0.62075 3.12612,3.53243 9.32631,3.53243 3.16344,0 5.72434,-0.69402 7.7328,-2.13177 1.95837,-1.4369 2.9621,-3.27054 2.9621,-5.50047 0,-4.46412 -3.92164,-6.37107 -8.73702,-7.28544 -4.72601,-0.89668 -6.28122,-1.53605 -6.28122,-3.31959 0,-1.58565 1.46731,-2.67631 4.07191,-2.67631 z M 125.6438,50.71183 c -5.03686,-6.21934 -12.03895,-10.25001 -20.25054,-11.65445 -0.14781,-0.0255 -0.28924,0.0462 -0.35995,0.16892 -0.0202,0.0349 -0.0344,0.0732 -0.0418,0.11491 -0.0324,0.18955 0.0948,0.36928 0.28433,0.40169 8.04217,1.37646 14.89842,5.32069 19.82675,11.40695 5.78721,7.14598 8.13842,16.36917 6.62005,25.96983 -1.51985,9.61471 -6.73594,18.4554 -14.68776,24.89469 -4.8144,3.89861 -10.22102,6.61558 -16.06961,8.07551 -4.4898,1.12066 -9.1235,1.43161 -13.57294,0.92478 4.89091,-0.49411 9.65424,-2.00855 13.93682,-4.44851 5.38993,-3.07073 9.88711,-7.54919 13.00586,-12.95091 2.83197,-4.90529 4.40486,-10.24121 4.67445,-15.86007 0.25732,-5.35988 -0.73856,-10.80137 -2.88108,-15.73608 -0.0766,-0.17629 -0.28138,-0.25732 -0.45767,-0.18071 -0.1758,0.0766 -0.25683,0.28138 -0.18071,0.45767 2.09979,4.83748 3.07652,10.17192 2.82411,15.42578 -0.26419,5.5068 -1.80565,10.73664 -4.58164,15.54525 -3.05737,5.29505 -7.46517,9.68473 -12.74755,12.69442 -5.12722,2.9209 -10.95714,4.48843 -16.85856,4.53351 -0.17821,0.001 -0.32671,0.13696 -0.34394,0.31384 -0.0175,0.17723 0.10145,0.33874 0.27563,0.37523 5.49389,1.14305 11.39895,0.99823 17.07615,-0.41898 5.94729,-1.48488 11.44476,-4.24713 16.33872,-8.20997 8.08587,-6.54747 13.39036,-15.54182 14.9377,-25.32648 1.54882,-9.79852 -0.85445,-19.21567 -6.76687,-26.51683 z m -20.51228,61.94789 c -0.1483,-0.12276 -0.36732,-0.10258 -0.49008,0.0457 -5.21315,6.27626 -12.05713,10.24217 -19.79209,11.46734 -9.08239,1.43828 -18.24517,-1.13731 -25.80065,-7.25203 -7.56663,-6.12354 -12.61463,-15.0615 -14.21535,-25.16709 -0.96932,-6.11911 -0.61904,-12.16019 1.04101,-17.95485 1.27446,-4.44856 3.32215,-8.61672 5.98578,-12.21672 -2.01739,4.48244 -3.08777,9.36461 -3.11615,14.29392 -0.0355,6.20269 1.59424,12.33698 4.7131,17.73869 2.83207,4.9053 6.6668,8.93493 11.39786,11.97855 4.51304,2.90264 9.72388,4.76044 15.06863,5.37274 0.19087,0.0217 0.36329,-0.1149 0.38499,-0.30632 0.0218,-0.19068 -0.1151,-0.36295 -0.30598,-0.385 -5.23922,-0.60057 -10.34708,-2.42193 -14.77128,-5.26726 -4.63669,-2.98223 -8.3953,-6.93226 -11.17134,-11.74028 -3.05727,-5.29525 -4.65476,-11.30771 -4.61984,-17.38719 0.0338,-5.90064 1.591,-11.73302 4.50282,-16.86661 0.0877,-0.15518 0.0445,-0.3516 -0.0997,-0.45473 -0.14462,-0.10361 -0.34414,-0.0815 -0.46268,0.0511 -3.73686,4.18633 -6.56416,9.37247 -8.17506,14.99762 -1.68843,5.89312 -2.04464,12.03512 -1.05961,18.25534 1.62758,10.27608 6.76476,19.36711 14.46471,25.59922 7.7111,6.24096 17.068,8.86759 26.34755,7.39842 7.90463,-1.25222 14.89641,-5.30157 20.21858,-11.71056 0.0957,-0.11491 0.10459,-0.27332 0.0334,-0.39609 -0.0196,-0.0349 -0.0462,-0.067 -0.0786,-0.0939 z M 41.73655,52.80082 c 3.29533,-8.58529 10.10709,-15.23284 19.1805,-18.71842 9.08642,-3.49098 19.35086,-3.39375 28.90355,0.27303 5.78327,2.2201 10.83977,5.54363 15.02856,9.87876 3.215,3.32794 5.80095,7.18526 7.58695,11.29204 -2.87322,-3.98794 -6.56652,-7.35616 -10.82062,-9.84537 -5.35457,-3.1325 -11.48159,-4.78788 -17.71929,-4.78788 -5.6641,0 -11.07161,1.30623 -16.07202,3.88187 -4.7706,2.4568 -8.98497,6.04059 -12.1874,10.36294 -0.11452,0.15469 -0.0821,0.37223 0.0723,0.48665 0.15425,0.11442 0.37213,0.082 0.48684,-0.0722 3.13958,-4.2374 7.27066,-7.74999 11.94688,-10.15866 4.90108,-2.52457 10.20134,-3.80478 15.75342,-3.80478 6.11444,0 12.12017,1.62297 17.36769,4.69262 5.09284,2.97979 9.36559,7.24469 12.35569,12.3331 0.0899,0.1537 0.28187,0.2141 0.44343,0.14094 0.16205,-0.0737 0.24259,-0.25732 0.1871,-0.42575 -1.75704,-5.33003 -4.83503,-10.3713 -8.90056,-14.57924 C 101.09007,39.34219 95.94911,35.96219 90.06959,33.70526 80.35652,29.9766 69.91471,29.88035 60.66771,33.43272 51.4075,36.99048 44.45372,43.77995 41.08667,52.55086 c -2.86793,7.47156 -2.85681,15.55105 0.032,23.36537 0.052,0.14044 0.18511,0.22687 0.32648,0.22687 0.0401,0 0.0808,-0.007 0.12066,-0.0211 0.18031,-0.0668 0.27239,-0.26714 0.20563,-0.44736 -2.82937,-7.65276 -2.84146,-15.56284 -0.0349,-22.87381"
+   style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.0491065"
+   id="path3800"
+   inkscape:connector-curvature="0" /></svg>
\ No newline at end of file
diff --git a/WebSites/errors/403/img/glyphicons-blackboard.png b/WebSites/errors/403/img/glyphicons-blackboard.png
new file mode 100644
index 0000000000000000000000000000000000000000..deb17a4d42c2b649f95e0211f020abdfb1d20c0e
GIT binary patch
literal 3779
zcmZ`+2UHVV*9{@k1ys5yF+vc9gerpc7NS%|BuGmjKp-R-A^|ZpDbhrm6h%Z7DN+;^
z1Ow8gJR;IWq)G3fJX%10(D(W2Ti-ux-I+V*?tRYLbN8Ax6Jch8*v}!t0RRB@BMtQ~
z>|VL|1{=%nS<FzT0|4OA#_8&sA$4`ZW+b9B4vz%@4ELwsrC40-69}i%lxgn|LckI$
zBG=i$AI=)`gUln4fo8z45U97_J_Ei3QkG5@Z<!F`5J!DJ&YQuQUiPoNW{oxGdivu7
z(eCVv1xnur)3%#XLw%EFy?ri=)ZPk!*;X*9mTbiosF-QRw=i2{bMR1W{Tfh+mx<eo
z>FtQKGYGM+2khFSsi&sq7&exyF2DkvD*L6Y&7fXAI{|SJWnFO=0Ed3}X*GYS;5abx
zVo8Ir{0^vPB}qy?Oio@Pll{>%$Y^~Le)Z|ZsmkV*WawC?2&!H9jpBpoO0&T<iIJ>m
zP^L|a#IQ@&4OT480+|LFUpvv+xqjaWAj_9(-!=)&#7D^M^9e6Rd<6p766;mokhr5Z
zR9qhbe6n4}B0&*IO!k4^6x{gKJLk>il8YM{xl@UC#v`|UjOZ(+T(@Nf1B-}v^_e74
z9;vQz^97>w^QfK)*Ny7Fp`-p6x7FWWXIxr_&e0!eM?XLf;pd*gX##*%aqD|WN~)4B
z0ZKhsw8lrCnJ$6>U-tn@2k(D78iu!vum8d&$r&{_hxcO2aEG0mQf6cX6I-goRMt{k
z7Z{djvjsJSjwAUMu=?ZKPqWYKwY70^C)1s_*LZhE->TsLYOa&MpYc|3Idtlh`BWl%
zNQ7%;s9KQK9hehGNI>^UfY514R$>2icRtr^_5f<Aidi|5^&L?ipnIHIoS=CfNS(dH
zE64G!>WynbT#;9-{PpjXn_`?ck%SQ=ZOFxmRjybklEfov;jEz$d=2p69ai!~4#gmt
zEKu5Ezi6O>C-Wc}5E5v}%Y2s^W(dS-fnI29eB8C5+(#zwn{J+fuAuAhK_<bcJy~o(
zm*4L9<m3uOXmNzqoR?)948pMmFY)p}($2dh@R%o6r-%2jHJh)lw%Hjz<_6t}JG}8)
z8}FexLMLzLW$K!#uN)_fRIu6J+<eIT9<0c+%|s13kOJ&P@BavR71&pNR+J4<+d8c0
z!+)Pu@NNIdxpDyw?y_3Jk;6*>=}`OH1U9XAY|I@7R&0lt^>pr7i8CEI<{k%m49wL}
zyTkqX@aq`ExT|B#Ea92x6d{2|;n8qZ^a#ch-GezN+nwT=Vre8eaoU+zA!sA`38wpb
zww2^FO>g$o2kynl)LS~lI$SAEe$M<6J$F`=yXmd)7g10Dav>Xef>I%<jHfrcGH|wT
z{|I#1=grAMzQtgk8m}eHjbl|D0ipp%hhoJVt0nKSTZ7z#d5+x$i{r&DctzMI*|tLt
z)GC?><(QHoVZ6TeHW;brw?AsXL5f0668Ml|;(`~%rBX|SERb#xTc|peb}XS;)d@io
zLTTBV7K&$p?In2PHO&%FK>1A1iR$b0nW&t5t>vrbtNY}_{v1M=RbEO(y0s}yk9v*@
zM<ggDe@h;1E=b6ab5EL0_LDG8>`kU5+ru&>?T-bV`<}g34m7XPs<{}HRcx7QFj88p
z9*WdYdz6H^g-OFiU~Ya<YA~006CV^`cF;6eYr6P@#FJwpI-O5^Ka`gmm#Tikev&<c
zP=3tlOqgz15u2i|uwx~#SH@3_i;jzom$Y19sg-qDSGXYjBsw9wGCKB~;>2tED82u5
z5zcPsja1UcNy5n+NsuJxB&MX;Jflm*ZocmHJdZrnE?GCI8``bUjnNIukD))MQy$RM
z?G<;%w!&wMD<ZC!Z@T?mH={n2Ad)6hB_b?xNhDdZQAs$Bkk*_wo;Io2RO)KY`4VJ3
zZaw+ZPBtlZq0Pcsq9jTsv!HPPsZ58)<AHqj0>_*ZE0-*jlJ-Nk@vtk(+GRFn7b!ZX
z=iydx`y%tjObzplf{e%2i0Uf=EpOk0KRHBc->b>VjLfV?KR{=VI3CZ7%kMauWu0}l
z@r>iEtC7nZqgSBC5$VWyWK6U1#gAQs77i8kQaYFWgez1rU#YU`QSoOK>X|{$LzOzU
zcQ>+p?`@poRFATXN*5Rqu$P{fz9=&*Eryap?X&VIohja|`&6IiZtF;G3UeEEENRak
zn0Q%`D>LL>Jx@KGW?MWUP-#+0U*%qfFrW-MR`qb7a2og8N3!>c$`ESzf!V2%^7iHE
zQC3Mm$>*KOr$gzecB%IL?OB{$f=hy3GD4(|t0U#2q&S!pEZW}3GqdYbf6}P+>}H#B
zZ_K23y+{4PNA<q#a>gm1^E`2gsHViH36mmpPP<#lMVI3)7nQ}YVHVvMpK7RTL}<il
z9IEoJ%BRBD(c8dn@6Ca4y-Smuy$n;(8PGHKDUQb=1CS-F2B$px!F|_2bu~;imBC{0
z5BB0VT>?OzEnV+WHFhN~TmDTiA(*t{Gw7Ue`6VBJ9|}kYqpzo1UuhWo?!!AoRE)rR
z0g6F0qCvkKVXW_`pR9jA*-9E!GG-8M9SzP_7Z5wl?<ej}%3b>~a6Wu=?hD800!+c?
zZpqvy(#!GOR(jzb`x?~MlSdDW9U0=?i8xf7J8o3CV*i>l4(d&)3}?hoHlCV{S+-rr
zZpDF;Ltcb*=q1<NMmQo1k^IO}psDuD;cGAKzXpxvCf-TRl2XX+$o&f!Qo3H+sUv}o
zEIwtcpe{*+*C}Sn>Q=Pix)&}TdZg76XLP~~<y@I^`@7NKhSB2pByOTOOWa-zx*)I_
zE#_?pCRWDM#t5xPn!hzO{FR)QDA!!7yuXKS)hI2va~Fj66x#H^Hlf(oRE+#xH5=;z
z_Au;QYBgw$!5$tWL=JYDKQu3{a&RqKoM_Z}tz$kylWD)gjc>s7<L3vQOA6fjlOc8;
ze`8v|M1C=q_#8hwgrZ*F7-(A!nWsHjeZrs&d$UnK4@_5lvr5IF?E2mp4%-%tw|#x|
zwXE{;T$LsI%2fv*T&z=UseH~0+PNY(MEBE~$1_19v1t>u8Nagm^iNIwz12e=0i8@S
z%nhs>NBKnG1iV`_b1%^LXh44+c~(cCeKb>1?Gj)gpf_*097jilBAztW#$M|_+tsU_
zqnvoUHYUFD`RLUq;`Z?0x_*c9r_B_yUay1B98+2T(zGtN_<&2T&o`2qH!ZoHvHI%0
zb)<D>&*z?qSC3EQ{EYmDrUN_EkF+0=(Y&{FV<mbuHLaw@<vcyEo&Wwll?;miSDnVt
z<){e3aMjCXjf&E-59x))g@dg@$whX{uSvQ6G{)AY<b0Px72C7abSiB=Y&)jsXyt>u
z_H+KY>6eQhv}w<h?YpA|x2yJ1CpT>w@WIsz>iF%Q^ux?iESn3kD!(1O&+60E!R-##
zTpl~kw(DoMUAG<QMjuIXn4Wx)r&+Mwz257bOIw+H*y}(qx#bcYR;~-*N!lnft=mV>
zrJph=HJCvZAn4H>(F50?uQV*RMkjZUhE_{`f3=p>k)PpDVbEMK&Gk#}9kZ#L=LU1C
zR5p87Jtm!|#yTmu#q6h%gZWjOt3lhD49AtGxam35b<?Db7){Cz_N}izP!H#cp|y~2
z40%<Q|L!*>yQd+_3jp9ev^SUlY4?Qy0A_BSg%#P#*htlp=mA4J5iwYpkB8?j8URr9
zQQe(-V998(j|ZOMrRt*&`GHW~o$rO=5bzHO*<BrCWo!o4C6cgUC72>i7NWrc27}c|
zPR^<q^bG!?@7}3HT*+ilRXChNp};5#Fe1qXE~lcR0+*GC%gf8`B4oUL31qa748iO8
z&m{lJqlfi!B;h>CI3fYOmlus8UL&hRAbW*=9Y6ad<DCCniQx5*tX+Zdy%o3|OcwsX
zXuD#6_4fzM2krU)lAIiWaXhb)@IMqeIl{4ctOu4r_S)si!G8(a?Ne>91y!pHST7>}
z+MXB<WqGw9ef<&qud1H})c+#<9{e}Kl!V)@kN#0X?w<m`$9}`_>Q>byVbNqF$%074
zYiRGe0Bq(;Bon<{iJsuy-w%0NIVJE3W3(fVuosk4ga4cKTRta8RWgo@$NuoZudVrE
z25mg~&*<J0+1pJ#ZqFpDcr?L99pWS7gmp$=!;>KzE_h#0SDYh};H3utiTjiPGx}#*
zHTb_f_=)<>K|k&JBjc_=H8^(l{KxAW9G@NZTL1tiZls>J#R>kTI5`ubwvYiuFbits
z>Igh?w8rxQ2M19bDJ^Y$t3bK<8_1Gx_3mIWh%H43sPJZTp;#bzQ-ZidbpB3saaN9!
z^G36uOdM}=u`VgQ;)Lo6gFZVJP9^<y)UTgK`5|{`%k2sm$0c|WpOKQXQ0J7G($S9l
z-YZ+xw0d`?HlePZgcqVWJ{5_mWUTUeaS9F>!mjV5kwn1-#>;Cg_Hw6|QdlOI*e4%4
z5934`z#{Lt{y|+f7kzV|?>tl5oQ)3&4nX>_=8D_-oQ4HzO3h)L%Tt2yi_Ts(x<M74
zVT-qHHmhdDp(k22gM4#D7IS3EgH1vQReHNd2`((AvY(CT<W{(b_rc0SyoP-9JimwS
Py%~`DCVGWB4#EEi5<#XV

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/glyphicons-halflings-white.png b/WebSites/errors/403/img/glyphicons-halflings-white.png
new file mode 100755
index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae
GIT binary patch
literal 8777
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
B7G?kd

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/glyphicons-halflings.png b/WebSites/errors/403/img/glyphicons-halflings.png
new file mode 100755
index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643
GIT binary patch
literal 12799
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/glyphicons-log-in.png b/WebSites/errors/403/img/glyphicons-log-in.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf672c9e623e69b3fcaecedc687ee31518741d24
GIT binary patch
literal 3793
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/glyphicons-log-out.png b/WebSites/errors/403/img/glyphicons-log-out.png
new file mode 100644
index 0000000000000000000000000000000000000000..8fda1f2ff20b050a9d0332292d0a7ffcb63ba62a
GIT binary patch
literal 3788
zcmZ`+2{=@38y-yAm&#6=CQFJLYa%n&F_apLGO`T@!!TkPOV%tOM)rm&$-XZ|WogKs
z^qXX_ke!f}?DA9J-(TPL|L3~ibKdj3_x(K2ect;z*Evx}myn!n!fXHlfYU%<_wwGA
zYk#mD+&hcu%XR|*Y+5)S9U}uB9gvX+!2yTI0s#7)>32vbSBCf_=`<DE>%(A>#EP&V
zE9lKReLkRZltHi&V?>ywx9$Nw-b2z??M<FDAS1zc2wwJEp|%68UwDk#8jW=kQ^RBz
z)}>PAuOrl*cJ%1b%+rA($EARQT7c1ZD6olW#t^KOX~z3$zR}|Fk<OMiMnN71E;EMb
zV-5~L<hm|n?=}sVmR6wOR=N5K5^P`hPNu;~(zAazC;_aZBYqIThUhz^9w;d=#h84h
zvQ<c77x;1|MOq<3UV%T8HLC<X(Nd0I&7VG9*O5w*oXiwPcL_aHx=*e%8lg&zWs`xK
z7O4^+9J6mSV`(M^RKV2Q$)29|dxiix-Zbl1Gm@G3C<O$s(5I*`i~yG87S(4STrnG}
zPWJ&md5)9Oz$gRTyh8)2xT)C}4x7uBS2k?rPbW8D9Q(`1kiJsIaa&FxxSVhY!61Ql
zO>;_EEEQc`ME6fSZ8Qvx9t*s(1AF1OWx6c6K)<g=zK<ToFO)!O{D4()^SehY>r+et
zRjvm$r^ZT9OCZ3P1AwZLdtZ-5;H?r{#yO<eV-^<ho(vf-kkhj&TN$B*mkklBYiXUI
zwyvJb6VM1bVZf(|MNH-8=Uvc!^@@XwLbu;p<Jp~fu8R9tN3+bmjOPN&;j^a3v&pPs
zQBHN?>LF(F5PP<;puVvn!820KLV@WnyiQ)$fPipSqiO@@7X%nU=LD0un}#1_!2ER{
zdA1kz&zwpV%01&0{Jzg@im_WnyNwxYfv-%ja>UttNMy+fWsip88yOGBGZP=MDTP4f
z7-eiYMS~UHnMOc>uwZ>2raMd!eMX!n@R1gLaL<DBgACrcoZSJvA%3rcmqO3DAG82o
zd(P?3&Jm2%WQ%CLAjdEgf@2B&%)^(ZRTR&k!=0wx&m&^a;;W-&be5N?RVON*CsA|b
zwPb<dsar*vI!3US6GY)!7Ry_k513zrln(AN1cV(*W$eLl4g#J84^^BKWkEJ|e$e&d
zyT>f>{N333YJND^(<Xs2k<S2`aO<Wd7R?tdOx=2BEF#Og+VN)M42O=pB!F`m3lY?K
zt{jn?Sp9?>lS~IAGcl=x{B1%Lk!bRm?Nv;_?RmMrRJ+uxh62-P9C#E%HbQf4`yS?*
zNtI}Lvz|G0H&(Xgs!g2D^$N;Era{cYIZ>|m=R)J6?t#^U77A|4Wx%K01LV5k`DV^B
z$z`8sr$%^}Lb)3~Kil3sUe6XJ8gy(lPOPm#DxTFG=n~3({0>MQFK)sk%re8W6LzRc
z$vC6{MFdCi__kQsN<X|ksP)W1RPs_1uR(;kz-4jiw5kvj181<MButWaJgGy?9_b;7
z*0e&EiD!VUCAbqcjFL}E@}ka*BD9Atsh+RV^wsp$$-T^3;MQwalv<l^j-u%XoDYB^
zlN2dmDH9!~NyP~+Df1M62~_d`g+#H2WJp;b4?6!nZ@Ze&xKXq5N=SCa)l9vyswP;t
z0fL&9V*8gZ)i%oZ*0^%3vBa~)ki@5lQH7dw6>lVRj|*$}<odp;uDV#I_7?kA?kG|v
zXR9Y^u60FhmbSu*mB3z~IyogeB|KI6^76qZIh%FG%R;&2Byt@&?yJ&t4Sj<C?o2t(
zYWJCR%El?TQ#Vt<DGn(NDRD)Hri4D;zVss3B2=%Ov!pY|dB}OI4^kXU&!>~_)6=b$
zb|<$ZKUUO6`BiT^e{22-`<Nt56|NT+5;hg4D77gIQQfE=)G6wWQhSw?Is0Rv`IPz0
zV=K9ov`?>093(1ZR5MG<7V~Ah;W@*_uu{8%N;AjoOO;(mEE6HuRkWU3JiS8FMqPlK
zL9NS;monkT8KoIH4akP;K`)=b2EDb3(Yo7MkQtrXfVq#!9<w`9lu+D#D%(8!T-#Z@
zCpV&(;S<*-E27d35)EQIE?ybz9Wk+~rB~58T&A5Qm5P<?+OsO&qtPXL{SQ=|)nDAq
z_Px7tnjIEn7L(3D%x^8TD04-2UPcTpjXq%JTJ^DFv-xcc)y2{-pgqEQ!mhF_Z+QA~
zX`$?>cf(@9IjUvFFn`^pI{GTtDtJqBOP(1P=@UugS{o#KpR5ZD=sPq&J67GbOrBtt
z@|SwpV~{_Zj_#7~;_S+1=MeZT&?_tG(S2jATGS%}Vh<r(`?zQJn!Zb!FrVLib#Wke
z#=FI}Wq1%av{Suxn)?EG0y3sOIX`Jen9gqX7p44K!nN|JiEFk?&P(}lHFy*}7Jj7O
zyS_L8x{ldl-0|KV{yOk^W^-T*1w0EZVVz~m0qOy-GQ-&wSPviY0yZ}?G}eWRLEl)5
zTlDfXYH#a!hpV$Hb6E0idI~~hlu9HQe5*};0)0q8SzCmzPD`DB+>19akTJ3R7x+nf
z9mrNhAMzr?A3;G}pqR;^D<}2H=44PFj9*NI&tKfzqj2rb@P){Ug>kltPY^|mJCzG>
zJswXLcGAn@tsBudP8|~wJ37j<8+D|qaLTZ3#kz(x1sq7Ki`+__X*)d=yKK3R-A({f
z!XAZn>rz@QqwEaI4EPKt7*Se}KX^T|{t_}-m>i#+Ev;DCUHC6tSk-z}kG2FRy5h8@
zB20<~ZC1*b)2V%l>-%JSBule9!SJLf+MzD>_IJZ?`egCD61ULomClbw9Ff?Jm&UIS
zO|MK+C*3-ac6{yF3RHGbCV4s5dw-AEZdCr{!c`jHUuN;H<`T)Wv3BfR{d}A&$W?#n
zbEjTsELLRHEqbKa_<?any^T}l(sY}4jkfU^O}6Vg7rqtGhhH3as4R7UM*&-Pf3xiz
zj~+)!yic4TMF(8l7=E=Hwn)oe&D|n>@Ma;sAD*lIYL;e;wi<d}_QA4r>eZL5FHh^P
zE!1DdT)$z%jf=C7t5PU<L_1&ZjO@$*nDa42IF33^`{@64G5u}(yMcyL*PtGTSf*BH
z_%UA5XF)I4j9f~!Tw5{k$4Z*%^I0Ej8ythIgLD`5mlNp7aAa<KQ=C`dx!wVl0+r-5
zO|gk>4<~N46Lvm))A2u2JZGesU9%26dt7ySynS74={|@0kZ*KA(VWyy#_E&T=F#Sv
z{qOsup5&at`5XF=&IR|RAMH9St8sVt<_dW=javEA@d7=ei|^iD)eKVL7wxw2<(Mde
zNVRK3cx~0>oAk1ZvXRaZO1af?jYr`-+SaxyrP#4d)$&|GdH`)PVkfr$Sl#_Q)(e5S
zxyMVcv^n?6ojVhyx9blC%xqe2K}S|=1Ey~8ri(De9Nhc_srTQtdJmfm7}@D&F66e-
zc;$C?$7#oIVIoV44Rz{%kw)oG-}-<<A#G*h!GI0D@-N4@h-w|^ZpubEs`&uDkbYXP
zO7A1G6iFv<kca&quC#vcBvX1O!W*Q&KUquZF3t!fZP6TUJ6b-wbkC=0oF6HuSKaJi
zb)B)Fo$Mjumh$qWM~dq;Rzr3&x9nEh6Xq6B>!_5BSPjxm*6lAolCBQZqibPbw-nUS
zfqUPStnT_~PXK`Z$o^meQ11x>08Css6EmXOMME_^f-3}LPq4*8d|ci4&;WqCkJ{eU
z6-&f`d|dHvo@zcY@DGIA-h4j{1%rM-h%PX&*+nCe4#5KpQido&<iKz?5D291Veg=J
zSy%6G`raK3>_jBGt3jb85(z?5gb+L&q4KJ#s!%xvsDgs*9zxdB*Nuqrk#+Mt@iWPP
z^5|kc?L2VqL>$2lw4WDaOYkDXz~KEtzmA`M5^)ayt>otUx2!#Z(ESytJVXxqzi4}6
zfA#kV%Ln8Be@XUszc}t*9{3-M?CqdfJk}NKM)cg{$wPk$+3Qn%zXdh3%UDkW-fLeB
zTtz|sM_+#g|EuaJ0sX%SzX$(GKzZQy>SKOXkpH{D@3G(Td%D$hJg^ud!NY_=z{9on
zT>vt2A`l6lP6T(*-tUKkoV+sV<VB1f&TT&^tq%Ps>9>6Lc4|Z%5s&@hfnQtm!wgz@
z;-As|C$hhrc-+28)bJQLM;O>g)*kDC@xl|qa7VnayA#fi;O40g{fYaN|1<h$T6O3@
zJNSwE%|Soy`6J_=KjCb9dj8{eINN(0#7h8xLBK#)%j6_qN+RlfvnFq(V&OwS2EJ>#
z@4V*^`2hsR8Cno0F3$@2-MVwRmd8JC^)Q&l(rcboY0z*x&`u#oE_wYHbZKfQjnZLg
z!ix|X`A|^uSd5nl4vXcCQ~u8REI3?{t-yue3B$+AGf_^qs}B@w!@UM7!q}%!FSF8R
z8Wjz>WN9auge)3m$*JpzbmNCaq){MP<Zum#gJ~JHfQBep)p-<ow@JmRK~-Z~v^YQ`
zL8CR#^hEtNF;uM8jgmkqWex4|6G6*ubakcW^i|b$RO>)KTvLP}k6RzjP|WQvq!#q$
z^4}%((~cf%PaP~C?_Hm8@?*HFWLbnhq9S+vb?d=$(RSkokBr`$hp`Y<b}@@D*1>OQ
VxfSb}S@vHM28c_#W!g5O{{}CBsVV>f

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/icon-114.png b/WebSites/errors/403/img/icons/icon-114.png
new file mode 100644
index 0000000000000000000000000000000000000000..bea6bb22248776a448215aa996f36caba6794cb2
GIT binary patch
literal 6650
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/icon-144.png b/WebSites/errors/403/img/icons/icon-144.png
new file mode 100644
index 0000000000000000000000000000000000000000..25073dacd32c79876140070f0e9218c0f662a4ba
GIT binary patch
literal 9096
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/icon-57.png b/WebSites/errors/403/img/icons/icon-57.png
new file mode 100644
index 0000000000000000000000000000000000000000..0db3c06d324bb9ba5b6f649985721ac9d4fb1aa2
GIT binary patch
literal 3509
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/icon-72.png b/WebSites/errors/403/img/icons/icon-72.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a5a31d0539125122ff536e44ab13564096cf422
GIT binary patch
literal 3730
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@114.png b/WebSites/errors/403/img/icons/pos_v01_dark@114.png
new file mode 100755
index 0000000000000000000000000000000000000000..c737f6b1302b139ffc4966456f1bc938ce5dc115
GIT binary patch
literal 1809
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
Ic)ygt0WLl$cmMzZ

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@120.png b/WebSites/errors/403/img/icons/pos_v01_dark@120.png
new file mode 100755
index 0000000000000000000000000000000000000000..4e9efdf170a741ba8d823fa3be32ad1168cea50a
GIT binary patch
literal 1953
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
ChNG(h

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@144.png b/WebSites/errors/403/img/icons/pos_v01_dark@144.png
new file mode 100755
index 0000000000000000000000000000000000000000..73f19d40d9a41109228d284c9d55064413785e97
GIT binary patch
literal 2379
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@152.png b/WebSites/errors/403/img/icons/pos_v01_dark@152.png
new file mode 100755
index 0000000000000000000000000000000000000000..06d4da5492a11f1ba1ba0a46b8e071a6f07d902d
GIT binary patch
literal 2422
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
UQsp+|=t%K6+B-uk?GU*C0yQ~i5&!@I

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@16.png b/WebSites/errors/403/img/icons/pos_v01_dark@16.png
new file mode 100755
index 0000000000000000000000000000000000000000..822b1170bde276f166f8270eae751903be59edf3
GIT binary patch
literal 330
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#Xvd`gc<w97d{3u{&>1L
zhFJ6_rxft~J@3Gnu*k*u@CSniMwyPjh5ys@?){Z#vznIsL;uC}5B1+?dM5}9@CFIr
zy72w~yUpSnNje6_Jy)klgvr~SD|mlXyX})ly@5PSjQ4EGvhwRjEw`eL&gghCua2xO
z5X(~F`c&l1V^P4Q^W(==X*TiX*tT<`(h}e1?Bxmn^Y66yh8>fZSj5cXOta=#vr3=k
z_P%EiJPqWRa4cbDId^Z@@dr_tn3g%}HFh56-SPd8>W!UF|2lb&ufNOW-6S&Aouz@7
zX=jk97tcE{iG)T;1|!L5YiytEHQrR%-~3|3GP@0qnRa>!KO>{R9k|-3mg>cukdVN@
Zpz*MM;*1#~GQe<P@O1TaS?83{1ORrefx-X)

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@180.png b/WebSites/errors/403/img/icons/pos_v01_dark@180.png
new file mode 100755
index 0000000000000000000000000000000000000000..306ff8e12c88021b4b2edffe9733d9d25d1647a2
GIT binary patch
literal 2867
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

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@192.png b/WebSites/errors/403/img/icons/pos_v01_dark@192.png
new file mode 100755
index 0000000000000000000000000000000000000000..9569c45758ab04c5982965c6d543da5701d5fcf9
GIT binary patch
literal 3143
zcmdUy+dtEfAICq|#+-7@`A|ZkIp&bi)RIF;NamO<vk^HbhaqQ`Bt=>dIc2ChA2PnA
zSaP<Eu|g_M3NtqReE);r?f2sKeqFrpUKg*&^Ob(d?t&nn3?Bdhf>xG@%lqE-ub|xf
z_wq~t&%W^nTe^k<z=6?!#ig%TIRyaxTUH2jr>H{4b5jD!`Oy1K$J41kS=~nR*L^IZ
z;_%{h-uu!uX~P}7;L<n3Y5~eR9le#f!Hbr!g+=B0WI93j9u4b290ehI?>^@nsUY~&
z<d${z^ny%-G?!-Ehqgcay=dMgEhHQE%-k6=i`-!@QQ5y9>#>{pk63MqlA>~?`QVq&
zaam%H16G2N!&SwAvc5R(WeO;J{1T8O^PhSa)cKOQOoO+d%^k0>r+FxBGk<)+d@^Ho
zN!I?Pp1GMf6ht%Lj%BUI?@oueUcx_$jNPbouclLj;<oF)1bsU}_B>S|e<#o0P9V`|
z@8R#fdLh~w@abIwS3>9(b&h<;rS>3cND$;Ppf9oBE-a$yMRK?q_jhX5@1b(WHxOrI
zs)9WB03ROjHDkmJs)C8gnSxVrU2q&CS1}>v3&UpdEBgs;?v8A><YKoFQa1<zjd}1p
zmi4e*co4#3X)QT7CPButvx~!np-|2eJ}QP4bP}4IM46QvkR1%QH#5k!nNIY_0m9dW
zzYaLBvGorDhCk<?cm{3U@+u04rT;B?cdlkm#u7)g!0`zzVmuz!9N<-m`_{FtVC$FA
z#~leX7rUobdtT#i(cY45-A7Rlouh@98TcvKW~|t;-aeJ27}XGB3+cLeL5NPy<cN;w
zM{Np`Zc_E74s`!iOX!%JSrj$ti>yN8oL5yWEOCH2W13$V-uM;vh(}7!&0hnaWKI`9
zoZx3Guit}$oJHP1ufE-o;CNzr2EpH9EC`tUhAv@UhO>AnER5Vx$AGai9rs8L;zg<E
zW2(Y(c`~APzx7!VhKZ?qYT8z;h63%yS+3oo-Az(yv^=s2zs;F`s{UixSl#VDx&w*3
z(F!*e#Jz_HUwm$;*e6VipX5vtE00zQRv(5s+@|wT(9(7A5Q5OSk6;|3-Fpy4a7U@|
z@D-Ze`uctINb2|A^iubda1+U`0w^vK)7esx@TuIly2`T1HXm7U$2&=&Dy5}N3~9KK
zlOuNx8Vsl_lexNI=a6mT`uw*pH+c|LC(H$g!qQYhXr8V!oI%Cv3)?x@uS*BaH#UOk
zYbP?@E2ZPN{=T!S>wcR}K_}H;0Ro>0dxuZz@z~62D7`K1m+H!qzRHiWgzA;0d+{{d
zOpx?GWuX(}59K<z@lPH^H-^kpqpjgH=f${AHWHbtB~ufsRudVRADN}@d33E*Sc1We
zs-~<0YnzaoJVXls6(2lVP$rRnG2)zSL%kVvCRB^lzi6yfZ`w%v&`J!1-Q_QOzVjxg
zn@X9C`IDC~Vnad62SOYiEf_D)W{L*{{R0^`D4T?*vvg1B9Tj1VL@#5ts(x#Qsln?E
zM|JfQ)h-5=Fh`i3=pR-wl9gWoBbmTY!kAr^a3PFe&;0|%`$;&Oa%ZBx`K2eF6EyuM
zz)*4m0v&&jfY6EI(=9zpYohEvnG+tpt>5i{I;xjGYj>f3gmhuB+(YVT4YN+#5S@Hp
z@|OR6>SxVtAHMOUgA?s)lam2CJz~iQB#dMTKymVYLUU&q>EGpjt@bELQh^59Fky0U
zHDINUI*;a5QX?E~t|t8=_6&*kfv<tk?2n;*+T5L&0$r7`dzL1hNnf0@4EIb<$T5lO
zaar124L^hwLZ_*k<j<0IH9I3a>2e$lmQsNI+Y#~d9z9BGxpU!o8-~k-yNl({xTnC5
z31=wI?2IVrI8Ku`<vPfC-v;Q15{A`XVXl<tW*KLr7y8jW-p>{s?c<FZt~5lLa4}or
z&1lv}E*=3D@vik%2Ui=r_$hlg<`c@geef#s?I{z3h9ZOv?Io#VSuO%^a7%jL;E(Gb
zd8c$;u?`PxRX?s49ZK_jFNKJje>`O{mkQOsuq%`}H~KfLzk=a+Au>MW3$^@;E*esz
zl0AUEKd;>G&(#3>z(kO_S8T@~Q;`P78^s%{r4pjKJ%3~+Mv>NZO*k2B6eD35-2^7d
z(R5PUAkY=i;1N~jt`z+D3)21F?`o8TCE<?jIx`wdlBfnrcp!^<Ze`TMn(W)7L~HoL
zYTC{$dy};6V$vks@n?oXo7Wv08pRTCOH$V}Y(K0uT9Ata`b%E;JKtC-D2_3TJ!jXO
zY5l%sjqrvQE4~6k-%L}X!O6A$W{mP|iJd(KrYrreLT3a$L}5%d+d~G1!%BW=Pq`27
zCe<`uiPRHF_tjrF(0;P^bah^ykmtOEbccN3fUbvYKh3mu8Y>s2j4o@Q?ufq&9eEZo
z<A$5<&axl;VjH@0V>-onqO_Zea24yG_dM|m^4$X%=QNVpR2}%j$s>tgWAEhfjnh#t
zHnc6GzIBB;p<HtSD!4`BLwdl-d*=C}hnodYn+0dq)KcZ@#7xV>#EK}pXSTQJw)^W;
zH@B9kgH61*mD*EU?WekyutVoFR-9X!0MjF}4&$5xYDM!(p#jT*sSr`V5sj{$Him1#
zaK74_e+mZz(U7!(WeV>1%VvCHCg5rBKcX$LT019obETZ{sjM`%%fofGbKy!0bXbXn
zB58k{T8!juwkR5-ZuhFGCzUnd&9qD&R_%&qym@gahV!QHGFyvr?NBIP7m8m72(zmz
zb4Z1+fwwa*iWjiOXk{BBbgAb63~?r@nwuOql{WtwhHmet@egAMaEAgfKXcK*#gSB0
z+M8D%L`Y~D+kFJdRU9358JRRuSn^T2dP0_Shd*xlQMgim8RY6eAMaiPoS=DP2ZfL4
z(JqNR@F5=dOU9selCgNmr~vMXcDR45#rUivPcgA|j+!{G`a+NrWmJ~6;)(E*eVnie
z5F`$jSpnjN=0a($;5Ct6s(B@N?X`OBPG8@|)rO+VjmCU@^|;x~=%*es{$<K^-xRx9
z>_C1^R1kRgIqcr{pW&t+J`)|@*S)`b)rxqV3XKxjM>o+%ENq}R<5Zxra-lPG$1vP&
zF}lfv(uAC<H>qj6rOMTCtZO6Z8Iivls791$&g1cS{w)5C4{~h{dPp97#nhTKU%e#{
z@aK4q>k%o}tjk8(lg<H1jI-4%$bQx^SY$;rq|8}Zxu7Q1^!Lm;!&+2XsYDUw`hmAo
z5fQ_M=p@n-RdJKrmK>sv;X3&~<>D!>+GE4Yn_)C6T}z&_dz_qmD@)SW4Ogbx)qezO
zDlm(xZ@pp}NS5d2?#PSnkyr=G^?+Lf=~P&PAEY~Bg$wkKh@NodKa47<57`Q7UFuw_
z=!ACfjVYSyZuMw(gjUUPPBIr7EX_zNZ0zR1<_f8KYN;fJGqvSHX1mno&n^GmIL#kZ
z(HTc9?68Sk&*VY($8o0lHBrRZE}wqQ;kTm+N|>BRW?ZmlixERABn}^C5^zbaN}QE$
z&1-=@tkG11Oqpc{R7?DGpUsIEBwEn(2M)VQxec1g2dc#~R)=Xkic$kfiocyPS$o2)
zx3I)lNI>^K_@Le6M@fnA)iWm=pkVGe#hg*&>EQ=h#VfDvX|Yb_L=@-PsdIlj_PcNC
var{1NiZP1<&gKFCaSZ)`pxM(}ZSO!EcZ>L^UqJl+G61a3+aYStdMEx5o#DKV

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@194.png b/WebSites/errors/403/img/icons/pos_v01_dark@194.png
new file mode 100755
index 0000000000000000000000000000000000000000..34b0a3f69cfd25e91633e0fa908d3e8a7058bab5
GIT binary patch
literal 3299
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
KVOR~l9rGWE7!<7l

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@32.png b/WebSites/errors/403/img/icons/pos_v01_dark@32.png
new file mode 100755
index 0000000000000000000000000000000000000000..b5a6b9d535e52c59fe1a773df34630c1720f80dd
GIT binary patch
literal 558
zcmV+}0@3}6P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm0001^
z0001^0r1C~&Hw-b;7LS5R9J=WmLW((Q51&HWX&075$gn-24^veGMlipfoL%}4VDSw
ziilbiVFr^kn1(QuU~>p2(+t`K7ZnW}#60;fJCFPBdxCA{{_uG3-Tn8R|D5yR#}YDA
z=tvLI*URL<3-AKG052fvE|lhTa=K9ptzF*T%i+b9w4U3+T4s1iwifb|%Z{1n_S?JE
zuA7Eu<6vdc#7qzLoBdqyG*(1Fb~F=FS(u)Z+{CyH=9dG`&C#|AY6~J+I+c>jS>3Gh
zjz~K;7XlQK5l|6Wt=1$lTa?MQig_m)zj1Hul!J;81y3udTIFl<xy^mU;o{luWJmy;
zs01j<CTlm~e0~3zVBA6T;W3EecCy)eihYg<pv{1wn%EB1e*Fk4q>Y+94saEWOAB)m
z5}?U6In}5kQI64+qZPY*wL-Xz5s{4UrG8>O@h<^v=-f8s^XlBJ5d>rX)mG__Mx2q+
zrIDrez;t-RHF<ahT>~me%w{!??Rs~g2Ik1RG3bQCjghp2C~#{W?3q(B$w;iNr7H;4
zc{2vPJ8p+U0^AwKK|dsLIf^3XP~hTT)jZQ`HLDGds%zX}1bPBobGaz)9*5dYmH5Lx
wl8B)YeOHctpltX*rCxv+;01UAy%iuLzljR=m4ygf@Bjb+07*qoM6N<$f_mrxD*ylh

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@57.png b/WebSites/errors/403/img/icons/pos_v01_dark@57.png
new file mode 100755
index 0000000000000000000000000000000000000000..25ba529b8b5a93ee5c26c9e51b34a6febd34467f
GIT binary patch
literal 917
zcmV;G18V$<P)<h;3K|Lk000e1NJLTq0021v0021%1^@s6j2MH300009a7bBm0003Z
z0003Z0iXtzIsgCzM@d9MRA_<iS}kmpK@eR?9YwSP0<r=Jf+9cx$>EwD<{BClf-9CL
zq%}YQ(}tu75Ksh$22u=7aGXJ5D55x$o`is)f}$aBb5rJf`+LPL`;tp@-|fuKn|U+4
zcj-QJzVq7@j{T(*G?ipQs3c24C0Pn8$x={BmV!#M6jYL>;J+X_l3LK6YMHTv2ZEpX
zHa?k+&;6{;;Hx!x+)N&uFcU`(+h?%FYw5+h>3{u}wC|ifV|@VIKY#7o!}is?_x2eh
z`OCo8>cicDLcj*ocOC@Eg4C0_uKgRs?DC3PdDC-NAjxm<-%Q$r;CTCr^E@h7I8PA-
zum(Z+)*`T+00AVz=VR^GT$X+B<EHm{RIaU)Cz6f@NXYz5+g3wA13@i!WE<7m-r2E)
zAVCfGArjYsy+|8A?Ca>Eppv2_IeQCFS8eYIfyJwr8$og~_*@f25EpLTYxE7Cp@JbF
z{5~Y<7@~6J4KQQ`2o$6>wA7Fwt`Y*|!N38tTv<)S5;Q52TuGLLZ;}a^AcD)C!Wul;
zW0O9FAjw!21)OzF8lzrAWIinTSm74<Cz4!6-{f)<F<1kF+>4<zkQ2q#=Hx;lThAZa
z0hLQOTuJH$-dv`sZw)40EKm(z%PoMu=LE^n`|x<tQH&4SmDD6rK|UAdXfPQGitWRS
zf!|Zt7Q6!o`>)-;?kI}kJwmWCOX0`*v#6t`m#>3^D0W@rO7y>cch<l!CNugP#|^j1
z{H2RgwRkJZPEx?;da$s4sFJ8ePVWnlES$4^bfx0;lFYe6nL)4lHqAxn-08;3&;^?@
z?4%CLRf9=DQn87d15^<*)5tyOxs_6JI3(pRs2vQOIoN0)82g$4g2cek!9o?WzS7`}
zM(UE`kj%LRqyU@l)L)YFH4Eg&Mn|3Rs4`e|44B@sx9(Hlr9Pzqha^jNFOo#%IS_s?
z0Kw_I%Z+^`21$5qu%M4qg>VLsGwt?JNd&Ab6I+MD#e3v@hcyF&Ir}tz8GwZJc^LYp
zoeMi$X4<wA5;%yVhd?YQGb9^!xLDv;B=(32@`Y_~0qQ?Sl!8jK6jYL>ppq;Fm1HTX
rBuhahSqdu2Qcy{jf=aRo7-Rkb!mg@$Xm_-900000NkvXXu0mjfW2~b-

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@60.png b/WebSites/errors/403/img/icons/pos_v01_dark@60.png
new file mode 100755
index 0000000000000000000000000000000000000000..1732b63026b04c1754c459197563375e0a64a90d
GIT binary patch
literal 968
zcmV;(12_DMP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00009a7bBm0003o
z0003o0Ys~$od5s>dPzh<RA_<iS|MyyK@c4Xjv|VHfINXKf+9cx$<>h*bEJSmaA0X5
ztpO5193d$N0Y%h6NLtkd#|coapa^gzoP>Y?(N;s=&+X6r`7^uw57geiq)G37cXr;)
z+nL#)?xAy?KQu<zJ5FRN6CML(!l@$@P92$W>d1ssM<$#)GU3#b38#*IA%5-YDO#Aj
zU_RgaGN8ftAGG#<gMM%C2E#RZU_W)wx2b*NIJJ%*qSlea#rOTK&xNh!H~qq%4_E^m
z)5ltce*o4DzWogP6MV(fyLN>ZF3kps!1(p0<zgcXumgJ`JBu$~6~r~f*l?J+{h$aW
zM^Mr(f*~Mt&*!^k#w748#!+WS+qVf>8mdnsNEot-1)SB?00NMp1fq{0O~Uf;5lD@!
zv*C^eC#y-?dxm9{Vc_8G)ru3V_ik2#A_LSpbGqg{<O<nxhh$K&j_67GSq2h8nz{8*
z4Hg1#Db1T<>AaK(Hhc7X-MgmOy<D?_vo52L07&qFOS{<DDsHf?$(cfgQAs)aA3xQN
z@9dcCkue!*khPrjK@tvCatr^IVPJA%!gO3p85P`$d{e+Sr2F3pgRC?tOFVgkg3QWi
zYwtEqM>OZrSIf1c-QkRXc-AY<b`#<zVOg*=vTlf|{M}IYT3hk;XssJ?*=l{+Rqn4Z
zpGFfm3Cpu5rHJQmAK$5M;<6~$YXRd3ol&f}&Odwram^nIvn|OCb<UnDoq|y<BfN6T
z=UTzzh^ZIIGKeFaT3?5a)w}b>gw=>JvLiF3eJ35{tp#&3N2m(dI)b4H1QeM@aFGN#
zj37}+h_#<8=_b<^4KsW4#$x3=86005(JF4}2)G$Q%cjqNHNzpoZft{0ab`#Di4Jm#
zLUD_=848SqN?4v>NXWXq#6tFK2auI&XtI}f%zV8*O46eY3v!JnTkZDaE&>#oiQRK;
zboJGXT86a?!zhFyOCC7bMZYWu6L$IMdtJQ0RDQ;AflCFk3%<`+icm+5aMN~T0UP5@
z3C}8ix9-;<ivq;6!+i;L2^t1DM7Snt*&arneKi6WAYoK_ZMcaADz-J4aMWJ${90eB
zWJP;T(gbiC{Sxxz83Q@k4P7YQdn@@4jN6EL59W~nZ7FqR!l@$@P92$W>d1ssM<$#)
qGU3#b38#)sICW&gsbjnd6VYGzBi0kfw{sEz0000<MNUMnLSTY5I=O)W

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@72.png b/WebSites/errors/403/img/icons/pos_v01_dark@72.png
new file mode 100755
index 0000000000000000000000000000000000000000..ee490d6b030e8c4f28375099aeb767a0459459ed
GIT binary patch
literal 1187
zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FLc_7T#5)iM#z`zpf
z>EaktG3V`U{hSa-fn(xLi#Y@YCWu-Hh%j<_M7am~2>;VyVfALt<W+FkqIfW20f$I^
z5RZz56cZQAT8+LIFAfeZja^TwckbMC+kEr=ciU7teyWOBmA^kb`)^rVS($zg_i{C}
zrsPd`mwG;C5{yx3;&v%$<j@m1$f~r%fknLI0Y1SSANO0D?5U5Ju-jnXBO{Y{Z~fnY
z!eRUWb98&pU;XA_-wlyz`_{Bw&9|4{-J{fa@6KL9H+MeO^#>hN9Q5zipV($wS+%9I
z)4))G>sy+fZRS6}jn&uB9lQ4Brt#VPVjDK^*mLQ7=;r7zo6jG+-TH>H{hm*6?Ebkj
z0&E)!io3Y<9sX?0E<ba#{lJV9Qw*d8>fYU4ea`%*>4{m9W&Crt9#F8eopDx7{Yy~6
z!)sTceD*rZx%b5N6Jje;1acpk9I|C=K9FGWVC^Q(hgnA)Ta<5^Zpxk@=J<KNIJ=W<
z^HrJl9Xq!1zG_YrUik0P-Q)Z2b_yRqe0b%_a|a$*e~j_Xu@PS%!7#JnhUe4<U(S{}
zz1fWS&d2SVut)ry?|kX^H+I+L?^9kP^2=ha$!x>0SkARml2#{&b(x+{F|pqC=U4{c
z(eFxCNeV7He)R^YwdbBsYFxu{Uni0&bMs=$xy(m`(yRZitTd0l)@;PN^Sj|DWsPH6
zSv+gq6swA6Z3}u7vVNgelTPE6jO?dBkDN@N`#x}rcjsc~)v7Cs<LBSWS6iA^%5BMX
zaKp6wVTIDRMLRyvbZHMe?X+4T`iakksh=w3!Vbo-moxuAZJTI_g0GBr)tc0}b?FyV
zH&$n?_<Z)(uU`kMb@+7NK9p8krSf$Z%Oy5d**uw3o7%bDbWdx3+c~)<*SGJ1$KH_k
z`)%JGqfRBH-+7m8z!0<i>CZc#r~j=A6zXNR)0o(Pw}NLL^TZ1=hxT9j=22z1+Fxjg
zLsxMDgFYMEd6^S8XRZ#M(_!PH6SqnA;w8H;YV&_i_t`j$ca?(mPsVnxFlWcv9Cs#P
ze*D0y<azZm{Z-tK=l&UK2ApLR?OS}*zA81%Tgo)oJE-WKik;&MsY#mCq#cVq+9Wsg
z&C7E55+QvdD63XWjALTpZP#oEhPB;pZ)eW6x&Kq<(G{LB@2hh}&-)l=H}8@xT$5*h
z%u0LG7hTq}Ezh6y9PL>!tLfB%zZ+vMk53Hc^j)~swB!8ZLa9!T_wun4yX&%#p7jh3
zUT|xf9;?iyG@(TsSsnTI-SXg^Q0*-y`c}vLu+PSNLC1oQud-4CYH_Vu{SD6N<MLLm
z5)9epsOu<mSxM7vT6%7zyOz_3NoUpHEZnR=Q{`*A{F9uTBb<egj^!JlI3_mn!aSaz
zzPuM_1uM_WJ$GW^zePgsVsB2YUS|8@KcDM|`_DLu%%0dX@)V_(58}3LDw`|>J==k$
O4uhwwpUXO@geCxk7zyqG

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@76.png b/WebSites/errors/403/img/icons/pos_v01_dark@76.png
new file mode 100755
index 0000000000000000000000000000000000000000..67a957e50ec8f2732c188095cfb5f7fab49d8623
GIT binary patch
literal 1263
zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&1|*M957Y)yoCO|{#S9FL%^=KpH0st(1_qXe
zo-U3d6?5LsHp~!p6le?IXe^c~qN{vkrqad>UadDcZ>eak>@^ePnq;DsB`mmQ!^Md1
zNhVxnY!|(_Co7dTX(})COkAV<|D&4D?3sIizTbN&$<Cth&hFW_|E8CfmHB^P`gyXo
zX2E9rC671`dN>(O66jH3QRXC#$@izfSIV+V#kXg^&*65yWt|%@-hF*~b#~_K^Y^#x
z`DDBH|1aO0GWLd-ZnWgeFqq9sPBvcqC!+l3l6~HfTIJ>L=kE2lYWaNWxqjT|-oH1s
zr_U~y=6*l@@}1M+y$#KqW^R{E=k?lfbM^E~f3{}6f6M#f&R2Ervp1P0w)h>iV?JV4
zntZOONAE3bf874;ISU=1Zm6lKI2aJIr+l@bEAw^1t!pAye%Hy#E)muKIw$8K=QECM
z-X}dXyM<rnzYuYG%Qa6o_i=6PQLnu*nGgMbO^bLM;m*D#!)dv|E6WZhZx5c%rT+2d
z?Xx@9xh84u5M6ts+Ts(3Q}okH%j=&OMH}dHU6{#TF86NdzenGCUX_~oNhw!)Ggq#Z
z5vve)k+CeZ@SSHHoE!bK`jzE^l89HG%6{90YWu1^vYI0GFGz*mYFH4ZvM710Ow)?h
zH${(6QP{-R2sHFz^yc7b+hkX9nS@T=oZS5IdUuvp=eJIgkBe!FtUM`vNJ_$J)?WAg
zdwffRrNY*w6mo|#^+!4%pY`=gT`tqaMH{&*zeMCZ#T``)tqZr}4m)i;E#Z=(u4Z+y
zPjqxvpUafLHDA}Pyt`|fhu%Sx$6KRZXJ1S0e4^{G)7IV=^?u{35=K7fjXll1JHif5
z$TnHL^}_Xc;*M)REfL#j`6?&Yg8%)YqBXo0?{9yu)Y`w5D^0h3OOxorb$ewFyD0U@
z-m^UWu2pE^EuId=zN&S)MTx?G-`1H$afhG2aPGM4b#8_|d!sjKIiJ#=alLY9tjIM1
z$-XN^%Ny?72HuoQl%2eo!T))*P1M{cYbUCmpL?&^_uG~%hYKrz`(OU}a`v;b$=m0z
zZTh;|!0nUn-ephC&mWVWcUj40^&j02avaNjx$ZrQmz@;5m^;oTrF89TlQpcSn;kVP
zf*agI4e}3mJ>^>GStNhONF~4BY~}&QSgZ9<1K&?8w>>mPh1=2Q<V7Z4?Zfi#H!ccH
zGwfaGty#Ks<Hna&+h!g9rOBwX<+-43l=>6trmew~x_kayo0dP@b^k{8aP1?-XE-*C
z-DwtB<8yD5ukK;1uW7;Bf{*8|WcM%o-?rgr*w(E!n~IFyeb+ndb8rpQ#`uF5407IP
zocnO*L<V!#Y8(G)=ObCywLX76If2jfywDQvjELJ&=besd&As;YaZkfv^R(iPRw~}V
zdi5B2U7k-ovv$3wrBTX+CtE!ncCQghYCOq4Sv>mJiu<Y)tvB!nEqc54JG0ddl|LIV
z+R7fQe)3_O)~8bG^e+obta3~zAAJ?|T*~mDyPoHtWD&A5J4zYRHszB2{p%5PkG-;6
R0xZE8JYD@<);T3K0RW?MIimmo

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/icons/pos_v01_dark@96.png b/WebSites/errors/403/img/icons/pos_v01_dark@96.png
new file mode 100755
index 0000000000000000000000000000000000000000..edeae5826afe408a081ce111f7ec7b6d446ff50e
GIT binary patch
literal 1578
zcmcJP3p>*b0Ehn@V?wl|Sr{QU*Ar=TNwR2rkXs}|E;G4RBqek<J(OE5wAO|$#@uE#
zxf@|pNoTqoglsmX<LP3#>(qBR=Xu`u_kM%lH7`#$)h&oE005}skKlZMHSD)gg<mV8
zUBLW`(wQTHNdN$v`z`3Z@%d)}0QrE&Is2tD{$V=BX}GBicH**8q?~dam<~#`;~x14
zD>o8hp#45Y_z>!owTtY92)bEr#3~mRx>G8WoxOdWx0z5aAW`?dvcOf&lM<=qa_1f9
zNDv<slOeoi#BUoLUm->lm)<p4rnfHdfh2rZ8(xEfG28!Bl0K#{tWUWp4zIf*StAi{
z!VlL*l2eJqZ{t0c{GUtT2at0EWkaq_`_dLEyj1BemMZVC!`fPz^t(thFEt*0Z1pL5
zkw4aiFd#Y4yvD<)H#voL&)W^FBbQG&q@xFin118=w)+<nDhH8BdXS6#?GnutxTB&#
zN%3_~s2O0lIF>J?1{v3mw~xaGLaEx$01v?|ID)YuwJ-j1#*7C63BL3-dU!93w991&
zuE~leuDC%n@_X^9kGRsmtE`jHh*z5ww{iuFv^iKGSZ~iez_lfLim_}6M^0eseh6MZ
zvY?%98Ijt_L3@vTdZnH+7srm(Os%j7A=vBHdda1`4*F`W%P!Bz`U@hXRnU1E2f7@w
zVuQ|b`fwO~@6+0wjL52vH`jZd2iijq+GzZJkK%C^7t!bDo35dxr<zw|dqyp9Kne6f
zrb?c#NOdgw7zT$!k-cZ@IWGDNeDNW*yq{lh$5Qm8-0uYKAR8u1Svnc~Cl|9jIEf^<
zCk&zCS6^GyiA1=(;u2mEuk8jk7YM_%T&kg~rN%~t95yO6<_}hkWt6sQz+h3hCQ$m^
z!#Ac&(`JIx{fSEj(xx`pIDqX?!<{}FZ}ikVHny8k_o!{i4{`&B9?y+61lcY)ddaM_
z-#&OB;KUIoARhx&{+M&;IflAg@<TIO=#kGN_&H5f)>BjijMK7-KMc0gd7TBpJG6!(
zK5m5S)~sS;hDfy^;3QKQbYdM%{)Pi)=FXSXW(61<@EgK6Hq)c6l=ISZHo{!r9egAo
zFNr?Al=M&=5R2BR`xLULt%5VT&BKQd#hqLk<(W@Lp{)Ty|0`ofP4{P@2qLYK9}E+y
zU@~Q`D7=9aDJ3wwYB$gXJSdR-NFsS3YwI;n*VR0kni#f?`Hi9>3%S7qDM}{S+oKX3
z8gtPw&KiMx)S@?V_3jR`@Wrl|Au&rlWn7o6WPjo(Ew8q9Lj3Gp0;;GtZY!6*H_o)Y
zu>Usy^f?Mk&EK94srpL3udG1Cr*4=pXw$F17!8H~sbwlrtYNY&0J}nG6)j}ioOX%U
zl{5OX_pPO~WUbuShK=#g#c~f-G3Hi!?K$XD1as!uMgBg9s-s*P!jla<c%pl22T0B`
zq=VkRy+Uj<tk?9>6ieTWs~h(&27E{dP1uc2zH+tun=dgYO5R?H?V*SIVZ&Z3Fd#7{
zq-y10gNsfnKC!9wJE(QmCyfE?<<U~hV|LV2zCng@>1j7JQ|?ku>zSL?S?ld0vl_9k
zL*mh%>PzX86$?uituTNl^am!~mO9D`_WS6%Oi&rsSYIAbuanc@e>@P>+jo;|JM@=I
z##KI)(x0uus(Up%OF*I`Wx2{8P@MfcbsNH!QEOm$=k95RyJN&za8Hu*fta`wTc7Ck
z2&21l&GNO_lmKwvvH2G2*Vx*4=wd+HY*V2Lz+6Uza|lP>r-a?=)A_<DkNidg%RSnJ
z6mU4Sx&=!FQMyq!y=%d;VTgeBHl;q3rZdCY%#;_jZmFz(ey%+u=fY+gr;_h}kAG#Z
z)Vd-tCm6R9;cl-^epSK>k*C#uGUdHB+WZMbiwYMRN}&G<2Ry0+GC8p7H*eK2@$38n
M{9#XA{h=`Ozs>BljsO4v

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/img/pos.png b/WebSites/errors/403/img/pos.png
new file mode 100644
index 0000000000000000000000000000000000000000..d60a4b4d498140ef21fb19a8a4c1833592f6651c
GIT binary patch
literal 488107
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%0A|)
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
H!MpzfsTs*X

literal 0
HcmV?d00001

diff --git a/WebSites/errors/403/index.html b/WebSites/errors/403/index.html
new file mode 100644
index 0000000..155fc3a
--- /dev/null
+++ b/WebSites/errors/403/index.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<!-- Dev Version links to full versions (non-minified) of javascript and css files -->
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>European Spallation Source ERIC - Public OPI</title>
+    <meta property="og:title" content="European Spallation Source ERIC - Public OPI"/>
+    <meta property="og:image" content="/img/pos.png"/>
+    <meta property="og:description" content="Realtime operations information directly from the Control Room of the European Spallation Source ERIC"/>
+    <meta property="og:url" content="https://pos.esss.lu.se" />
+    <meta name="twitter:card" content="summary_large_image">
+    <meta name="twitter:title" content="European Spallation Source ERIC - Public OPI">
+    <meta name="twitter:description" content="Realtime operations information directly from the Control Room of the European Spallation Source ERIC">
+    <meta name="mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-capable" content="yes" />
+    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
+    <meta name="viewport" content = "width = device-width, initial-scale = 1, user-scalable = no" />
+    <link href="lib/css/thirdparty/jquery.gridster.min.css" rel="stylesheet" />
+    <link href="lib/css/thirdparty/codemirror.css" rel="stylesheet" />
+    <link href="lib/css/thirdparty/codemirror-ambiance.css" rel="stylesheet" />
+    <link href="lib/css/freeboard/styles.css" rel="stylesheet" />
+    <script src="lib/js/thirdparty/head.js"></script>
+    <script type="text/javascript">
+        head.js("lib/js/thirdparty/knockout.js",
+                "lib/js/thirdparty/jquery.js",
+                "lib/js/thirdparty/jquery-ui.js",
+                "lib/js/thirdparty/underscore.js",
+                "lib/js/thirdparty/jquery.gridster.js",
+                "lib/js/thirdparty/jquery.caret.js",
+				"lib/js/thirdparty/codemirror.js",
+				"lib/js/thirdparty/jquery.xdomainrequest.js",
+
+                "lib/js/freeboard/FreeboardModel.js",
+                "lib/js/freeboard/DatasourceModel.js",
+                "lib/js/freeboard/PaneModel.js",
+                "lib/js/freeboard/WidgetModel.js",
+                "lib/js/freeboard/FreeboardUI.js",
+                "lib/js/freeboard/DialogBox.js",
+                "lib/js/freeboard/PluginEditor.js",
+                "lib/js/freeboard/ValueEditor.js",
+                "lib/js/freeboard/JSEditor.js",
+                "lib/js/freeboard/DeveloperConsole.js",
+                "lib/js/freeboard/freeboard.js",
+
+                "plugins/freeboard/freeboard.datasources.js",
+                "plugins/freeboard/freeboard.widgets.js",
+		"plugins/thirdparty/flot_extended.plugin.js",
+		"plugins/thirdparty/widget.ragIndicator.js",
+		"SlickNav/dist/jquery.slicknav.min.js",
+                "examples/plugin_example.js",
+
+                // *** Load more plugins here ***
+                function(){
+                    $(function()
+                    { //DOM Ready
+			freeboard.setAssetRoot("/freeboard-ui/");
+                        freeboard.initialize(true);
+            	        $('#menu').load("/menu/available-screens.html");
+            	        $('#menu').slicknav({ duplicate: false, label: 'Available Screens', removeIds: false, });
+                    });
+                });
+    </script>
+
+<link rel="stylesheet" href="SlickNav/dist/slicknav.min.css" />
+<link href="css/ess.css" rel="stylesheet" />
+<link rel="icon" type="image/png" href="/favicon.png">
+<link rel="apple-touch-icon" href="/img/icons/pos_v01_dark@120.png">
+<link rel="apple-touch-icon" sizes="152x152" href="/img/icons/pos_v01_dark@52.png">
+<link rel="apple-touch-icon" sizes="180x180" href="/img/icons/pos_v01_dark@180.png">
+<link rel="icon" sizes="192x192" href="/img/icons/pos_v01_dark@192.png">
+</head>
+<body>
+<ul id="menu"></ul>
+<div id="board-content">
+    <img id="dash-logo" data-bind="attr:{src: header_image}, visible:header_image()">
+    <div class="gridster responsive-column-width">
+        <ul data-bind="grid: true">
+        </ul>
+    </div>
+</div>
+<header id="main-header" data-bind="if:allow_edit">
+    <div id="admin-bar">
+        <div id="admin-menu">
+            <div id="board-tools">
+                <h1 id="board-logo" class="title bordered">freeboard</h1>
+                <div id="board-actions">
+                    <ul class="board-toolbar vertical">
+                        <li data-bind="click: loadDashboardFromLocalFile"><i id="full-screen-icon" class="icon-folder-open icon-white"></i><label id="full-screen">Load Freeboard</label></li>
+                        <li><i class="icon-download-alt icon-white"></i>
+                            <label data-bind="click: saveDashboardClicked">Save Freeboard</label>
+                            <label style="display: none;" data-bind="click: saveDashboard" data-pretty="true">[Pretty]</label>
+                            <label style="display: none;" data-bind="click: saveDashboard" data-pretty="false">[Minified]</label>
+                        </li>
+                        <li id="add-pane" data-bind="click: createPane"><i class="icon-plus icon-white"></i><label>Add Pane</label></li>
+                    </ul>
+                </div>
+            </div>
+            <div id="datasources">
+                <h2 class="title">DATASOURCES</h2>
+
+                <div class="datasource-list-container">
+                    <table class="table table-condensed sub-table" id="datasources-list" data-bind="if: datasources().length">
+                        <thead>
+                        <tr>
+                            <th>Name</th>
+                            <th>Last Updated</th>
+                            <th>&nbsp;</th>
+                        </tr>
+                        </thead>
+                        <tbody data-bind="foreach: datasources">
+                        <tr>
+                            <td>
+                                <span class="text-button datasource-name" data-bind="text: name, pluginEditor: {operation: 'edit', type: 'datasource'}"></span>
+                            </td>
+                            <td data-bind="text: last_updated"></td>
+                            <td>
+                                <ul class="board-toolbar">
+                                    <li data-bind="click: updateNow"><i class="icon-refresh icon-white"></i></li>
+                                    <li data-bind="pluginEditor: {operation: 'delete', type: 'datasource'}">
+                                        <i class="icon-trash icon-white"></i></li>
+                                </ul>
+                            </td>
+                        </tr>
+                        </tbody>
+                    </table>
+                </div>
+                <span class="text-button table-operation" data-bind="pluginEditor: {operation: 'add', type: 'datasource'}">ADD</span>
+            </div>
+        </div>
+    </div>
+	<div id="column-tools" class="responsive-column-width">
+		<ul class="board-toolbar left-columns">
+			<li class="column-tool add" data-bind="click: addGridColumnLeft"><span class="column-icon right"></span><i class="icon-arrow-left icon-white"></i></li>
+			<li class="column-tool sub" data-bind="click: subGridColumnLeft"><span class="column-icon left"></span><i class="icon-arrow-right icon-white"></i></li>
+		</ul>
+		<ul class="board-toolbar right-columns">
+			<li class="column-tool sub" data-bind="click: subGridColumnRight"><span class="column-icon right"></span><i class="icon-arrow-left icon-white"></i></li>
+			<li class="column-tool add" data-bind="click: addGridColumnRight"><span class="column-icon left"></span><i class="icon-arrow-right icon-white"></i></li>
+		</ul>
+	</div>
+    <div id="toggle-header" data-bind="click: toggleEditing">
+        <i id="toggle-header-icon" class="icon-wrench icon-white"></i>
+	</div>
+</header>
+
+<div style="display:hidden">
+    <ul data-bind="template: { name: 'pane-template', foreach: panes}">
+    </ul>
+</div>
+
+<script type="text/html" id="pane-template">
+    <li data-bind="pane: true">
+        <header>
+            <h1 data-bind="text: title"></h1>
+            <ul class="board-toolbar pane-tools">
+                <li data-bind="pluginEditor: {operation: 'add', type: 'widget'}">
+                    <i class="icon-plus icon-white"></i>
+                </li>
+                <li data-bind="pluginEditor: {operation: 'edit', type: 'pane'}">
+                    <i class="icon-wrench icon-white"></i>
+                </li>
+                <li data-bind="pluginEditor: {operation: 'delete', type: 'pane'}">
+                    <i class="icon-trash icon-white"></i>
+                </li>
+            </ul>
+        </header>
+        <section data-bind="foreach: widgets">
+            <div class="sub-section" data-bind="css: 'sub-section-height-' + height()">
+                <div class="widget" data-bind="widget: true, css:{fillsize:fillSize}"></div>
+                <div class="sub-section-tools">
+                    <ul class="board-toolbar">
+                        <!-- ko if:$parent.widgetCanMoveUp($data) -->
+                        <li data-bind="click:$parent.moveWidgetUp"><i class="icon-chevron-up icon-white"></i></li>
+                        <!-- /ko -->
+                        <!-- ko if:$parent.widgetCanMoveDown($data) -->
+                        <li data-bind="click:$parent.moveWidgetDown"><i class="icon-chevron-down icon-white"></i></li>
+                        <!-- /ko -->
+                        <li data-bind="pluginEditor: {operation: 'edit', type: 'widget'}"><i class="icon-wrench icon-white"></i></li>
+                        <li data-bind="pluginEditor: {operation: 'delete', type: 'widget'}"><i class="icon-trash icon-white"></i></li>
+                    </ul>
+                </div>
+            </div>
+        </section>
+    </li>
+</script>
+</body>
+</html>
+
diff --git a/WebSites/errors/403/js/bahnhofsuhr.js b/WebSites/errors/403/js/bahnhofsuhr.js
new file mode 100644
index 0000000..aa93928
--- /dev/null
+++ b/WebSites/errors/403/js/bahnhofsuhr.js
@@ -0,0 +1,566 @@
+
+
+
+// By Roland Rytz
+
+
+function Bahnhofsuhr(containerId, args){
+
+	if(typeof containerId != "string" || containerId === ""){
+		console.error("Bahnhofsuhr: No html element ID provided for container, aborting.\nUsage: Bahnhofsuhr(string containerID, optional object arguments)");
+		return null;
+	}
+
+	var container = document.getElementById(containerId);
+
+	if(container === null){
+		console.error("Bahnhofsuhr: Could not find html element with id '"+containerId+"', aborting.\nUsage: Bahnhofsuhr(string containerID, optional object arguments)");
+		return null;
+	}
+
+	
+
+	args = args === undefined ? {} : args;
+
+	// RGB color of the clock face
+	var backgroundColor = 		args.backgroundColor 		=== undefined ? '#123B4A' : args.backgroundColor;
+	
+	// RGB color of the minute/hour hands and the minute indices
+	var foregroundColor = 		args.foregroundColor 		=== undefined ? '#cef4ff' : args.foregroundColor;
+	
+	// RGB color of the seconds hand
+	var secondsColor = 		args.secondsColor 			=== undefined ? '#ff0000' : args.secondsColor;
+	
+	// Width of the larger indices in % of the clock diameter
+	var fiveMinuteStepWidth = 	args.fiveMinuteStepWidth 	=== undefined ? 3.5 : args.fiveMinuteStepWidth;
+	
+	// Width of the smaller indices in % of the clock diameter
+	var minuteStepWidth = 		args.minuteStepWidth 		=== undefined ? 1.4 : args.minuteStepWidth;
+	
+	// Distance of the indices to the face's outer border in % of the clock diameter
+	var stepPadding = 			args.stepPadding 			=== undefined ? 1.5 : args.stepPadding;
+	
+	// Length of the larger indices in % of the clock diameter
+	var fiveMinuteStepLength = 	args.fiveMinuteStepLength 	=== undefined ? 12 : args.fiveMinuteStepLength;
+	
+	// Length of the smaller indices in % of the clock diameter
+	var minuteStepLength = 		args.minuteStepLength 		=== undefined ? 3.5 : args.minuteStepLength;
+	
+	// The hour hand trapezoid's side closest to the center in % of the clock diameter
+	var hourHandInnerWidth = 	args.hourHandInnerWidth 	=== undefined ? 6.4 : args.hourHandInnerWidth;
+	
+	// The hour hand trapezoid's far side from the center in % of the clock diameter
+	var hourHandOuterWidth = 	args.hourHandOuterWidth 	=== undefined ? 5.2 : args.hourHandOuterWidth;
+	
+	// The hour hand's length in % of the clock diameter
+	var hourHandLength = 		args.hourHandLength 		=== undefined ? 44 : args.hourHandLength;
+	
+	// Distance from the inner end of the hour hand to the face's center
+	var hourHandPivot = 		args.hourHandPivot 			=== undefined ? 12 : args.hourHandPivot;
+	
+	// The minute hand trapezoid's side closest to the center in % of the clock diameter
+	var minuteHandInnerWidth = 	args.minuteHandInnerWidth 	=== undefined ? 5.2 : args.minuteHandInnerWidth;
+	
+	// The minute hand trapezoid's far side from the center in % of the clock diameter
+	var minuteHandOuterWidth = 	args.minuteHandOuterWidth 	=== undefined ? 3.6 : args.minuteHandOuterWidth;
+	
+	// Distance from the outer end of the minute hand to the face's center in % of its length
+	var minuteHandLength = 		args.minuteHandLength 		=== undefined ? 58 : args.minuteHandLength;
+	
+	// Distance from the inner end of the minute hand to the face's center
+	var minuteHandPivot = 		args.minuteHandPivot 		=== undefined ? 12 : args.minuteHandPivot;
+	
+	// Total length of the seconds hand
+	var secondsHandLength = 	args.secondsHandLength 		=== undefined ? 52.2 : args.secondsHandLength;
+	
+	// Width of the narrow part of the seconds hand
+	var secondsHandWidth = 		args.secondsHandWidth 		=== undefined ? 1.4 : args.secondsHandWidth;
+	
+	// Radius of the circle on the tip of the seconds hand
+	var secondsHandRadius = 	args.secondsHandRadius 		=== undefined ? 5.25 : args.secondsHandRadius;
+	
+	// Distance from the shorter end of the seconds hand to the face's center
+	var secondsHandPivot = 		args.secondsHandPivot 		=== undefined ? 16.5 : args.secondsHandPivot;
+	
+	// How long the seconds hand will stop at a full minute, in milliseconds
+	var minuteGap = 			args.minuteGap 				=== undefined ? 2000 : args.minuteGap;
+	
+	// How long it takes the minutes hand to jump to the next minute, in milliseconds
+	var minuteHandJumpDuration =args.minuteHandJumpDuration === undefined ? 5000 : args.minuteHandJumpDuration;
+
+	// Show shadows from hands, true or false
+	var showShadow =			args.showShadow 			=== undefined ? true : args.showShadow;
+
+	// X offset of the shadows, in percent of the clock diameter
+	var shadowXOffset =			args.shadowXOffset 			=== undefined ? 1.5 : args.shadowXOffset;
+
+	// Y offset of the shadows, in percent of the clock diameter
+	var shadowYOffset =			args.shadowYOffset 			=== undefined ? 2.5 : args.shadowYOffset;
+
+	// Blurring of the shadows, in percent of the clock diameter
+	var shadowBlur =			args.shadowBlur 			=== undefined ? 1 : args.shadowBlur;
+
+	// Shadow color
+	var shadowColor =			args.shadowColor 			=== undefined ? "rgba(0, 0, 20, 0.4)" : args.shadowColor;
+
+	// Debug mode
+	var debugMode =				args.debugMode 				=== undefined ? false : args.debugMode;
+
+	// Show border around clock face, true or false
+	var showBorder =			args.showBorder 			=== undefined ? false : args.showBorder;
+
+	// Border width, in percent of clock diameter
+	var borderWidth =			args.borderWidth 			=== undefined ? 2.5 : args.borderWidth;
+
+	// Border color
+	var borderColor =			args.borderColor 			=== undefined ? "#cef4ff" : args.borderColor;
+
+	// Show Logo (or any image) on the clock face
+	var showLogo =				args.showLogo 				=== undefined ? false : args.showLogo;
+
+	// Path of Logo file
+	var logoPath =				args.logoPath 				=== undefined ? "./mobatime-logo.svg" : args.logoPath;
+
+	// Logo position from top, in percent of clock diameter
+	var logoTop =				args.logoTop 				=== undefined ? 65 : args.logoTop;
+
+	// Logo width, in percent of clock diameter
+	var logoWidth =				args.logoWidth 				=== undefined ? 20 : args.logoWidth;
+
+	// Allow clock to be displayed in fullscreen
+	var fullscreenable =		args.fullscreenable 		=== undefined ? false : args.fullscreenable;
+
+	// Background color when fullscreen
+	var fullscreenBackground =	args.fullscreenBackground 	=== undefined ? "#FFFFFF" : args.fullscreenBackground;
+
+
+	var faceCanvas = document.createElement("canvas");
+	var handsCanvas = document.createElement("canvas");
+	//handsCanvas.style.willChange = "transform";
+
+	var innerContainer = document.createElement("div");
+	//innerContainer.style.willChange = "transform";
+	
+	handsCanvas.style.position = "absolute";
+	faceCanvas.style.position = "absolute";
+
+	innerContainer.appendChild(faceCanvas);
+
+	var logo = document.createElement("img");
+	if(showLogo){
+		logo.src = logoPath;
+		logo.style.position = "absolute";
+		innerContainer.appendChild(logo);
+	}
+
+	innerContainer.appendChild(handsCanvas);
+	container.appendChild(innerContainer);
+
+	var timeOffset = 0; // is changed when setTime is called
+
+	var defaultSize = 100; // Use as reference size, then scale everything according to clockDiameter.
+	var center = defaultSize / 2;
+	var clockDiameter = 0;
+
+	var renderBorderWidth;
+	
+	var handsCtx = handsCanvas.getContext('2d');
+	var faceCtx = faceCanvas.getContext('2d');
+	
+	// Scale
+	var scaleFactor = 0;
+
+	var fullscreen = false;
+	var defaultContainerPosition = container.style.position || "static";
+	var defaultWidth = container.style.width;
+	var defaultHeight = container.style.height;
+	var defaultBackground = container.style.backgroundColor;
+	var defaultPaddingTop = container.style.paddingTop || "0px";
+	var defaultPaddingLeft = container.style.paddingLeft || "0px";
+	var defaultPaddingRight = container.style.paddingRight || "0px";
+	var defaultPaddingBottom = container.style.paddingBottom || "0px";
+
+	if(fullscreenable){
+		container.style.cursor = "pointer";
+		
+		container.addEventListener("click", function(){
+			if(!fullscreen){
+				goFullscreen();
+			} else {
+				leaveFullscreen();
+			}
+		});
+
+		window.addEventListener("keydown", function(e){
+			if(e.code == "Escape"){
+				leaveFullscreen();
+			}
+		});
+
+		window.addEventListener("resize", function(e){
+			if(fullscreen){
+				scale();
+			}
+		});
+
+		var goFullscreen = function(){
+
+			innerContainer.style.transitionProperty = "margin-left";
+			innerContainer.style.transitionDuration = "300ms";
+			innerContainer.style.transitionFunction = "ease-out";
+			
+			container.style.top = "0px";
+			container.style.left = "0px";
+			container.style.right = "0px";
+			container.style.bottom = "0px";
+			container.style.width = "auto";
+			container.style.height = "auto";
+			container.style.paddingTop = "10px";
+			container.style.paddingLeft = "10px";
+			container.style.paddingRight = "10px";
+			container.style.paddingBottom = "10px";
+			container.style.backgroundColor = fullscreenBackground;
+			container.style.position = "absolute";
+			fullscreen = true;
+			scale();
+		}
+
+		var leaveFullscreen = function(){
+			innerContainer.style.transitionProperty = "none";
+			innerContainer.style.transitionDuration = "0ms";
+			
+			container.style.position = defaultContainerPosition;
+			container.style.width = defaultWidth;
+			container.style.height = defaultHeight;
+			container.style.backgroundColor = defaultBackground;
+			container.style.paddingTop = defaultPaddingTop;
+			container.style.paddingLeft = defaultPaddingLeft;
+			container.style.paddingRight = defaultPaddingRight;
+			container.style.paddingBottom = defaultPaddingBottom;
+			fullscreen = false;
+			scale();
+		}
+	}
+	
+	//setTime(1530106317561);
+	scale();
+	animationLoop();
+
+	/* Set time to be displayed, in milliseconds since January 1, 1970, 00:00:00 UTC */
+	function setTime(newTime){
+		var currentTime = Date.now();
+		timeOffset = newTime - currentTime;
+	}
+
+	function scale(){
+		
+		var containerHeight = container.clientHeight;
+		var containerWidth = container.clientWidth;
+		
+		if(getComputedStyle){
+			var computedStyle = getComputedStyle(container);
+			containerHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);
+			containerWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
+		}
+
+		var marginTop = 0;
+		var marginLeft = 0;
+		
+		if(containerWidth > containerHeight){
+			clockDiameter = containerHeight;
+			marginLeft = (containerWidth - containerHeight)/2;
+			marginTop = 0;
+		} else {
+			clockDiameter = containerWidth;
+			marginTop = (containerHeight - containerWidth)/2;
+			marginLeft = 0;
+		}
+
+		innerContainer.style.marginLeft = marginLeft + "px";
+		innerContainer.style.marginTop = marginTop + "px";
+		
+		innerContainer.style.width = (containerWidth - 2*marginLeft) + "px";
+		innerContainer.style.height = (containerHeight - 2*marginTop) + "px";
+
+		faceCanvas.width = clockDiameter;
+		faceCanvas.height = clockDiameter;
+		handsCanvas.width = clockDiameter;
+		handsCanvas.height = clockDiameter;
+
+		if(showLogo){
+			var width = (logoWidth/100)*clockDiameter;
+			logo.style.width = width +"px";
+			logo.style.marginTop = ((logoTop/100)*clockDiameter) + "px";
+			logo.style.marginLeft = (clockDiameter/2 - width/2) + "px";
+		}
+
+		if(showBorder){
+			var borderScale = clockDiameter / (clockDiameter*2*(borderWidth/100));
+			clockDiameter -= clockDiameter / borderScale;
+			renderBorderWidth = borderWidth + borderWidth / (borderScale - 1);
+			center = defaultSize/2 + renderBorderWidth;
+		}
+
+		scaleFactor = clockDiameter/defaultSize;
+
+		if(showShadow){
+			var xOffset = (shadowXOffset / 100) * clockDiameter;
+			var yOffset = (shadowYOffset / 100) * clockDiameter;
+			var blur = (shadowBlur / 100) * clockDiameter;
+			var shadow = "drop-shadow("+xOffset+"px "+yOffset+"px "+blur+"px "+shadowColor+")";
+			handsCanvas.style.filter = shadow;
+			handsCanvas.style.WebkitFilter = shadow;
+			handsCanvas.style.MozFilter = shadow;
+		}
+
+		renderClockFace();
+	}
+
+	function renderClockFace(){
+		faceCtx.fillStyle = foregroundColor;
+		faceCtx.scale(scaleFactor, scaleFactor);
+		faceCtx.save();
+		
+		renderClockCircle();
+		renderFiveMinuteSteps();
+		renderMinuteSteps();
+	}
+		
+	// Render basic circle
+	function renderClockCircle(){
+		faceCtx.save();
+		faceCtx.beginPath();
+		
+		faceCtx.fillStyle = backgroundColor;
+		
+		if(showBorder){
+			faceCtx.beginPath();
+			faceCtx.arc(
+				center,
+				center,
+				defaultSize/2 + renderBorderWidth/2,
+				0,
+				2 * Math.PI,
+				false
+			);
+			faceCtx.strokeStyle = borderColor;
+			faceCtx.lineWidth = renderBorderWidth;
+			faceCtx.fill();
+			faceCtx.stroke();
+			
+		} else {
+			faceCtx.arc(
+				center,
+				center,
+				defaultSize/2,
+				0,
+				2 * Math.PI,
+				false
+			);
+			faceCtx.fill();
+		}
+		
+		faceCtx.restore();
+	}
+		
+	// Render five minute steps
+	function renderFiveMinuteSteps(){
+		faceCtx.translate(
+			center,
+			center
+		);
+		
+		for(var i = 0; i < 12; i++){
+			faceCtx.save();
+			faceCtx.translate(
+				defaultSize/2 - fiveMinuteStepLength/2 - stepPadding,
+				0
+			);
+			
+			faceCtx.fillRect(
+				0-fiveMinuteStepLength/2,
+				0-fiveMinuteStepWidth/2,
+				fiveMinuteStepLength,
+				fiveMinuteStepWidth
+			);
+			faceCtx.restore();
+	  
+			faceCtx.rotate(Math.PI / 6);
+		}
+	}
+		
+	// Render minute steps
+	function renderMinuteSteps(){
+		for(var i = 0; i < 60; i++){
+			if(i%5 != 0){
+				faceCtx.save();
+				faceCtx.translate(
+					defaultSize/2 - minuteStepLength/2 - stepPadding,
+					0
+				);
+				
+				faceCtx.fillRect(
+					0-minuteStepLength/2,
+					0-minuteStepWidth/2,
+					minuteStepLength,
+					minuteStepWidth
+				);
+				faceCtx.restore();
+			}
+			faceCtx.rotate(Math.PI / 30);
+		}
+	}
+		
+	// Display on visible canvas
+	function render(){
+		
+		var currentdate = new Date(Date.now() + timeOffset); 
+		var currentMinute = currentdate.getMinutes();
+		var currentSecond = currentdate.getSeconds();
+		var currentMillisecond = currentSecond*1000 + currentdate.getMilliseconds() + (performance.now()%1);
+		var currentHour = currentdate.getHours()*3600 + currentMinute*60 + currentSecond;
+		
+		handsCtx.clearRect(0, 0, handsCanvas.width, handsCanvas.height);
+		
+		handsCtx.save();
+		handsCtx.scale(scaleFactor, scaleFactor);
+		handsCtx.translate(center, center);
+		
+		handsCtx.lineWidth = 1/scaleFactor;
+		
+		renderHourHand();
+		renderMinutesHand();
+		renderSecondsHand();
+		
+		handsCtx.restore();
+		
+		function renderSecondsHand(){
+			handsCtx.save();
+		
+			var secondsDegree = (currentMillisecond/(60000 - minuteGap)) * 2 * Math.PI;
+			if(secondsDegree > 2*Math.PI){
+				secondsDegree = 2*Math.PI;
+			}
+			
+			handsCtx.rotate(secondsDegree + 1.5*Math.PI);
+		
+			handsCtx.fillStyle = secondsColor;
+			
+			handsCtx.beginPath();
+			
+			handsCtx.rect(
+				-secondsHandPivot,
+				-secondsHandWidth/2,
+				 secondsHandLength-secondsHandRadius,
+				 secondsHandWidth
+			);
+			
+			handsCtx.moveTo(
+				secondsHandLength - secondsHandPivot,
+				0
+			);
+			handsCtx.arc(
+				secondsHandLength - secondsHandRadius - secondsHandPivot,
+				0,
+				secondsHandRadius,
+				0,
+				2 * Math.PI,
+				false
+			);
+			handsCtx.fill();
+			handsCtx.restore();
+		}
+		
+		function renderMinutesHand(){
+			handsCtx.save();
+			
+			var minutesDegree = currentMinute/60 * 2*Math.PI;
+
+			if(currentMillisecond < minuteHandJumpDuration){
+				minutesDegree = minutesDegree
+					- (1/60*2*Math.PI)
+					+ (1/60*2*Math.PI)
+					*(
+						1 - Math.pow(
+							(0-currentMillisecond+minuteHandJumpDuration)
+							/minuteHandJumpDuration
+						, 20)
+						*Math.cos(currentMillisecond*(0.03))
+				);
+			}
+			
+			handsCtx.rotate(minutesDegree + 1.5*Math.PI);
+			
+			handsCtx.fillStyle = foregroundColor;
+			handsCtx.beginPath();
+			handsCtx.moveTo(
+				-minuteHandPivot,
+				-minuteHandInnerWidth/2
+			);
+			handsCtx.lineTo(
+				minuteHandLength - minuteHandPivot,
+				-minuteHandOuterWidth/2
+			);
+			handsCtx.lineTo(
+				minuteHandLength - minuteHandPivot,
+				minuteHandOuterWidth/2
+			);
+			handsCtx.lineTo(
+				-minuteHandPivot,
+				minuteHandInnerWidth/2
+			);
+			handsCtx.closePath();
+			
+			handsCtx.fill();
+			
+			handsCtx.restore();
+		}
+		
+		function renderHourHand(){
+			handsCtx.save();
+			
+			var hoursDegree = currentHour/(12*3600) * 2*Math.PI;
+			
+			handsCtx.rotate(hoursDegree + 1.5*Math.PI);
+			
+			handsCtx.fillStyle = foregroundColor;
+			handsCtx.beginPath();
+			handsCtx.moveTo(
+				-hourHandPivot,
+				-hourHandInnerWidth/2
+			);
+			handsCtx.lineTo(
+				hourHandLength - hourHandPivot,
+				-hourHandOuterWidth/2
+			);
+			handsCtx.lineTo(
+				hourHandLength - hourHandPivot,
+				hourHandOuterWidth/2
+			);
+			handsCtx.lineTo(
+				-hourHandPivot,
+				hourHandInnerWidth/2
+			);
+			handsCtx.closePath();
+			
+			handsCtx.fill();
+			
+			handsCtx.restore();
+		}
+
+	}
+	
+	function animationLoop(){
+		render();
+		requestAnimationFrame(animationLoop);
+	};
+
+	return {
+		/* Fit clock to container size */
+		scale: scale
+
+		/* Set time to be displayed, in milliseconds since January 1, 1970, 00:00:00 UTC */
+		,setTime: setTime
+	};
+	
+}
diff --git a/WebSites/errors/403/js/freeboard.js b/WebSites/errors/403/js/freeboard.js
new file mode 100644
index 0000000..b7986a3
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.js
@@ -0,0 +1,3027 @@
+DatasourceModel = function(theFreeboardModel, datasourcePlugins) {
+	var self = this;
+
+	function disposeDatasourceInstance()
+	{
+		if(!_.isUndefined(self.datasourceInstance))
+		{
+			if(_.isFunction(self.datasourceInstance.onDispose))
+			{
+				self.datasourceInstance.onDispose();
+			}
+
+			self.datasourceInstance = undefined;
+		}
+	}
+
+	this.name = ko.observable();
+	this.latestData = ko.observable();
+	this.settings = ko.observable({});
+	this.settings.subscribe(function(newValue)
+	{
+		if(!_.isUndefined(self.datasourceInstance) && _.isFunction(self.datasourceInstance.onSettingsChanged))
+		{
+			self.datasourceInstance.onSettingsChanged(newValue);
+		}
+	});
+
+	this.updateCallback = function(newData)
+	{
+		theFreeboardModel.processDatasourceUpdate(self, newData);
+
+		self.latestData(newData);
+
+		var now = new Date();
+		self.last_updated(now.toLocaleTimeString());
+	}
+
+	this.type = ko.observable();
+	this.type.subscribe(function(newValue)
+	{
+		disposeDatasourceInstance();
+
+		if((newValue in datasourcePlugins) && _.isFunction(datasourcePlugins[newValue].newInstance))
+		{
+			var datasourceType = datasourcePlugins[newValue];
+
+			function finishLoad()
+			{
+				datasourceType.newInstance(self.settings(), function(datasourceInstance)
+				{
+
+					self.datasourceInstance = datasourceInstance;
+					datasourceInstance.updateNow();
+
+				}, self.updateCallback);
+			}
+
+			// Do we need to load any external scripts?
+			if(datasourceType.external_scripts)
+			{
+				head.js(datasourceType.external_scripts.slice(0), finishLoad); // Need to clone the array because head.js adds some weird functions to it
+			}
+			else
+			{
+				finishLoad();
+			}
+		}
+	});
+
+	this.last_updated = ko.observable("never");
+	this.last_error = ko.observable();
+
+	this.serialize = function()
+	{
+		return {
+			name    : self.name(),
+			type    : self.type(),
+			settings: self.settings()
+		};
+	}
+
+	this.deserialize = function(object)
+	{
+		self.settings(object.settings);
+		self.name(object.name);
+		self.type(object.type);
+	}
+
+	this.getDataRepresentation = function(dataPath)
+	{
+		var valueFunction = new Function("data", "return " + dataPath + ";");
+		return valueFunction.call(undefined, self.latestData());
+	}
+
+	this.updateNow = function()
+	{
+		if(!_.isUndefined(self.datasourceInstance) && _.isFunction(self.datasourceInstance.updateNow))
+		{
+			self.datasourceInstance.updateNow();
+		}
+	}
+
+	this.dispose = function()
+	{
+		disposeDatasourceInstance();
+	}
+}
+
+DeveloperConsole = function(theFreeboardModel)
+{
+	function showDeveloperConsole()
+	{
+		var pluginScriptsInputs = [];
+		var container = $('<div></div>');
+		var addScript = $('<div class="table-operation text-button">ADD</div>');
+		var table = $('<table class="table table-condensed sub-table"></table>');
+
+		table.append($('<thead style=""><tr><th>Plugin Script URL</th></tr></thead>'));
+
+		var tableBody = $("<tbody></tbody>");
+
+		table.append(tableBody);
+
+		container.append($("<p>Here you can add references to other scripts to load datasource or widget plugins.</p>"))
+			.append(table)
+			.append(addScript)
+            .append('<p>To learn how to build plugins for freeboard, please visit <a target="_blank" href="http://freeboard.github.io/freeboard/docs/plugin_example.html">http://freeboard.github.io/freeboard/docs/plugin_example.html</a></p>');
+
+		function refreshScript(scriptURL)
+		{
+			$('script[src="' + scriptURL + '"]').remove();
+		}
+
+		function addNewScriptRow(scriptURL)
+		{
+			var tableRow = $('<tr></tr>');
+			var tableOperations = $('<ul class="board-toolbar"></ul>');
+			var scriptInput = $('<input class="table-row-value" style="width:100%;" type="text">');
+			var deleteOperation = $('<li><i class="icon-trash icon-white"></i></li>').click(function(e){
+				pluginScriptsInputs = _.without(pluginScriptsInputs, scriptInput);
+				tableRow.remove();
+			});
+
+			pluginScriptsInputs.push(scriptInput);
+
+			if(scriptURL)
+			{
+				scriptInput.val(scriptURL);
+			}
+
+			tableOperations.append(deleteOperation);
+			tableBody
+				.append(tableRow
+				.append($('<td></td>').append(scriptInput))
+					.append($('<td class="table-row-operation">').append(tableOperations)));
+		}
+
+		_.each(theFreeboardModel.plugins(), function(pluginSource){
+
+			addNewScriptRow(pluginSource);
+
+		});
+
+		addScript.click(function(e)
+		{
+			addNewScriptRow();
+		});
+
+		new DialogBox(container, "Developer Console", "OK", null, function(){
+
+			// Unload our previous scripts
+			_.each(theFreeboardModel.plugins(), function(pluginSource){
+
+				$('script[src^="' + pluginSource + '"]').remove();
+
+			});
+
+			theFreeboardModel.plugins.removeAll();
+
+			_.each(pluginScriptsInputs, function(scriptInput){
+
+				var scriptURL = scriptInput.val();
+
+				if(scriptURL && scriptURL.length > 0)
+				{
+					theFreeboardModel.addPluginSource(scriptURL);
+
+					// Load the script with a cache buster
+					head.js(scriptURL + "?" + Date.now());
+				}
+			});
+
+		});
+	}
+
+	// Public API
+	return {
+		showDeveloperConsole : function()
+		{
+			showDeveloperConsole();
+		}
+	}
+}
+
+function DialogBox(contentElement, title, okTitle, cancelTitle, okCallback)
+{
+	var modal_width = 900;
+
+	// Initialize our modal overlay
+	var overlay = $('<div id="modal_overlay" style="display:none;"></div>');
+
+	var modalDialog = $('<div class="modal"></div>');
+
+	function closeModal()
+	{
+		overlay.fadeOut(200, function()
+		{
+			$(this).remove();
+		});
+	}
+
+	// Create our header
+	modalDialog.append('<header><h2 class="title">' + title + "</h2></header>");
+
+	$('<section></section>').appendTo(modalDialog).append(contentElement);
+
+	// Create our footer
+	var footer = $('<footer></footer>').appendTo(modalDialog);
+
+	if(okTitle)
+	{
+		$('<span id="dialog-ok" class="text-button">' + okTitle + '</span>').appendTo(footer).click(function()
+		{
+			var hold = false;
+
+			if(_.isFunction(okCallback))
+			{
+				hold = okCallback();
+			}
+
+			if(!hold)
+			{
+				closeModal();
+			}
+		});
+	}
+
+	if(cancelTitle)
+	{
+		$('<span id="dialog-cancel" class="text-button">' + cancelTitle + '</span>').appendTo(footer).click(function()
+		{
+			closeModal();
+		});
+	}
+
+	overlay.append(modalDialog);
+	$("body").append(overlay);
+	overlay.fadeIn(200);
+}
+
+function FreeboardModel(datasourcePlugins, widgetPlugins, freeboardUI)
+{
+	var self = this;
+
+	var SERIALIZATION_VERSION = 1;
+
+	this.version = 0;
+	this.isEditing = ko.observable(false);
+	this.allow_edit = ko.observable(false);
+	this.allow_edit.subscribe(function(newValue)
+	{
+		if(newValue)
+		{
+			$("#main-header").show();
+		}
+		else
+		{
+			$("#main-header").hide();
+		}
+	});
+
+	this.header_image = ko.observable();
+	this.plugins = ko.observableArray();
+	this.datasources = ko.observableArray();
+	this.panes = ko.observableArray();
+	this.datasourceData = {};
+	this.processDatasourceUpdate = function(datasourceModel, newData)
+	{
+		var datasourceName = datasourceModel.name();
+
+		self.datasourceData[datasourceName] = newData;
+
+		_.each(self.panes(), function(pane)
+		{
+			_.each(pane.widgets(), function(widget)
+			{
+				widget.processDatasourceUpdate(datasourceName);
+			});
+		});
+	}
+
+	this._datasourceTypes = ko.observable();
+	this.datasourceTypes = ko.computed({
+		read: function()
+		{
+			self._datasourceTypes();
+
+			var returnTypes = [];
+
+			_.each(datasourcePlugins, function(datasourcePluginType)
+			{
+				var typeName = datasourcePluginType.type_name;
+				var displayName = typeName;
+
+				if(!_.isUndefined(datasourcePluginType.display_name))
+				{
+					displayName = datasourcePluginType.display_name;
+				}
+
+				returnTypes.push({
+					name        : typeName,
+					display_name: displayName
+				});
+			});
+
+			return returnTypes;
+		}
+	});
+
+	this._widgetTypes = ko.observable();
+	this.widgetTypes = ko.computed({
+		read: function()
+		{
+			self._widgetTypes();
+
+			var returnTypes = [];
+
+			_.each(widgetPlugins, function(widgetPluginType)
+			{
+				var typeName = widgetPluginType.type_name;
+				var displayName = typeName;
+
+				if(!_.isUndefined(widgetPluginType.display_name))
+				{
+					displayName = widgetPluginType.display_name;
+				}
+
+				returnTypes.push({
+					name        : typeName,
+					display_name: displayName
+				});
+			});
+
+			return returnTypes;
+		}
+	});
+
+	this.addPluginSource = function(pluginSource)
+	{
+		if(pluginSource && self.plugins.indexOf(pluginSource) == -1)
+		{
+			self.plugins.push(pluginSource);
+		}
+	}
+
+	this.serialize = function()
+	{
+		var panes = [];
+
+		_.each(self.panes(), function(pane)
+		{
+			panes.push(pane.serialize());
+		});
+
+		var datasources = [];
+
+		_.each(self.datasources(), function(datasource)
+		{
+			datasources.push(datasource.serialize());
+		});
+
+		return {
+			version     : SERIALIZATION_VERSION,
+			header_image: self.header_image(),
+			allow_edit  : self.allow_edit(),
+			plugins     : self.plugins(),
+			panes       : panes,
+			datasources : datasources,
+			columns     : freeboardUI.getUserColumns()
+		};
+	}
+
+	this.deserialize = function(object, finishedCallback)
+	{
+		self.clearDashboard();
+
+		function finishLoad()
+		{
+			freeboardUI.setUserColumns(object.columns);
+
+			if(!_.isUndefined(object.allow_edit))
+			{
+				self.allow_edit(object.allow_edit);
+			}
+			else
+			{
+				self.allow_edit(true);
+			}
+			self.version = object.version || 0;
+			self.header_image(object.header_image);
+
+			_.each(object.datasources, function(datasourceConfig)
+			{
+				var datasource = new DatasourceModel(self, datasourcePlugins);
+				datasource.deserialize(datasourceConfig);
+				self.addDatasource(datasource);
+			});
+
+			var sortedPanes = _.sortBy(object.panes, function(pane){
+				return freeboardUI.getPositionForScreenSize(pane).row;
+			});
+
+			_.each(sortedPanes, function(paneConfig)
+			{
+				var pane = new PaneModel(self, widgetPlugins);
+				pane.deserialize(paneConfig);
+				self.panes.push(pane);
+			});
+
+			if(self.allow_edit() && self.panes().length == 0)
+			{
+				self.setEditing(true);
+			}
+
+			if(_.isFunction(finishedCallback))
+			{
+				finishedCallback();
+			}
+
+			freeboardUI.processResize(true);
+		}
+
+		// This could have been self.plugins(object.plugins), but for some weird reason head.js was causing a function to be added to the list of plugins.
+		_.each(object.plugins, function(plugin)
+		{
+			self.addPluginSource(plugin);
+		});
+
+		// Load any plugins referenced in this definition
+		if(_.isArray(object.plugins) && object.plugins.length > 0)
+		{
+			head.js(object.plugins, function()
+			{
+				finishLoad();
+			});
+		}
+		else
+		{
+			finishLoad();
+		}
+	}
+
+	this.clearDashboard = function()
+	{
+		freeboardUI.removeAllPanes();
+
+		_.each(self.datasources(), function(datasource)
+		{
+			datasource.dispose();
+		});
+
+		_.each(self.panes(), function(pane)
+		{
+			pane.dispose();
+		});
+
+		self.plugins.removeAll();
+		self.datasources.removeAll();
+		self.panes.removeAll();
+	}
+
+	this.loadDashboard = function(dashboardData, callback)
+	{
+		freeboardUI.showLoadingIndicator(true);
+		self.deserialize(dashboardData, function()
+		{
+			freeboardUI.showLoadingIndicator(false);
+
+			if(_.isFunction(callback))
+			{
+				callback();
+			}
+
+        freeboard.emit("dashboard_loaded");
+		});
+	}
+
+	this.loadDashboardFromLocalFile = function()
+	{
+		// Check for the various File API support.
+		if(window.File && window.FileReader && window.FileList && window.Blob)
+		{
+			var input = document.createElement('input');
+			input.type = "file";
+			$(input).on("change", function(event)
+			{
+				var files = event.target.files;
+
+				if(files && files.length > 0)
+				{
+					var file = files[0];
+					var reader = new FileReader();
+
+					reader.addEventListener("load", function(fileReaderEvent)
+					{
+
+						var textFile = fileReaderEvent.target;
+						var jsonObject = JSON.parse(textFile.result);
+
+
+						self.loadDashboard(jsonObject);
+						self.setEditing(false);
+					});
+
+					reader.readAsText(file);
+				}
+
+			});
+			$(input).trigger("click");
+		}
+		else
+		{
+			alert('Unable to load a file in this browser.');
+		}
+	}
+
+	this.saveDashboardClicked = function(){
+		var target = $(event.currentTarget);
+		var siblingsShown = target.data('siblings-shown') || false;
+		if(!siblingsShown){
+			$(event.currentTarget).siblings('label').fadeIn('slow');
+		}else{
+			$(event.currentTarget).siblings('label').fadeOut('slow');
+		}
+		target.data('siblings-shown', !siblingsShown);
+	}
+
+	this.saveDashboard = function(_thisref, event)
+	{
+		var pretty = $(event.currentTarget).data('pretty');
+		var contentType = 'application/octet-stream';
+		var a = document.createElement('a');
+		if(pretty){
+			var blob = new Blob([JSON.stringify(self.serialize(), null, '\t')], {'type': contentType});
+		}else{
+			var blob = new Blob([JSON.stringify(self.serialize())], {'type': contentType});
+		}
+		document.body.appendChild(a);
+		a.href = window.URL.createObjectURL(blob);
+		a.download = "dashboard.json";
+		a.target="_self";
+		a.click();
+	}
+
+	this.addDatasource = function(datasource)
+	{
+		self.datasources.push(datasource);
+	}
+
+	this.deleteDatasource = function(datasource)
+	{
+		delete self.datasourceData[datasource.name()];
+		datasource.dispose();
+		self.datasources.remove(datasource);
+	}
+
+	this.createPane = function()
+	{
+		var newPane = new PaneModel(self, widgetPlugins);
+		self.addPane(newPane);
+	}
+
+	this.addGridColumnLeft = function()
+	{
+		freeboardUI.addGridColumnLeft();
+	}
+
+	this.addGridColumnRight = function()
+	{
+		freeboardUI.addGridColumnRight();
+	}
+
+	this.subGridColumnLeft = function()
+	{
+		freeboardUI.subGridColumnLeft();
+	}
+
+	this.subGridColumnRight = function()
+	{
+		freeboardUI.subGridColumnRight();
+	}
+
+	this.addPane = function(pane)
+	{
+		self.panes.push(pane);
+	}
+
+	this.deletePane = function(pane)
+	{
+		pane.dispose();
+		self.panes.remove(pane);
+	}
+
+	this.deleteWidget = function(widget)
+	{
+		ko.utils.arrayForEach(self.panes(), function(pane)
+		{
+			pane.widgets.remove(widget);
+		});
+
+		widget.dispose();
+	}
+
+	this.setEditing = function(editing, animate)
+	{
+		// Don't allow editing if it's not allowed
+		if(!self.allow_edit() && editing)
+		{
+			return;
+		}
+
+		self.isEditing(editing);
+
+		if(_.isUndefined(animate))
+		{
+			animate = true;
+		}
+
+		var animateLength = (animate) ? 250 : 0;
+		var barHeight = $("#admin-bar").outerHeight();
+
+		if(!editing)
+		{
+			$("#toggle-header-icon").addClass("icon-wrench").removeClass("icon-chevron-up");
+			$(".gridster .gs_w").css({cursor: "default"});
+			$("#main-header").animate({"top": "-" + barHeight + "px"}, animateLength);
+			$("#board-content").animate({"top": "20"}, animateLength);
+			$("#main-header").data().shown = false;
+			$(".sub-section").unbind();
+			freeboardUI.disableGrid();
+		}
+		else
+		{
+			$("#toggle-header-icon").addClass("icon-chevron-up").removeClass("icon-wrench");
+			$(".gridster .gs_w").css({cursor: "pointer"});
+			$("#main-header").animate({"top": "0px"}, animateLength);
+			$("#board-content").animate({"top": (barHeight + 20) + "px"}, animateLength);
+			$("#main-header").data().shown = true;
+			freeboardUI.attachWidgetEditIcons($(".sub-section"));
+			freeboardUI.enableGrid();
+		}
+
+		freeboardUI.showPaneEditIcons(editing, animate);
+	}
+
+	this.toggleEditing = function()
+	{
+		var editing = !self.isEditing();
+		self.setEditing(editing);
+	}
+}
+
+function FreeboardUI()
+{
+	var PANE_MARGIN = 10;
+	var PANE_WIDTH = 300;
+	var MIN_COLUMNS = 3;
+	var COLUMN_WIDTH = PANE_MARGIN + PANE_WIDTH + PANE_MARGIN;
+
+	var userColumns = MIN_COLUMNS;
+
+	var loadingIndicator = $('<div class="wrapperloading"><div class="loading up" ></div><div class="loading down"></div></div>');
+	var grid;
+
+	function processResize(layoutWidgets)
+	{
+		var maxDisplayableColumns = getMaxDisplayableColumnCount();
+		var repositionFunction = function(){};
+		if(layoutWidgets)
+		{
+			repositionFunction = function(index)
+			{
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var newPosition = getPositionForScreenSize(paneModel);
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(),
+					maxDisplayableColumns, grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+
+				paneModel.processSizeChange();
+			}
+		}
+
+		updateGridWidth(Math.min(maxDisplayableColumns, userColumns));
+
+		repositionGrid(repositionFunction);
+		updateGridColumnControls();
+	}
+
+	function addGridColumn(shift)
+	{
+		var num_cols = grid.cols + 1;
+		if(updateGridWidth(num_cols))
+		{
+			repositionGrid(function() {
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var prevColumnIndex = grid.cols > 1 ? grid.cols - 1 : 1;
+				var prevCol = paneModel.col[prevColumnIndex];
+				var prevRow = paneModel.row[prevColumnIndex];
+				var newPosition;
+				if(shift)
+				{
+					leftPreviewCol = true;
+					var newCol = prevCol < grid.cols ? prevCol + 1 : grid.cols;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				else
+				{
+					rightPreviewCol = true;
+					newPosition = {row: prevRow, col: prevCol};
+				}
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(), grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+			});
+		}
+		updateGridColumnControls();
+		userColumns = grid.cols;
+	}
+
+	function subtractGridColumn(shift)
+	{
+		var num_cols = grid.cols - 1;
+		if(updateGridWidth(num_cols))
+		{
+			repositionGrid(function() {
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var prevColumnIndex = grid.cols + 1;
+				var prevCol = paneModel.col[prevColumnIndex];
+				var prevRow = paneModel.row[prevColumnIndex];
+				var newPosition;
+				if(shift)
+				{
+					var newCol = prevCol > 1 ? prevCol - 1 : 1;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				else
+				{
+					var newCol = prevCol <= grid.cols ? prevCol : grid.cols;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(), grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+			});
+		}
+		updateGridColumnControls();
+		userColumns = grid.cols;
+	}
+
+	function updateGridColumnControls()
+	{
+		var col_controls = $(".column-tool");
+		var available_width = $("#board-content").width();
+		var max_columns = Math.floor(available_width / COLUMN_WIDTH);
+
+		if(grid.cols <= MIN_COLUMNS)
+		{
+			col_controls.addClass("min");
+		}
+		else
+		{
+			col_controls.removeClass("min");
+		}
+
+		if(grid.cols >= max_columns)
+		{
+			col_controls.addClass("max");
+		}
+		else
+		{
+			col_controls.removeClass("max");
+		}
+	}
+
+	function getMaxDisplayableColumnCount()
+	{
+		var available_width = $("#board-content").width();
+		return Math.floor(available_width / COLUMN_WIDTH);
+	}
+
+	function updateGridWidth(newCols)
+	{
+		if(newCols === undefined || newCols < MIN_COLUMNS)
+		{
+			newCols = MIN_COLUMNS;
+		}
+
+		var max_columns = getMaxDisplayableColumnCount();
+		if(newCols > max_columns)
+		{
+			newCols = max_columns;
+		}
+
+		// +newCols to account for scaling on zoomed browsers
+		var new_width = (COLUMN_WIDTH * newCols) + newCols;
+		$(".responsive-column-width").css("max-width", new_width);
+
+		if(newCols === grid.cols)
+		{
+			return false; 
+		}
+		else
+		{
+			return true;
+		}
+	}
+
+	function repositionGrid(repositionFunction)
+	{
+		var rootElement = grid.$el;
+
+		rootElement.find("> li").unbind().removeData();
+		$(".responsive-column-width").css("width", "");
+		grid.generate_grid_and_stylesheet();
+
+		rootElement.find("> li").each(repositionFunction);
+
+		grid.init();
+		$(".responsive-column-width").css("width", grid.cols * PANE_WIDTH + (grid.cols * PANE_MARGIN * 2));
+	}
+
+	function getUserColumns()
+	{
+		return userColumns;
+	}
+
+	function setUserColumns(numCols)
+	{
+		userColumns = Math.max(MIN_COLUMNS, numCols);
+	}
+
+	ko.bindingHandlers.grid = {
+		init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			// Initialize our grid
+			grid = $(element).gridster({
+				widget_margins        : [PANE_MARGIN, PANE_MARGIN],
+				widget_base_dimensions: [PANE_WIDTH, 10],
+				resize: {
+					enabled : false,
+					axes : "x"
+				}
+			}).data("gridster");
+
+			processResize(false)
+
+			grid.disable();
+		}
+	}
+
+	function addPane(element, viewModel, isEditing)
+	{
+		var position = getPositionForScreenSize(viewModel);
+		var col = position.col;
+		var row = position.row;
+		var width = Number(viewModel.width());
+		var height = Number(viewModel.getCalculatedHeight());
+
+		grid.add_widget(element, width, height, col, row);
+
+		if(isEditing)
+		{
+			showPaneEditIcons(true);
+		}
+
+		updatePositionForScreenSize(viewModel, row, col);
+
+		$(element).attrchange({
+			trackValues: true,
+			callback   : function(event)
+			{
+				if(event.attributeName == "data-row")
+				{
+                    updatePositionForScreenSize(viewModel, Number(event.newValue), undefined);
+				}
+				else if(event.attributeName == "data-col")
+				{
+                    updatePositionForScreenSize(viewModel, undefined, Number(event.newValue));
+				}
+			}
+		});
+	}
+
+	function updatePane(element, viewModel)
+	{
+		// If widget has been added or removed
+		var calculatedHeight = viewModel.getCalculatedHeight();
+
+		var elementHeight = Number($(element).attr("data-sizey"));
+		var elementWidth = Number($(element).attr("data-sizex"));
+
+		if(calculatedHeight != elementHeight || viewModel.col_width() !=  elementWidth)
+		{
+			grid.resize_widget($(element), viewModel.col_width(), calculatedHeight, function(){
+				grid.set_dom_grid_height();
+			});
+		}
+	}
+
+	function updatePositionForScreenSize(paneModel, row, col)
+	{
+		var displayCols = grid.cols;
+
+		if(!_.isUndefined(row)) paneModel.row[displayCols] = row;
+		if(!_.isUndefined(col)) paneModel.col[displayCols] = col;
+	}
+
+	function showLoadingIndicator(show)
+	{
+		if(show)
+		{
+			loadingIndicator.fadeOut(0).appendTo("body").fadeIn(500);
+		}
+		else
+		{
+	    		loadingIndicator.fadeOut(500).remove();
+		}
+	}
+
+	function showPaneEditIcons(show, animate)
+	{
+		if(_.isUndefined(animate))
+		{
+			animate = true;
+		}
+
+		var animateLength = (animate) ? 250 : 0;
+
+		if(show)
+		{
+			$(".pane-tools").fadeIn(animateLength);//.css("display", "block").animate({opacity: 1.0}, animateLength);
+			$("#column-tools").fadeIn(animateLength);
+		}
+		else
+		{
+			$(".pane-tools").fadeOut(animateLength);//.animate({opacity: 0.0}, animateLength).css("display", "none");//, function()
+			$("#column-tools").fadeOut(animateLength);
+		}
+	}
+
+	function attachWidgetEditIcons(element)
+	{
+		$(element).hover(function()
+		{
+			showWidgetEditIcons(this, true);
+		}, function()
+		{
+			showWidgetEditIcons(this, false);
+		});
+	}
+
+	function showWidgetEditIcons(element, show)
+	{
+		if(show)
+		{
+			$(element).find(".sub-section-tools").fadeIn(250);
+		}
+		else
+		{
+			$(element).find(".sub-section-tools").fadeOut(250);
+		}
+	}
+
+	function getPositionForScreenSize(paneModel)
+	{
+		var cols = grid.cols;
+
+		if(_.isNumber(paneModel.row) && _.isNumber(paneModel.col)) // Support for legacy format
+		{
+			var obj = {};
+			obj[cols] = paneModel.row;
+			paneModel.row = obj;
+
+
+			obj = {};
+			obj[cols] = paneModel.col;
+			paneModel.col = obj;
+		}
+
+		var newColumnIndex = 1;
+		var columnDiff = 1000;
+
+		for(var columnIndex in paneModel.col)
+		{
+			if(columnIndex == cols)	 // If we already have a position defined for this number of columns, return that position
+			{
+				return {row: paneModel.row[columnIndex], col: paneModel.col[columnIndex]};
+			}
+			else if(paneModel.col[columnIndex] > cols) // If it's greater than our display columns, put it in the last column
+			{
+				newColumnIndex = cols;
+			}
+			else // If it's less than, pick whichever one is closest
+			{
+				var delta = cols - columnIndex;
+
+				if(delta < columnDiff)
+				{
+					newColumnIndex = columnIndex;
+					columnDiff = delta;
+				}
+			}
+		}
+
+		if(newColumnIndex in paneModel.col && newColumnIndex in paneModel.row)
+		{
+			return {row: paneModel.row[newColumnIndex], col: paneModel.col[newColumnIndex]};
+		}
+
+		return {row:1,col:newColumnIndex};
+	}
+
+
+	// Public Functions
+	return {
+		showLoadingIndicator : function(show)
+		{
+			showLoadingIndicator(show);
+		},
+		showPaneEditIcons : function(show, animate)
+		{
+			showPaneEditIcons(show, animate);
+		},
+		attachWidgetEditIcons : function(element)
+		{
+			attachWidgetEditIcons(element);
+		},
+		getPositionForScreenSize : function(paneModel)
+		{
+			return getPositionForScreenSize(paneModel);
+		},
+		processResize : function(layoutWidgets)
+		{
+			processResize(layoutWidgets);
+		},
+		disableGrid : function()
+		{
+			grid.disable();
+		},
+		enableGrid : function()
+		{
+			grid.enable();
+		},
+		addPane : function(element, viewModel, isEditing)
+		{
+			addPane(element, viewModel, isEditing);
+		},
+		updatePane : function(element, viewModel)
+		{
+			updatePane(element, viewModel);
+		},
+		removePane : function(element)
+		{
+			grid.remove_widget(element);
+		},
+		removeAllPanes : function()
+		{
+			grid.remove_all_widgets();
+		},
+		addGridColumnLeft : function()
+		{
+			addGridColumn(true);
+		},
+		addGridColumnRight : function()
+		{
+			addGridColumn(false);
+		},
+		subGridColumnLeft : function()
+		{
+			subtractGridColumn(true);
+		},
+		subGridColumnRight : function()
+		{
+			subtractGridColumn(false);
+		},
+		getUserColumns : function()
+		{
+			return getUserColumns();
+		},
+		setUserColumns : function(numCols)
+		{
+			setUserColumns(numCols);
+		}
+	}
+}
+
+JSEditor = function () {
+	var assetRoot = ""
+
+	function setAssetRoot(_assetRoot) {
+		assetRoot = _assetRoot;
+	}
+
+	function displayJSEditor(value, callback) {
+
+		var exampleText = "// Example: Convert temp from C to F and truncate to 2 decimal places.\n// return (datasources[\"MyDatasource\"].sensor.tempInF * 1.8 + 32).toFixed(2);";
+
+		// If value is empty, go ahead and suggest something
+		if (!value) {
+			value = exampleText;
+		}
+
+		var codeWindow = $('<div class="code-window"></div>');
+		var codeMirrorWrapper = $('<div class="code-mirror-wrapper"></div>');
+		var codeWindowFooter = $('<div class="code-window-footer"></div>');
+		var codeWindowHeader = $('<div class="code-window-header cm-s-ambiance">This javascript will be re-evaluated any time a datasource referenced here is updated, and the value you <code><span class="cm-keyword">return</span></code> will be displayed in the widget. You can assume this javascript is wrapped in a function of the form <code><span class="cm-keyword">function</span>(<span class="cm-def">datasources</span>)</code> where datasources is a collection of javascript objects (keyed by their name) corresponding to the most current data in a datasource.</div>');
+
+		codeWindow.append([codeWindowHeader, codeMirrorWrapper, codeWindowFooter]);
+
+		$("body").append(codeWindow);
+
+		var codeMirrorEditor = CodeMirror(codeMirrorWrapper.get(0),
+			{
+				value: value,
+				mode: "javascript",
+				theme: "ambiance",
+				indentUnit: 4,
+				lineNumbers: true,
+				matchBrackets: true,
+				autoCloseBrackets: true
+			}
+		);
+
+		var closeButton = $('<span id="dialog-cancel" class="text-button">Close</span>').click(function () {
+			if (callback) {
+				var newValue = codeMirrorEditor.getValue();
+
+				if (newValue === exampleText) {
+					newValue = "";
+				}
+
+				callback(newValue);
+				codeWindow.remove();
+			}
+		});
+
+		codeWindowFooter.append(closeButton);
+	}
+
+	// Public API
+	return {
+		displayJSEditor: function (value, callback) {
+			displayJSEditor(value, callback);
+		},
+		setAssetRoot: function (assetRoot) {
+			setAssetRoot(assetRoot)
+		}
+	}
+}
+
+function PaneModel(theFreeboardModel, widgetPlugins) {
+	var self = this;
+
+	this.title = ko.observable();
+	this.width = ko.observable(1);
+	this.row = {};
+	this.col = {};
+
+	this.col_width = ko.observable(1);
+	this.col_width.subscribe(function(newValue)
+	{
+		self.processSizeChange();
+	});
+
+	this.widgets = ko.observableArray();
+
+	this.addWidget = function (widget) {
+		this.widgets.push(widget);
+	}
+
+	this.widgetCanMoveUp = function (widget) {
+		return (self.widgets.indexOf(widget) >= 1);
+	}
+
+	this.widgetCanMoveDown = function (widget) {
+		var i = self.widgets.indexOf(widget);
+
+		return (i < self.widgets().length - 1);
+	}
+
+	this.moveWidgetUp = function (widget) {
+		if (self.widgetCanMoveUp(widget)) {
+			var i = self.widgets.indexOf(widget);
+			var array = self.widgets();
+			self.widgets.splice(i - 1, 2, array[i], array[i - 1]);
+		}
+	}
+
+	this.moveWidgetDown = function (widget) {
+		if (self.widgetCanMoveDown(widget)) {
+			var i = self.widgets.indexOf(widget);
+			var array = self.widgets();
+			self.widgets.splice(i, 2, array[i + 1], array[i]);
+		}
+	}
+
+	this.processSizeChange = function()
+	{
+		// Give the animation a moment to complete. Really hacky.
+		// TODO: Make less hacky. Also, doesn't work when screen resizes.
+		setTimeout(function(){
+			_.each(self.widgets(), function (widget) {
+				widget.processSizeChange();
+			});
+		}, 1000);
+	}
+
+	this.getCalculatedHeight = function () {
+		var sumHeights = _.reduce(self.widgets(), function (memo, widget) {
+			return memo + widget.height();
+		}, 0);
+
+		sumHeights *= 6;
+		sumHeights += 3;
+
+		sumHeights *= 10;
+
+		var rows = Math.ceil((sumHeights + 20) / 30);
+
+		return Math.max(4, rows);
+	}
+
+	this.serialize = function () {
+		var widgets = [];
+
+		_.each(self.widgets(), function (widget) {
+			widgets.push(widget.serialize());
+		});
+
+		return {
+			title: self.title(),
+			width: self.width(),
+			row: self.row,
+			col: self.col,
+			col_width: Number(self.col_width()),
+			widgets: widgets
+		};
+	}
+
+	this.deserialize = function (object) {
+		self.title(object.title);
+		self.width(object.width);
+
+		self.row = object.row;
+		self.col = object.col;
+		self.col_width(object.col_width || 1);
+
+		_.each(object.widgets, function (widgetConfig) {
+			var widget = new WidgetModel(theFreeboardModel, widgetPlugins);
+			widget.deserialize(widgetConfig);
+			self.widgets.push(widget);
+		});
+	}
+
+	this.dispose = function () {
+		_.each(self.widgets(), function (widget) {
+			widget.dispose();
+		});
+	}
+}
+
+PluginEditor = function(jsEditor, valueEditor)
+{
+	function _displayValidationError(settingName, errorMessage)
+	{
+		var errorElement = $('<div class="validation-error"></div>').html(errorMessage);
+		$("#setting-value-container-" + settingName).append(errorElement);
+	}
+
+	function _removeSettingsRows()
+	{
+		if($("#setting-row-instance-name").length)
+		{
+			$("#setting-row-instance-name").nextAll().remove();
+		}
+		else
+		{
+			$("#setting-row-plugin-types").nextAll().remove();
+		}
+	}
+
+	function _isNumerical(n)
+	{
+		return !isNaN(parseFloat(n)) && isFinite(n);
+	}
+
+	function _appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue, includeRemove)
+	{
+		var input = $('<textarea></textarea>');
+
+		if(settingDef.multi_input) {
+			input.change(function() {
+				var arrayInput = [];
+				$(valueCell).find('textarea').each(function() {
+					var thisVal = $(this).val();
+					if(thisVal) {
+						arrayInput = arrayInput.concat(thisVal);
+					}
+				});
+				newSettings.settings[settingDef.name] = arrayInput;
+			});
+		} else {
+			input.change(function() {
+				newSettings.settings[settingDef.name] = $(this).val();
+			});
+		}
+
+		if(currentValue) {
+			input.val(currentValue);
+		}
+
+		valueEditor.createValueEditor(input);
+
+		var datasourceToolbox = $('<ul class="board-toolbar datasource-input-suffix"></ul>');
+		var wrapperDiv = $('<div class="calculated-setting-row"></div>');
+		wrapperDiv.append(input).append(datasourceToolbox);
+
+		var datasourceTool = $('<li><i class="icon-plus icon-white"></i><label>DATASOURCE</label></li>')
+			.mousedown(function(e) {
+				e.preventDefault();
+				$(input).val("").focus().insertAtCaret("datasources[\"").trigger("freeboard-eval");
+			});
+		datasourceToolbox.append(datasourceTool);
+
+		var jsEditorTool = $('<li><i class="icon-fullscreen icon-white"></i><label>.JS EDITOR</label></li>')
+			.mousedown(function(e) {
+				e.preventDefault();
+				jsEditor.displayJSEditor(input.val(), function(result) {
+					input.val(result);
+					input.change();
+				});
+			});
+		datasourceToolbox.append(jsEditorTool);
+
+		if(includeRemove) {
+			var removeButton = $('<li class="remove-setting-row"><i class="icon-minus icon-white"></i><label></label></li>')
+				.mousedown(function(e) {
+					e.preventDefault();
+					wrapperDiv.remove();
+					$(valueCell).find('textarea:first').change();
+				});
+			datasourceToolbox.prepend(removeButton);
+		}
+
+		$(valueCell).append(wrapperDiv);
+	}
+
+	function createPluginEditor(title, pluginTypes, currentTypeName, currentSettingsValues, settingsSavedCallback)
+	{
+		var newSettings = {
+			type    : currentTypeName,
+			settings: {}
+		};
+
+		function createSettingRow(name, displayName)
+		{
+			var tr = $('<div id="setting-row-' + name + '" class="form-row"></div>').appendTo(form);
+
+			tr.append('<div class="form-label"><label class="control-label">' + displayName + '</label></div>');
+			return $('<div id="setting-value-container-' + name + '" class="form-value"></div>').appendTo(tr);
+		}
+
+		var selectedType;
+		var form = $('<div></div>');
+
+		var pluginDescriptionElement = $('<div id="plugin-description"></div>').hide();
+		form.append(pluginDescriptionElement);
+
+		function createSettingsFromDefinition(settingsDefs, typeaheadSource, typeaheadDataSegment)
+		{
+			_.each(settingsDefs, function(settingDef)
+			{
+				// Set a default value if one doesn't exist
+				if(!_.isUndefined(settingDef.default_value) && _.isUndefined(currentSettingsValues[settingDef.name]))
+				{
+					currentSettingsValues[settingDef.name] = settingDef.default_value;
+				}
+
+				var displayName = settingDef.name;
+
+				if(!_.isUndefined(settingDef.display_name))
+				{
+					displayName = settingDef.display_name;
+				}
+
+				var valueCell = createSettingRow(settingDef.name, displayName);
+
+				switch (settingDef.type)
+				{
+					case "array":
+					{
+						var subTableDiv = $('<div class="form-table-value-subtable"></div>').appendTo(valueCell);
+
+						var subTable = $('<table class="table table-condensed sub-table"></table>').appendTo(subTableDiv);
+						var subTableHead = $("<thead></thead>").hide().appendTo(subTable);
+						var subTableHeadRow = $("<tr></tr>").appendTo(subTableHead);
+						var subTableBody = $('<tbody></tbody>').appendTo(subTable);
+
+						var currentSubSettingValues = [];
+
+						// Create our headers
+						_.each(settingDef.settings, function(subSettingDef)
+						{
+							var subsettingDisplayName = subSettingDef.name;
+
+							if(!_.isUndefined(subSettingDef.display_name))
+							{
+								subsettingDisplayName = subSettingDef.display_name;
+							}
+
+							$('<th>' + subsettingDisplayName + '</th>').appendTo(subTableHeadRow);
+						});
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							currentSubSettingValues = currentSettingsValues[settingDef.name];
+						}
+
+						function processHeaderVisibility()
+						{
+							if(newSettings.settings[settingDef.name].length > 0)
+							{
+								subTableHead.show();
+							}
+							else
+							{
+								subTableHead.hide();
+							}
+						}
+
+						function createSubsettingRow(subsettingValue)
+						{
+							var subsettingRow = $('<tr></tr>').appendTo(subTableBody);
+
+							var newSetting = {};
+
+							if(!_.isArray(newSettings.settings[settingDef.name]))
+							{
+								newSettings.settings[settingDef.name] = [];
+							}
+
+							newSettings.settings[settingDef.name].push(newSetting);
+
+							_.each(settingDef.settings, function(subSettingDef)
+							{
+								var subsettingCol = $('<td></td>').appendTo(subsettingRow);
+								var subsettingValueString = "";
+
+								if(!_.isUndefined(subsettingValue[subSettingDef.name]))
+								{
+									subsettingValueString = subsettingValue[subSettingDef.name];
+								}
+
+								newSetting[subSettingDef.name] = subsettingValueString;
+
+								$('<input class="table-row-value" type="text">').appendTo(subsettingCol).val(subsettingValueString).change(function()
+								{
+									newSetting[subSettingDef.name] = $(this).val();
+								});
+							});
+
+							subsettingRow.append($('<td class="table-row-operation"></td>').append($('<ul class="board-toolbar"></ul>').append($('<li></li>').append($('<i class="icon-trash icon-white"></i>').click(function()
+							{
+								var subSettingIndex = newSettings.settings[settingDef.name].indexOf(newSetting);
+
+								if(subSettingIndex != -1)
+								{
+									newSettings.settings[settingDef.name].splice(subSettingIndex, 1);
+									subsettingRow.remove();
+									processHeaderVisibility();
+								}
+							})))));
+
+							subTableDiv.scrollTop(subTableDiv[0].scrollHeight);
+
+							processHeaderVisibility();
+						}
+
+						$('<div class="table-operation text-button">ADD</div>').appendTo(valueCell).click(function()
+						{
+							var newSubsettingValue = {};
+
+							_.each(settingDef.settings, function(subSettingDef)
+							{
+								newSubsettingValue[subSettingDef.name] = "";
+							});
+
+							createSubsettingRow(newSubsettingValue);
+						});
+
+						// Create our rows
+						_.each(currentSubSettingValues, function(currentSubSettingValue, subSettingIndex)
+						{
+							createSubsettingRow(currentSubSettingValue);
+						});
+
+						break;
+					}
+					case "boolean":
+					{
+						newSettings.settings[settingDef.name] = currentSettingsValues[settingDef.name];
+
+						var onOffSwitch = $('<div class="onoffswitch"><label class="onoffswitch-label" for="' + settingDef.name + '-onoff"><div class="onoffswitch-inner"><span class="on">YES</span><span class="off">NO</span></div><div class="onoffswitch-switch"></div></label></div>').appendTo(valueCell);
+
+						var input = $('<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="' + settingDef.name + '-onoff">').prependTo(onOffSwitch).change(function()
+						{
+							newSettings.settings[settingDef.name] = this.checked;
+						});
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							input.prop("checked", currentSettingsValues[settingDef.name]);
+						}
+
+						break;
+					}
+					case "option":
+					{
+						var defaultValue = currentSettingsValues[settingDef.name];
+
+						var input = $('<select></select>').appendTo($('<div class="styled-select"></div>').appendTo(valueCell)).change(function()
+						{
+							newSettings.settings[settingDef.name] = $(this).val();
+						});
+
+						_.each(settingDef.options, function(option)
+						{
+
+							var optionName;
+							var optionValue;
+
+							if(_.isObject(option))
+							{
+								optionName = option.name;
+								optionValue = option.value;
+							}
+							else
+							{
+								optionName = option;
+							}
+
+							if(_.isUndefined(optionValue))
+							{
+								optionValue = optionName;
+							}
+
+							if(_.isUndefined(defaultValue))
+							{
+								defaultValue = optionValue;
+							}
+
+							$("<option></option>").text(optionName).attr("value", optionValue).appendTo(input);
+						});
+
+						newSettings.settings[settingDef.name] = defaultValue;
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							input.val(currentSettingsValues[settingDef.name]);
+						}
+
+						break;
+					}
+					default:
+					{
+						newSettings.settings[settingDef.name] = currentSettingsValues[settingDef.name];
+
+						if(settingDef.type == "calculated")
+						{
+							if(settingDef.name in currentSettingsValues) {
+								var currentValue = currentSettingsValues[settingDef.name];
+								if(settingDef.multi_input && _.isArray(currentValue)) {
+									var includeRemove = false;
+									for(var i=0; i<currentValue.length; i++) {
+										_appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue[i], includeRemove);
+										includeRemove = true;
+									}
+								} else {
+									_appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue, false);
+								}
+							} else {
+								_appendCalculatedSettingRow(valueCell, newSettings, settingDef, null, false);
+							}
+
+							if(settingDef.multi_input) {
+								var inputAdder = $('<ul class="board-toolbar"><li class="add-setting-row"><i class="icon-plus icon-white"></i><label>ADD</label></li></ul>')
+									.mousedown(function(e) {
+										e.preventDefault();
+										_appendCalculatedSettingRow(valueCell, newSettings, settingDef, null, true);
+									});
+								$(valueCell).siblings('.form-label').append(inputAdder);
+							}
+						}
+						else
+						{
+							var input = $('<input type="text">').appendTo(valueCell).change(function()
+							{
+								if(settingDef.type == "number")
+								{
+									newSettings.settings[settingDef.name] = Number($(this).val());
+								}
+								else
+								{
+									newSettings.settings[settingDef.name] = $(this).val();
+								}
+							});
+
+							if(settingDef.name in currentSettingsValues)
+							{
+								input.val(currentSettingsValues[settingDef.name]);
+							}
+
+							if(typeaheadSource && settingDef.typeahead_data_field){
+								input.addClass('typeahead_data_field-' + settingDef.typeahead_data_field);
+							}
+
+							if(typeaheadSource && settingDef.typeahead_field){
+								var typeaheadValues = [];
+
+								input.keyup(function(event){
+									if(event.which >= 65 && event.which <= 91) {
+										input.trigger('change');
+									}
+								});
+
+								$(input).autocomplete({
+									source: typeaheadValues,
+									select: function(event, ui){
+										input.val(ui.item.value);
+										input.trigger('change');
+									}
+								});
+
+								input.change(function(event){
+									var value = input.val();
+									var source = _.template(typeaheadSource)({input: value});
+									$.get(source, function(data){
+										if(typeaheadDataSegment){
+											data = data[typeaheadDataSegment];
+										}
+										data  = _.select(data, function(elm){
+											return elm[settingDef.typeahead_field][0] == value[0];
+										});
+
+										typeaheadValues = _.map(data, function(elm){
+											return elm[settingDef.typeahead_field];
+										});
+										$(input).autocomplete("option", "source", typeaheadValues);
+
+										if(data.length == 1){
+											data = data[0];
+											//we found the one. let's use it to populate the other info
+											for(var field in data){
+												if(data.hasOwnProperty(field)){
+													var otherInput = $(_.template('input.typeahead_data_field-<%= field %>')({field: field}));
+													if(otherInput){
+														otherInput.val(data[field]);
+														if(otherInput.val() != input.val()) {
+															otherInput.trigger('change');
+														}
+													}
+												}
+											}
+										}
+									});
+								});
+							}
+						}
+
+						break;
+					}
+				}
+
+				if(!_.isUndefined(settingDef.suffix))
+				{
+					valueCell.append($('<div class="input-suffix">' + settingDef.suffix + '</div>'));
+				}
+
+				if(!_.isUndefined(settingDef.description))
+				{
+					valueCell.append($('<div class="setting-description">' + settingDef.description + '</div>'));
+				}
+			});
+		}
+
+
+		new DialogBox(form, title, "Save", "Cancel", function()
+		{
+			$(".validation-error").remove();
+
+			// Loop through each setting and validate it
+			for(var index = 0; index < selectedType.settings.length; index++)
+			{
+				var settingDef = selectedType.settings[index];
+
+				if(settingDef.required && (_.isUndefined(newSettings.settings[settingDef.name]) || newSettings.settings[settingDef.name] == ""))
+				{
+					_displayValidationError(settingDef.name, "This is required.");
+					return true;
+				}
+				else if(settingDef.type == "integer" && (newSettings.settings[settingDef.name] % 1 !== 0))
+				{
+					_displayValidationError(settingDef.name, "Must be a whole number.");
+					return true;
+				}
+				else if(settingDef.type == "number" && !_isNumerical(newSettings.settings[settingDef.name]))
+				{
+					_displayValidationError(settingDef.name, "Must be a number.");
+					return true;
+				}
+			}
+
+			if(_.isFunction(settingsSavedCallback))
+			{
+				settingsSavedCallback(newSettings);
+			}
+		});
+
+		// Create our body
+		var pluginTypeNames = _.keys(pluginTypes);
+		var typeSelect;
+
+		if(pluginTypeNames.length > 1)
+		{
+			var typeRow = createSettingRow("plugin-types", "Type");
+			typeSelect = $('<select></select>').appendTo($('<div class="styled-select"></div>').appendTo(typeRow));
+
+			typeSelect.append($("<option>Select a type...</option>").attr("value", "undefined"));
+
+			_.each(pluginTypes, function(pluginType)
+			{
+				typeSelect.append($("<option></option>").text(pluginType.display_name).attr("value", pluginType.type_name));
+			});
+
+			typeSelect.change(function()
+			{
+				newSettings.type = $(this).val();
+				newSettings.settings = {};
+
+				// Remove all the previous settings
+				_removeSettingsRows();
+
+				selectedType = pluginTypes[typeSelect.val()];
+
+				if(_.isUndefined(selectedType))
+				{
+					$("#setting-row-instance-name").hide();
+					$("#dialog-ok").hide();
+				}
+				else
+				{
+					$("#setting-row-instance-name").show();
+
+					if(selectedType.description && selectedType.description.length > 0)
+					{
+						pluginDescriptionElement.html(selectedType.description).show();
+					}
+					else
+					{
+						pluginDescriptionElement.hide();
+					}
+
+					$("#dialog-ok").show();
+					createSettingsFromDefinition(selectedType.settings, selectedType.typeahead_source, selectedType.typeahead_data_segment);
+				}
+			});
+		}
+		else if(pluginTypeNames.length == 1)
+		{
+			selectedType = pluginTypes[pluginTypeNames[0]];
+			newSettings.type = selectedType.type_name;
+			newSettings.settings = {};
+			createSettingsFromDefinition(selectedType.settings);
+		}
+
+		if(typeSelect)
+		{
+			if(_.isUndefined(currentTypeName))
+			{
+				$("#setting-row-instance-name").hide();
+				$("#dialog-ok").hide();
+			}
+			else
+			{
+				$("#dialog-ok").show();
+				typeSelect.val(currentTypeName).trigger("change");
+			}
+		}
+	}
+
+	// Public API
+	return {
+		createPluginEditor : function(
+			title,
+			pluginTypes,
+			currentInstanceName,
+			currentTypeName,
+			currentSettingsValues,
+			settingsSavedCallback)
+		{
+			createPluginEditor(title, pluginTypes, currentInstanceName, currentTypeName, currentSettingsValues, settingsSavedCallback);
+		}
+	}
+}
+
+ValueEditor = function(theFreeboardModel)
+{
+	var _veDatasourceRegex = new RegExp(".*datasources\\[\"([^\"]*)(\"\\])?(.*)$");
+
+	var dropdown = null;
+	var selectedOptionIndex = 0;
+	var _autocompleteOptions = [];
+	var currentValue = null;
+
+	var EXPECTED_TYPE = {
+		ANY : "any",
+		ARRAY : "array",
+		OBJECT : "object",
+		STRING : "string",
+		NUMBER : "number",
+		BOOLEAN : "boolean"
+	};
+
+	function _isPotentialTypeMatch(value, expectsType)
+	{
+		if(_.isArray(value) || _.isObject(value))
+		{
+			return true;
+		}
+		return _isTypeMatch(value, expectsType);
+	}
+
+	function _isTypeMatch(value, expectsType) {
+		switch(expectsType)
+		{
+		case EXPECTED_TYPE.ANY: return true;
+		case EXPECTED_TYPE.ARRAY: return _.isArray(value);
+		case EXPECTED_TYPE.OBJECT: return _.isObject(value);
+		case EXPECTED_TYPE.STRING: return _.isString(value);
+		case EXPECTED_TYPE.NUMBER: return _.isNumber(value);
+		case EXPECTED_TYPE.BOOLEAN: return _.isBoolean(value);
+		}
+	}
+
+	function _checkCurrentValueType(element, expectsType) {
+		$(element).parent().find(".validation-error").remove();
+		if(!_isTypeMatch(currentValue, expectsType)) {
+			$(element).parent().append("<div class='validation-error'>" +
+				"This field expects an expression that evaluates to type " +
+				expectsType + ".</div>");
+		}
+	}
+
+	function _resizeValueEditor(element)
+	{
+		var lineBreakCount = ($(element).val().match(/\n/g) || []).length;
+
+		var newHeight = Math.min(200, 20 * (lineBreakCount + 1));
+
+		$(element).css({height: newHeight + "px"});
+	}
+
+	function _autocompleteFromDatasource(inputString, datasources, expectsType)
+	{
+		var match = _veDatasourceRegex.exec(inputString);
+
+		var options = [];
+
+		if(match)
+		{
+			// Editor value is: datasources["; List all datasources
+			if(match[1] == "")
+			{
+				_.each(datasources, function(datasource)
+				{
+					options.push({value: datasource.name(), entity: undefined,
+						precede_char: "", follow_char: "\"]"});
+				});
+			}
+			// Editor value is a partial match for a datasource; list matching datasources
+			else if(match[1] != "" && _.isUndefined(match[2]))
+			{
+				var replacementString = match[1];
+
+				_.each(datasources, function(datasource)
+				{
+					var dsName = datasource.name();
+
+					if(dsName != replacementString && dsName.indexOf(replacementString) == 0)
+					{
+						options.push({value: dsName, entity: undefined,
+							precede_char: "", follow_char: "\"]"});
+					}
+				});
+			}
+			// Editor value matches a datasources; parse JSON in order to populate list
+			else
+			{
+				// We already have a datasource selected; find it
+				var datasource = _.find(datasources, function(datasource)
+				{
+					return (datasource.name() === match[1]);
+				});
+
+				if(!_.isUndefined(datasource))
+				{
+					var dataPath = "data";
+					var remainder = "";
+
+					// Parse the partial JSON selectors
+					if(!_.isUndefined(match[2]))
+					{
+						// Strip any incomplete field values, and store the remainder
+						var remainderIndex = match[3].lastIndexOf("]") + 1;
+						dataPath = dataPath + match[3].substring(0, remainderIndex);
+						remainder = match[3].substring(remainderIndex, match[3].length);
+						remainder = remainder.replace(/^[\[\"]*/, "");
+						remainder = remainder.replace(/[\"\]]*$/, "");
+					}
+
+					// Get the data for the last complete JSON field
+					var dataValue = datasource.getDataRepresentation(dataPath);
+					currentValue = dataValue;
+
+					// For arrays, list out the indices
+					if(_.isArray(dataValue))
+					{
+						for(var index = 0; index < dataValue.length; index++)
+						{
+							if(index.toString().indexOf(remainder) == 0)
+							{
+								var value = dataValue[index];
+								if(_isPotentialTypeMatch(value, expectsType))
+								{
+									options.push({value: index, entity: value,
+										precede_char: "[", follow_char: "]",
+										preview: value.toString()});
+								}
+							}
+						}
+					}
+					// For objects, list out the keys
+					else if(_.isObject(dataValue))
+					{
+						_.each(dataValue, function(value, name)
+						{
+							if(name.indexOf(remainder) == 0)
+							{
+								if(_isPotentialTypeMatch(value, expectsType))
+								{
+									options.push({value: name, entity: value,
+										precede_char: "[\"", follow_char: "\"]"});
+								}
+							}
+						});
+					}
+					// For everything else, do nothing (no further selection possible)
+					else
+					{
+						// no-op
+					}
+				}
+			}
+		}
+		_autocompleteOptions = options;
+	}
+
+	function _renderAutocompleteDropdown(element, expectsType)
+	{
+		var inputString = $(element).val().substring(0, $(element).getCaretPosition());
+
+		// Weird issue where the textarea box was putting in ASCII (nbsp) for spaces.
+		inputString = inputString.replace(String.fromCharCode(160), " ");
+
+		_autocompleteFromDatasource(inputString, theFreeboardModel.datasources(), expectsType);
+
+		if(_autocompleteOptions.length > 0)
+		{
+			if(!dropdown)
+			{
+				dropdown = $('<ul id="value-selector" class="value-dropdown"></ul>')
+					.insertAfter(element)
+					.width($(element).outerWidth() - 2)
+					.css("left", $(element).position().left)
+					.css("top", $(element).position().top + $(element).outerHeight() - 1);
+			}
+
+			dropdown.empty();
+			dropdown.scrollTop(0);
+
+			var selected = true;
+			selectedOptionIndex = 0;
+
+			_.each(_autocompleteOptions, function(option, index)
+			{
+				var li = _renderAutocompleteDropdownOption(element, inputString, option, index);
+				if(selected)
+				{
+					$(li).addClass("selected");
+					selected = false;
+				}
+			});
+		}
+		else
+		{
+			_checkCurrentValueType(element, expectsType);
+			$(element).next("ul#value-selector").remove();
+			dropdown = null;
+			selectedOptionIndex = -1;
+		}
+	}
+
+	function _renderAutocompleteDropdownOption(element, inputString, option, currentIndex)
+	{
+		var optionLabel = option.value;
+		if(option.preview)
+		{
+			optionLabel = optionLabel + "<span class='preview'>" + option.preview + "</span>";
+		}
+		var li = $('<li>' + optionLabel + '</li>').appendTo(dropdown)
+			.mouseenter(function()
+			{
+				$(this).trigger("freeboard-select");
+			})
+			.mousedown(function(event)
+			{
+				$(this).trigger("freeboard-insertValue");
+				event.preventDefault();
+			})
+			.data("freeboard-optionIndex", currentIndex)
+			.data("freeboard-optionValue", option.value)
+			.bind("freeboard-insertValue", function()
+			{
+				var optionValue = option.value;
+				optionValue = option.precede_char + optionValue + option.follow_char;
+
+				var replacementIndex = inputString.lastIndexOf("]");
+				if(replacementIndex != -1)
+				{
+					$(element).replaceTextAt(replacementIndex+1, $(element).val().length,
+						optionValue);
+				}
+				else
+				{
+					$(element).insertAtCaret(optionValue);
+				}
+
+				currentValue = option.entity;
+				$(element).triggerHandler("mouseup");
+			})
+			.bind("freeboard-select", function()
+			{
+				$(this).parent().find("li.selected").removeClass("selected");
+				$(this).addClass("selected");
+				selectedOptionIndex = $(this).data("freeboard-optionIndex");
+			});
+		return li;
+	}
+
+	function createValueEditor(element, expectsType)
+	{
+		$(element).addClass("calculated-value-input")
+			.bind("keyup mouseup freeboard-eval", function(event) {
+				// Ignore arrow keys and enter keys
+				if(dropdown && event.type == "keyup"
+					&& (event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 13))
+				{
+					event.preventDefault();
+					return;
+				}
+				_renderAutocompleteDropdown(element, expectsType);
+			})
+			.focus(function()
+			{
+				$(element).css({"z-index" : 3001});
+				_resizeValueEditor(element);
+			})
+			.focusout(function()
+			{
+				_checkCurrentValueType(element, expectsType);
+				$(element).css({
+					"height": "",
+					"z-index" : 3000
+				});
+				$(element).next("ul#value-selector").remove();
+				dropdown = null;
+				selectedOptionIndex = -1;
+			})
+			.bind("keydown", function(event)
+			{
+
+				if(dropdown)
+				{
+					if(event.keyCode == 38 || event.keyCode == 40) // Handle Arrow keys
+					{
+						event.preventDefault();
+
+						var optionItems = $(dropdown).find("li");
+
+						if(event.keyCode == 38) // Up Arrow
+						{
+							selectedOptionIndex--;
+						}
+						else if(event.keyCode == 40) // Down Arrow
+						{
+							selectedOptionIndex++;
+						}
+
+						if(selectedOptionIndex < 0)
+						{
+							selectedOptionIndex = optionItems.size() - 1;
+						}
+						else if(selectedOptionIndex >= optionItems.size())
+						{
+							selectedOptionIndex = 0;
+						}
+
+						var optionElement = $(optionItems).eq(selectedOptionIndex);
+
+						optionElement.trigger("freeboard-select");
+						$(dropdown).scrollTop($(optionElement).position().top);
+					}
+					else if(event.keyCode == 13) // Handle enter key
+					{
+						event.preventDefault();
+
+						if(selectedOptionIndex != -1)
+						{
+							$(dropdown).find("li").eq(selectedOptionIndex)
+								.trigger("freeboard-insertValue");
+						}
+					}
+				}
+			});
+	}
+
+	// Public API
+	return {
+		createValueEditor : function(element, expectsType)
+		{
+			if(expectsType)
+			{
+				createValueEditor(element, expectsType);
+			}
+			else {
+				createValueEditor(element, EXPECTED_TYPE.ANY);
+			}
+		},
+		EXPECTED_TYPE : EXPECTED_TYPE
+	}
+}
+
+function WidgetModel(theFreeboardModel, widgetPlugins) {
+	function disposeWidgetInstance() {
+		if (!_.isUndefined(self.widgetInstance)) {
+			if (_.isFunction(self.widgetInstance.onDispose)) {
+				self.widgetInstance.onDispose();
+			}
+
+			self.widgetInstance = undefined;
+		}
+	}
+
+	var self = this;
+
+	this.datasourceRefreshNotifications = {};
+	this.calculatedSettingScripts = {};
+
+	this.title = ko.observable();
+	this.fillSize = ko.observable(false);
+
+	this.type = ko.observable();
+	this.type.subscribe(function (newValue) {
+		disposeWidgetInstance();
+
+		if ((newValue in widgetPlugins) && _.isFunction(widgetPlugins[newValue].newInstance)) {
+			var widgetType = widgetPlugins[newValue];
+
+			function finishLoad() {
+				widgetType.newInstance(self.settings(), function (widgetInstance) {
+
+					self.fillSize((widgetType.fill_size === true));
+					self.widgetInstance = widgetInstance;
+					self.shouldRender(true);
+					self._heightUpdate.valueHasMutated();
+
+				});
+			}
+
+			// Do we need to load any external scripts?
+			if (widgetType.external_scripts) {
+				head.js(widgetType.external_scripts.slice(0), finishLoad); // Need to clone the array because head.js adds some weird functions to it
+			}
+			else {
+				finishLoad();
+			}
+		}
+	});
+
+	this.settings = ko.observable({});
+	this.settings.subscribe(function (newValue) {
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onSettingsChanged)) {
+			self.widgetInstance.onSettingsChanged(newValue);
+		}
+
+		self.updateCalculatedSettings();
+		self._heightUpdate.valueHasMutated();
+	});
+
+	this.processDatasourceUpdate = function (datasourceName) {
+		var refreshSettingNames = self.datasourceRefreshNotifications[datasourceName];
+
+		if (_.isArray(refreshSettingNames)) {
+			_.each(refreshSettingNames, function (settingName) {
+				self.processCalculatedSetting(settingName);
+			});
+		}
+	}
+
+	this.callValueFunction = function (theFunction) {
+		return theFunction.call(undefined, theFreeboardModel.datasourceData);
+	}
+
+	this.processSizeChange = function () {
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onSizeChanged)) {
+			self.widgetInstance.onSizeChanged();
+		}
+	}
+
+	this.processCalculatedSetting = function (settingName) {
+		if (_.isFunction(self.calculatedSettingScripts[settingName])) {
+			var returnValue = undefined;
+
+			try {
+				returnValue = self.callValueFunction(self.calculatedSettingScripts[settingName]);
+			}
+			catch (e) {
+				var rawValue = self.settings()[settingName];
+
+				// If there is a reference error and the value just contains letters and numbers, then
+				if (e instanceof ReferenceError && (/^\w+$/).test(rawValue)) {
+					returnValue = rawValue;
+				}
+			}
+
+			if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onCalculatedValueChanged) && !_.isUndefined(returnValue)) {
+				try {
+					self.widgetInstance.onCalculatedValueChanged(settingName, returnValue);
+				}
+				catch (e) {
+					console.log(e.toString());
+				}
+			}
+		}
+	}
+
+	this.updateCalculatedSettings = function () {
+		self.datasourceRefreshNotifications = {};
+		self.calculatedSettingScripts = {};
+
+		if (_.isUndefined(self.type())) {
+			return;
+		}
+
+		// Check for any calculated settings
+		var settingsDefs = widgetPlugins[self.type()].settings;
+		var datasourceRegex = new RegExp("datasources.([\\w_-]+)|datasources\\[['\"]([^'\"]+)", "g");
+		var currentSettings = self.settings();
+
+		_.each(settingsDefs, function (settingDef) {
+			if (settingDef.type == "calculated") {
+				var script = currentSettings[settingDef.name];
+
+				if (!_.isUndefined(script)) {
+
+					if(_.isArray(script)) {
+						script = "[" + script.join(",") + "]";
+					}
+
+					// If there is no return, add one
+					if ((script.match(/;/g) || []).length <= 1 && script.indexOf("return") == -1) {
+						script = "return " + script;
+					}
+
+					var valueFunction;
+
+ 					try {
+						valueFunction = new Function("datasources", script);
+					}
+					catch (e) {
+						var literalText = currentSettings[settingDef.name].replace(/"/g, '\\"').replace(/[\r\n]/g, ' \\\n');
+
+						// If the value function cannot be created, then go ahead and treat it as literal text
+						valueFunction = new Function("datasources", "return \"" + literalText + "\";");
+					}
+
+					self.calculatedSettingScripts[settingDef.name] = valueFunction;
+					self.processCalculatedSetting(settingDef.name);
+
+					// Are there any datasources we need to be subscribed to?
+					var matches;
+
+					while (matches = datasourceRegex.exec(script)) {
+						var dsName = (matches[1] || matches[2]);
+						var refreshSettingNames = self.datasourceRefreshNotifications[dsName];
+
+						if (_.isUndefined(refreshSettingNames)) {
+							refreshSettingNames = [];
+							self.datasourceRefreshNotifications[dsName] = refreshSettingNames;
+						}
+
+						if(_.indexOf(refreshSettingNames, settingDef.name) == -1) // Only subscribe to this notification once.
+						{
+							refreshSettingNames.push(settingDef.name);
+						}
+					}
+				}
+			}
+		});
+	}
+
+	this._heightUpdate = ko.observable();
+	this.height = ko.computed({
+		read: function () {
+			self._heightUpdate();
+
+			if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.getHeight)) {
+				return self.widgetInstance.getHeight();
+			}
+
+			return 1;
+		}
+	});
+
+	this.shouldRender = ko.observable(false);
+	this.render = function (element) {
+		self.shouldRender(false);
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.render)) {
+			self.widgetInstance.render(element);
+			self.updateCalculatedSettings();
+		}
+	}
+
+	this.dispose = function () {
+
+	}
+
+	this.serialize = function () {
+		return {
+			title: self.title(),
+			type: self.type(),
+			settings: self.settings()
+		};
+	}
+
+	this.deserialize = function (object) {
+		self.title(object.title);
+		self.settings(object.settings);
+		self.type(object.type);
+	}
+}
+
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+// Jquery plugin to watch for attribute changes
+(function($)
+{
+	function isDOMAttrModifiedSupported()
+	{
+		var p = document.createElement('p');
+		var flag = false;
+
+		if(p.addEventListener)
+		{
+			p.addEventListener('DOMAttrModified', function()
+			{
+				flag = true
+			}, false);
+		}
+		else if(p.attachEvent)
+		{
+			p.attachEvent('onDOMAttrModified', function()
+			{
+				flag = true
+			});
+		}
+		else
+		{
+			return false;
+		}
+
+		p.setAttribute('id', 'target');
+
+		return flag;
+	}
+
+	function checkAttributes(chkAttr, e)
+	{
+		if(chkAttr)
+		{
+			var attributes = this.data('attr-old-value');
+
+			if(e.attributeName.indexOf('style') >= 0)
+			{
+				if(!attributes['style'])
+				{
+					attributes['style'] = {};
+				} //initialize
+				var keys = e.attributeName.split('.');
+				e.attributeName = keys[0];
+				e.oldValue = attributes['style'][keys[1]]; //old value
+				e.newValue = keys[1] + ':' + this.prop("style")[$.camelCase(keys[1])]; //new value
+				attributes['style'][keys[1]] = e.newValue;
+			}
+			else
+			{
+				e.oldValue = attributes[e.attributeName];
+				e.newValue = this.attr(e.attributeName);
+				attributes[e.attributeName] = e.newValue;
+			}
+
+			this.data('attr-old-value', attributes); //update the old value object
+		}
+	}
+
+	//initialize Mutation Observer
+	var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+
+	$.fn.attrchange = function(o)
+	{
+
+		var cfg = {
+			trackValues: false,
+			callback   : $.noop
+		};
+
+		//for backward compatibility
+		if(typeof o === "function")
+		{
+			cfg.callback = o;
+		}
+		else
+		{
+			$.extend(cfg, o);
+		}
+
+		if(cfg.trackValues)
+		{ //get attributes old value
+			$(this).each(function(i, el)
+			{
+				var attributes = {};
+				for(var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++)
+				{
+					attr = attrs.item(i);
+					attributes[attr.nodeName] = attr.value;
+				}
+
+				$(this).data('attr-old-value', attributes);
+			});
+		}
+
+		if(MutationObserver)
+		{ //Modern Browsers supporting MutationObserver
+			/*
+			 Mutation Observer is still new and not supported by all browsers.
+			 http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1622.html
+			 */
+			var mOptions = {
+				subtree          : false,
+				attributes       : true,
+				attributeOldValue: cfg.trackValues
+			};
+
+			var observer = new MutationObserver(function(mutations)
+			{
+				mutations.forEach(function(e)
+				{
+					var _this = e.target;
+
+					//get new value if trackValues is true
+					if(cfg.trackValues)
+					{
+						/**
+						 * @KNOWN_ISSUE: The new value is buggy for STYLE attribute as we don't have
+						 * any additional information on which style is getting updated.
+						 * */
+						e.newValue = $(_this).attr(e.attributeName);
+					}
+
+					cfg.callback.call(_this, e);
+				});
+			});
+
+			return this.each(function()
+			{
+				observer.observe(this, mOptions);
+			});
+		}
+		else if(isDOMAttrModifiedSupported())
+		{ //Opera
+			//Good old Mutation Events but the performance is no good
+			//http://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/
+			return this.on('DOMAttrModified', function(event)
+			{
+				if(event.originalEvent)
+				{
+					event = event.originalEvent;
+				} //jQuery normalization is not required for us
+				event.attributeName = event.attrName; //property names to be consistent with MutationObserver
+				event.oldValue = event.prevValue; //property names to be consistent with MutationObserver
+				cfg.callback.call(this, event);
+			});
+		}
+		else if('onpropertychange' in document.body)
+		{ //works only in IE
+			return this.on('propertychange', function(e)
+			{
+				e.attributeName = window.event.propertyName;
+				//to set the attr old value
+				checkAttributes.call($(this), cfg.trackValues, e);
+				cfg.callback.call(this, e);
+			});
+		}
+
+		return this;
+	}
+})(jQuery);
+
+(function(jQuery) {
+
+    jQuery.eventEmitter = {
+        _JQInit: function() {
+            this._JQ = jQuery(this);
+        },
+        emit: function(evt, data) {
+            !this._JQ && this._JQInit();
+            this._JQ.trigger(evt, data);
+        },
+        once: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.one(evt, handler);
+        },
+        on: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.bind(evt, handler);
+        },
+        off: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.unbind(evt, handler);
+        }
+    };
+
+}(jQuery));
+
+var freeboard = (function()
+{
+	var datasourcePlugins = {};
+	var widgetPlugins = {};
+
+	var freeboardUI = new FreeboardUI();
+	var theFreeboardModel = new FreeboardModel(datasourcePlugins, widgetPlugins, freeboardUI);
+
+	var jsEditor = new JSEditor();
+	var valueEditor = new ValueEditor(theFreeboardModel);
+	var pluginEditor = new PluginEditor(jsEditor, valueEditor);
+
+	var developerConsole = new DeveloperConsole(theFreeboardModel);
+
+	var currentStyle = {
+		values: {
+			"font-family": '"HelveticaNeue-UltraLight", "Helvetica Neue Ultra Light", "Helvetica Neue", sans-serif',
+			"color"      : "#d3d4d4",
+			"font-weight": 100
+		}
+	};
+
+	ko.bindingHandlers.pluginEditor = {
+		init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			var options = ko.unwrap(valueAccessor());
+
+			var types = {};
+			var settings = undefined;
+			var title = "";
+
+			if(options.type == 'datasource')
+			{
+				types = datasourcePlugins;
+				title = "Datasource";
+			}
+			else if(options.type == 'widget')
+			{
+				types = widgetPlugins;
+				title = "Widget";
+			}
+			else if(options.type == 'pane')
+			{
+				title = "Pane";
+			}
+
+			$(element).click(function(event)
+			{
+				if(options.operation == 'delete')
+				{
+					var phraseElement = $('<p>Are you sure you want to delete this ' + title + '?</p>');
+					new DialogBox(phraseElement, "Confirm Delete", "Yes", "No", function()
+					{
+
+						if(options.type == 'datasource')
+						{
+							theFreeboardModel.deleteDatasource(viewModel);
+						}
+						else if(options.type == 'widget')
+						{
+							theFreeboardModel.deleteWidget(viewModel);
+						}
+						else if(options.type == 'pane')
+						{
+							theFreeboardModel.deletePane(viewModel);
+						}
+
+					});
+				}
+				else
+				{
+					var instanceType = undefined;
+
+					if(options.type == 'datasource')
+					{
+						if(options.operation == 'add')
+						{
+							settings = {};
+						}
+						else
+						{
+							instanceType = viewModel.type();
+							settings = viewModel.settings();
+							settings.name = viewModel.name();
+						}
+					}
+					else if(options.type == 'widget')
+					{
+						if(options.operation == 'add')
+						{
+							settings = {};
+						}
+						else
+						{
+							instanceType = viewModel.type();
+							settings = viewModel.settings();
+						}
+					}
+					else if(options.type == 'pane')
+					{
+						settings = {};
+
+						if(options.operation == 'edit')
+						{
+							settings.title = viewModel.title();
+							settings.col_width = viewModel.col_width();
+						}
+
+						types = {
+							settings: {
+								settings: [
+									{
+										name        : "title",
+										display_name: "Title",
+										type        : "text"
+									},
+									{
+										name : "col_width",
+										display_name : "Columns",
+										type : "integer",
+										default_value : 1,
+										required : true
+									}
+								]
+							}
+						}
+					}
+
+					pluginEditor.createPluginEditor(title, types, instanceType, settings, function(newSettings)
+					{
+						if(options.operation == 'add')
+						{
+							if(options.type == 'datasource')
+							{
+								var newViewModel = new DatasourceModel(theFreeboardModel, datasourcePlugins);
+								theFreeboardModel.addDatasource(newViewModel);
+
+								newViewModel.name(newSettings.settings.name);
+								delete newSettings.settings.name;
+
+								newViewModel.settings(newSettings.settings);
+								newViewModel.type(newSettings.type);
+							}
+							else if(options.type == 'widget')
+							{
+								var newViewModel = new WidgetModel(theFreeboardModel, widgetPlugins);
+								newViewModel.settings(newSettings.settings);
+								newViewModel.type(newSettings.type);
+
+								viewModel.widgets.push(newViewModel);
+
+								freeboardUI.attachWidgetEditIcons(element);
+							}
+						}
+						else if(options.operation == 'edit')
+						{
+							if(options.type == 'pane')
+							{
+								viewModel.title(newSettings.settings.title);
+								viewModel.col_width(newSettings.settings.col_width);
+								freeboardUI.processResize(false);
+							}
+							else
+							{
+								if(options.type == 'datasource')
+								{
+									viewModel.name(newSettings.settings.name);
+									delete newSettings.settings.name;
+								}
+
+								viewModel.type(newSettings.type);
+								viewModel.settings(newSettings.settings);
+							}
+						}
+					});
+				}
+			});
+		}
+	}
+
+	ko.virtualElements.allowedBindings.datasourceTypeSettings = true;
+	ko.bindingHandlers.datasourceTypeSettings = {
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			processPluginSettings(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
+		}
+	}
+
+	ko.bindingHandlers.pane = {
+		init  : function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(theFreeboardModel.isEditing())
+			{
+				$(element).css({cursor: "pointer"});
+			}
+
+			freeboardUI.addPane(element, viewModel, bindingContext.$root.isEditing());
+		},
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			// If pane has been removed
+			if(theFreeboardModel.panes.indexOf(viewModel) == -1)
+			{
+				freeboardUI.removePane(element);
+			}
+			freeboardUI.updatePane(element, viewModel);
+		}
+	}
+
+	ko.bindingHandlers.widget = {
+		init  : function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(theFreeboardModel.isEditing())
+			{
+				freeboardUI.attachWidgetEditIcons($(element).parent());
+			}
+		},
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(viewModel.shouldRender())
+			{
+				$(element).empty();
+				viewModel.render(element);
+			}
+		}
+	}
+
+	function getParameterByName(name)
+	{
+		name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
+		var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search);
+		return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
+	}
+
+	$(function()
+	{ //DOM Ready
+		// Show the loading indicator when we first load
+		freeboardUI.showLoadingIndicator(true);
+
+        var resizeTimer;
+
+        function resizeEnd()
+        {
+            freeboardUI.processResize(true);
+        }
+
+        $(window).resize(function() {
+            clearTimeout(resizeTimer);
+            resizeTimer = setTimeout(resizeEnd, 500);
+        });
+
+	});
+
+	// PUBLIC FUNCTIONS
+	return {
+		initialize          : function(allowEdit, finishedCallback)
+		{
+			ko.applyBindings(theFreeboardModel);
+
+			// Check to see if we have a query param called load. If so, we should load that dashboard initially
+			var freeboardLocation = getParameterByName("load");
+
+			if(freeboardLocation != "")
+			{
+				$.ajax({
+					url    : freeboardLocation,
+					success: function(data)
+					{
+						theFreeboardModel.loadDashboard(data);
+
+						if(_.isFunction(finishedCallback))
+						{
+							finishedCallback();
+						}
+					}
+				});
+			}
+			else
+			{
+				theFreeboardModel.allow_edit(allowEdit);
+				theFreeboardModel.setEditing(allowEdit);
+
+				freeboardUI.showLoadingIndicator(false);
+				if(_.isFunction(finishedCallback))
+				{
+					finishedCallback();
+				}
+
+                freeboard.emit("initialized");
+			}
+		},
+		newDashboard        : function()
+		{
+			theFreeboardModel.loadDashboard({allow_edit: true});
+		},
+		loadDashboard       : function(configuration, callback)
+		{
+			theFreeboardModel.loadDashboard(configuration, callback);
+		},
+		serialize           : function()
+		{
+			return theFreeboardModel.serialize();
+		},
+		setEditing          : function(editing, animate)
+		{
+			theFreeboardModel.setEditing(editing, animate);
+		},
+		isEditing           : function()
+		{
+			return theFreeboardModel.isEditing();
+		},
+		loadDatasourcePlugin: function(plugin)
+		{
+			if(_.isUndefined(plugin.display_name))
+			{
+				plugin.display_name = plugin.type_name;
+			}
+
+            // Add a required setting called name to the beginning
+            plugin.settings.unshift({
+                name : "name",
+                display_name : "Name",
+                type : "text",
+                required : true
+            });
+
+
+			theFreeboardModel.addPluginSource(plugin.source);
+			datasourcePlugins[plugin.type_name] = plugin;
+			theFreeboardModel._datasourceTypes.valueHasMutated();
+		},
+        resize : function()
+        {
+            freeboardUI.processResize(true);
+        },
+		loadWidgetPlugin    : function(plugin)
+		{
+			if(_.isUndefined(plugin.display_name))
+			{
+				plugin.display_name = plugin.type_name;
+			}
+
+			theFreeboardModel.addPluginSource(plugin.source);
+			widgetPlugins[plugin.type_name] = plugin;
+			theFreeboardModel._widgetTypes.valueHasMutated();
+		},
+		// To be used if freeboard is going to load dynamic assets from a different root URL
+		setAssetRoot        : function(assetRoot)
+		{
+			jsEditor.setAssetRoot(assetRoot);
+		},
+		addStyle            : function(selector, rules)
+		{
+			var styleString = selector + "{" + rules + "}";
+
+			var styleElement = $("style#fb-styles");
+
+			if(styleElement.length == 0)
+			{
+				styleElement = $('<style id="fb-styles" type="text/css"></style>');
+				$("head").append(styleElement);
+			}
+
+			if(styleElement[0].styleSheet)
+			{
+				styleElement[0].styleSheet.cssText += styleString;
+			}
+			else
+			{
+				styleElement.text(styleElement.text() + styleString);
+			}
+		},
+		showLoadingIndicator: function(show)
+		{
+			freeboardUI.showLoadingIndicator(show);
+		},
+		showDialog          : function(contentElement, title, okTitle, cancelTitle, okCallback)
+		{
+			new DialogBox(contentElement, title, okTitle, cancelTitle, okCallback);
+		},
+        getDatasourceSettings : function(datasourceName)
+        {
+            var datasources = theFreeboardModel.datasources();
+
+            // Find the datasource with the name specified
+            var datasource = _.find(datasources, function(datasourceModel){
+                return (datasourceModel.name() === datasourceName);
+            });
+
+            if(datasource)
+            {
+                return datasource.settings();
+            }
+            else
+            {
+                return null;
+            }
+        },
+        setDatasourceSettings : function(datasourceName, settings)
+        {
+            var datasources = theFreeboardModel.datasources();
+
+            // Find the datasource with the name specified
+            var datasource = _.find(datasources, function(datasourceModel){
+                return (datasourceModel.name() === datasourceName);
+            });
+
+            if(!datasource)
+            {
+                console.log("Datasource not found");
+                return;
+            }
+
+            var combinedSettings = _.defaults(settings, datasource.settings());
+            datasource.settings(combinedSettings);
+        },
+		getStyleString      : function(name)
+		{
+			var returnString = "";
+
+			_.each(currentStyle[name], function(value, name)
+			{
+				returnString = returnString + name + ":" + value + ";";
+			});
+
+			return returnString;
+		},
+		getStyleObject      : function(name)
+		{
+			return currentStyle[name];
+		},
+		showDeveloperConsole : function()
+		{
+			developerConsole.showDeveloperConsole();
+		}
+	};
+}());
+
+$.extend(freeboard, jQuery.eventEmitter);
diff --git a/WebSites/errors/403/js/freeboard.min.js b/WebSites/errors/403/js/freeboard.min.js
new file mode 100644
index 0000000..9b862f2
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.min.js
@@ -0,0 +1,2 @@
+function DialogBox(a,b,c,d,e){function f(){g.fadeOut(200,function(){$(this).remove()})}var g=$('<div id="modal_overlay" style="display:none;"></div>'),h=$('<div class="modal"></div>');h.append('<header><h2 class="title">'+b+"</h2></header>"),$("<section></section>").appendTo(h).append(a);var i=$("<footer></footer>").appendTo(h);c&&$('<span id="dialog-ok" class="text-button">'+c+"</span>").appendTo(i).click(function(){var a=!1;_.isFunction(e)&&(a=e()),a||f()}),d&&$('<span id="dialog-cancel" class="text-button">'+d+"</span>").appendTo(i).click(function(){f()}),g.append(h),$("body").append(g),g.fadeIn(200)}function FreeboardModel(a,b,c){var d=this;this.version=0,this.isEditing=ko.observable(!1),this.allow_edit=ko.observable(!1),this.allow_edit.subscribe(function(a){a?$("#main-header").show():$("#main-header").hide()}),this.header_image=ko.observable(),this.plugins=ko.observableArray(),this.datasources=ko.observableArray(),this.panes=ko.observableArray(),this.datasourceData={},this.processDatasourceUpdate=function(a,b){var c=a.name();d.datasourceData[c]=b,_.each(d.panes(),function(a){_.each(a.widgets(),function(a){a.processDatasourceUpdate(c)})})},this._datasourceTypes=ko.observable(),this.datasourceTypes=ko.computed({read:function(){d._datasourceTypes();var b=[];return _.each(a,function(a){var c=a.type_name,d=c;_.isUndefined(a.display_name)||(d=a.display_name),b.push({name:c,display_name:d})}),b}}),this._widgetTypes=ko.observable(),this.widgetTypes=ko.computed({read:function(){d._widgetTypes();var a=[];return _.each(b,function(b){var c=b.type_name,d=c;_.isUndefined(b.display_name)||(d=b.display_name),a.push({name:c,display_name:d})}),a}}),this.addPluginSource=function(a){a&&-1==d.plugins.indexOf(a)&&d.plugins.push(a)},this.serialize=function(){var a=[];_.each(d.panes(),function(b){a.push(b.serialize())});var b=[];return _.each(d.datasources(),function(a){b.push(a.serialize())}),{version:1,header_image:d.header_image(),allow_edit:d.allow_edit(),plugins:d.plugins(),panes:a,datasources:b,columns:c.getUserColumns()}},this.deserialize=function(e,f){function g(){c.setUserColumns(e.columns),_.isUndefined(e.allow_edit)?d.allow_edit(!0):d.allow_edit(e.allow_edit),d.version=e.version||0,d.header_image(e.header_image),_.each(e.datasources,function(b){var c=new DatasourceModel(d,a);c.deserialize(b),d.addDatasource(c)});var g=_.sortBy(e.panes,function(a){return c.getPositionForScreenSize(a).row});_.each(g,function(a){var c=new PaneModel(d,b);c.deserialize(a),d.panes.push(c)}),d.allow_edit()&&0==d.panes().length&&d.setEditing(!0),_.isFunction(f)&&f(),c.processResize(!0)}d.clearDashboard(),_.each(e.plugins,function(a){d.addPluginSource(a)}),_.isArray(e.plugins)&&e.plugins.length>0?head.js(e.plugins,function(){g()}):g()},this.clearDashboard=function(){c.removeAllPanes(),_.each(d.datasources(),function(a){a.dispose()}),_.each(d.panes(),function(a){a.dispose()}),d.plugins.removeAll(),d.datasources.removeAll(),d.panes.removeAll()},this.loadDashboard=function(a,b){c.showLoadingIndicator(!0),d.deserialize(a,function(){c.showLoadingIndicator(!1),_.isFunction(b)&&b(),freeboard.emit("dashboard_loaded")})},this.loadDashboardFromLocalFile=function(){if(window.File&&window.FileReader&&window.FileList&&window.Blob){var a=document.createElement("input");a.type="file",$(a).on("change",function(a){var b=a.target.files;if(b&&b.length>0){var c=b[0],e=new FileReader;e.addEventListener("load",function(a){var b=a.target,c=JSON.parse(b.result);d.loadDashboard(c),d.setEditing(!1)}),e.readAsText(c)}}),$(a).trigger("click")}else alert("Unable to load a file in this browser.")},this.saveDashboardClicked=function(){var a=$(event.currentTarget),b=a.data("siblings-shown")||!1;b?$(event.currentTarget).siblings("label").fadeOut("slow"):$(event.currentTarget).siblings("label").fadeIn("slow"),a.data("siblings-shown",!b)},this.saveDashboard=function(a,b){var c=$(b.currentTarget).data("pretty"),e="application/octet-stream",f=document.createElement("a");if(c)var g=new Blob([JSON.stringify(d.serialize(),null,"\t")],{type:e});else var g=new Blob([JSON.stringify(d.serialize())],{type:e});document.body.appendChild(f),f.href=window.URL.createObjectURL(g),f.download="dashboard.json",f.target="_self",f.click()},this.addDatasource=function(a){d.datasources.push(a)},this.deleteDatasource=function(a){delete d.datasourceData[a.name()],a.dispose(),d.datasources.remove(a)},this.createPane=function(){var a=new PaneModel(d,b);d.addPane(a)},this.addGridColumnLeft=function(){c.addGridColumnLeft()},this.addGridColumnRight=function(){c.addGridColumnRight()},this.subGridColumnLeft=function(){c.subGridColumnLeft()},this.subGridColumnRight=function(){c.subGridColumnRight()},this.addPane=function(a){d.panes.push(a)},this.deletePane=function(a){a.dispose(),d.panes.remove(a)},this.deleteWidget=function(a){ko.utils.arrayForEach(d.panes(),function(b){b.widgets.remove(a)}),a.dispose()},this.setEditing=function(a,b){if(d.allow_edit()||!a){d.isEditing(a),_.isUndefined(b)&&(b=!0);var e=b?250:0,f=$("#admin-bar").outerHeight();a?($("#toggle-header-icon").addClass("icon-chevron-up").removeClass("icon-wrench"),$(".gridster .gs_w").css({cursor:"pointer"}),$("#main-header").animate({top:"0px"},e),$("#board-content").animate({top:f+20+"px"},e),$("#main-header").data().shown=!0,c.attachWidgetEditIcons($(".sub-section")),c.enableGrid()):($("#toggle-header-icon").addClass("icon-wrench").removeClass("icon-chevron-up"),$(".gridster .gs_w").css({cursor:"default"}),$("#main-header").animate({top:"-"+f+"px"},e),$("#board-content").animate({top:"20"},e),$("#main-header").data().shown=!1,$(".sub-section").unbind(),c.disableGrid()),c.showPaneEditIcons(a,b)}},this.toggleEditing=function(){var a=!d.isEditing();d.setEditing(a)}}function FreeboardUI(){function a(a){var b=e(),c=function(){};a&&(c=function(a){var c=this,d=ko.dataFor(c),e=q(d);$(c).attr("data-sizex",Math.min(d.col_width(),b,r.cols)).attr("data-row",e.row).attr("data-col",e.col),d.processSizeChange()}),f(Math.min(b,w)),g(c),d()}function b(a){f(r.cols+1)&&g(function(){var b,c=this,d=ko.dataFor(c),e=r.cols>1?r.cols-1:1,f=d.col[e],g=d.row[e];a?(leftPreviewCol=!0,b={row:g,col:f<r.cols?f+1:r.cols}):(rightPreviewCol=!0,b={row:g,col:f}),$(c).attr("data-sizex",Math.min(d.col_width(),r.cols)).attr("data-row",b.row).attr("data-col",b.col)}),d(),w=r.cols}function c(a){f(r.cols-1)&&g(function(){var b,c=this,d=ko.dataFor(c),e=r.cols+1,f=d.col[e],g=d.row[e];if(a){var h=f>1?f-1:1;b={row:g,col:h}}else{var h=f<=r.cols?f:r.cols;b={row:g,col:h}}$(c).attr("data-sizex",Math.min(d.col_width(),r.cols)).attr("data-row",b.row).attr("data-col",b.col)}),d(),w=r.cols}function d(){var a=$(".column-tool"),b=$("#board-content").width(),c=Math.floor(b/v);r.cols<=u?a.addClass("min"):a.removeClass("min"),r.cols>=c?a.addClass("max"):a.removeClass("max")}function e(){var a=$("#board-content").width();return Math.floor(a/v)}function f(a){(void 0===a||a<u)&&(a=u);var b=e();a>b&&(a=b);var c=v*a+a;return $(".responsive-column-width").css("max-width",c),a!==r.cols}function g(a){var b=r.$el;b.find("> li").unbind().removeData(),$(".responsive-column-width").css("width",""),r.generate_grid_and_stylesheet(),b.find("> li").each(a),r.init(),$(".responsive-column-width").css("width",r.cols*t+r.cols*s*2)}function h(){return w}function i(a){w=Math.max(u,a)}function j(a,b,c){var d=q(b),e=d.col,f=d.row,g=Number(b.width()),h=Number(b.getCalculatedHeight());r.add_widget(a,g,h,e,f),c&&n(!0),l(b,f,e),$(a).attrchange({trackValues:!0,callback:function(a){"data-row"==a.attributeName?l(b,Number(a.newValue),void 0):"data-col"==a.attributeName&&l(b,void 0,Number(a.newValue))}})}function k(a,b){var c=b.getCalculatedHeight(),d=Number($(a).attr("data-sizey")),e=Number($(a).attr("data-sizex"));c==d&&b.col_width()==e||r.resize_widget($(a),b.col_width(),c,function(){r.set_dom_grid_height()})}function l(a,b,c){var d=r.cols;_.isUndefined(b)||(a.row[d]=b),_.isUndefined(c)||(a.col[d]=c)}function m(a){a?x.fadeOut(0).appendTo("body").fadeIn(500):x.fadeOut(500).remove()}function n(a,b){_.isUndefined(b)&&(b=!0);var c=b?250:0;a?($(".pane-tools").fadeIn(c),$("#column-tools").fadeIn(c)):($(".pane-tools").fadeOut(c),$("#column-tools").fadeOut(c))}function o(a){$(a).hover(function(){p(this,!0)},function(){p(this,!1)})}function p(a,b){b?$(a).find(".sub-section-tools").fadeIn(250):$(a).find(".sub-section-tools").fadeOut(250)}function q(a){var b=r.cols;if(_.isNumber(a.row)&&_.isNumber(a.col)){var c={};c[b]=a.row,a.row=c,c={},c[b]=a.col,a.col=c}var d=1,e=1e3;for(var f in a.col){if(f==b)return{row:a.row[f],col:a.col[f]};if(a.col[f]>b)d=b;else{var g=b-f;g<e&&(d=f,e=g)}}return d in a.col&&d in a.row?{row:a.row[d],col:a.col[d]}:{row:1,col:d}}var r,s=10,t=300,u=3,v=s+t+s,w=u,x=$('<div class="wrapperloading"><div class="loading up" ></div><div class="loading down"></div></div>');return ko.bindingHandlers.grid={init:function(b,c,d,e,f){r=$(b).gridster({widget_margins:[s,s],widget_base_dimensions:[t,10],resize:{enabled:!1,axes:"x"}}).data("gridster"),a(!1),r.disable()}},{showLoadingIndicator:function(a){m(a)},showPaneEditIcons:function(a,b){n(a,b)},attachWidgetEditIcons:function(a){o(a)},getPositionForScreenSize:function(a){return q(a)},processResize:function(b){a(b)},disableGrid:function(){r.disable()},enableGrid:function(){r.enable()},addPane:function(a,b,c){j(a,b,c)},updatePane:function(a,b){k(a,b)},removePane:function(a){r.remove_widget(a)},removeAllPanes:function(){r.remove_all_widgets()},addGridColumnLeft:function(){b(!0)},addGridColumnRight:function(){b(!1)},subGridColumnLeft:function(){c(!0)},subGridColumnRight:function(){c(!1)},getUserColumns:function(){return h()},setUserColumns:function(a){i(a)}}}function PaneModel(a,b){var c=this;this.title=ko.observable(),this.width=ko.observable(1),this.row={},this.col={},this.col_width=ko.observable(1),this.col_width.subscribe(function(a){c.processSizeChange()}),this.widgets=ko.observableArray(),this.addWidget=function(a){this.widgets.push(a)},this.widgetCanMoveUp=function(a){return c.widgets.indexOf(a)>=1},this.widgetCanMoveDown=function(a){return c.widgets.indexOf(a)<c.widgets().length-1},this.moveWidgetUp=function(a){if(c.widgetCanMoveUp(a)){var b=c.widgets.indexOf(a),d=c.widgets();c.widgets.splice(b-1,2,d[b],d[b-1])}},this.moveWidgetDown=function(a){if(c.widgetCanMoveDown(a)){var b=c.widgets.indexOf(a),d=c.widgets();c.widgets.splice(b,2,d[b+1],d[b])}},this.processSizeChange=function(){setTimeout(function(){_.each(c.widgets(),function(a){a.processSizeChange()})},1e3)},this.getCalculatedHeight=function(){var a=_.reduce(c.widgets(),function(a,b){return a+b.height()},0);a*=6,a+=3,a*=10;var b=Math.ceil((a+20)/30);return Math.max(4,b)},this.serialize=function(){var a=[];return _.each(c.widgets(),function(b){a.push(b.serialize())}),{title:c.title(),width:c.width(),row:c.row,col:c.col,col_width:Number(c.col_width()),widgets:a}},this.deserialize=function(d){c.title(d.title),c.width(d.width),c.row=d.row,c.col=d.col,c.col_width(d.col_width||1),_.each(d.widgets,function(d){var e=new WidgetModel(a,b);e.deserialize(d),c.widgets.push(e)})},this.dispose=function(){_.each(c.widgets(),function(a){a.dispose()})}}function WidgetModel(a,b){function c(){_.isUndefined(d.widgetInstance)||(_.isFunction(d.widgetInstance.onDispose)&&d.widgetInstance.onDispose(),d.widgetInstance=void 0)}var d=this;this.datasourceRefreshNotifications={},this.calculatedSettingScripts={},this.title=ko.observable(),this.fillSize=ko.observable(!1),this.type=ko.observable(),this.type.subscribe(function(a){function e(){f.newInstance(d.settings(),function(a){d.fillSize(!0===f.fill_size),d.widgetInstance=a,d.shouldRender(!0),d._heightUpdate.valueHasMutated()})}if(c(),a in b&&_.isFunction(b[a].newInstance)){var f=b[a];f.external_scripts?head.js(f.external_scripts.slice(0),e):e()}}),this.settings=ko.observable({}),this.settings.subscribe(function(a){!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.onSettingsChanged)&&d.widgetInstance.onSettingsChanged(a),d.updateCalculatedSettings(),d._heightUpdate.valueHasMutated()}),this.processDatasourceUpdate=function(a){var b=d.datasourceRefreshNotifications[a];_.isArray(b)&&_.each(b,function(a){d.processCalculatedSetting(a)})},this.callValueFunction=function(b){return b.call(void 0,a.datasourceData)},this.processSizeChange=function(){!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.onSizeChanged)&&d.widgetInstance.onSizeChanged()},this.processCalculatedSetting=function(a){if(_.isFunction(d.calculatedSettingScripts[a])){var b=void 0;try{b=d.callValueFunction(d.calculatedSettingScripts[a])}catch(e){var c=d.settings()[a];e instanceof ReferenceError&&/^\w+$/.test(c)&&(b=c)}if(!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.onCalculatedValueChanged)&&!_.isUndefined(b))try{d.widgetInstance.onCalculatedValueChanged(a,b)}catch(a){console.log(a.toString())}}},this.updateCalculatedSettings=function(){if(d.datasourceRefreshNotifications={},d.calculatedSettingScripts={},!_.isUndefined(d.type())){var a=b[d.type()].settings,c=new RegExp("datasources.([\\w_-]+)|datasources\\[['\"]([^'\"]+)","g"),e=d.settings();_.each(a,function(a){if("calculated"==a.type){var b=e[a.name];if(!_.isUndefined(b)){_.isArray(b)&&(b="["+b.join(",")+"]"),(b.match(/;/g)||[]).length<=1&&-1==b.indexOf("return")&&(b="return "+b);var f;try{f=new Function("datasources",b)}catch(b){var g=e[a.name].replace(/"/g,'\\"').replace(/[\r\n]/g," \\\n");f=new Function("datasources",'return "'+g+'";')}d.calculatedSettingScripts[a.name]=f,d.processCalculatedSetting(a.name);for(var h;h=c.exec(b);){var i=h[1]||h[2],j=d.datasourceRefreshNotifications[i];_.isUndefined(j)&&(j=[],d.datasourceRefreshNotifications[i]=j),-1==_.indexOf(j,a.name)&&j.push(a.name)}}}})}},this._heightUpdate=ko.observable(),this.height=ko.computed({read:function(){return d._heightUpdate(),!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.getHeight)?d.widgetInstance.getHeight():1}}),this.shouldRender=ko.observable(!1),this.render=function(a){d.shouldRender(!1),!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.render)&&(d.widgetInstance.render(a),d.updateCalculatedSettings())},this.dispose=function(){},this.serialize=function(){return{title:d.title(),type:d.type(),settings:d.settings()}},this.deserialize=function(a){d.title(a.title),d.settings(a.settings),d.type(a.type)}}DatasourceModel=function(a,b){function c(){_.isUndefined(d.datasourceInstance)||(_.isFunction(d.datasourceInstance.onDispose)&&d.datasourceInstance.onDispose(),d.datasourceInstance=void 0)}var d=this;this.name=ko.observable(),this.latestData=ko.observable(),this.settings=ko.observable({}),this.settings.subscribe(function(a){!_.isUndefined(d.datasourceInstance)&&_.isFunction(d.datasourceInstance.onSettingsChanged)&&d.datasourceInstance.onSettingsChanged(a)}),this.updateCallback=function(b){a.processDatasourceUpdate(d,b),d.latestData(b);var c=new Date;d.last_updated(c.toLocaleTimeString())},this.type=ko.observable(),this.type.subscribe(function(a){function e(){f.newInstance(d.settings(),function(a){d.datasourceInstance=a,a.updateNow()},d.updateCallback)}if(c(),a in b&&_.isFunction(b[a].newInstance)){var f=b[a];f.external_scripts?head.js(f.external_scripts.slice(0),e):e()}}),this.last_updated=ko.observable("never"),this.last_error=ko.observable(),this.serialize=function(){return{name:d.name(),type:d.type(),settings:d.settings()}},this.deserialize=function(a){d.settings(a.settings),d.name(a.name),d.type(a.type)},this.getDataRepresentation=function(a){return new Function("data","return "+a+";").call(void 0,d.latestData())},this.updateNow=function(){!_.isUndefined(d.datasourceInstance)&&_.isFunction(d.datasourceInstance.updateNow)&&d.datasourceInstance.updateNow()},this.dispose=function(){c()}},DeveloperConsole=function(a){function b(){function b(a){var b=$("<tr></tr>"),d=$('<ul class="board-toolbar"></ul>'),e=$('<input class="table-row-value" style="width:100%;" type="text">'),f=$('<li><i class="icon-trash icon-white"></i></li>').click(function(a){c=_.without(c,e),b.remove()});c.push(e),a&&e.val(a),d.append(f),g.append(b.append($("<td></td>").append(e)).append($('<td class="table-row-operation">').append(d)))}var c=[],d=$("<div></div>"),e=$('<div class="table-operation text-button">ADD</div>'),f=$('<table class="table table-condensed sub-table"></table>');f.append($('<thead style=""><tr><th>Plugin Script URL</th></tr></thead>'));var g=$("<tbody></tbody>");f.append(g),d.append($("<p>Here you can add references to other scripts to load datasource or widget plugins.</p>")).append(f).append(e).append('<p>To learn how to build plugins for freeboard, please visit <a target="_blank" href="http://freeboard.github.io/freeboard/docs/plugin_example.html">http://freeboard.github.io/freeboard/docs/plugin_example.html</a></p>'),_.each(a.plugins(),function(a){b(a)}),e.click(function(a){b()}),new DialogBox(d,"Developer Console","OK",null,function(){_.each(a.plugins(),function(a){$('script[src^="'+a+'"]').remove()}),a.plugins.removeAll(),_.each(c,function(b){var c=b.val();c&&c.length>0&&(a.addPluginSource(c),head.js(c+"?"+Date.now()))})})}return{showDeveloperConsole:function(){b()}}},JSEditor=function(){function a(a){c=a}function b(a,b){var c='// Example: Convert temp from C to F and truncate to 2 decimal places.\n// return (datasources["MyDatasource"].sensor.tempInF * 1.8 + 32).toFixed(2);';a||(a=c);var d=$('<div class="code-window"></div>'),e=$('<div class="code-mirror-wrapper"></div>'),f=$('<div class="code-window-footer"></div>'),g=$('<div class="code-window-header cm-s-ambiance">This javascript will be re-evaluated any time a datasource referenced here is updated, and the value you <code><span class="cm-keyword">return</span></code> will be displayed in the widget. You can assume this javascript is wrapped in a function of the form <code><span class="cm-keyword">function</span>(<span class="cm-def">datasources</span>)</code> where datasources is a collection of javascript objects (keyed by their name) corresponding to the most current data in a datasource.</div>');d.append([g,e,f]),$("body").append(d);var h=CodeMirror(e.get(0),{value:a,mode:"javascript",theme:"ambiance",indentUnit:4,lineNumbers:!0,matchBrackets:!0,autoCloseBrackets:!0}),i=$('<span id="dialog-cancel" class="text-button">Close</span>').click(function(){if(b){var a=h.getValue();a===c&&(a=""),b(a),d.remove()}});f.append(i)}var c="";return{displayJSEditor:function(a,c){b(a,c)},setAssetRoot:function(b){a(b)}}},PluginEditor=function(a,b){function c(a,b){var c=$('<div class="validation-error"></div>').html(b);$("#setting-value-container-"+a).append(c)}function d(){$("#setting-row-instance-name").length?$("#setting-row-instance-name").nextAll().remove():$("#setting-row-plugin-types").nextAll().remove()}function e(a){return!isNaN(parseFloat(a))&&isFinite(a)}function f(c,d,e,f,g){var h=$("<textarea></textarea>");e.multi_input?h.change(function(){var a=[];$(c).find("textarea").each(function(){var b=$(this).val();b&&(a=a.concat(b))}),d.settings[e.name]=a}):h.change(function(){d.settings[e.name]=$(this).val()}),f&&h.val(f),b.createValueEditor(h);var i=$('<ul class="board-toolbar datasource-input-suffix"></ul>'),j=$('<div class="calculated-setting-row"></div>');j.append(h).append(i);var k=$('<li><i class="icon-plus icon-white"></i><label>DATASOURCE</label></li>').mousedown(function(a){a.preventDefault(),$(h).val("").focus().insertAtCaret('datasources["').trigger("freeboard-eval")});i.append(k);var l=$('<li><i class="icon-fullscreen icon-white"></i><label>.JS EDITOR</label></li>').mousedown(function(b){b.preventDefault(),a.displayJSEditor(h.val(),function(a){h.val(a),h.change()})});if(i.append(l),g){var m=$('<li class="remove-setting-row"><i class="icon-minus icon-white"></i><label></label></li>').mousedown(function(a){a.preventDefault(),j.remove(),$(c).find("textarea:first").change()});i.prepend(m)}$(c).append(j)}function g(a,b,g,h,i){function j(a,b){var c=$('<div id="setting-row-'+a+'" class="form-row"></div>').appendTo(n);return c.append('<div class="form-label"><label class="control-label">'+b+"</label></div>"),$('<div id="setting-value-container-'+a+'" class="form-value"></div>').appendTo(c)}function k(a,b,c){_.each(a,function(a){function d(){m.settings[a.name].length>0?n.show():n.hide()}function e(b){var c=$("<tr></tr>").appendTo(p),e={};_.isArray(m.settings[a.name])||(m.settings[a.name]=[]),m.settings[a.name].push(e),_.each(a.settings,function(a){var d=$("<td></td>").appendTo(c),f="";_.isUndefined(b[a.name])||(f=b[a.name]),e[a.name]=f,$('<input class="table-row-value" type="text">').appendTo(d).val(f).change(function(){e[a.name]=$(this).val()})}),c.append($('<td class="table-row-operation"></td>').append($('<ul class="board-toolbar"></ul>').append($("<li></li>").append($('<i class="icon-trash icon-white"></i>').click(function(){var b=m.settings[a.name].indexOf(e);-1!=b&&(m.settings[a.name].splice(b,1),c.remove(),d())}))))),k.scrollTop(k[0].scrollHeight),d()}!_.isUndefined(a.default_value)&&_.isUndefined(h[a.name])&&(h[a.name]=a.default_value);var g=a.name;_.isUndefined(a.display_name)||(g=a.display_name);var i=j(a.name,g);switch(a.type){case"array":var k=$('<div class="form-table-value-subtable"></div>').appendTo(i),l=$('<table class="table table-condensed sub-table"></table>').appendTo(k),n=$("<thead></thead>").hide().appendTo(l),o=$("<tr></tr>").appendTo(n),p=$("<tbody></tbody>").appendTo(l),q=[];_.each(a.settings,function(a){var b=a.name;_.isUndefined(a.display_name)||(b=a.display_name),$("<th>"+b+"</th>").appendTo(o)}),a.name in h&&(q=h[a.name]),$('<div class="table-operation text-button">ADD</div>').appendTo(i).click(function(){var b={};_.each(a.settings,function(a){b[a.name]=""}),e(b)}),_.each(q,function(a,b){e(a)});break;case"boolean":m.settings[a.name]=h[a.name];var r=$('<div class="onoffswitch"><label class="onoffswitch-label" for="'+a.name+'-onoff"><div class="onoffswitch-inner"><span class="on">YES</span><span class="off">NO</span></div><div class="onoffswitch-switch"></div></label></div>').appendTo(i),s=$('<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="'+a.name+'-onoff">').prependTo(r).change(function(){m.settings[a.name]=this.checked});a.name in h&&s.prop("checked",h[a.name]);break;case"option":var t=h[a.name],s=$("<select></select>").appendTo($('<div class="styled-select"></div>').appendTo(i)).change(function(){m.settings[a.name]=$(this).val()});_.each(a.options,function(a){var b,c;_.isObject(a)?(b=a.name,c=a.value):b=a,_.isUndefined(c)&&(c=b),_.isUndefined(t)&&(t=c),$("<option></option>").text(b).attr("value",c).appendTo(s)}),m.settings[a.name]=t,a.name in h&&s.val(h[a.name]);break;default:if(m.settings[a.name]=h[a.name],"calculated"==a.type){if(a.name in h){var u=h[a.name];if(a.multi_input&&_.isArray(u))for(var v=!1,w=0;w<u.length;w++)f(i,m,a,u[w],v),v=!0;else f(i,m,a,u,!1)}else f(i,m,a,null,!1);if(a.multi_input){var x=$('<ul class="board-toolbar"><li class="add-setting-row"><i class="icon-plus icon-white"></i><label>ADD</label></li></ul>').mousedown(function(b){b.preventDefault(),f(i,m,a,null,!0)});$(i).siblings(".form-label").append(x)}}else{var s=$('<input type="text">').appendTo(i).change(function(){"number"==a.type?m.settings[a.name]=Number($(this).val()):m.settings[a.name]=$(this).val()});if(a.name in h&&s.val(h[a.name]),b&&a.typeahead_data_field&&s.addClass("typeahead_data_field-"+a.typeahead_data_field),b&&a.typeahead_field){var y=[];s.keyup(function(a){a.which>=65&&a.which<=91&&s.trigger("change")}),$(s).autocomplete({source:y,select:function(a,b){s.val(b.item.value),s.trigger("change")}}),s.change(function(d){var e=s.val(),f=_.template(b)({input:e});$.get(f,function(b){if(c&&(b=b[c]),b=_.select(b,function(b){return b[a.typeahead_field][0]==e[0]}),y=_.map(b,function(b){return b[a.typeahead_field]}),$(s).autocomplete("option","source",y),1==b.length){b=b[0];for(var d in b)if(b.hasOwnProperty(d)){var f=$(_.template("input.typeahead_data_field-<%= field %>")({field:d}));f&&(f.val(b[d]),f.val()!=s.val()&&f.trigger("change"))}}})})}}}_.isUndefined(a.suffix)||i.append($('<div class="input-suffix">'+a.suffix+"</div>")),_.isUndefined(a.description)||i.append($('<div class="setting-description">'+a.description+"</div>"))})}var l,m={type:g,settings:{}},n=$("<div></div>"),o=$('<div id="plugin-description"></div>').hide();n.append(o),new DialogBox(n,a,"Save","Cancel",function(){$(".validation-error").remove();for(var a=0;a<l.settings.length;a++){var b=l.settings[a];if(b.required&&(_.isUndefined(m.settings[b.name])||""==m.settings[b.name]))return c(b.name,"This is required."),!0;if("integer"==b.type&&m.settings[b.name]%1!=0)return c(b.name,"Must be a whole number."),!0;if("number"==b.type&&!e(m.settings[b.name]))return c(b.name,"Must be a number."),!0}_.isFunction(i)&&i(m)});var p,q=_.keys(b);if(q.length>1){var r=j("plugin-types","Type");p=$("<select></select>").appendTo($('<div class="styled-select"></div>').appendTo(r)),p.append($("<option>Select a type...</option>").attr("value","undefined")),_.each(b,function(a){p.append($("<option></option>").text(a.display_name).attr("value",a.type_name))}),p.change(function(){m.type=$(this).val(),m.settings={},d(),l=b[p.val()],_.isUndefined(l)?($("#setting-row-instance-name").hide(),$("#dialog-ok").hide()):($("#setting-row-instance-name").show(),l.description&&l.description.length>0?o.html(l.description).show():o.hide(),$("#dialog-ok").show(),k(l.settings,l.typeahead_source,l.typeahead_data_segment))})}else 1==q.length&&(l=b[q[0]],m.type=l.type_name,m.settings={},k(l.settings));p&&(_.isUndefined(g)?($("#setting-row-instance-name").hide(),$("#dialog-ok").hide()):($("#dialog-ok").show(),p.val(g).trigger("change")))}return{createPluginEditor:function(a,b,c,d,e,f){g(a,b,c,d,e,f)}}},ValueEditor=function(a){function b(a,b){return!(!_.isArray(a)&&!_.isObject(a))||c(a,b)}function c(a,b){switch(b){case o.ANY:return!0;case o.ARRAY:return _.isArray(a);case o.OBJECT:return _.isObject(a);case o.STRING:return _.isString(a);case o.NUMBER:return _.isNumber(a);case o.BOOLEAN:return _.isBoolean(a)}}function d(a,b){$(a).parent().find(".validation-error").remove(),c(n,b)||$(a).parent().append("<div class='validation-error'>This field expects an expression that evaluates to type "+b+".</div>")}function e(a){var b=($(a).val().match(/\n/g)||[]).length,c=Math.min(200,20*(b+1));$(a).css({height:c+"px"})}function f(a,c,d){var e=j.exec(a),f=[];if(e)if(""==e[1])_.each(c,function(a){f.push({value:a.name(),entity:void 0,precede_char:"",follow_char:'"]'})});else if(""!=e[1]&&_.isUndefined(e[2])){var g=e[1];_.each(c,function(a){var b=a.name();b!=g&&0==b.indexOf(g)&&f.push({value:b,entity:void 0,precede_char:"",follow_char:'"]'})})}else{var h=_.find(c,function(a){return a.name()===e[1]});if(!_.isUndefined(h)){var i="data",k="";if(!_.isUndefined(e[2])){var l=e[3].lastIndexOf("]")+1;i+=e[3].substring(0,l),k=e[3].substring(l,e[3].length),k=k.replace(/^[\[\"]*/,""),k=k.replace(/[\"\]]*$/,"")}var o=h.getDataRepresentation(i);if(n=o,_.isArray(o)){for(var p=0;p<o.length;p++)if(0==p.toString().indexOf(k)){var q=o[p];b(q,d)&&f.push({value:p,entity:q,precede_char:"[",follow_char:"]",preview:q.toString()})}}else _.isObject(o)&&_.each(o,function(a,c){0==c.indexOf(k)&&b(a,d)&&f.push({value:c,entity:a,precede_char:'["',follow_char:'"]'})})}}m=f}function g(b,c){var e=$(b).val().substring(0,$(b).getCaretPosition());if(e=e.replace(String.fromCharCode(160)," "),f(e,a.datasources(),c),m.length>0){k||(k=$('<ul id="value-selector" class="value-dropdown"></ul>').insertAfter(b).width($(b).outerWidth()-2).css("left",$(b).position().left).css("top",$(b).position().top+$(b).outerHeight()-1)),k.empty(),k.scrollTop(0);var g=!0;l=0,_.each(m,function(a,c){var d=h(b,e,a,c);g&&($(d).addClass("selected"),g=!1)})}else d(b,c),$(b).next("ul#value-selector").remove(),k=null,l=-1}function h(a,b,c,d){var e=c.value;return c.preview&&(e=e+"<span class='preview'>"+c.preview+"</span>"),$("<li>"+e+"</li>").appendTo(k).mouseenter(function(){$(this).trigger("freeboard-select")}).mousedown(function(a){$(this).trigger("freeboard-insertValue"),a.preventDefault()}).data("freeboard-optionIndex",d).data("freeboard-optionValue",c.value).bind("freeboard-insertValue",function(){var d=c.value;d=c.precede_char+d+c.follow_char;var e=b.lastIndexOf("]");-1!=e?$(a).replaceTextAt(e+1,$(a).val().length,d):$(a).insertAtCaret(d),n=c.entity,$(a).triggerHandler("mouseup")}).bind("freeboard-select",function(){$(this).parent().find("li.selected").removeClass("selected"),$(this).addClass("selected"),l=$(this).data("freeboard-optionIndex")})}function i(a,b){$(a).addClass("calculated-value-input").bind("keyup mouseup freeboard-eval",function(c){if(k&&"keyup"==c.type&&(38==c.keyCode||40==c.keyCode||13==c.keyCode))return void c.preventDefault();g(a,b)}).focus(function(){$(a).css({"z-index":3001}),e(a)}).focusout(function(){d(a,b),$(a).css({height:"","z-index":3e3}),$(a).next("ul#value-selector").remove(),k=null,l=-1}).bind("keydown",function(a){if(k)if(38==a.keyCode||40==a.keyCode){a.preventDefault();var b=$(k).find("li");38==a.keyCode?l--:40==a.keyCode&&l++,l<0?l=b.size()-1:l>=b.size()&&(l=0);var c=$(b).eq(l);c.trigger("freeboard-select"),$(k).scrollTop($(c).position().top)}else 13==a.keyCode&&(a.preventDefault(),-1!=l&&$(k).find("li").eq(l).trigger("freeboard-insertValue"))})}var j=new RegExp('.*datasources\\["([^"]*)("\\])?(.*)$'),k=null,l=0,m=[],n=null,o={ANY:"any",ARRAY:"array",OBJECT:"object",STRING:"string",NUMBER:"number",BOOLEAN:"boolean"};return{createValueEditor:function(a,b){b?i(a,b):i(a,o.ANY)},EXPECTED_TYPE:o}},function(a){function b(){var a=document.createElement("p"),b=!1;if(a.addEventListener)a.addEventListener("DOMAttrModified",function(){b=!0},!1);else{if(!a.attachEvent)return!1;a.attachEvent("onDOMAttrModified",function(){b=!0})}return a.setAttribute("id","target"),b}function c(b,c){if(b){var d=this.data("attr-old-value");if(c.attributeName.indexOf("style")>=0){d.style||(d.style={});var e=c.attributeName.split(".");c.attributeName=e[0],c.oldValue=d.style[e[1]],c.newValue=e[1]+":"+this.prop("style")[a.camelCase(e[1])],d.style[e[1]]=c.newValue}else c.oldValue=d[c.attributeName],c.newValue=this.attr(c.attributeName),d[c.attributeName]=c.newValue;this.data("attr-old-value",d)}}var d=window.MutationObserver||window.WebKitMutationObserver;a.fn.attrchange=function(e){var f={trackValues:!1,callback:a.noop};if("function"==typeof e?f.callback=e:a.extend(f,e),f.trackValues&&a(this).each(function(b,c){for(var d,e={},b=0,f=c.attributes,g=f.length;b<g;b++)d=f.item(b),e[d.nodeName]=d.value;a(this).data("attr-old-value",e)}),d){var g={subtree:!1,attributes:!0,attributeOldValue:f.trackValues},h=new d(function(b){b.forEach(function(b){var c=b.target;f.trackValues&&(b.newValue=a(c).attr(b.attributeName)),f.callback.call(c,b)})});return this.each(function(){h.observe(this,g)})}return b()?this.on("DOMAttrModified",function(a){a.originalEvent&&(a=a.originalEvent),a.attributeName=a.attrName,a.oldValue=a.prevValue,f.callback.call(this,a)}):"onpropertychange"in document.body?this.on("propertychange",function(b){b.attributeName=window.event.propertyName,c.call(a(this),f.trackValues,b),f.callback.call(this,b)}):this}}(jQuery),function(a){a.eventEmitter={_JQInit:function(){this._JQ=a(this)},emit:function(a,b){!this._JQ&&this._JQInit(),this._JQ.trigger(a,b)},once:function(a,b){!this._JQ&&this._JQInit(),this._JQ.one(a,b)},on:function(a,b){!this._JQ&&this._JQInit(),this._JQ.bind(a,b)},off:function(a,b){!this._JQ&&this._JQInit(),this._JQ.unbind(a,b)}}}(jQuery);var freeboard=function(){function a(a){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var b=new RegExp("[\\?&]"+a+"=([^&#]*)"),c=b.exec(location.search);return null==c?"":decodeURIComponent(c[1].replace(/\+/g," "))}var b={},c={},d=new FreeboardUI,e=new FreeboardModel(b,c,d),f=new JSEditor,g=new ValueEditor(e),h=new PluginEditor(f,g),i=new DeveloperConsole(e),j={values:{
+"font-family":'"HelveticaNeue-UltraLight", "Helvetica Neue Ultra Light", "Helvetica Neue", sans-serif',color:"#d3d4d4","font-weight":100}};return ko.bindingHandlers.pluginEditor={init:function(a,f,g,i,j){var k=ko.unwrap(f()),l={},m=void 0,n="";"datasource"==k.type?(l=b,n="Datasource"):"widget"==k.type?(l=c,n="Widget"):"pane"==k.type&&(n="Pane"),$(a).click(function(f){if("delete"==k.operation){new DialogBox($("<p>Are you sure you want to delete this "+n+"?</p>"),"Confirm Delete","Yes","No",function(){"datasource"==k.type?e.deleteDatasource(i):"widget"==k.type?e.deleteWidget(i):"pane"==k.type&&e.deletePane(i)})}else{var g=void 0;"datasource"==k.type?"add"==k.operation?m={}:(g=i.type(),m=i.settings(),m.name=i.name()):"widget"==k.type?"add"==k.operation?m={}:(g=i.type(),m=i.settings()):"pane"==k.type&&(m={},"edit"==k.operation&&(m.title=i.title(),m.col_width=i.col_width()),l={settings:{settings:[{name:"title",display_name:"Title",type:"text"},{name:"col_width",display_name:"Columns",type:"integer",default_value:1,required:!0}]}}),h.createPluginEditor(n,l,g,m,function(f){if("add"==k.operation){if("datasource"==k.type){var g=new DatasourceModel(e,b);e.addDatasource(g),g.name(f.settings.name),delete f.settings.name,g.settings(f.settings),g.type(f.type)}else if("widget"==k.type){var g=new WidgetModel(e,c);g.settings(f.settings),g.type(f.type),i.widgets.push(g),d.attachWidgetEditIcons(a)}}else"edit"==k.operation&&("pane"==k.type?(i.title(f.settings.title),i.col_width(f.settings.col_width),d.processResize(!1)):("datasource"==k.type&&(i.name(f.settings.name),delete f.settings.name),i.type(f.type),i.settings(f.settings)))})}})}},ko.virtualElements.allowedBindings.datasourceTypeSettings=!0,ko.bindingHandlers.datasourceTypeSettings={update:function(a,b,c,d,e){processPluginSettings(a,b,c,d,e)}},ko.bindingHandlers.pane={init:function(a,b,c,f,g){e.isEditing()&&$(a).css({cursor:"pointer"}),d.addPane(a,f,g.$root.isEditing())},update:function(a,b,c,f,g){-1==e.panes.indexOf(f)&&d.removePane(a),d.updatePane(a,f)}},ko.bindingHandlers.widget={init:function(a,b,c,f,g){e.isEditing()&&d.attachWidgetEditIcons($(a).parent())},update:function(a,b,c,d,e){d.shouldRender()&&($(a).empty(),d.render(a))}},$(function(){function a(){d.processResize(!0)}d.showLoadingIndicator(!0);var b;$(window).resize(function(){clearTimeout(b),b=setTimeout(a,500)})}),{initialize:function(b,c){ko.applyBindings(e);var f=a("load");""!=f?$.ajax({url:f,success:function(a){e.loadDashboard(a),_.isFunction(c)&&c()}}):(e.allow_edit(b),e.setEditing(b),d.showLoadingIndicator(!1),_.isFunction(c)&&c(),freeboard.emit("initialized"))},newDashboard:function(){e.loadDashboard({allow_edit:!0})},loadDashboard:function(a,b){e.loadDashboard(a,b)},serialize:function(){return e.serialize()},setEditing:function(a,b){e.setEditing(a,b)},isEditing:function(){return e.isEditing()},loadDatasourcePlugin:function(a){_.isUndefined(a.display_name)&&(a.display_name=a.type_name),a.settings.unshift({name:"name",display_name:"Name",type:"text",required:!0}),e.addPluginSource(a.source),b[a.type_name]=a,e._datasourceTypes.valueHasMutated()},resize:function(){d.processResize(!0)},loadWidgetPlugin:function(a){_.isUndefined(a.display_name)&&(a.display_name=a.type_name),e.addPluginSource(a.source),c[a.type_name]=a,e._widgetTypes.valueHasMutated()},setAssetRoot:function(a){f.setAssetRoot(a)},addStyle:function(a,b){var c=a+"{"+b+"}",d=$("style#fb-styles");0==d.length&&(d=$('<style id="fb-styles" type="text/css"></style>'),$("head").append(d)),d[0].styleSheet?d[0].styleSheet.cssText+=c:d.text(d.text()+c)},showLoadingIndicator:function(a){d.showLoadingIndicator(a)},showDialog:function(a,b,c,d,e){new DialogBox(a,b,c,d,e)},getDatasourceSettings:function(a){var b=e.datasources(),c=_.find(b,function(b){return b.name()===a});return c?c.settings():null},setDatasourceSettings:function(a,b){var c=e.datasources(),d=_.find(c,function(b){return b.name()===a});if(!d)return void console.log("Datasource not found");var f=_.defaults(b,d.settings());d.settings(f)},getStyleString:function(a){var b="";return _.each(j[a],function(a,c){b=b+c+":"+a+";"}),b},getStyleObject:function(a){return j[a]},showDeveloperConsole:function(){i.showDeveloperConsole()}}}();$.extend(freeboard,jQuery.eventEmitter);
\ No newline at end of file
diff --git a/WebSites/errors/403/js/freeboard.min.js.map b/WebSites/errors/403/js/freeboard.min.js.map
new file mode 100644
index 0000000..2cd9957
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"freeboard.min.js","sources":["freeboard.js"],"names":["DialogBox","contentElement","title","okTitle","cancelTitle","okCallback","closeModal","overlay","fadeOut","$","this","remove","modalDialog","append","appendTo","footer","click","hold","_","isFunction","fadeIn","FreeboardModel","datasourcePlugins","widgetPlugins","freeboardUI","self","SERIALIZATION_VERSION","version","isEditing","ko","observable","allow_edit","subscribe","newValue","show","hide","header_image","plugins","observableArray","datasources","panes","datasourceData","processDatasourceUpdate","datasourceModel","newData","datasourceName","name","each","pane","widgets","widget","_datasourceTypes","datasourceTypes","computed","read","returnTypes","datasourcePluginType","typeName","type_name","displayName","isUndefined","display_name","push","_widgetTypes","widgetTypes","widgetPluginType","addPluginSource","pluginSource","indexOf","serialize","datasource","columns","getUserColumns","deserialize","object","finishedCallback","finishLoad","setUserColumns","datasourceConfig","DatasourceModel","addDatasource","sortedPanes","sortBy","getPositionForScreenSize","row","paneConfig","PaneModel","length","setEditing","processResize","clearDashboard","plugin","isArray","head","js","removeAllPanes","dispose","removeAll","loadDashboard","dashboardData","callback","showLoadingIndicator","freeboard","emit","loadDashboardFromLocalFile","window","File","FileReader","FileList","Blob","input","document","createElement","type","on","event","files","target","file","reader","addEventListener","fileReaderEvent","textFile","jsonObject","JSON","parse","result","readAsText","trigger","alert","saveDashboard","contentType","a","blob","stringify","body","appendChild","href","URL","createObjectURL","download","deleteDatasource","createPane","newPane","addPane","addGridColumnLeft","addGridColumnRight","subGridColumnLeft","subGridColumnRight","deletePane","deleteWidget","utils","arrayForEach","editing","animate","animateLength","barHeight","outerHeight","addClass","removeClass","css","cursor","top","data","shown","attachWidgetEditIcons","enableGrid","unbind","disableGrid","showPaneEditIcons","toggleEditing","FreeboardUI","layoutWidgets","maxDisplayableColumns","getMaxDisplayableColumnCount","repositionFunction","paneElement","paneModel","dataFor","newPosition","attr","Math","min","col_width","grid","cols","col","processSizeChange","updateGridWidth","userColumns","repositionGrid","updateGridColumnControls","addGridColumn","shift","num_cols","prevColumnIndex","prevCol","prevRow","leftPreviewCol","newCol","rightPreviewCol","subtractGridColumn","col_controls","available_width","width","max_columns","floor","COLUMN_WIDTH","MIN_COLUMNS","newCols","undefined","new_width","rootElement","$el","find","removeData","generate_grid_and_stylesheet","init","PANE_WIDTH","PANE_MARGIN","numCols","max","element","viewModel","position","Number","height","getCalculatedHeight","add_widget","updatePositionForScreenSize","attrchange","trackValues","attributeName","updatePane","calculatedHeight","elementHeight","elementWidth","resize_widget","set_dom_grid_height","displayCols","loadingIndicator","hover","showWidgetEditIcons","isNumber","obj","newColumnIndex","columnDiff","columnIndex","delta","bindingHandlers","gridster","widget_margins","widget_base_dimensions","resize","enabled","axes","disable","enable","removePane","remove_widget","remove_all_widgets","theFreeboardModel","addWidget","widgetCanMoveUp","widgetCanMoveDown","i","moveWidgetUp","array","splice","moveWidgetDown","setTimeout","sumHeights","reduce","memo","rows","ceil","widgetConfig","WidgetModel","disposeWidgetInstance","widgetInstance","onDispose","datasourceRefreshNotifications","calculatedSettingScripts","fillSize","widgetType","newInstance","settings","fill_size","shouldRender","_heightUpdate","valueHasMutated","external_scripts","slice","onSettingsChanged","updateCalculatedSettings","refreshSettingNames","settingName","processCalculatedSetting","callValueFunction","theFunction","call","onSizeChanged","returnValue","e","rawValue","ReferenceError","test","onCalculatedValueChanged","console","log","toString","settingsDefs","datasourceRegex","RegExp","currentSettings","settingDef","script","match","valueFunction","Function","literalText","replace","matches","exec","dsName","getHeight","render","disposeDatasourceInstance","datasourceInstance","latestData","updateCallback","now","Date","last_updated","toLocaleTimeString","datasourceType","updateNow","last_error","getDataRepresentation","dataPath","DeveloperConsole","showDeveloperConsole","addNewScriptRow","scriptURL","tableRow","tableOperations","scriptInput","deleteOperation","pluginScriptsInputs","without","val","tableBody","container","addScript","table","JSEditor","setAssetRoot","_assetRoot","assetRoot","displayJSEditor","value","exampleText","codeWindow","codeMirrorWrapper","codeWindowFooter","codeWindowHeader","codeMirrorEditor","CodeMirror","get","mode","theme","indentUnit","lineNumbers","matchBrackets","autoCloseBrackets","closeButton","getValue","PluginEditor","jsEditor","valueEditor","_displayValidationError","errorMessage","errorElement","html","_removeSettingsRows","nextAll","_isNumerical","n","isNaN","parseFloat","isFinite","createPluginEditor","pluginTypes","currentTypeName","currentSettingsValues","settingsSavedCallback","createSettingRow","tr","form","createSettingsFromDefinition","processHeaderVisibility","newSettings","subTableHead","createSubsettingRow","subsettingValue","subsettingRow","subTableBody","newSetting","subSettingDef","subsettingCol","subsettingValueString","change","subSettingIndex","subTableDiv","scrollTop","scrollHeight","default_value","valueCell","subTable","subTableHeadRow","currentSubSettingValues","subsettingDisplayName","newSubsettingValue","currentSubSettingValue","onOffSwitch","prependTo","checked","prop","defaultValue","options","option","optionName","optionValue","isObject","text","createValueEditor","datasourceToolbox","datasourceTool","mousedown","preventDefault","focus","insertAtCaret","jsEditorTool","suffix","description","selectedType","pluginDescriptionElement","index","required","typeSelect","pluginTypeNames","keys","typeRow","pluginType","currentInstanceName","ValueEditor","_resizeValueEditor","lineBreakCount","newHeight","_autocompleteFromDatasource","inputString","replacementString","_veDatasourceRegex","follow_char","dataPathItems","split","dataPathItem","lastPathObject","last","charAt","dataValue","followChar","_autocompleteOptions","_autocompleteReplacementString","dropdown","selectedOptionIndex","bind","keyCode","substring","getCaretPosition","String","fromCharCode","insertAfter","outerWidth","left","empty","selected","currentIndex","li","mouseenter","replacementIndex","lastIndexOf","replaceTextAt","triggerHandler","parent","next","z-index","focusout","optionItems","size","optionElement","eq","isDOMAttrModifiedSupported","p","flag","attachEvent","setAttribute","checkAttributes","chkAttr","attributes","oldValue","camelCase","MutationObserver","WebKitMutationObserver","fn","o","cfg","noop","extend","el","attrs","l","item","nodeName","mOptions","subtree","attributeOldValue","observer","mutations","forEach","_this","observe","originalEvent","attrName","prevValue","propertyName","jQuery","eventEmitter","_JQInit","_JQ","evt","once","handler","one","off","getParameterByName","regex","results","location","search","decodeURIComponent","pluginEditor","developerConsole","currentStyle","values","font-family","color","font-weight","valueAccessor","allBindingsAccessor","unwrap","types","operation","phraseElement","instanceType","newViewModel","virtualElements","allowedBindings","datasourceTypeSettings","update","bindingContext","processPluginSettings","$root","resizeEnd","resizeTimer","clearTimeout","initialize","allowEdit","applyBindings","freeboardLocation","ajax","url","success","newDashboard","configuration","loadDatasourcePlugin","unshift","source","loadWidgetPlugin","addStyle","selector","rules","styleString","styleElement","styleSheet","cssText","showDialog","getDatasourceSettings","setDatasourceSettings","combinedSettings","defaults","getStyleString","returnString","getStyleObject"],"mappings":"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"}
\ No newline at end of file
diff --git a/WebSites/errors/403/js/freeboard.plugins.js b/WebSites/errors/403/js/freeboard.plugins.js
new file mode 100644
index 0000000..e0145c1
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.plugins.js
@@ -0,0 +1,1702 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+(function () {
+	var jsonDatasource = function (settings, updateCallback) {
+		var self = this;
+		var updateTimer = null;
+		var currentSettings = settings;
+		var errorStage = 0; 	// 0 = try standard request
+		// 1 = try JSONP
+		// 2 = try thingproxy.freeboard.io
+		var lockErrorStage = false;
+
+		function updateRefresh(refreshTime) {
+			if (updateTimer) {
+				clearInterval(updateTimer);
+			}
+
+			updateTimer = setInterval(function () {
+				self.updateNow();
+			}, refreshTime);
+		}
+
+		updateRefresh(currentSettings.refresh * 1000);
+
+		this.updateNow = function () {
+			if ((errorStage > 1 && !currentSettings.use_thingproxy) || errorStage > 2) // We've tried everything, let's quit
+			{
+				return; // TODO: Report an error
+			}
+
+			var requestURL = currentSettings.url;
+
+			if (errorStage == 2 && currentSettings.use_thingproxy) {
+				requestURL = (location.protocol == "https:" ? "https:" : "http:") + "//thingproxy.freeboard.io/fetch/" + encodeURI(currentSettings.url);
+			}
+
+			var body = currentSettings.body;
+
+			// Can the body be converted to JSON?
+			if (body) {
+				try {
+					body = JSON.parse(body);
+				}
+				catch (e) {
+				}
+			}
+
+			$.ajax({
+				url: requestURL,
+				dataType: (errorStage == 1) ? "JSONP" : "JSON",
+				type: currentSettings.method || "GET",
+				data: body,
+				beforeSend: function (xhr) {
+					try {
+						_.each(currentSettings.headers, function (header) {
+							var name = header.name;
+							var value = header.value;
+
+							if (!_.isUndefined(name) && !_.isUndefined(value)) {
+								xhr.setRequestHeader(name, value);
+							}
+						});
+					}
+					catch (e) {
+					}
+				},
+				success: function (data) {
+					lockErrorStage = true;
+					updateCallback(data);
+				},
+				error: function (xhr, status, error) {
+					if (!lockErrorStage) {
+						// TODO: Figure out a way to intercept CORS errors only. The error message for CORS errors seems to be a standard 404.
+						errorStage++;
+						self.updateNow();
+					}
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			clearInterval(updateTimer);
+			updateTimer = null;
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			lockErrorStage = false;
+			errorStage = 0;
+
+			currentSettings = newSettings;
+			updateRefresh(currentSettings.refresh * 1000);
+			self.updateNow();
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		type_name: "JSON",
+		settings: [
+			{
+				name: "url",
+				display_name: "URL",
+				type: "text"
+			},
+			{
+				name: "use_thingproxy",
+				display_name: "Try thingproxy",
+				description: 'A direct JSON connection will be tried first, if that fails, a JSONP connection will be tried. If that fails, you can use thingproxy, which can solve many connection problems to APIs. <a href="https://github.com/Freeboard/thingproxy" target="_blank">More information</a>.',
+				type: "boolean",
+				default_value: true
+			},
+			{
+				name: "refresh",
+				display_name: "Refresh Every",
+				type: "number",
+				suffix: "seconds",
+				default_value: 5
+			},
+			{
+				name: "method",
+				display_name: "Method",
+				type: "option",
+				options: [
+					{
+						name: "GET",
+						value: "GET"
+					},
+					{
+						name: "POST",
+						value: "POST"
+					},
+					{
+						name: "PUT",
+						value: "PUT"
+					},
+					{
+						name: "DELETE",
+						value: "DELETE"
+					}
+				]
+			},
+			{
+				name: "body",
+				display_name: "Body",
+				type: "text",
+				description: "The body of the request. Normally only used if method is POST"
+			},
+			{
+				name: "headers",
+				display_name: "Headers",
+				type: "array",
+				settings: [
+					{
+						name: "name",
+						display_name: "Name",
+						type: "text"
+					},
+					{
+						name: "value",
+						display_name: "Value",
+						type: "text"
+					}
+				]
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new jsonDatasource(settings, updateCallback));
+		}
+	});
+
+	var openWeatherMapDatasource = function (settings, updateCallback) {
+		var self = this;
+		var updateTimer = null;
+		var currentSettings = settings;
+
+		function updateRefresh(refreshTime) {
+			if (updateTimer) {
+				clearInterval(updateTimer);
+			}
+
+			updateTimer = setInterval(function () {
+				self.updateNow();
+			}, refreshTime);
+		}
+
+		function toTitleCase(str) {
+			return str.replace(/\w\S*/g, function (txt) {
+				return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
+			});
+		}
+
+		updateRefresh(currentSettings.refresh * 1000);
+
+		this.updateNow = function () {
+			$.ajax({
+				url: "http://api.openweathermap.org/data/2.5/weather?APPID="+currentSettings.api_key+"&q=" + encodeURIComponent(currentSettings.location) + "&units=" + currentSettings.units,
+				dataType: "JSONP",
+				success: function (data) {
+					// Rejigger our data into something easier to understand
+					var newData = {
+						place_name: data.name,
+						sunrise: (new Date(data.sys.sunrise * 1000)).toLocaleTimeString(),
+						sunset: (new Date(data.sys.sunset * 1000)).toLocaleTimeString(),
+						conditions: toTitleCase(data.weather[0].description),
+						current_temp: data.main.temp,
+						high_temp: data.main.temp_max,
+						low_temp: data.main.temp_min,
+						pressure: data.main.pressure,
+						humidity: data.main.humidity,
+						wind_speed: data.wind.speed,
+						wind_direction: data.wind.deg
+					};
+
+					updateCallback(newData);
+				},
+				error: function (xhr, status, error) {
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			clearInterval(updateTimer);
+			updateTimer = null;
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			self.updateNow();
+			updateRefresh(currentSettings.refresh * 1000);
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		type_name: "openweathermap",
+		display_name: "Open Weather Map API",
+		settings: [
+			{
+				name: "api_key",
+				display_name: "API Key",
+				type: "text",
+				description: "Your personal API Key from Open Weather Map"
+			},
+            {
+				name: "location",
+				display_name: "Location",
+				type: "text",
+				description: "Example: London, UK"
+			},
+			{
+				name: "units",
+				display_name: "Units",
+				type: "option",
+				default: "imperial",
+				options: [
+					{
+						name: "Imperial",
+						value: "imperial"
+					},
+					{
+						name: "Metric",
+						value: "metric"
+					}
+				]
+			},
+			{
+				name: "refresh",
+				display_name: "Refresh Every",
+				type: "number",
+				suffix: "seconds",
+				default_value: 5
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new openWeatherMapDatasource(settings, updateCallback));
+		}
+	});
+
+	var dweetioDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+
+		function onNewDweet(dweet) {
+			updateCallback(dweet);
+		}
+
+		this.updateNow = function () {
+			dweetio.get_latest_dweet_for(currentSettings.thing_id, function (err, dweet) {
+				if (err) {
+					//onNewDweet({});
+				}
+				else {
+					onNewDweet(dweet[0].content);
+				}
+			});
+		}
+
+		this.onDispose = function () {
+
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			dweetio.stop_listening_for(currentSettings.thing_id);
+
+			currentSettings = newSettings;
+
+			dweetio.listen_for(currentSettings.thing_id, function (dweet) {
+				onNewDweet(dweet.content);
+			});
+		}
+
+		self.onSettingsChanged(settings);
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "dweet_io",
+		"display_name": "Dweet.io",
+		"external_scripts": [
+			"http://dweet.io/client/dweet.io.min.js"
+		],
+		"settings": [
+			{
+				name: "thing_id",
+				display_name: "Thing Name",
+				"description": "Example: salty-dog-1",
+				type: "text"
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new dweetioDatasource(settings, updateCallback));
+		}
+	});
+
+	var playbackDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+		var currentDataset = [];
+		var currentIndex = 0;
+		var currentTimeout;
+
+		function moveNext() {
+			if (currentDataset.length > 0) {
+				if (currentIndex < currentDataset.length) {
+					updateCallback(currentDataset[currentIndex]);
+					currentIndex++;
+				}
+
+				if (currentIndex >= currentDataset.length && currentSettings.loop) {
+					currentIndex = 0;
+				}
+
+				if (currentIndex < currentDataset.length) {
+					currentTimeout = setTimeout(moveNext, currentSettings.refresh * 1000);
+				}
+			}
+			else {
+				updateCallback({});
+			}
+		}
+
+		function stopTimeout() {
+			currentDataset = [];
+			currentIndex = 0;
+
+			if (currentTimeout) {
+				clearTimeout(currentTimeout);
+				currentTimeout = null;
+			}
+		}
+
+		this.updateNow = function () {
+			stopTimeout();
+
+			$.ajax({
+				url: currentSettings.datafile,
+				dataType: (currentSettings.is_jsonp) ? "JSONP" : "JSON",
+				success: function (data) {
+					if (_.isArray(data)) {
+						currentDataset = data;
+					}
+					else {
+						currentDataset = [];
+					}
+
+					currentIndex = 0;
+
+					moveNext();
+				},
+				error: function (xhr, status, error) {
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			stopTimeout();
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			self.updateNow();
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "playback",
+		"display_name": "Playback",
+		"settings": [
+			{
+				"name": "datafile",
+				"display_name": "Data File URL",
+				"type": "text",
+				"description": "A link to a JSON array of data."
+			},
+			{
+				name: "is_jsonp",
+				display_name: "Is JSONP",
+				type: "boolean"
+			},
+			{
+				"name": "loop",
+				"display_name": "Loop",
+				"type": "boolean",
+				"description": "Rewind and loop when finished"
+			},
+			{
+				"name": "refresh",
+				"display_name": "Refresh Every",
+				"type": "number",
+				"suffix": "seconds",
+				"default_value": 5
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new playbackDatasource(settings, updateCallback));
+		}
+	});
+
+	var clockDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+		var timer;
+
+		function stopTimer() {
+			if (timer) {
+				clearTimeout(timer);
+				timer = null;
+			}
+		}
+
+		function updateTimer() {
+			stopTimer();
+			timer = setInterval(self.updateNow, currentSettings.refresh * 1000);
+		}
+
+		this.updateNow = function () {
+			var date = new Date();
+
+			var data = {
+				numeric_value: date.getTime(),
+				full_string_value: date.toLocaleString(),
+				date_string_value: date.toLocaleDateString(),
+				time_string_value: date.toLocaleTimeString(),
+				date_object: date
+			};
+
+			updateCallback(data);
+		}
+
+		this.onDispose = function () {
+			stopTimer();
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			updateTimer();
+		}
+
+		updateTimer();
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "clock",
+		"display_name": "Clock",
+		"settings": [
+			{
+				"name": "refresh",
+				"display_name": "Refresh Every",
+				"type": "number",
+				"suffix": "seconds",
+				"default_value": 1
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new clockDatasource(settings, updateCallback));
+		}
+	});
+freeboard.loadDatasourcePlugin({
+		// **type_name** (required) : A unique name for this plugin. This name should be as unique as possible to avoid collisions with other plugins, and should follow naming conventions for javascript variable and function declarations.
+		"type_name"   : "meshblu",
+		// **display_name** : The pretty name that will be used for display purposes for this plugin. If the name is not defined, type_name will be used instead.
+		"display_name": "Octoblu",
+        // **description** : A description of the plugin. This description will be displayed when the plugin is selected or within search results (in the future). The description may contain HTML if needed.
+        "description" : "app.octoblu.com",
+		// **external_scripts** : Any external scripts that should be loaded before the plugin instance is created.
+		"external_scripts" : [
+			"http://meshblu.octoblu.com/js/meshblu.js"
+		],
+		// **settings** : An array of settings that will be displayed for this plugin when the user adds it.
+		"settings"    : [
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "uuid",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "UUID",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "device uuid",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your device UUID",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "token",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Token",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "device token",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your device TOKEN",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "server",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Server",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "meshblu.octoblu.com",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your server",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "port",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Port",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "number",
+				// **default_value** : A default value for this setting.
+				"default_value": 80,
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "server port",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			}
+			
+		],
+		// **newInstance(settings, newInstanceCallback, updateCallback)** (required) : A function that will be called when a new instance of this plugin is requested.
+		// * **settings** : A javascript object with the initial settings set by the user. The names of the properties in the object will correspond to the setting names defined above.
+		// * **newInstanceCallback** : A callback function that you'll call when the new instance of the plugin is ready. This function expects a single argument, which is the new instance of your plugin object.
+		// * **updateCallback** : A callback function that you'll call if and when your datasource has an update for freeboard to recalculate. This function expects a single parameter which is a javascript object with the new, updated data. You should hold on to this reference and call it when needed.
+		newInstance   : function(settings, newInstanceCallback, updateCallback)
+		{
+			// myDatasourcePlugin is defined below.
+			newInstanceCallback(new meshbluSource(settings, updateCallback));
+		}
+	});
+
+
+	// ### Datasource Implementation
+	//
+	// -------------------
+	// Here we implement the actual datasource plugin. We pass in the settings and updateCallback.
+	var meshbluSource = function(settings, updateCallback)
+	{
+		// Always a good idea...
+		var self = this;
+
+		// Good idea to create a variable to hold on to our settings, because they might change in the future. See below.
+		var currentSettings = settings;
+
+		
+
+		/* This is some function where I'll get my data from somewhere */
+
+ 	
+		function getData()
+		{
+
+
+		 var conn = skynet.createConnection({
+    		"uuid": currentSettings.uuid,
+    		"token": currentSettings.token,
+    		"server": currentSettings.server, 
+    		"port": currentSettings.port
+  				});	
+			 
+			 conn.on('ready', function(data){	
+
+			 	conn.on('message', function(message){
+
+    				var newData = message;
+    				updateCallback(newData);
+
+ 						 });
+
+			 });
+			}
+
+	
+
+		// **onSettingsChanged(newSettings)** (required) : A public function we must implement that will be called when a user makes a change to the settings.
+		self.onSettingsChanged = function(newSettings)
+		{
+			// Here we update our current settings with the variable that is passed in.
+			currentSettings = newSettings;
+		}
+
+		// **updateNow()** (required) : A public function we must implement that will be called when the user wants to manually refresh the datasource
+		self.updateNow = function()
+		{
+			// Most likely I'll just call getData() here.
+			getData();
+		}
+
+		// **onDispose()** (required) : A public function we must implement that will be called when this instance of this plugin is no longer needed. Do anything you need to cleanup after yourself here.
+		self.onDispose = function()
+		{
+		
+			//conn.close();
+		}
+
+		// Here we call createRefreshTimer with our current settings, to kick things off, initially. Notice how we make use of one of the user defined settings that we setup earlier.
+	//	createRefreshTimer(currentSettings.refresh_time);
+	}
+
+
+}());
+
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+(function () {
+	var SPARKLINE_HISTORY_LENGTH = 100;
+	var SPARKLINE_COLORS = ["#FF9900", "#FFFFFF", "#B3B4B4", "#6B6B6B", "#28DE28", "#13F7F9", "#E6EE18", "#C41204", "#CA3CB8", "#0B1CFB"];
+
+    function easeTransitionText(newValue, textElement, duration) {
+
+		var currentValue = $(textElement).text();
+
+        if (currentValue == newValue)
+            return;
+
+        if ($.isNumeric(newValue) && $.isNumeric(currentValue)) {
+            var numParts = newValue.toString().split('.');
+            var endingPrecision = 0;
+
+            if (numParts.length > 1) {
+                endingPrecision = numParts[1].length;
+            }
+
+            numParts = currentValue.toString().split('.');
+            var startingPrecision = 0;
+
+            if (numParts.length > 1) {
+                startingPrecision = numParts[1].length;
+            }
+
+            jQuery({transitionValue: Number(currentValue), precisionValue: startingPrecision}).animate({transitionValue: Number(newValue), precisionValue: endingPrecision}, {
+                duration: duration,
+                step: function () {
+                    $(textElement).text(this.transitionValue.toFixed(this.precisionValue));
+                },
+                done: function () {
+                    $(textElement).text(newValue);
+                }
+            });
+        }
+        else {
+            $(textElement).text(newValue);
+        }
+    }
+
+	function addSparklineLegend(element, legend) {
+		var legendElt = $("<div class='sparkline-legend'></div>");
+		for(var i=0; i<legend.length; i++) {
+			var color = SPARKLINE_COLORS[i % SPARKLINE_COLORS.length];
+			var label = legend[i];
+			legendElt.append("<div class='sparkline-legend-value'><span style='color:" +
+							 color + "'>&#9679;</span>" + label + "</div>");
+		}
+		element.empty().append(legendElt);
+
+		freeboard.addStyle('.sparkline-legend', "margin:5px;");
+		freeboard.addStyle('.sparkline-legend-value',
+			'color:white; font:10px arial,san serif; float:left; overflow:hidden; width:50%;');
+		freeboard.addStyle('.sparkline-legend-value span',
+			'font-weight:bold; padding-right:5px;');
+	}
+
+	function addValueToSparkline(element, value, legend) {
+		var values = $(element).data().values;
+		var valueMin = $(element).data().valueMin;
+		var valueMax = $(element).data().valueMax;
+		if (!values) {
+			values = [];
+			valueMin = undefined;
+			valueMax = undefined;
+		}
+
+		var collateValues = function(val, plotIndex) {
+			if(!values[plotIndex]) {
+				values[plotIndex] = [];
+			}
+			if (values[plotIndex].length >= SPARKLINE_HISTORY_LENGTH) {
+				values[plotIndex].shift();
+			}
+			values[plotIndex].push(Number(val));
+
+			if(valueMin === undefined || val < valueMin) {
+				valueMin = val;
+			}
+			if(valueMax === undefined || val > valueMax) {
+				valueMax = val;
+			}
+		}
+
+		if(_.isArray(value)) {
+			_.each(value, collateValues);
+		} else {
+			collateValues(value, 0);
+		}
+		$(element).data().values = values;
+		$(element).data().valueMin = valueMin;
+		$(element).data().valueMax = valueMax;
+
+		var tooltipHTML = '<span style="color: {{color}}">&#9679;</span> {{y}}';
+
+		var composite = false;
+		_.each(values, function(valueArray, valueIndex) {
+			$(element).sparkline(valueArray, {
+				type: "line",
+				composite: composite,
+				height: "100%",
+				width: "100%",
+				fillColor: false,
+				lineColor: SPARKLINE_COLORS[valueIndex % SPARKLINE_COLORS.length],
+				lineWidth: 2,
+				spotRadius: 3,
+				spotColor: false,
+				minSpotColor: "#78AB49",
+				maxSpotColor: "#78AB49",
+				highlightSpotColor: "#9D3926",
+				highlightLineColor: "#9D3926",
+				chartRangeMin: valueMin,
+				chartRangeMax: valueMax,
+				tooltipFormat: (legend && legend[valueIndex])?tooltipHTML + ' (' + legend[valueIndex] + ')':tooltipHTML
+			});
+			composite = true;
+		});
+	}
+
+	var valueStyle = freeboard.getStyleString("values");
+
+	freeboard.addStyle('.widget-big-text', valueStyle + "font-size:75px;");
+
+	freeboard.addStyle('.tw-display', 'width: 100%; height:100%; display:table; table-layout:fixed;');
+
+	freeboard.addStyle('.tw-tr',
+		'display:table-row;');
+
+	freeboard.addStyle('.tw-tg',
+		'display:table-row-group;');
+
+	freeboard.addStyle('.tw-tc',
+		'display:table-caption;');
+
+	freeboard.addStyle('.tw-td',
+		'display:table-cell;');
+
+	freeboard.addStyle('.tw-value',
+		valueStyle +
+		'overflow: hidden;' +
+		'display: inline-block;' +
+		'text-overflow: ellipsis;');
+
+	freeboard.addStyle('.tw-unit',
+		'display: inline-block;' +
+		'padding-left: 10px;' +
+		'padding-bottom: 1.1em;' +
+		'vertical-align: bottom;');
+
+	freeboard.addStyle('.tw-value-wrapper',
+		'position: relative;' +
+		'vertical-align: middle;' +
+		'height:100%;');
+
+	freeboard.addStyle('.tw-sparkline',
+		'height:20px;');
+
+    var textWidget = function (settings) {
+
+        var self = this;
+
+        var currentSettings = settings;
+		var displayElement = $('<div class="tw-display"></div>');
+		var titleElement = $('<h2 class="section-title tw-title tw-td"></h2>');
+        var valueElement = $('<div class="tw-value"></div>');
+        var unitsElement = $('<div class="tw-unit"></div>');
+        var sparklineElement = $('<div class="tw-sparkline tw-td"></div>');
+
+		function updateValueSizing()
+		{
+			if(!_.isUndefined(currentSettings.units) && currentSettings.units != "") // If we're displaying our units
+			{
+				valueElement.css("max-width", (displayElement.innerWidth() - unitsElement.outerWidth(true)) + "px");
+			}
+			else
+			{
+				valueElement.css("max-width", "100%");
+			}
+		}
+
+        this.render = function (element) {
+			$(element).empty();
+
+			$(displayElement)
+				.append($('<div class="tw-tr"></div>').append(titleElement))
+				.append($('<div class="tw-tr"></div>').append($('<div class="tw-value-wrapper tw-td"></div>').append(valueElement).append(unitsElement)))
+				.append($('<div class="tw-tr"></div>').append(sparklineElement));
+
+			$(element).append(displayElement);
+
+			updateValueSizing();
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+
+			var shouldDisplayTitle = (!_.isUndefined(newSettings.title) && newSettings.title != "");
+			var shouldDisplayUnits = (!_.isUndefined(newSettings.units) && newSettings.units != "");
+
+			if(newSettings.sparkline)
+			{
+				sparklineElement.attr("style", null);
+			}
+			else
+			{
+				delete sparklineElement.data().values;
+				sparklineElement.empty();
+				sparklineElement.hide();
+			}
+
+			if(shouldDisplayTitle)
+			{
+				titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+				titleElement.attr("style", null);
+			}
+			else
+			{
+				titleElement.empty();
+				titleElement.hide();
+			}
+
+			if(shouldDisplayUnits)
+			{
+				unitsElement.html((_.isUndefined(newSettings.units) ? "" : newSettings.units));
+				unitsElement.attr("style", null);
+			}
+			else
+			{
+				unitsElement.empty();
+				unitsElement.hide();
+			}
+
+			var valueFontSize = 30;
+
+			if(newSettings.size == "big")
+			{
+				valueFontSize = 75;
+
+				if(newSettings.sparkline)
+				{
+					valueFontSize = 60;
+				}
+			}
+
+			valueElement.css({"font-size" : valueFontSize + "px"});
+
+			updateValueSizing();
+        }
+
+		this.onSizeChanged = function()
+		{
+			updateValueSizing();
+		}
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "value") {
+
+                if (currentSettings.animate) {
+                    easeTransitionText(newValue, valueElement, 500);
+                }
+                else {
+                    valueElement.text(newValue);
+                }
+
+                if (currentSettings.sparkline) {
+                    addValueToSparkline(sparklineElement, newValue);
+                }
+            }
+        }
+
+        this.onDispose = function () {
+
+        }
+
+        this.getHeight = function () {
+            if (currentSettings.size == "big" || currentSettings.sparkline) {
+                return 2;
+            }
+            else {
+                return 1;
+            }
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "text_widget",
+        display_name: "Text",
+        "external_scripts" : [
+            "plugins/thirdparty/jquery.sparkline.min.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "size",
+                display_name: "Size",
+                type: "option",
+                options: [
+                    {
+                        name: "Regular",
+                        value: "regular"
+                    },
+                    {
+                        name: "Big",
+                        value: "big"
+                    }
+                ]
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated"
+            },
+            {
+                name: "sparkline",
+                display_name: "Include Sparkline",
+                type: "boolean"
+            },
+            {
+                name: "animate",
+                display_name: "Animate Value Changes",
+                type: "boolean",
+                default_value: true
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new textWidget(settings));
+        }
+    });
+
+    var gaugeID = 0;
+	freeboard.addStyle('.gauge-widget-wrapper', "width: 100%;text-align: center;");
+	freeboard.addStyle('.gauge-widget', "width:200px;height:160px;display:inline-block;");
+
+    var gaugeWidget = function (settings) {
+        var self = this;
+
+        var thisGaugeID = "gauge-" + gaugeID++;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var gaugeElement = $('<div class="gauge-widget" id="' + thisGaugeID + '"></div>');
+
+        var gaugeObject;
+        var rendered = false;
+
+        var currentSettings = settings;
+
+        function createGauge() {
+            if (!rendered) {
+                return;
+            }
+
+            gaugeElement.empty();
+
+            gaugeObject = new JustGage({
+                id: thisGaugeID,
+                value: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                min: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                max: (_.isUndefined(currentSettings.max_value) ? 0 : currentSettings.max_value),
+                label: currentSettings.units,
+                showInnerShadow: false,
+                valueFontColor: "#d3d4d4"
+            });
+        }
+
+        this.render = function (element) {
+            rendered = true;
+            $(element).append(titleElement).append($('<div class="gauge-widget-wrapper"></div>').append(gaugeElement));
+            createGauge();
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            if (newSettings.min_value != currentSettings.min_value || newSettings.max_value != currentSettings.max_value || newSettings.units != currentSettings.units) {
+                currentSettings = newSettings;
+                createGauge();
+            }
+            else {
+                currentSettings = newSettings;
+            }
+
+            titleElement.html(newSettings.title);
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (!_.isUndefined(gaugeObject)) {
+                gaugeObject.refresh(Number(newValue));
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 3;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "gauge",
+        display_name: "Gauge",
+        "external_scripts" : [
+            "plugins/thirdparty/raphael.2.1.0.min.js",
+            "plugins/thirdparty/justgage.1.0.1.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated"
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            },
+            {
+                name: "min_value",
+                display_name: "Minimum",
+                type: "text",
+                default_value: 0
+            },
+            {
+                name: "max_value",
+                display_name: "Maximum",
+                type: "text",
+                default_value: 100
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new gaugeWidget(settings));
+        }
+    });
+
+
+	freeboard.addStyle('.sparkline', "width:100%;height: 75px;");
+    var sparklineWidget = function (settings) {
+        var self = this;
+
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var sparklineElement = $('<div class="sparkline"></div>');
+		var sparklineLegend = $('<div></div>');
+		var currentSettings = settings;
+
+        this.render = function (element) {
+            $(element).append(titleElement).append(sparklineElement).append(sparklineLegend);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+            titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+
+			if(newSettings.include_legend) {
+				addSparklineLegend(sparklineLegend,  newSettings.legend.split(","));
+			}
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+			if (currentSettings.legend) {
+				addValueToSparkline(sparklineElement, newValue, currentSettings.legend.split(","));
+			} else {
+				addValueToSparkline(sparklineElement, newValue);
+			}
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+			var legendHeight = 0;
+			if (currentSettings.include_legend && currentSettings.legend) {
+				var legendLength = currentSettings.legend.split(",").length;
+				if (legendLength > 4) {
+					legendHeight = Math.floor((legendLength-1) / 4) * 0.5;
+				} else if (legendLength) {
+					legendHeight = 0.5;
+				}
+			}
+			return 2 + legendHeight;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "sparkline",
+        display_name: "Sparkline",
+        "external_scripts" : [
+            "plugins/thirdparty/jquery.sparkline.min.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated",
+				multi_input: "true"
+            },
+			{
+				name: "include_legend",
+				display_name: "Include Legend",
+				type: "boolean"
+			},
+			{
+				name: "legend",
+				display_name: "Legend",
+				type: "text",
+				description: "Comma-separated for multiple sparklines"
+			}
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new sparklineWidget(settings));
+        }
+    });
+
+	freeboard.addStyle('div.pointer-value', "position:absolute;height:95px;margin: auto;top: 0px;bottom: 0px;width: 100%;text-align:center;");
+    var pointerWidget = function (settings) {
+        var self = this;
+        var paper;
+        var strokeWidth = 3;
+        var triangle;
+        var width, height;
+        var currentValue = 0;
+        var valueDiv = $('<div class="widget-big-text"></div>');
+        var unitsDiv = $('<div></div>');
+
+        function polygonPath(points) {
+            if (!points || points.length < 2)
+                return [];
+            var path = []; //will use path object type
+            path.push(['m', points[0], points[1]]);
+            for (var i = 2; i < points.length; i += 2) {
+                path.push(['l', points[i], points[i + 1]]);
+            }
+            path.push(['z']);
+            return path;
+        }
+
+        this.render = function (element) {
+            width = $(element).width();
+            height = $(element).height();
+
+            var radius = Math.min(width, height) / 2 - strokeWidth * 2;
+
+            paper = Raphael($(element).get()[0], width, height);
+            var circle = paper.circle(width / 2, height / 2, radius);
+            circle.attr("stroke", "#FF9900");
+            circle.attr("stroke-width", strokeWidth);
+
+            triangle = paper.path(polygonPath([width / 2, (height / 2) - radius + strokeWidth, 15, 20, -30, 0]));
+            triangle.attr("stroke-width", 0);
+            triangle.attr("fill", "#fff");
+
+            $(element).append($('<div class="pointer-value"></div>').append(valueDiv).append(unitsDiv));
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            unitsDiv.html(newSettings.units);
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "direction") {
+                if (!_.isUndefined(triangle)) {
+                    var direction = "r";
+
+                    var oppositeCurrent = currentValue + 180;
+
+                    if (oppositeCurrent < newValue) {
+                        //direction = "l";
+                    }
+
+                    triangle.animate({transform: "r" + newValue + "," + (width / 2) + "," + (height / 2)}, 250, "bounce");
+                }
+
+                currentValue = newValue;
+            }
+            else if (settingName == "value_text") {
+                valueDiv.html(newValue);
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "pointer",
+        display_name: "Pointer",
+        "external_scripts" : [
+            "plugins/thirdparty/raphael.2.1.0.min.js"
+        ],
+        settings: [
+            {
+                name: "direction",
+                display_name: "Direction",
+                type: "calculated",
+                description: "In degrees"
+            },
+            {
+                name: "value_text",
+                display_name: "Value Text",
+                type: "calculated"
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new pointerWidget(settings));
+        }
+    });
+
+    var pictureWidget = function(settings)
+    {
+        var self = this;
+        var widgetElement;
+        var timer;
+        var imageURL;
+
+        function stopTimer()
+        {
+            if(timer)
+            {
+                clearInterval(timer);
+                timer = null;
+            }
+        }
+
+        function updateImage()
+        {
+            if(widgetElement && imageURL)
+            {
+                var cacheBreakerURL = imageURL + (imageURL.indexOf("?") == -1 ? "?" : "&") + Date.now();
+
+                $(widgetElement).css({
+                    "background-image" :  "url(" + cacheBreakerURL + ")"
+                });
+            }
+        }
+
+        this.render = function(element)
+        {
+            $(element).css({
+                width : "100%",
+                height: "100%",
+                "background-size" : "cover",
+                "background-position" : "center"
+            });
+
+            widgetElement = element;
+        }
+
+        this.onSettingsChanged = function(newSettings)
+        {
+            stopTimer();
+
+            if(newSettings.refresh && newSettings.refresh > 0)
+            {
+                timer = setInterval(updateImage, Number(newSettings.refresh) * 1000);
+            }
+        }
+
+        this.onCalculatedValueChanged = function(settingName, newValue)
+        {
+            if(settingName == "src")
+            {
+                imageURL = newValue;
+            }
+
+            updateImage();
+        }
+
+        this.onDispose = function()
+        {
+            stopTimer();
+        }
+
+        this.getHeight = function()
+        {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "picture",
+        display_name: "Picture",
+        fill_size: true,
+        settings: [
+            {
+                name: "src",
+                display_name: "Image URL",
+                type: "calculated"
+            },
+            {
+                "type": "number",
+                "display_name": "Refresh every",
+                "name": "refresh",
+                "suffix": "seconds",
+                "description":"Leave blank if the image doesn't need to be refreshed"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new pictureWidget(settings));
+        }
+    });
+
+	freeboard.addStyle('.indicator-light', "border-radius:50%;width:22px;height:22px;border:2px solid #3d3d3d;margin-top:5px;float:left;background-color:#222;margin-right:10px;");
+	freeboard.addStyle('.indicator-light.on', "background-color:#FFC773;box-shadow: 0px 0px 15px #FF9900;border-color:#FDF1DF;");
+	freeboard.addStyle('.indicator-text', "margin-top:10px;");
+    var indicatorWidget = function (settings) {
+        var self = this;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var stateElement = $('<div class="indicator-text"></div>');
+        var indicatorElement = $('<div class="indicator-light"></div>');
+        var currentSettings = settings;
+        var isOn = false;
+        var onText;
+        var offText;
+
+        function updateState() {
+            indicatorElement.toggleClass("on", isOn);
+
+            if (isOn) {
+                stateElement.text((_.isUndefined(onText) ? (_.isUndefined(currentSettings.on_text) ? "" : currentSettings.on_text) : onText));
+            }
+            else {
+                stateElement.text((_.isUndefined(offText) ? (_.isUndefined(currentSettings.off_text) ? "" : currentSettings.off_text) : offText));
+            }
+        }
+
+        this.render = function (element) {
+            $(element).append(titleElement).append(indicatorElement).append(stateElement);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+            titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+            updateState();
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "value") {
+                isOn = Boolean(newValue);
+            }
+            if (settingName == "on_text") {
+                onText = newValue;
+            }
+            if (settingName == "off_text") {
+                offText = newValue;
+            }
+
+            updateState();
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 1;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "indicator",
+        display_name: "Indicator Light",
+        settings: [
+	        {
+	            name: "title",
+	            display_name: "Title",
+	            type: "text"
+	        },
+	        {
+	            name: "value",
+	            display_name: "Value",
+	            type: "calculated"
+	        },
+	        {
+	            name: "on_text",
+	            display_name: "On Text",
+	            type: "calculated"
+	        },
+	        {
+	            name: "off_text",
+	            display_name: "Off Text",
+	            type: "calculated"
+	        }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new indicatorWidget(settings));
+        }
+    });
+
+    freeboard.addStyle('.gm-style-cc a', "text-shadow:none;");
+
+    var googleMapWidget = function (settings) {
+        var self = this;
+        var currentSettings = settings;
+        var map;
+        var marker;
+        var currentPosition = {};
+
+        function updatePosition() {
+            if (map && marker && currentPosition.lat && currentPosition.lon) {
+                var newLatLon = new google.maps.LatLng(currentPosition.lat, currentPosition.lon);
+                marker.setPosition(newLatLon);
+                map.panTo(newLatLon);
+            }
+        }
+
+        this.render = function (element) {
+            function initializeMap() {
+                var mapOptions = {
+                    zoom: 13,
+                    center: new google.maps.LatLng(37.235, -115.811111),
+                    disableDefaultUI: true,
+                    draggable: false,
+                    styles: [
+                        {"featureType": "water", "elementType": "geometry", "stylers": [
+                            {"color": "#2a2a2a"}
+                        ]},
+                        {"featureType": "landscape", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 20}
+                        ]},
+                        {"featureType": "road.highway", "elementType": "geometry.fill", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 17}
+                        ]},
+                        {"featureType": "road.highway", "elementType": "geometry.stroke", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 29},
+                            {"weight": 0.2}
+                        ]},
+                        {"featureType": "road.arterial", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 18}
+                        ]},
+                        {"featureType": "road.local", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 16}
+                        ]},
+                        {"featureType": "poi", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 21}
+                        ]},
+                        {"elementType": "labels.text.stroke", "stylers": [
+                            {"visibility": "on"},
+                            {"color": "#000000"},
+                            {"lightness": 16}
+                        ]},
+                        {"elementType": "labels.text.fill", "stylers": [
+                            {"saturation": 36},
+                            {"color": "#000000"},
+                            {"lightness": 40}
+                        ]},
+                        {"elementType": "labels.icon", "stylers": [
+                            {"visibility": "off"}
+                        ]},
+                        {"featureType": "transit", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 19}
+                        ]},
+                        {"featureType": "administrative", "elementType": "geometry.fill", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 20}
+                        ]},
+                        {"featureType": "administrative", "elementType": "geometry.stroke", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 17},
+                            {"weight": 1.2}
+                        ]}
+                    ]
+                };
+
+                map = new google.maps.Map(element, mapOptions);
+
+                google.maps.event.addDomListener(element, 'mouseenter', function (e) {
+                    e.cancelBubble = true;
+                    if (!map.hover) {
+                        map.hover = true;
+                        map.setOptions({zoomControl: true});
+                    }
+                });
+
+                google.maps.event.addDomListener(element, 'mouseleave', function (e) {
+                    if (map.hover) {
+                        map.setOptions({zoomControl: false});
+                        map.hover = false;
+                    }
+                });
+
+                marker = new google.maps.Marker({map: map});
+
+                updatePosition();
+            }
+
+            if (window.google && window.google.maps) {
+                initializeMap();
+            }
+            else {
+                window.gmap_initialize = initializeMap;
+                head.js("https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=gmap_initialize");
+            }
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "lat") {
+                currentPosition.lat = newValue;
+            }
+            else if (settingName == "lon") {
+                currentPosition.lon = newValue;
+            }
+
+            updatePosition();
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "google_map",
+        display_name: "Google Map",
+        fill_size: true,
+        settings: [
+            {
+                name: "lat",
+                display_name: "Latitude",
+                type: "calculated"
+            },
+            {
+                name: "lon",
+                display_name: "Longitude",
+                type: "calculated"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new googleMapWidget(settings));
+        }
+    });
+
+    freeboard.addStyle('.html-widget', "white-space:normal;width:100%;height:100%");
+
+    var htmlWidget = function (settings) {
+        var self = this;
+        var htmlElement = $('<div class="html-widget"></div>');
+        var currentSettings = settings;
+
+        this.render = function (element) {
+            $(element).append(htmlElement);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "html") {
+                htmlElement.html(newValue);
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return Number(currentSettings.height);
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        "type_name": "html",
+        "display_name": "HTML",
+        "fill_size": true,
+        "settings": [
+            {
+                "name": "html",
+                "display_name": "HTML",
+                "type": "calculated",
+                "description": "Can be literal HTML, or javascript that outputs HTML."
+            },
+            {
+                "name": "height",
+                "display_name": "Height Blocks",
+                "type": "number",
+                "default_value": 4,
+                "description": "A height block is around 60 pixels"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new htmlWidget(settings));
+        }
+    });
+
+}());
diff --git a/WebSites/errors/403/js/freeboard.plugins.min.js b/WebSites/errors/403/js/freeboard.plugins.min.js
new file mode 100644
index 0000000..ddcdcfb
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.plugins.min.js
@@ -0,0 +1 @@
+!function(){var a=function(a,b){function c(a){e&&clearInterval(e),e=setInterval(function(){d.updateNow()},a)}var d=this,e=null,f=a,g=0,h=!1;c(1e3*f.refresh),this.updateNow=function(){if(!(g>1&&!f.use_thingproxy||g>2)){var a=f.url;2==g&&f.use_thingproxy&&(a=("https:"==location.protocol?"https:":"http:")+"//thingproxy.freeboard.io/fetch/"+encodeURI(f.url));var c=f.body;if(c)try{c=JSON.parse(c)}catch(a){}$.ajax({url:a,dataType:1==g?"JSONP":"JSON",type:f.method||"GET",data:c,beforeSend:function(a){try{_.each(f.headers,function(b){var c=b.name,d=b.value;_.isUndefined(c)||_.isUndefined(d)||a.setRequestHeader(c,d)})}catch(a){}},success:function(a){h=!0,b(a)},error:function(a,b,c){h||(g++,d.updateNow())}})}},this.onDispose=function(){clearInterval(e),e=null},this.onSettingsChanged=function(a){h=!1,g=0,f=a,c(1e3*f.refresh),d.updateNow()}};freeboard.loadDatasourcePlugin({type_name:"JSON",settings:[{name:"url",display_name:"URL",type:"text"},{name:"use_thingproxy",display_name:"Try thingproxy",description:'A direct JSON connection will be tried first, if that fails, a JSONP connection will be tried. If that fails, you can use thingproxy, which can solve many connection problems to APIs. <a href="https://github.com/Freeboard/thingproxy" target="_blank">More information</a>.',type:"boolean",default_value:!0},{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:5},{name:"method",display_name:"Method",type:"option",options:[{name:"GET",value:"GET"},{name:"POST",value:"POST"},{name:"PUT",value:"PUT"},{name:"DELETE",value:"DELETE"}]},{name:"body",display_name:"Body",type:"text",description:"The body of the request. Normally only used if method is POST"},{name:"headers",display_name:"Headers",type:"array",settings:[{name:"name",display_name:"Name",type:"text"},{name:"value",display_name:"Value",type:"text"}]}],newInstance:function(b,c,d){c(new a(b,d))}});var b=function(a,b){function c(a){f&&clearInterval(f),f=setInterval(function(){e.updateNow()},a)}function d(a){return a.replace(/\w\S*/g,function(a){return a.charAt(0).toUpperCase()+a.substr(1).toLowerCase()})}var e=this,f=null,g=a;c(1e3*g.refresh),this.updateNow=function(){$.ajax({url:"http://api.openweathermap.org/data/2.5/weather?APPID="+g.api_key+"&q="+encodeURIComponent(g.location)+"&units="+g.units,dataType:"JSONP",success:function(a){var c={place_name:a.name,sunrise:new Date(1e3*a.sys.sunrise).toLocaleTimeString(),sunset:new Date(1e3*a.sys.sunset).toLocaleTimeString(),conditions:d(a.weather[0].description),current_temp:a.main.temp,high_temp:a.main.temp_max,low_temp:a.main.temp_min,pressure:a.main.pressure,humidity:a.main.humidity,wind_speed:a.wind.speed,wind_direction:a.wind.deg};b(c)},error:function(a,b,c){}})},this.onDispose=function(){clearInterval(f),f=null},this.onSettingsChanged=function(a){g=a,e.updateNow(),c(1e3*g.refresh)}};freeboard.loadDatasourcePlugin({type_name:"openweathermap",display_name:"Open Weather Map API",settings:[{name:"api_key",display_name:"API Key",type:"text",description:"Your personal API Key from Open Weather Map"},{name:"location",display_name:"Location",type:"text",description:"Example: London, UK"},{name:"units",display_name:"Units",type:"option",default:"imperial",options:[{name:"Imperial",value:"imperial"},{name:"Metric",value:"metric"}]},{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:5}],newInstance:function(a,c,d){c(new b(a,d))}});var c=function(a,b){function c(a){b(a)}var d=this,e=a;this.updateNow=function(){dweetio.get_latest_dweet_for(e.thing_id,function(a,b){a||c(b[0].content)})},this.onDispose=function(){},this.onSettingsChanged=function(a){dweetio.stop_listening_for(e.thing_id),e=a,dweetio.listen_for(e.thing_id,function(a){c(a.content)})},d.onSettingsChanged(a)};freeboard.loadDatasourcePlugin({type_name:"dweet_io",display_name:"Dweet.io",external_scripts:["http://dweet.io/client/dweet.io.min.js"],settings:[{name:"thing_id",display_name:"Thing Name",description:"Example: salty-dog-1",type:"text"}],newInstance:function(a,b,d){b(new c(a,d))}});var d=function(a,b){function c(){h.length>0?(i<h.length&&(b(h[i]),i++),i>=h.length&&g.loop&&(i=0),i<h.length&&(e=setTimeout(c,1e3*g.refresh))):b({})}function d(){h=[],i=0,e&&(clearTimeout(e),e=null)}var e,f=this,g=a,h=[],i=0;this.updateNow=function(){d(),$.ajax({url:g.datafile,dataType:g.is_jsonp?"JSONP":"JSON",success:function(a){h=_.isArray(a)?a:[],i=0,c()},error:function(a,b,c){}})},this.onDispose=function(){d()},this.onSettingsChanged=function(a){g=a,f.updateNow()}};freeboard.loadDatasourcePlugin({type_name:"playback",display_name:"Playback",settings:[{name:"datafile",display_name:"Data File URL",type:"text",description:"A link to a JSON array of data."},{name:"is_jsonp",display_name:"Is JSONP",type:"boolean"},{name:"loop",display_name:"Loop",type:"boolean",description:"Rewind and loop when finished"},{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:5}],newInstance:function(a,b,c){b(new d(a,c))}});var e=function(a,b){function c(){e&&(clearTimeout(e),e=null)}function d(){c(),e=setInterval(f.updateNow,1e3*g.refresh)}var e,f=this,g=a;this.updateNow=function(){var a=new Date,c={numeric_value:a.getTime(),full_string_value:a.toLocaleString(),date_string_value:a.toLocaleDateString(),time_string_value:a.toLocaleTimeString(),date_object:a};b(c)},this.onDispose=function(){c()},this.onSettingsChanged=function(a){g=a,d()},d()};freeboard.loadDatasourcePlugin({type_name:"clock",display_name:"Clock",settings:[{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:1}],newInstance:function(a,b,c){b(new e(a,c))}}),freeboard.loadDatasourcePlugin({type_name:"meshblu",display_name:"Octoblu",description:"app.octoblu.com",external_scripts:["http://meshblu.octoblu.com/js/meshblu.js"],settings:[{name:"uuid",display_name:"UUID",type:"text",default_value:"device uuid",description:"your device UUID",required:!0},{name:"token",display_name:"Token",type:"text",default_value:"device token",description:"your device TOKEN",required:!0},{name:"server",display_name:"Server",type:"text",default_value:"meshblu.octoblu.com",description:"your server",required:!0},{name:"port",display_name:"Port",type:"number",default_value:80,description:"server port",required:!0}],newInstance:function(a,b,c){b(new f(a,c))}});var f=function(a,b){function c(){var a=skynet.createConnection({uuid:e.uuid,token:e.token,server:e.server,port:e.port});a.on("ready",function(c){a.on("message",function(a){b(a)})})}var d=this,e=a;d.onSettingsChanged=function(a){e=a},d.updateNow=function(){c()},d.onDispose=function(){}}}(),function(){function a(a,b,c){var d=$(b).text();if(d!=a)if($.isNumeric(a)&&$.isNumeric(d)){var e=a.toString().split("."),f=0;e.length>1&&(f=e[1].length),e=d.toString().split(".");var g=0;e.length>1&&(g=e[1].length),jQuery({transitionValue:Number(d),precisionValue:g}).animate({transitionValue:Number(a),precisionValue:f},{duration:c,step:function(){$(b).text(this.transitionValue.toFixed(this.precisionValue))},done:function(){$(b).text(a)}})}else $(b).text(a)}function b(a,b){for(var c=$("<div class='sparkline-legend'></div>"),d=0;d<b.length;d++){var f=e[d%e.length],g=b[d];c.append("<div class='sparkline-legend-value'><span style='color:"+f+"'>&#9679;</span>"+g+"</div>")}a.empty().append(c),freeboard.addStyle(".sparkline-legend","margin:5px;"),freeboard.addStyle(".sparkline-legend-value","color:white; font:10px arial,san serif; float:left; overflow:hidden; width:50%;"),freeboard.addStyle(".sparkline-legend-value span","font-weight:bold; padding-right:5px;")}function c(a,b,c){var f=$(a).data().values,g=$(a).data().valueMin,h=$(a).data().valueMax;f||(f=[],g=void 0,h=void 0);var i=function(a,b){f[b]||(f[b]=[]),f[b].length>=d&&f[b].shift(),f[b].push(Number(a)),(void 0===g||a<g)&&(g=a),(void 0===h||a>h)&&(h=a)};_.isArray(b)?_.each(b,i):i(b,0),$(a).data().values=f,$(a).data().valueMin=g,$(a).data().valueMax=h;var j='<span style="color: {{color}}">&#9679;</span> {{y}}',k=!1;_.each(f,function(b,d){$(a).sparkline(b,{type:"line",composite:k,height:"100%",width:"100%",fillColor:!1,lineColor:e[d%e.length],lineWidth:2,spotRadius:3,spotColor:!1,minSpotColor:"#78AB49",maxSpotColor:"#78AB49",highlightSpotColor:"#9D3926",highlightLineColor:"#9D3926",chartRangeMin:g,chartRangeMax:h,tooltipFormat:c&&c[d]?j+" ("+c[d]+")":j}),k=!0})}var d=100,e=["#FF9900","#FFFFFF","#B3B4B4","#6B6B6B","#28DE28","#13F7F9","#E6EE18","#C41204","#CA3CB8","#0B1CFB"],f=freeboard.getStyleString("values");freeboard.addStyle(".widget-big-text",f+"font-size:75px;"),freeboard.addStyle(".tw-display","width: 100%; height:100%; display:table; table-layout:fixed;"),freeboard.addStyle(".tw-tr","display:table-row;"),freeboard.addStyle(".tw-tg","display:table-row-group;"),freeboard.addStyle(".tw-tc","display:table-caption;"),freeboard.addStyle(".tw-td","display:table-cell;"),freeboard.addStyle(".tw-value",f+"overflow: hidden;display: inline-block;text-overflow: ellipsis;"),freeboard.addStyle(".tw-unit","display: inline-block;padding-left: 10px;padding-bottom: 1.1em;vertical-align: bottom;"),freeboard.addStyle(".tw-value-wrapper","position: relative;vertical-align: middle;height:100%;"),freeboard.addStyle(".tw-sparkline","height:20px;");var g=function(b){function d(){_.isUndefined(e.units)||""==e.units?h.css("max-width","100%"):h.css("max-width",f.innerWidth()-i.outerWidth(!0)+"px")}var e=b,f=$('<div class="tw-display"></div>'),g=$('<h2 class="section-title tw-title tw-td"></h2>'),h=$('<div class="tw-value"></div>'),i=$('<div class="tw-unit"></div>'),j=$('<div class="tw-sparkline tw-td"></div>');this.render=function(a){$(a).empty(),$(f).append($('<div class="tw-tr"></div>').append(g)).append($('<div class="tw-tr"></div>').append($('<div class="tw-value-wrapper tw-td"></div>').append(h).append(i))).append($('<div class="tw-tr"></div>').append(j)),$(a).append(f),d()},this.onSettingsChanged=function(a){e=a;var b=!_.isUndefined(a.title)&&""!=a.title,c=!_.isUndefined(a.units)&&""!=a.units;a.sparkline?j.attr("style",null):(delete j.data().values,j.empty(),j.hide()),b?(g.html(_.isUndefined(a.title)?"":a.title),g.attr("style",null)):(g.empty(),g.hide()),c?(i.html(_.isUndefined(a.units)?"":a.units),i.attr("style",null)):(i.empty(),i.hide());var f=30;"big"==a.size&&(f=75,a.sparkline&&(f=60)),h.css({"font-size":f+"px"}),d()},this.onSizeChanged=function(){d()},this.onCalculatedValueChanged=function(b,d){"value"==b&&(e.animate?a(d,h,500):h.text(d),e.sparkline&&c(j,d))},this.onDispose=function(){},this.getHeight=function(){return"big"==e.size||e.sparkline?2:1},this.onSettingsChanged(b)};freeboard.loadWidgetPlugin({type_name:"text_widget",display_name:"Text",external_scripts:["plugins/thirdparty/jquery.sparkline.min.js"],settings:[{name:"title",display_name:"Title",type:"text"},{name:"size",display_name:"Size",type:"option",options:[{name:"Regular",value:"regular"},{name:"Big",value:"big"}]},{name:"value",display_name:"Value",type:"calculated"},{name:"sparkline",display_name:"Include Sparkline",type:"boolean"},{name:"animate",display_name:"Animate Value Changes",type:"boolean",default_value:!0},{name:"units",display_name:"Units",type:"text"}],newInstance:function(a,b){b(new g(a))}});var h=0;freeboard.addStyle(".gauge-widget-wrapper","width: 100%;text-align: center;"),freeboard.addStyle(".gauge-widget","width:200px;height:160px;display:inline-block;");var i=function(a){function b(){g&&(f.empty(),c=new JustGage({id:d,value:_.isUndefined(i.min_value)?0:i.min_value,min:_.isUndefined(i.min_value)?0:i.min_value,max:_.isUndefined(i.max_value)?0:i.max_value,label:i.units,showInnerShadow:!1,valueFontColor:"#d3d4d4"}))}var c,d="gauge-"+h++,e=$('<h2 class="section-title"></h2>'),f=$('<div class="gauge-widget" id="'+d+'"></div>'),g=!1,i=a;this.render=function(a){g=!0,$(a).append(e).append($('<div class="gauge-widget-wrapper"></div>').append(f)),b()},this.onSettingsChanged=function(a){a.min_value!=i.min_value||a.max_value!=i.max_value||a.units!=i.units?(i=a,b()):i=a,e.html(a.title)},this.onCalculatedValueChanged=function(a,b){_.isUndefined(c)||c.refresh(Number(b))},this.onDispose=function(){},this.getHeight=function(){return 3},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"gauge",display_name:"Gauge",external_scripts:["plugins/thirdparty/raphael.2.1.0.min.js","plugins/thirdparty/justgage.1.0.1.js"],settings:[{name:"title",display_name:"Title",type:"text"},{name:"value",display_name:"Value",type:"calculated"},{name:"units",display_name:"Units",type:"text"},{name:"min_value",display_name:"Minimum",type:"text",default_value:0},{name:"max_value",display_name:"Maximum",type:"text",default_value:100}],newInstance:function(a,b){b(new i(a))}}),freeboard.addStyle(".sparkline","width:100%;height: 75px;");var j=function(a){var d=$('<h2 class="section-title"></h2>'),e=$('<div class="sparkline"></div>'),f=$("<div></div>"),g=a;this.render=function(a){$(a).append(d).append(e).append(f)},this.onSettingsChanged=function(a){g=a,d.html(_.isUndefined(a.title)?"":a.title),a.include_legend&&b(f,a.legend.split(","))},this.onCalculatedValueChanged=function(a,b){g.legend?c(e,b,g.legend.split(",")):c(e,b)},this.onDispose=function(){},this.getHeight=function(){var a=0;if(g.include_legend&&g.legend){var b=g.legend.split(",").length;b>4?a=.5*Math.floor((b-1)/4):b&&(a=.5)}return 2+a},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"sparkline",display_name:"Sparkline",external_scripts:["plugins/thirdparty/jquery.sparkline.min.js"],settings:[{name:"title",display_name:"Title",type:"text"},{name:"value",display_name:"Value",type:"calculated",multi_input:"true"},{name:"include_legend",display_name:"Include Legend",type:"boolean"},{name:"legend",display_name:"Legend",type:"text",description:"Comma-separated for multiple sparklines"}],newInstance:function(a,b){b(new j(a))}}),freeboard.addStyle("div.pointer-value","position:absolute;height:95px;margin: auto;top: 0px;bottom: 0px;width: 100%;text-align:center;");var k=function(a){function b(a){if(!a||a.length<2)return[];var b=[];b.push(["m",a[0],a[1]]);for(var c=2;c<a.length;c+=2)b.push(["l",a[c],a[c+1]]);return b.push(["z"]),b}var c,d,e,f,g=3,h=0,i=$('<div class="widget-big-text"></div>'),j=$("<div></div>");this.render=function(a){e=$(a).width(),f=$(a).height();var h=Math.min(e,f)/2-2*g;c=Raphael($(a).get()[0],e,f);var k=c.circle(e/2,f/2,h);k.attr("stroke","#FF9900"),k.attr("stroke-width",g),d=c.path(b([e/2,f/2-h+g,15,20,-30,0])),d.attr("stroke-width",0),d.attr("fill","#fff"),$(a).append($('<div class="pointer-value"></div>').append(i).append(j))},this.onSettingsChanged=function(a){j.html(a.units)},this.onCalculatedValueChanged=function(a,b){if("direction"==a){if(!_.isUndefined(d)){d.animate({transform:"r"+b+","+e/2+","+f/2},250,"bounce")}h=b}else"value_text"==a&&i.html(b)},this.onDispose=function(){},this.getHeight=function(){return 4},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"pointer",display_name:"Pointer",external_scripts:["plugins/thirdparty/raphael.2.1.0.min.js"],settings:[{name:"direction",display_name:"Direction",type:"calculated",description:"In degrees"},{name:"value_text",display_name:"Value Text",type:"calculated"},{name:"units",display_name:"Units",type:"text"}],newInstance:function(a,b){b(new k(a))}});var l=function(a){function b(){e&&(clearInterval(e),e=null)}function c(){if(d&&f){var a=f+(-1==f.indexOf("?")?"?":"&")+Date.now();$(d).css({"background-image":"url("+a+")"})}}var d,e,f;this.render=function(a){$(a).css({width:"100%",height:"100%","background-size":"cover","background-position":"center"}),d=a},this.onSettingsChanged=function(a){b(),a.refresh&&a.refresh>0&&(e=setInterval(c,1e3*Number(a.refresh)))},this.onCalculatedValueChanged=function(a,b){"src"==a&&(f=b),c()},this.onDispose=function(){b()},this.getHeight=function(){return 4},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"picture",display_name:"Picture",fill_size:!0,settings:[{name:"src",display_name:"Image URL",type:"calculated"},{type:"number",display_name:"Refresh every",name:"refresh",suffix:"seconds",description:"Leave blank if the image doesn't need to be refreshed"}],newInstance:function(a,b){b(new l(a))}}),freeboard.addStyle(".indicator-light","border-radius:50%;width:22px;height:22px;border:2px solid #3d3d3d;margin-top:5px;float:left;background-color:#222;margin-right:10px;"),freeboard.addStyle(".indicator-light.on","background-color:#FFC773;box-shadow: 0px 0px 15px #FF9900;border-color:#FDF1DF;"),freeboard.addStyle(".indicator-text","margin-top:10px;");var m=function(a){function b(){g.toggleClass("on",i),i?f.text(_.isUndefined(c)?_.isUndefined(h.on_text)?"":h.on_text:c):f.text(_.isUndefined(d)?_.isUndefined(h.off_text)?"":h.off_text:d)}var c,d,e=$('<h2 class="section-title"></h2>'),f=$('<div class="indicator-text"></div>'),g=$('<div class="indicator-light"></div>'),h=a,i=!1;this.render=function(a){$(a).append(e).append(g).append(f)},this.onSettingsChanged=function(a){h=a,e.html(_.isUndefined(a.title)?"":a.title),b()},this.onCalculatedValueChanged=function(a,e){"value"==a&&(i=Boolean(e)),"on_text"==a&&(c=e),"off_text"==a&&(d=e),b()},this.onDispose=function(){},this.getHeight=function(){return 1},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"indicator",display_name:"Indicator Light",settings:[{name:"title",display_name:"Title",type:"text"},{name:"value",display_name:"Value",type:"calculated"},{name:"on_text",display_name:"On Text",type:"calculated"},{name:"off_text",display_name:"Off Text",type:"calculated"}],newInstance:function(a,b){b(new m(a))}}),freeboard.addStyle(".gm-style-cc a","text-shadow:none;");var n=function(a){function b(){if(c&&d&&f.lat&&f.lon){var a=new google.maps.LatLng(f.lat,f.lon);d.setPosition(a),c.panTo(a)}}var c,d,e=a,f={};this.render=function(a){function e(){var e={zoom:13,center:new google.maps.LatLng(37.235,-115.811111),disableDefaultUI:!0,draggable:!1,styles:[{featureType:"water",elementType:"geometry",stylers:[{color:"#2a2a2a"}]},{featureType:"landscape",elementType:"geometry",stylers:[{color:"#000000"},{lightness:20}]},{featureType:"road.highway",elementType:"geometry.fill",stylers:[{color:"#000000"},{lightness:17}]},{featureType:"road.highway",elementType:"geometry.stroke",stylers:[{color:"#000000"},{lightness:29},{weight:.2}]},{featureType:"road.arterial",elementType:"geometry",stylers:[{color:"#000000"},{lightness:18}]},{featureType:"road.local",elementType:"geometry",stylers:[{color:"#000000"},{lightness:16}]},{featureType:"poi",elementType:"geometry",stylers:[{color:"#000000"},{lightness:21}]},{elementType:"labels.text.stroke",stylers:[{visibility:"on"},{color:"#000000"},{lightness:16}]},{elementType:"labels.text.fill",stylers:[{saturation:36},{color:"#000000"},{lightness:40}]},{elementType:"labels.icon",stylers:[{visibility:"off"}]},{featureType:"transit",elementType:"geometry",stylers:[{color:"#000000"},{lightness:19}]},{featureType:"administrative",elementType:"geometry.fill",stylers:[{color:"#000000"},{lightness:20}]},{featureType:"administrative",elementType:"geometry.stroke",stylers:[{color:"#000000"},{lightness:17},{weight:1.2}]}]};c=new google.maps.Map(a,e),google.maps.event.addDomListener(a,"mouseenter",function(a){a.cancelBubble=!0,c.hover||(c.hover=!0,c.setOptions({zoomControl:!0}))}),google.maps.event.addDomListener(a,"mouseleave",function(a){c.hover&&(c.setOptions({zoomControl:!1}),c.hover=!1)}),d=new google.maps.Marker({map:c}),b()}window.google&&window.google.maps?e():(window.gmap_initialize=e,head.js("https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=gmap_initialize"))},this.onSettingsChanged=function(a){e=a},this.onCalculatedValueChanged=function(a,c){"lat"==a?f.lat=c:"lon"==a&&(f.lon=c),b()},this.onDispose=function(){},this.getHeight=function(){return 4},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"google_map",display_name:"Google Map",fill_size:!0,settings:[{name:"lat",display_name:"Latitude",type:"calculated"},{name:"lon",display_name:"Longitude",type:"calculated"}],newInstance:function(a,b){b(new n(a))}}),freeboard.addStyle(".html-widget","white-space:normal;width:100%;height:100%");var o=function(a){var b=$('<div class="html-widget"></div>'),c=a;this.render=function(a){$(a).append(b)},this.onSettingsChanged=function(a){c=a},this.onCalculatedValueChanged=function(a,c){"html"==a&&b.html(c)},this.onDispose=function(){},this.getHeight=function(){return Number(c.height)},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"html",display_name:"HTML",fill_size:!0,settings:[{name:"html",display_name:"HTML",type:"calculated",description:"Can be literal HTML, or javascript that outputs HTML."},{name:"height",display_name:"Height Blocks",type:"number",default_value:4,description:"A height block is around 60 pixels"}],newInstance:function(a,b){b(new o(a))}})}();
\ No newline at end of file
diff --git a/WebSites/errors/403/js/freeboard.plugins.min.js.map b/WebSites/errors/403/js/freeboard.plugins.min.js.map
new file mode 100644
index 0000000..4a11dec
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.plugins.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"freeboard.plugins.min.js","sources":["freeboard.plugins.js"],"names":["jsonDatasource","settings","updateCallback","updateRefresh","refreshTime","updateTimer","clearInterval","setInterval","self","updateNow","this","currentSettings","errorStage","lockErrorStage","refresh","use_thingproxy","requestURL","url","location","protocol","encodeURI","body","JSON","parse","e","$","ajax","dataType","type","method","data","beforeSend","xhr","_","each","headers","header","name","value","isUndefined","setRequestHeader","success","error","onDispose","onSettingsChanged","newSettings","freeboard","loadDatasourcePlugin","type_name","display_name","description","default_value","suffix","options","newInstance","newInstanceCallback","openWeatherMapDatasource","toTitleCase","str","replace","txt","charAt","toUpperCase","substr","toLowerCase","encodeURIComponent","units","newData","place_name","sunrise","Date","sys","toLocaleTimeString","sunset","conditions","weather","current_temp","main","temp","high_temp","temp_max","low_temp","temp_min","pressure","humidity","wind_speed","wind","speed","wind_direction","deg","default","dweetioDatasource","onNewDweet","dweet","dweetio","get_latest_dweet_for","thing_id","err","content","stop_listening","listen_for","external_scripts","playbackDatasource","moveNext","currentDataset","length","currentIndex","loop","currentTimeout","setTimeout","stopTimeout","clearTimeout","datafile","isArray","clockDatasource","stopTimer","timer","date","numeric_value","getTime","full_string_value","toLocaleString","date_string_value","toLocaleDateString","time_string_value","date_object","easeTransitionText","newValue","textElement","duration","currentValue","text","isNumeric","numParts","toString","split","endingPrecision","startingPrecision","jQuery","transitionValue","Number","precisionValue","animate","step","toFixed","done","addValueToSparkline","element","values","SPARKLINE_HISTORY_LENGTH","shift","push","sparkline","height","width","fillColor","lineColor","lineWidth","spotRadius","spotColor","minSpotColor","maxSpotColor","highlightSpotColor","highlightLineColor","valueStyle","getStyleString","addStyle","textWidget","updateValueSizing","valueElement","css","displayElement","innerWidth","unitsElement","outerWidth","titleElement","sparklineElement","render","empty","append","shouldDisplayTitle","title","shouldDisplayUnits","attr","hide","html","valueFontSize","size","font-size","onSizeChanged","onCalculatedValueChanged","settingName","getHeight","loadWidgetPlugin","gaugeID","gaugeWidget","createGauge","rendered","gaugeElement","gaugeObject","JustGage","id","thisGaugeID","min_value","min","max","max_value","label","showInnerShadow","valueFontColor","sparklineWidget","pointerWidget","polygonPath","points","path","i","paper","triangle","strokeWidth","valueDiv","unitsDiv","radius","Math","Raphael","get","circle","transform","pictureWidget","updateImage","widgetElement","imageURL","cacheBreakerURL","indexOf","now","background-image","background-size","background-position","fill_size","indicatorWidget","updateState","indicatorElement","toggleClass","isOn","stateElement","on_text","off_text","Boolean","googleMapWidget","updatePosition","map","marker","currentPosition","lat","lon","newLatLon","google","maps","LatLng","setPosition","panTo","initializeMap","mapOptions","zoom","center","disableDefaultUI","draggable","styles","featureType","elementType","stylers","color","lightness","weight","visibility","saturation","Map","event","addDomListener","cancelBubble","hover","setOptions","zoomControl","Marker","window","gmap_initialize","head","js","htmlWidget","htmlElement"],"mappings":"CASC,WACA,GAAIA,GAAiB,SAAUC,EAAUC,GASxC,QAASC,GAAcC,GAClBC,GACHC,cAAcD,GAGfA,EAAcE,YAAY,WACzBC,EAAKC,aACHL,GAfJ,GAAII,GAAOE,KACPL,EAAc,KACdM,EAAkBV,EAClBW,EAAa,EAGbC,GAAiB,CAYrBV,GAAwC,IAA1BQ,EAAgBG,SAE9BJ,KAAKD,UAAY,WAChB,KAAKG,EAAa,IAAMD,EAAgBI,gBAAmBH,EAAa,GAAxE,CAKA,GAAII,GAAaL,EAAgBM,GAEf,IAAdL,GAAmBD,EAAgBI,iBACtCC,GAAmC,UAArBE,SAASC,SAAuB,SAAW,SAAW,mCAAqCC,UAAUT,EAAgBM,KAGpI,IAAII,GAAOV,EAAgBU,IAG3B,IAAIA,EACH,IACCA,EAAOC,KAAKC,MAAMF,GAEnB,MAAOG,IAIRC,EAAEC,MACDT,IAAKD,EACLW,SAAyB,GAAdf,EAAmB,QAAU,OACxCgB,KAAMjB,EAAgBkB,QAAU,MAChCC,KAAMT,EACNU,WAAY,SAAUC,GACrB,IACCC,EAAEC,KAAKvB,EAAgBwB,QAAS,SAAUC,GACzC,GAAIC,GAAOD,EAAOC,KACdC,EAAQF,EAAOE,KAEdL,GAAEM,YAAYF,IAAUJ,EAAEM,YAAYD,IAC1CN,EAAIQ,iBAAiBH,EAAMC,KAI9B,MAAOd,MAGRiB,QAAS,SAAUX,GAClBjB,GAAiB,EACjBX,EAAe4B,IAEhBY,MAAO,WACD7B,IAEJD,IACAJ,EAAKC,kBAMTC,KAAKiC,UAAY,WAChBrC,cAAcD,GACdA,EAAc,MAGfK,KAAKkC,kBAAoB,SAAUC,GAClChC,GAAiB,EACjBD,EAAa,EAEbD,EAAkBkC,EAClB1C,EAAwC,IAA1BQ,EAAgBG,SAC9BN,EAAKC,aAIPqC,WAAUC,sBACTC,UAAW,OACX/C,WAEEoC,KAAM,MACNY,aAAc,MACdrB,KAAM,SAGNS,KAAM,iBACNY,aAAc,iBACdC,YAAa,kRACbtB,KAAM,UACNuB,eAAe,IAGfd,KAAM,UACNY,aAAc,gBACdrB,KAAM,SACNwB,OAAQ,UACRD,cAAe,IAGfd,KAAM,SACNY,aAAc,SACdrB,KAAM,SACNyB,UAEEhB,KAAM,MACNC,MAAO,QAGPD,KAAM,OACNC,MAAO,SAGPD,KAAM,MACNC,MAAO,QAGPD,KAAM,SACNC,MAAO,aAKTD,KAAM,OACNY,aAAc,OACdrB,KAAM,OACNsB,YAAa,kEAGbb,KAAM,UACNY,aAAc,UACdrB,KAAM,QACN3B,WAEEoC,KAAM,OACNY,aAAc,OACdrB,KAAM,SAGNS,KAAM,QACNY,aAAc,QACdrB,KAAM,WAKV0B,YAAa,SAAUrD,EAAUsD,EAAqBrD,GACrDqD,EAAoB,GAAIvD,GAAeC,EAAUC,MAInD,IAAIsD,GAA2B,SAAUvD,EAAUC,GAKlD,QAASC,GAAcC,GAClBC,GACHC,cAAcD,GAGfA,EAAcE,YAAY,WACzBC,EAAKC,aACHL,GAGJ,QAASqD,GAAYC,GACpB,MAAOA,GAAIC,QAAQ,SAAU,SAAUC,GACtC,MAAOA,GAAIC,OAAO,GAAGC,cAAgBF,EAAIG,OAAO,GAAGC,gBAhBrD,GAAIxD,GAAOE,KACPL,EAAc,KACdM,EAAkBV,CAkBtBE,GAAwC,IAA1BQ,EAAgBG,SAE9BJ,KAAKD,UAAY,WAChBgB,EAAEC,MACDT,IAAK,oDAAsDgD,mBAAmBtD,EAAgBO,UAAY,UAAYP,EAAgBuD,MACtIvC,SAAU,QACVc,QAAS,SAAUX,GAElB,GAAIqC,IACHC,WAAYtC,EAAKO,KACjBgC,QAAS,GAAKC,MAAwB,IAAnBxC,EAAKyC,IAAIF,SAAiBG,qBAC7CC,OAAQ,GAAKH,MAAuB,IAAlBxC,EAAKyC,IAAIE,QAAgBD,qBAC3CE,WAAYjB,EAAY3B,EAAK6C,QAAQ,GAAGzB,aACxC0B,aAAc9C,EAAK+C,KAAKC,KACxBC,UAAWjD,EAAK+C,KAAKG,SACrBC,SAAUnD,EAAK+C,KAAKK,SACpBC,SAAUrD,EAAK+C,KAAKM,SACpBC,SAAUtD,EAAK+C,KAAKO,SACpBC,WAAYvD,EAAKwD,KAAKC,MACtBC,eAAgB1D,EAAKwD,KAAKG,IAG3BvF,GAAeiE,IAEhBzB,MAAO,gBAKThC,KAAKiC,UAAY,WAChBrC,cAAcD,GACdA,EAAc,MAGfK,KAAKkC,kBAAoB,SAAUC,GAClClC,EAAkBkC,EAClBrC,EAAKC,YACLN,EAAwC,IAA1BQ,EAAgBG,UAIhCgC,WAAUC,sBACTC,UAAW,iBACXC,aAAc,uBACdhD,WAEEoC,KAAM,WACNY,aAAc,WACdrB,KAAM,OACNsB,YAAa,wBAGbb,KAAM,QACNY,aAAc,QACdrB,KAAM,SACN8D,UAAS,WACTrC,UAEEhB,KAAM,WACNC,MAAO,aAGPD,KAAM,SACNC,MAAO,aAKTD,KAAM,UACNY,aAAc,gBACdrB,KAAM,SACNwB,OAAQ,UACRD,cAAe,IAGjBG,YAAa,SAAUrD,EAAUsD,EAAqBrD,GACrDqD,EAAoB,GAAIC,GAAyBvD,EAAUC,MAI7D,IAAIyF,GAAoB,SAAU1F,EAAUC,GAI3C,QAAS0F,GAAWC,GACnB3F,EAAe2F,GAJhB,GAAIrF,GAAOE,KACPC,EAAkBV,CAMtBS,MAAKD,UAAY,WAChBqF,QAAQC,qBAAqBpF,EAAgBqF,SAAU,SAAUC,EAAKJ,GACjEI,GAIHL,EAAWC,EAAM,GAAGK,YAKvBxF,KAAKiC,UAAY,aAIjBjC,KAAKkC,kBAAoB,SAAUC,GAClCiD,QAAQK,iBAERxF,EAAkBkC,EAElBiD,QAAQM,WAAWzF,EAAgBqF,SAAU,SAAUH,GACtDD,EAAWC,EAAMK,YAInB1F,EAAKoC,kBAAkB3C,GAGxB6C,WAAUC,sBACTC,UAAa,WACbC,aAAgB,WAChBoD,kBACC,0CAEDpG,WAEEoC,KAAM,WACNY,aAAc,aACdC,YAAe,uBACftB,KAAM,SAGR0B,YAAa,SAAUrD,EAAUsD,EAAqBrD,GACrDqD,EAAoB,GAAIoC,GAAkB1F,EAAUC,MAItD,IAAIoG,GAAqB,SAAUrG,EAAUC,GAO5C,QAASqG,KACJC,EAAeC,OAAS,GACvBC,EAAeF,EAAeC,SACjCvG,EAAesG,EAAeE,IAC9BA,KAGGA,GAAgBF,EAAeC,QAAU9F,EAAgBgG,OAC5DD,EAAe,GAGZA,EAAeF,EAAeC,SACjCG,EAAiBC,WAAWN,EAAoC,IAA1B5F,EAAgBG,WAIvDZ,MAIF,QAAS4G,KACRN,KACAE,EAAe,EAEXE,IACHG,aAAaH,GACbA,EAAiB,MAhCnB,GAIIA,GAJApG,EAAOE,KACPC,EAAkBV,EAClBuG,KACAE,EAAe,CAiCnBhG,MAAKD,UAAY,WAChBqG,IAEArF,EAAEC,MACDT,IAAKN,EAAgBqG,SACrBrF,SAAWhB,EAAwB,SAAI,QAAU,OACjD8B,QAAS,SAAUX,GAEjB0E,EADGvE,EAAEgF,QAAQnF,GACIA,KAMlB4E,EAAe,EAEfH,KAED7D,MAAO,gBAKThC,KAAKiC,UAAY,WAChBmE,KAGDpG,KAAKkC,kBAAoB,SAAUC,GAClClC,EAAkBkC,EAClBrC,EAAKC,aAIPqC,WAAUC,sBACTC,UAAa,WACbC,aAAgB,WAChBhD,WAEEoC,KAAQ,WACRY,aAAgB,gBAChBrB,KAAQ,OACRsB,YAAe,oCAGfb,KAAM,WACNY,aAAc,WACdrB,KAAM,YAGNS,KAAQ,OACRY,aAAgB,OAChBrB,KAAQ,UACRsB,YAAe,kCAGfb,KAAQ,UACRY,aAAgB,gBAChBrB,KAAQ,SACRwB,OAAU,UACVD,cAAiB,IAGnBG,YAAa,SAAUrD,EAAUsD,EAAqBrD,GACrDqD,EAAoB,GAAI+C,GAAmBrG,EAAUC,MAIvD,IAAIgH,GAAkB,SAAUjH,EAAUC,GAKzC,QAASiH,KACJC,IACHL,aAAaK,GACbA,EAAQ,MAIV,QAAS/G,KACR8G,IACAC,EAAQ7G,YAAYC,EAAKC,UAAqC,IAA1BE,EAAgBG,SAbrD,GAEIsG,GAFA5G,EAAOE,KACPC,EAAkBV,CAetBS,MAAKD,UAAY,WAChB,GAAI4G,GAAO,GAAI/C,MAEXxC,GACHwF,cAAeD,EAAKE,UACpBC,kBAAmBH,EAAKI,iBACxBC,kBAAmBL,EAAKM,qBACxBC,kBAAmBP,EAAK7C,qBACxBqD,YAAaR,EAGdnH,GAAe4B,IAGhBpB,KAAKiC,UAAY,WAChBwE,KAGDzG,KAAKkC,kBAAoB,SAAUC,GAClClC,EAAkBkC,EAClBxC,KAGDA,IAGDyC,WAAUC,sBACTC,UAAa,QACbC,aAAgB,QAChBhD,WAEEoC,KAAQ,UACRY,aAAgB,gBAChBrB,KAAQ,SACRwB,OAAU,UACVD,cAAiB,IAGnBG,YAAa,SAAUrD,EAAUsD,EAAqBrD,GACrDqD,EAAoB,GAAI2D,GAAgBjH,EAAUC,UAcpD,WAGG,QAAS4H,GAAmBC,EAAUC,EAAaC,GAErD,GAAIC,GAAezG,EAAEuG,GAAaG,MAE5B,IAAID,GAAgBH,EAGpB,GAAItG,EAAE2G,UAAUL,IAAatG,EAAE2G,UAAUF,GAAe,CACpD,GAAIG,GAAWN,EAASO,WAAWC,MAAM,KACrCC,EAAkB,CAElBH,GAAS5B,OAAS,IAClB+B,EAAkBH,EAAS,GAAG5B,QAGlC4B,EAAWH,EAAaI,WAAWC,MAAM,IACzC,IAAIE,GAAoB,CAEpBJ,GAAS5B,OAAS,IAClBgC,EAAoBJ,EAAS,GAAG5B,QAGpCiC,QAAQC,gBAAiBC,OAAOV,GAAeW,eAAgBJ,IAAoBK,SAASH,gBAAiBC,OAAOb,GAAWc,eAAgBL,IAC3IP,SAAUA,EACVc,KAAM,WACFtH,EAAEuG,GAAaG,KAAKzH,KAAKiI,gBAAgBK,QAAQtI,KAAKmI,kBAE1DI,KAAM,WACFxH,EAAEuG,GAAaG,KAAKJ,UAK5BtG,GAAEuG,GAAaG,KAAKJ,GAI5B,QAASmB,GAAoBC,EAAS7G,GAClC,GAAI8G,GAAS3H,EAAE0H,GAASrH,OAAOsH,MAE1BA,KACDA,MAGAA,EAAO3C,QAAU4C,GACjBD,EAAOE,QAGXF,EAAOG,KAAKX,OAAOtG,IAEnBb,EAAE0H,GAASrH,OAAOsH,OAASA,EAE3B3H,EAAE0H,GAASK,UAAUJ,GACjBxH,KAAM,OACN6H,OAAQ,OACRC,MAAO,OACPC,WAAW,EACXC,UAAW,UACXC,UAAW,EACXC,WAAY,EACZC,WAAW,EACXC,aAAc,UACdC,aAAc,UACdC,mBAAoB,UACpBC,mBAAoB,YAlE5B,GAAId,GAA2B,IAsE9Be,EAAatH,UAAUuH,eAAe,SAE1CvH,WAAUwH,SAAS,mBAAoBF,EAAa,mBAEpDtH,UAAUwH,SAAS,cAAe,gEAElCxH,UAAUwH,SAAS,SAClB,sBAEDxH,UAAUwH,SAAS,SAClB,4BAEDxH,UAAUwH,SAAS,SAClB,0BAEDxH,UAAUwH,SAAS,SAClB,uBAEDxH,UAAUwH,SAAS,YAClBF,EACA,mEAIDtH,UAAUwH,SAAS,WAClB,0FAKDxH,UAAUwH,SAAS,oBAClB,0DAIDxH,UAAUwH,SAAS,gBAClB,eAEE,IAAIC,GAAa,SAAUtK,GAW7B,QAASuK,KAEJvI,EAAEM,YAAY5B,EAAgBuD,QAAmC,IAAzBvD,EAAgBuD,MAM3DuG,EAAaC,IAAI,YAAa,QAJ9BD,EAAaC,IAAI,YAAcC,EAAeC,aAAeC,EAAaC,YAAW,GAAS,MAb1F,GAEInK,GAAkBV,EACxB0K,EAAiBlJ,EAAE,kCACnBsJ,EAAetJ,EAAE,kDACXgJ,EAAehJ,EAAE,gCACjBoJ,EAAepJ,EAAE,+BACjBuJ,EAAmBvJ,EAAE,yCAczBf,MAAKuK,OAAS,SAAU9B,GAC7B1H,EAAE0H,GAAS+B,QAEXzJ,EAAEkJ,GACAQ,OAAO1J,EAAE,6BAA6B0J,OAAOJ,IAC7CI,OAAO1J,EAAE,6BAA6B0J,OAAO1J,EAAE,8CAA8C0J,OAAOV,GAAcU,OAAON,KACzHM,OAAO1J,EAAE,6BAA6B0J,OAAOH,IAE/CvJ,EAAE0H,GAASgC,OAAOR,GAElBH,KAGK9J,KAAKkC,kBAAoB,SAAUC,GAC/BlC,EAAkBkC,CAE3B,IAAIuI,IAAuBnJ,EAAEM,YAAYM,EAAYwI,QAA+B,IAArBxI,EAAYwI,MACvEC,GAAuBrJ,EAAEM,YAAYM,EAAYqB,QAA+B,IAArBrB,EAAYqB,KAExErB,GAAY2G,UAEdwB,EAAiBO,KAAK,QAAS,aAIxBP,GAAiBlJ,OAAOsH,OAC/B4B,EAAiBE,QACjBF,EAAiBQ,QAGfJ,GAEFL,EAAaU,KAAMxJ,EAAEM,YAAYM,EAAYwI,OAAS,GAAKxI,EAAYwI,OACvEN,EAAaQ,KAAK,QAAS,QAI3BR,EAAaG,QACbH,EAAaS,QAGXF,GAEFT,EAAaY,KAAMxJ,EAAEM,YAAYM,EAAYqB,OAAS,GAAKrB,EAAYqB,OACvE2G,EAAaU,KAAK,QAAS,QAI3BV,EAAaK,QACbL,EAAaW,OAGd,IAAIE,GAAgB,EAEG,QAApB7I,EAAY8I,OAEdD,EAAgB,GAEb7I,EAAY2G,YAEdkC,EAAgB,KAIlBjB,EAAaC,KAAKkB,YAAcF,EAAgB,OAEhDlB,KAGD9J,KAAKmL,cAAgB,WAEpBrB,KAGK9J,KAAKoL,yBAA2B,SAAUC,EAAahE,GAChC,SAAfgE,IAEIpL,EAAgBmI,QAChBhB,EAAmBC,EAAU0C,EAAc,KAG3CA,EAAatC,KAAKJ,GAGlBpH,EAAgB6I,WAChBN,EAAoB8B,EAAkBjD,KAKlDrH,KAAKiC,UAAY,aAIjBjC,KAAKsL,UAAY,WACb,MAA4B,OAAxBrL,EAAgBgL,MAAiBhL,EAAgB6I,UAC1C,EAGA,GAIf9I,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAW,cACXC,aAAc,OACdoD,kBACI,8CAEJpG,WAEQoC,KAAM,QACNY,aAAc,QACdrB,KAAM,SAGNS,KAAM,OACNY,aAAc,OACdrB,KAAM,SACNyB,UAEQhB,KAAM,UACNC,MAAO,YAGPD,KAAM,MACNC,MAAO,UAKfD,KAAM,QACNY,aAAc,QACdrB,KAAM,eAGNS,KAAM,YACNY,aAAc,oBACdrB,KAAM,YAGNS,KAAM,UACNY,aAAc,wBACdrB,KAAM,UACNuB,eAAe,IAGfd,KAAM,QACNY,aAAc,QACdrB,KAAM,SAGd0B,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAIgH,GAAWtK,MAI3C,IAAIiM,GAAU,CACjBpJ,WAAUwH,SAAS,wBAAyB,mCAC5CxH,UAAUwH,SAAS,gBAAiB,iDAEjC,IAAI6B,GAAc,SAAUlM,GAYxB,QAASmM,KACAC,IAILC,EAAapB,QAEbqB,EAAc,GAAIC,WACdC,GAAIC,EACJpK,MAAQL,EAAEM,YAAY5B,EAAgBgM,WAAa,EAAIhM,EAAgBgM,UACvEC,IAAM3K,EAAEM,YAAY5B,EAAgBgM,WAAa,EAAIhM,EAAgBgM,UACrEE,IAAM5K,EAAEM,YAAY5B,EAAgBmM,WAAa,EAAInM,EAAgBmM,UACrEC,MAAOpM,EAAgBuD,MACvB8I,iBAAiB,EACjBC,eAAgB,aAzBxB,GAMIV,GAJAG,EAAc,SAAWR,IACzBnB,EAAetJ,EAAE,mCACjB6K,EAAe7K,EAAE,iCAAmCiL,EAAc,YAGlEL,GAAW,EAEX1L,EAAkBV,CAoBtBS,MAAKuK,OAAS,SAAU9B,GACpBkD,GAAW,EACX5K,EAAE0H,GAASgC,OAAOJ,GAAcI,OAAO1J,EAAE,4CAA4C0J,OAAOmB,IAC5FF,KAGJ1L,KAAKkC,kBAAoB,SAAUC,GAC3BA,EAAY8J,WAAahM,EAAgBgM,WAAa9J,EAAYiK,WAAanM,EAAgBmM,WAAajK,EAAYqB,OAASvD,EAAgBuD,OACjJvD,EAAkBkC,EAClBuJ,KAGAzL,EAAkBkC,EAGtBkI,EAAaU,KAAK5I,EAAYwI,QAGlC3K,KAAKoL,yBAA2B,SAAUC,EAAahE,GAC9C9F,EAAEM,YAAYgK,IACfA,EAAYzL,QAAQ8H,OAAOb,KAInCrH,KAAKiC,UAAY,aAGjBjC,KAAKsL,UAAY,WACb,MAAO,IAGXtL,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAW,QACXC,aAAc,QACdoD,kBACI,0CACA,wCAEJpG,WAEQoC,KAAM,QACNY,aAAc,QACdrB,KAAM,SAGNS,KAAM,QACNY,aAAc,QACdrB,KAAM,eAGNS,KAAM,QACNY,aAAc,QACdrB,KAAM,SAGNS,KAAM,YACNY,aAAc,UACdrB,KAAM,OACNuB,cAAe,IAGfd,KAAM,YACNY,aAAc,UACdrB,KAAM,OACNuB,cAAe,MAGvBG,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAI4I,GAAYlM,OAK/C6C,UAAUwH,SAAS,aAAc,2BAC9B,IAAI4C,GAAkB,SAAUjN,GAC5B,GAEI8K,GAAetJ,EAAE,mCACjBuJ,EAAmBvJ,EAAE,gCAEzBf,MAAKuK,OAAS,SAAU9B,GACpB1H,EAAE0H,GAASgC,OAAOJ,GAAcI,OAAOH,IAG3CtK,KAAKkC,kBAAoB,SAAUC,GAC/BkI,EAAaU,KAAMxJ,EAAEM,YAAYM,EAAYwI,OAAS,GAAKxI,EAAYwI,QAG3E3K,KAAKoL,yBAA2B,SAAUC,EAAahE,GACnDmB,EAAoB8B,EAAkBjD,IAG1CrH,KAAKiC,UAAY,aAGjBjC,KAAKsL,UAAY,WACb,MAAO,IAGXtL,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAW,YACXC,aAAc,YACdoD,kBACI,8CAEJpG,WAEQoC,KAAM,QACNY,aAAc,QACdrB,KAAM,SAGNS,KAAM,QACNY,aAAc,QACdrB,KAAM,eAGd0B,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAI2J,GAAgBjN,OAInD6C,UAAUwH,SAAS,oBAAqB,iGACrC,IAAI6C,GAAgB,SAAUlN,GAU1B,QAASmN,GAAYC,GACjB,IAAKA,GAAUA,EAAO5G,OAAS,EAC3B,QACJ,IAAI6G,KACJA,GAAK/D,MAAM,IAAK8D,EAAO,GAAIA,EAAO,IAClC,KAAK,GAAIE,GAAI,EAAGA,EAAIF,EAAO5G,OAAQ8G,GAAK,EACpCD,EAAK/D,MAAM,IAAK8D,EAAOE,GAAIF,EAAOE,EAAI,IAG1C,OADAD,GAAK/D,MAAM,MACJ+D,EAlBX,GACIE,GAEAC,EACA/D,EAAOD,EAFPiE,EAAc,EAGdxF,EAAe,EACfyF,EAAWlM,EAAE,uCACbmM,EAAWnM,EAAE,cAcjBf,MAAKuK,OAAS,SAAU9B,GACpBO,EAAQjI,EAAE0H,GAASO,QACnBD,EAAShI,EAAE0H,GAASM,QAEpB,IAAIoE,GAASC,KAAKlB,IAAIlD,EAAOD,GAAU,EAAkB,EAAdiE,CAE3CF,GAAQO,QAAQtM,EAAE0H,GAAS6E,MAAM,GAAItE,EAAOD,EAC5C,IAAIwE,GAAST,EAAMS,OAAOvE,EAAQ,EAAGD,EAAS,EAAGoE,EACjDI,GAAO1C,KAAK,SAAU,WACtB0C,EAAO1C,KAAK,eAAgBmC,GAE5BD,EAAWD,EAAMF,KAAKF,GAAa1D,EAAQ,EAAID,EAAS,EAAKoE,EAASH,EAAa,GAAI,GAAI,IAAK,KAChGD,EAASlC,KAAK,eAAgB,GAC9BkC,EAASlC,KAAK,OAAQ,QAEtB9J,EAAE0H,GAASgC,OAAO1J,EAAE,qCAAqC0J,OAAOwC,GAAUxC,OAAOyC,KAGrFlN,KAAKkC,kBAAoB,SAAUC,GAC/B+K,EAASnC,KAAK5I,EAAYqB,QAG9BxD,KAAKoL,yBAA2B,SAAUC,EAAahE,GACnD,GAAmB,aAAfgE,EAA4B,CAC5B,IAAK9J,EAAEM,YAAYkL,GAAW,CAS1BA,EAAS3E,SAASoF,UAAW,IAAMnG,EAAW,IAAO2B,EAAQ,EAAK,IAAOD,EAAS,GAAK,IAAK,UAGhGvB,EAAeH,MAEK,cAAfgE,GACL4B,EAASlC,KAAK1D,IAItBrH,KAAKiC,UAAY,aAGjBjC,KAAKsL,UAAY,WACb,MAAO,IAGXtL,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAW,UACXC,aAAc,UACdoD,kBACI,2CAEJpG,WAEQoC,KAAM,YACNY,aAAc,YACdrB,KAAM,aACNsB,YAAa,eAGbb,KAAM,aACNY,aAAc,aACdrB,KAAM,eAGNS,KAAM,QACNY,aAAc,QACdrB,KAAM,SAGd0B,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAI4J,GAAclN,MAI9C,IAAIkO,GAAgB,SAASlO,GAOzB,QAASkH,KAEFC,IAEC9G,cAAc8G,GACdA,EAAQ,MAIhB,QAASgH,KAEL,GAAGC,GAAiBC,EACpB,CACI,GAAIC,GAAkBD,GAAqC,IAAzBA,EAASE,QAAQ,KAAa,IAAM,KAAOlK,KAAKmK,KAElFhN,GAAE4M,GAAe3D,KACbgE,mBAAsB,OAASH,EAAkB,OArB7D,GACIF,GACAjH,EACAkH,CAuBJ5N,MAAKuK,OAAS,SAAS9B,GAEnB1H,EAAE0H,GAASuB,KACPhB,MAAQ,OACRD,OAAQ,OACRkF,kBAAoB,QACpBC,sBAAwB,WAG5BP,EAAgBlF,GAGpBzI,KAAKkC,kBAAoB,SAASC,GAE9BsE,IAEGtE,EAAY/B,SAAW+B,EAAY/B,QAAU,IAE5CsG,EAAQ7G,YAAY6N,EAA2C,IAA9BxF,OAAO/F,EAAY/B,YAI5DJ,KAAKoL,yBAA2B,SAASC,EAAahE,GAEhC,OAAfgE,IAECuC,EAAWvG,GAGfqG,KAGJ1N,KAAKiC,UAAY,WAEbwE,KAGJzG,KAAKsL,UAAY,WAEb,MAAO,IAGXtL,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAW,UACXC,aAAc,UACd4L,WAAW,EACX5O,WAEQoC,KAAM,MACNY,aAAc,YACdrB,KAAM,eAGNA,KAAQ,SACRqB,aAAgB,gBAChBZ,KAAQ,UACRe,OAAU,UACVF,YAAc,0DAGtBI,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAI4K,GAAclO,OAIjD6C,UAAUwH,SAAS,mBAAoB,wIACvCxH,UAAUwH,SAAS,sBAAuB,mFAC1CxH,UAAUwH,SAAS,kBAAmB,mBACnC,IAAIwE,GAAkB,SAAU7O,GAQ5B,QAAS8O,KACLC,EAAiBC,YAAY,KAAMC,GAG/BC,EAAahH,KADb+G,EACmBjN,EAAEM,YAAY5B,EAAgByO,SAAW,GAAKzO,EAAgByO,QAG9DnN,EAAEM,YAAY5B,EAAgB0O,UAAY,GAAK1O,EAAgB0O,UAd1F,GACItE,GAAetJ,EAAE,mCACjB0N,EAAe1N,EAAE,sCACjBuN,EAAmBvN,EAAE,uCACrBd,EAAkBV,EAClBiP,GAAO,CAaXxO,MAAKuK,OAAS,SAAU9B,GACpB1H,EAAE0H,GAASgC,OAAOJ,GAAcI,OAAO6D,GAAkB7D,OAAOgE,IAGpEzO,KAAKkC,kBAAoB,SAAUC,GAC/BlC,EAAkBkC,EAClBkI,EAAaU,KAAMxJ,EAAEM,YAAYM,EAAYwI,OAAS,GAAKxI,EAAYwI,OACvE0D,KAGJrO,KAAKoL,yBAA2B,SAAUC,EAAahE,GAChC,SAAfgE,IACAmD,EAAOI,QAAQvH,IAGnBgH,KAGJrO,KAAKiC,UAAY,aAGjBjC,KAAKsL,UAAY,WACb,MAAO,IAGXtL,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAW,YACXC,aAAc,kBACdhD,WAEQoC,KAAM,QACNY,aAAc,QACdrB,KAAM,SAGNS,KAAM,QACNY,aAAc,QACdrB,KAAM,eAGNS,KAAM,UACNY,aAAc,UACdrB,KAAM,eAGNS,KAAM,WACNY,aAAc,WACdrB,KAAM,eAGd0B,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAIuL,GAAgB7O,OAIhD6C,UAAUwH,SAAS,iBAAkB,oBAErC,IAAIiF,GAAkB,SAAUtP,GAO5B,QAASuP,KACL,GAAIC,GAAOC,GAAUC,EAAgBC,KAAOD,EAAgBE,IAAK,CAC7D,GAAIC,GAAY,GAAIC,QAAOC,KAAKC,OAAON,EAAgBC,IAAKD,EAAgBE,IAC5EH,GAAOQ,YAAYJ,GACnBL,EAAIU,MAAML,IAVlB,GAEIL,GACAC,EAFA/O,EAAkBV,EAGlB0P,IAUJjP,MAAKuK,OAAS,SAAU9B,GACpB,QAASiH,KACL,GAAIC,IACAC,KAAM,GACNC,OAAQ,GAAIR,QAAOC,KAAKC,OAAO,OAAQ,aACvCO,kBAAkB,EAClBC,WAAW,EACXC,SACKC,YAAe,QAASC,YAAe,WAAYC,UAC/CC,MAAS,cAEbH,YAAe,YAAaC,YAAe,WAAYC,UACnDC,MAAS,YACTC,UAAa,OAEjBJ,YAAe,eAAgBC,YAAe,gBAAiBC,UAC3DC,MAAS,YACTC,UAAa,OAEjBJ,YAAe,eAAgBC,YAAe,kBAAmBC,UAC7DC,MAAS,YACTC,UAAa,KACbC,OAAU,OAEdL,YAAe,gBAAiBC,YAAe,WAAYC,UACvDC,MAAS,YACTC,UAAa,OAEjBJ,YAAe,aAAcC,YAAe,WAAYC,UACpDC,MAAS,YACTC,UAAa,OAEjBJ,YAAe,MAAOC,YAAe,WAAYC,UAC7CC,MAAS,YACTC,UAAa,OAEjBH,YAAe,qBAAsBC,UACjCI,WAAc,OACdH,MAAS,YACTC,UAAa,OAEjBH,YAAe,mBAAoBC,UAC/BK,WAAc,KACdJ,MAAS,YACTC,UAAa,OAEjBH,YAAe,cAAeC,UAC1BI,WAAc,UAElBN,YAAe,UAAWC,YAAe,WAAYC,UACjDC,MAAS,YACTC,UAAa,OAEjBJ,YAAe,iBAAkBC,YAAe,gBAAiBC,UAC7DC,MAAS,YACTC,UAAa,OAEjBJ,YAAe,iBAAkBC,YAAe,kBAAmBC,UAC/DC,MAAS,YACTC,UAAa,KACbC,OAAU,QAKvBvB,GAAM,GAAIM,QAAOC,KAAKmB,IAAIhI,EAASkH,GAEnCN,OAAOC,KAAKoB,MAAMC,eAAelI,EAAS,aAAc,SAAU3H,GAC9DA,EAAE8P,cAAe,EACZ7B,EAAI8B,QACL9B,EAAI8B,OAAQ,EACZ9B,EAAI+B,YAAYC,aAAa,OAIrC1B,OAAOC,KAAKoB,MAAMC,eAAelI,EAAS,aAAc,WAChDsG,EAAI8B,QACJ9B,EAAI+B,YAAYC,aAAa,IAC7BhC,EAAI8B,OAAQ,KAIpB7B,EAAS,GAAIK,QAAOC,KAAK0B,QAAQjC,IAAKA,IAEtCD,IAGAmC,OAAO5B,QAAU4B,OAAO5B,OAAOC,KAC/BI,KAGAuB,OAAOC,gBAAkBxB,EACzByB,KAAKC,GAAG,2FAIhBpR,KAAKkC,kBAAoB,SAAUC,GAC/BlC,EAAkBkC,GAGtBnC,KAAKoL,yBAA2B,SAAUC,EAAahE,GAChC,OAAfgE,EACA4D,EAAgBC,IAAM7H,EAEF,OAAfgE,IACL4D,EAAgBE,IAAM9H,GAG1ByH,KAGJ9O,KAAKiC,UAAY,aAGjBjC,KAAKsL,UAAY,WACb,MAAO,IAGXtL,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAW,aACXC,aAAc,aACd4L,WAAW,EACX5O,WAEQoC,KAAM,MACNY,aAAc,WACdrB,KAAM,eAGNS,KAAM,MACNY,aAAc,YACdrB,KAAM,eAGd0B,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAIgM,GAAgBtP,OAIhD6C,UAAUwH,SAAS,eAAgB,4CAEnC,IAAIyH,GAAa,SAAU9R,GACvB,GACI+R,GAAcvQ,EAAE,mCAChBd,EAAkBV,CAEtBS,MAAKuK,OAAS,SAAU9B,GACpB1H,EAAE0H,GAASgC,OAAO6G,IAGtBtR,KAAKkC,kBAAoB,SAAUC,GAC/BlC,EAAkBkC,GAGtBnC,KAAKoL,yBAA2B,SAAUC,EAAahE,GAChC,QAAfgE,GACAiG,EAAYvG,KAAK1D,IAIzBrH,KAAKiC,UAAY,aAGjBjC,KAAKsL,UAAY,WACb,MAAOpD,QAAOjI,EAAgB8I,SAGlC/I,KAAKkC,kBAAkB3C,GAG3B6C,WAAUmJ,kBACNjJ,UAAa,OACbC,aAAgB,OAChB4L,WAAa,EACb5O,WAEQoC,KAAQ,OACRY,aAAgB,OAChBrB,KAAQ,aACRsB,YAAe,0DAGfb,KAAQ,SACRY,aAAgB,gBAChBrB,KAAQ,SACRuB,cAAiB,EACjBD,YAAe,uCAGvBI,YAAa,SAAUrD,EAAUsD,GAC7BA,EAAoB,GAAIwO,GAAW9R"}
\ No newline at end of file
diff --git a/WebSites/errors/403/js/freeboard.thirdparty.js b/WebSites/errors/403/js/freeboard.thirdparty.js
new file mode 100644
index 0000000..85bf9c5
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.thirdparty.js
@@ -0,0 +1,19164 @@
+/*! head.core - v1.0.2 */
+(function(n,t){"use strict";function r(n){a[a.length]=n}function k(n){var t=new RegExp(" ?\\b"+n+"\\b");c.className=c.className.replace(t,"")}function p(n,t){for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}function tt(){var t,e,f,o;c.className=c.className.replace(/ (w-|eq-|gt-|gte-|lt-|lte-|portrait|no-portrait|landscape|no-landscape)\d+/g,"");t=n.innerWidth||c.clientWidth;e=n.outerWidth||n.screen.width;u.screen.innerWidth=t;u.screen.outerWidth=e;r("w-"+t);p(i.screens,function(n){t>n?(i.screensCss.gt&&r("gt-"+n),i.screensCss.gte&&r("gte-"+n)):t<n?(i.screensCss.lt&&r("lt-"+n),i.screensCss.lte&&r("lte-"+n)):t===n&&(i.screensCss.lte&&r("lte-"+n),i.screensCss.eq&&r("e-q"+n),i.screensCss.gte&&r("gte-"+n))});f=n.innerHeight||c.clientHeight;o=n.outerHeight||n.screen.height;u.screen.innerHeight=f;u.screen.outerHeight=o;u.feature("portrait",f>t);u.feature("landscape",f<t)}function it(){n.clearTimeout(b);b=n.setTimeout(tt,50)}var y=n.document,rt=n.navigator,ut=n.location,c=y.documentElement,a=[],i={screens:[240,320,480,640,768,800,1024,1280,1440,1680,1920],screensCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!1},browsers:[{ie:{min:6,max:11}}],browserCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!0},html5:!0,page:"-page",section:"-section",head:"head"},v,u,s,w,o,h,l,d,f,g,nt,e,b;if(n.head_conf)for(v in n.head_conf)n.head_conf[v]!==t&&(i[v]=n.head_conf[v]);u=n[i.head]=function(){u.ready.apply(null,arguments)};u.feature=function(n,t,i){return n?(Object.prototype.toString.call(t)==="[object Function]"&&(t=t.call()),r((t?"":"no-")+n),u[n]=!!t,i||(k("no-"+n),k(n),u.feature()),u):(c.className+=" "+a.join(" "),a=[],u)};u.feature("js",!0);s=rt.userAgent.toLowerCase();w=/mobile|android|kindle|silk|midp|phone|(windows .+arm|touch)/.test(s);u.feature("mobile",w,!0);u.feature("desktop",!w,!0);s=/(chrome|firefox)[ \/]([\w.]+)/.exec(s)||/(iphone|ipad|ipod)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(android)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(webkit|opera)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(msie) ([\w.]+)/.exec(s)||/(trident).+rv:(\w.)+/.exec(s)||[];o=s[1];h=parseFloat(s[2]);switch(o){case"msie":case"trident":o="ie";h=y.documentMode||h;break;case"firefox":o="ff";break;case"ipod":case"ipad":case"iphone":o="ios";break;case"webkit":o="safari"}for(u.browser={name:o,version:h},u.browser[o]=!0,l=0,d=i.browsers.length;l<d;l++)for(f in i.browsers[l])if(o===f)for(r(f),g=i.browsers[l][f].min,nt=i.browsers[l][f].max,e=g;e<=nt;e++)h>e?(i.browserCss.gt&&r("gt-"+f+e),i.browserCss.gte&&r("gte-"+f+e)):h<e?(i.browserCss.lt&&r("lt-"+f+e),i.browserCss.lte&&r("lte-"+f+e)):h===e&&(i.browserCss.lte&&r("lte-"+f+e),i.browserCss.eq&&r("eq-"+f+e),i.browserCss.gte&&r("gte-"+f+e));else r("no-"+f);r(o);r(o+parseInt(h,10));i.html5&&o==="ie"&&h<9&&p("abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|progress|section|summary|time|video".split("|"),function(n){y.createElement(n)});p(ut.pathname.split("/"),function(n,u){if(this.length>2&&this[u+1]!==t)u&&r(this.slice(u,u+1).join("-").toLowerCase()+i.section);else{var f=n||"index",e=f.indexOf(".");e>0&&(f=f.substring(0,e));c.id=f.toLowerCase()+i.page;u||r("root"+i.section)}});u.screen={height:n.screen.height,width:n.screen.width};tt();b=0;n.addEventListener?n.addEventListener("resize",it,!1):n.attachEvent("onresize",it)})(window);
+/*! head.css3 - v1.0.0 */
+(function(n,t){"use strict";function a(n){for(var r in n)if(i[n[r]]!==t)return!0;return!1}function r(n){var t=n.charAt(0).toUpperCase()+n.substr(1),i=(n+" "+c.join(t+" ")+t).split(" ");return!!a(i)}var h=n.document,o=h.createElement("i"),i=o.style,s=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),c="Webkit Moz O ms Khtml".split(" "),l=n.head_conf&&n.head_conf.head||"head",u=n[l],f={gradient:function(){var n="background-image:";return i.cssText=(n+s.join("gradient(linear,left top,right bottom,from(#9f9),to(#fff));"+n)+s.join("linear-gradient(left top,#eee,#fff);"+n)).slice(0,-n.length),!!i.backgroundImage},rgba:function(){return i.cssText="background-color:rgba(0,0,0,0.5)",!!i.backgroundColor},opacity:function(){return o.style.opacity===""},textshadow:function(){return i.textShadow===""},multiplebgs:function(){i.cssText="background:url(https://),url(https://),red url(https://)";var n=(i.background||"").match(/url/g);return Object.prototype.toString.call(n)==="[object Array]"&&n.length===3},boxshadow:function(){return r("boxShadow")},borderimage:function(){return r("borderImage")},borderradius:function(){return r("borderRadius")},cssreflections:function(){return r("boxReflect")},csstransforms:function(){return r("transform")},csstransitions:function(){return r("transition")},touch:function(){return"ontouchstart"in n},retina:function(){return n.devicePixelRatio>1},fontface:function(){var t=u.browser.name,n=u.browser.version;switch(t){case"ie":return n>=9;case"chrome":return n>=13;case"ff":return n>=6;case"ios":return n>=5;case"android":return!1;case"webkit":return n>=5.1;case"opera":return n>=10;default:return!1}}};for(var e in f)f[e]&&u.feature(e,f[e].call(),!0);u.feature()})(window);
+/*! head.load - v1.0.3 */
+(function(n,t){"use strict";function w(){}function u(n,t){if(n){typeof n=="object"&&(n=[].slice.call(n));for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}}function it(n,i){var r=Object.prototype.toString.call(i).slice(8,-1);return i!==t&&i!==null&&r===n}function s(n){return it("Function",n)}function a(n){return it("Array",n)}function et(n){var i=n.split("/"),t=i[i.length-1],r=t.indexOf("?");return r!==-1?t.substring(0,r):t}function f(n){(n=n||w,n._done)||(n(),n._done=1)}function ot(n,t,r,u){var f=typeof n=="object"?n:{test:n,success:!t?!1:a(t)?t:[t],failure:!r?!1:a(r)?r:[r],callback:u||w},e=!!f.test;return e&&!!f.success?(f.success.push(f.callback),i.load.apply(null,f.success)):e||!f.failure?u():(f.failure.push(f.callback),i.load.apply(null,f.failure)),i}function v(n){var t={},i,r;if(typeof n=="object")for(i in n)!n[i]||(t={name:i,url:n[i]});else t={name:et(n),url:n};return(r=c[t.name],r&&r.url===t.url)?r:(c[t.name]=t,t)}function y(n){n=n||c;for(var t in n)if(n.hasOwnProperty(t)&&n[t].state!==l)return!1;return!0}function st(n){n.state=ft;u(n.onpreload,function(n){n.call()})}function ht(n){n.state===t&&(n.state=nt,n.onpreload=[],rt({url:n.url,type:"cache"},function(){st(n)}))}function ct(){var n=arguments,t=n[n.length-1],r=[].slice.call(n,1),f=r[0];return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(f?(u(r,function(n){s(n)||!n||ht(v(n))}),b(v(n[0]),s(f)?f:function(){i.load.apply(null,r)})):b(v(n[0])),i)}function lt(){var n=arguments,t=n[n.length-1],r={};return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(u(n,function(n){n!==t&&(n=v(n),r[n.name]=n)}),u(n,function(n){n!==t&&(n=v(n),b(n,function(){y(r)&&f(t)}))}),i)}function b(n,t){if(t=t||w,n.state===l){t();return}if(n.state===tt){i.ready(n.name,t);return}if(n.state===nt){n.onpreload.push(function(){b(n,t)});return}n.state=tt;rt(n,function(){n.state=l;t();u(h[n.name],function(n){f(n)});o&&y()&&u(h.ALL,function(n){f(n)})})}function at(n){n=n||"";var t=n.split("?")[0].split(".");return t[t.length-1].toLowerCase()}function rt(t,i){function e(t){t=t||n.event;u.onload=u.onreadystatechange=u.onerror=null;i()}function o(f){f=f||n.event;(f.type==="load"||/loaded|complete/.test(u.readyState)&&(!r.documentMode||r.documentMode<9))&&(n.clearTimeout(t.errorTimeout),n.clearTimeout(t.cssTimeout),u.onload=u.onreadystatechange=u.onerror=null,i())}function s(){if(t.state!==l&&t.cssRetries<=20){for(var i=0,f=r.styleSheets.length;i<f;i++)if(r.styleSheets[i].href===u.href){o({type:"load"});return}t.cssRetries++;t.cssTimeout=n.setTimeout(s,250)}}var u,h,f;i=i||w;h=at(t.url);h==="css"?(u=r.createElement("link"),u.type="text/"+(t.type||"css"),u.rel="stylesheet",u.href=t.url,t.cssRetries=0,t.cssTimeout=n.setTimeout(s,500)):(u=r.createElement("script"),u.type="text/"+(t.type||"javascript"),u.src=t.url);u.onload=u.onreadystatechange=o;u.onerror=e;u.async=!1;u.defer=!1;t.errorTimeout=n.setTimeout(function(){e({type:"timeout"})},7e3);f=r.head||r.getElementsByTagName("head")[0];f.insertBefore(u,f.lastChild)}function vt(){for(var t,u=r.getElementsByTagName("script"),n=0,f=u.length;n<f;n++)if(t=u[n].getAttribute("data-headjs-load"),!!t){i.load(t);return}}function yt(n,t){var v,p,e;return n===r?(o?f(t):d.push(t),i):(s(n)&&(t=n,n="ALL"),a(n))?(v={},u(n,function(n){v[n]=c[n];i.ready(n,function(){y(v)&&f(t)})}),i):typeof n!="string"||!s(t)?i:(p=c[n],p&&p.state===l||n==="ALL"&&y()&&o)?(f(t),i):(e=h[n],e?e.push(t):e=h[n]=[t],i)}function e(){if(!r.body){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(e,50);return}o||(o=!0,vt(),u(d,function(n){f(n)}))}function k(){r.addEventListener?(r.removeEventListener("DOMContentLoaded",k,!1),e()):r.readyState==="complete"&&(r.detachEvent("onreadystatechange",k),e())}var r=n.document,d=[],h={},c={},ut="async"in r.createElement("script")||"MozAppearance"in r.documentElement.style||n.opera,o,g=n.head_conf&&n.head_conf.head||"head",i=n[g]=n[g]||function(){i.ready.apply(null,arguments)},nt=1,ft=2,tt=3,l=4,p;if(r.readyState==="complete")e();else if(r.addEventListener)r.addEventListener("DOMContentLoaded",k,!1),n.addEventListener("load",e,!1);else{r.attachEvent("onreadystatechange",k);n.attachEvent("onload",e);p=!1;try{p=!n.frameElement&&r.documentElement}catch(wt){}p&&p.doScroll&&function pt(){if(!o){try{p.doScroll("left")}catch(t){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(pt,50);return}e()}}()}i.load=i.js=ut?lt:ct;i.test=ot;i.ready=yt;i.ready(r,function(){y()&&u(h.ALL,function(n){f(n)});i.feature&&i.feature("domloaded",!0)})})(window);
+/*
+//# sourceMappingURL=head.min.js.map
+*/
+/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-2.0.3.min.map
+*/
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)
+};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&qt(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)
+},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||".5",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;for(;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=q.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=q.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;q.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(qn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function qn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:qn("show"),slideUp:qn("hide"),slideToggle:qn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=Hn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=Hn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function Hn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window);
+/*! jQuery UI - v1.10.3 - 2013-05-03
+* http://jqueryui.com
+* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function( $, undefined ) {
+
+var uuid = 0,
+	runiqueId = /^ui-id-\d+$/;
+
+// $.ui might exist from components with no dependencies, e.g., $.ui.position
+$.ui = $.ui || {};
+
+$.extend( $.ui, {
+	version: "1.10.3",
+
+	keyCode: {
+		BACKSPACE: 8,
+		COMMA: 188,
+		DELETE: 46,
+		DOWN: 40,
+		END: 35,
+		ENTER: 13,
+		ESCAPE: 27,
+		HOME: 36,
+		LEFT: 37,
+		NUMPAD_ADD: 107,
+		NUMPAD_DECIMAL: 110,
+		NUMPAD_DIVIDE: 111,
+		NUMPAD_ENTER: 108,
+		NUMPAD_MULTIPLY: 106,
+		NUMPAD_SUBTRACT: 109,
+		PAGE_DOWN: 34,
+		PAGE_UP: 33,
+		PERIOD: 190,
+		RIGHT: 39,
+		SPACE: 32,
+		TAB: 9,
+		UP: 38
+	}
+});
+
+// plugins
+$.fn.extend({
+	focus: (function( orig ) {
+		return function( delay, fn ) {
+			return typeof delay === "number" ?
+				this.each(function() {
+					var elem = this;
+					setTimeout(function() {
+						$( elem ).focus();
+						if ( fn ) {
+							fn.call( elem );
+						}
+					}, delay );
+				}) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.focus ),
+
+	scrollParent: function() {
+		var scrollParent;
+		if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
+			scrollParent = this.parents().filter(function() {
+				return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		} else {
+			scrollParent = this.parents().filter(function() {
+				return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		}
+
+		return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
+	},
+
+	zIndex: function( zIndex ) {
+		if ( zIndex !== undefined ) {
+			return this.css( "zIndex", zIndex );
+		}
+
+		if ( this.length ) {
+			var elem = $( this[ 0 ] ), position, value;
+			while ( elem.length && elem[ 0 ] !== document ) {
+				// Ignore z-index if position is set to a value where z-index is ignored by the browser
+				// This makes behavior of this function consistent across browsers
+				// WebKit always returns auto if the element is positioned
+				position = elem.css( "position" );
+				if ( position === "absolute" || position === "relative" || position === "fixed" ) {
+					// IE returns 0 when zIndex is not specified
+					// other browsers return a string
+					// we ignore the case of nested elements with an explicit value of 0
+					// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
+					value = parseInt( elem.css( "zIndex" ), 10 );
+					if ( !isNaN( value ) && value !== 0 ) {
+						return value;
+					}
+				}
+				elem = elem.parent();
+			}
+		}
+
+		return 0;
+	},
+
+	uniqueId: function() {
+		return this.each(function() {
+			if ( !this.id ) {
+				this.id = "ui-id-" + (++uuid);
+			}
+		});
+	},
+
+	removeUniqueId: function() {
+		return this.each(function() {
+			if ( runiqueId.test( this.id ) ) {
+				$( this ).removeAttr( "id" );
+			}
+		});
+	}
+});
+
+// selectors
+function focusable( element, isTabIndexNotNaN ) {
+	var map, mapName, img,
+		nodeName = element.nodeName.toLowerCase();
+	if ( "area" === nodeName ) {
+		map = element.parentNode;
+		mapName = map.name;
+		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+			return false;
+		}
+		img = $( "img[usemap=#" + mapName + "]" )[0];
+		return !!img && visible( img );
+	}
+	return ( /input|select|textarea|button|object/.test( nodeName ) ?
+		!element.disabled :
+		"a" === nodeName ?
+			element.href || isTabIndexNotNaN :
+			isTabIndexNotNaN) &&
+		// the element and all of its ancestors must be visible
+		visible( element );
+}
+
+function visible( element ) {
+	return $.expr.filters.visible( element ) &&
+		!$( element ).parents().addBack().filter(function() {
+			return $.css( this, "visibility" ) === "hidden";
+		}).length;
+}
+
+$.extend( $.expr[ ":" ], {
+	data: $.expr.createPseudo ?
+		$.expr.createPseudo(function( dataName ) {
+			return function( elem ) {
+				return !!$.data( elem, dataName );
+			};
+		}) :
+		// support: jQuery <1.8
+		function( elem, i, match ) {
+			return !!$.data( elem, match[ 3 ] );
+		},
+
+	focusable: function( element ) {
+		return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
+	},
+
+	tabbable: function( element ) {
+		var tabIndex = $.attr( element, "tabindex" ),
+			isTabIndexNaN = isNaN( tabIndex );
+		return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
+	}
+});
+
+// support: jQuery <1.8
+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
+	$.each( [ "Width", "Height" ], function( i, name ) {
+		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+			type = name.toLowerCase(),
+			orig = {
+				innerWidth: $.fn.innerWidth,
+				innerHeight: $.fn.innerHeight,
+				outerWidth: $.fn.outerWidth,
+				outerHeight: $.fn.outerHeight
+			};
+
+		function reduce( elem, size, border, margin ) {
+			$.each( side, function() {
+				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+				if ( border ) {
+					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+				}
+				if ( margin ) {
+					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+				}
+			});
+			return size;
+		}
+
+		$.fn[ "inner" + name ] = function( size ) {
+			if ( size === undefined ) {
+				return orig[ "inner" + name ].call( this );
+			}
+
+			return this.each(function() {
+				$( this ).css( type, reduce( this, size ) + "px" );
+			});
+		};
+
+		$.fn[ "outer" + name] = function( size, margin ) {
+			if ( typeof size !== "number" ) {
+				return orig[ "outer" + name ].call( this, size );
+			}
+
+			return this.each(function() {
+				$( this).css( type, reduce( this, size, true, margin ) + "px" );
+			});
+		};
+	});
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
+if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
+	$.fn.removeData = (function( removeData ) {
+		return function( key ) {
+			if ( arguments.length ) {
+				return removeData.call( this, $.camelCase( key ) );
+			} else {
+				return removeData.call( this );
+			}
+		};
+	})( $.fn.removeData );
+}
+
+
+
+
+
+// deprecated
+$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
+
+$.support.selectstart = "onselectstart" in document.createElement( "div" );
+$.fn.extend({
+	disableSelection: function() {
+		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
+			".ui-disableSelection", function( event ) {
+				event.preventDefault();
+			});
+	},
+
+	enableSelection: function() {
+		return this.unbind( ".ui-disableSelection" );
+	}
+});
+
+$.extend( $.ui, {
+	// $.ui.plugin is deprecated. Use $.widget() extensions instead.
+	plugin: {
+		add: function( module, option, set ) {
+			var i,
+				proto = $.ui[ module ].prototype;
+			for ( i in set ) {
+				proto.plugins[ i ] = proto.plugins[ i ] || [];
+				proto.plugins[ i ].push( [ option, set[ i ] ] );
+			}
+		},
+		call: function( instance, name, args ) {
+			var i,
+				set = instance.plugins[ name ];
+			if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
+				return;
+			}
+
+			for ( i = 0; i < set.length; i++ ) {
+				if ( instance.options[ set[ i ][ 0 ] ] ) {
+					set[ i ][ 1 ].apply( instance.element, args );
+				}
+			}
+		}
+	},
+
+	// only used by resizable
+	hasScroll: function( el, a ) {
+
+		//If overflow is hidden, the element might have extra content, but the user wants to hide it
+		if ( $( el ).css( "overflow" ) === "hidden") {
+			return false;
+		}
+
+		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
+			has = false;
+
+		if ( el[ scroll ] > 0 ) {
+			return true;
+		}
+
+		// TODO: determine which cases actually cause this to happen
+		// if the element doesn't have the scroll set, see if it's possible to
+		// set the scroll
+		el[ scroll ] = 1;
+		has = ( el[ scroll ] > 0 );
+		el[ scroll ] = 0;
+		return has;
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var uuid = 0,
+	slice = Array.prototype.slice,
+	_cleanData = $.cleanData;
+$.cleanData = function( elems ) {
+	for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+		try {
+			$( elem ).triggerHandler( "remove" );
+		// http://bugs.jquery.com/ticket/8235
+		} catch( e ) {}
+	}
+	_cleanData( elems );
+};
+
+$.widget = function( name, base, prototype ) {
+	var fullName, existingConstructor, constructor, basePrototype,
+		// proxiedPrototype allows the provided prototype to remain unmodified
+		// so that it can be used as a mixin for multiple panes (#8876)
+		proxiedPrototype = {},
+		namespace = name.split( "." )[ 0 ];
+
+	name = name.split( "." )[ 1 ];
+	fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	// create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+		// allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+	// extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+		// copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+		// track panes that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	});
+
+	basePrototype = new base();
+	// we need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = (function() {
+			var _super = function() {
+					return base.prototype[ prop ].apply( this, arguments );
+				},
+				_superApply = function( args ) {
+					return base.prototype[ prop ].apply( this, args );
+				};
+			return function() {
+				var __super = this._super,
+					__superApply = this._superApply,
+					returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		})();
+	});
+	constructor.prototype = $.widget.extend( basePrototype, {
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for panes that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	});
+
+	// If this widget is being redefined then we need to find all panes that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+		});
+		// remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+};
+
+$.widget.extend = function( target ) {
+	var input = slice.call( arguments, 1 ),
+		inputIndex = 0,
+		inputLength = input.length,
+		key,
+		value;
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string",
+			args = slice.call( arguments, 1 ),
+			returnValue = this;
+
+		// allow multiple hashes to be passed on init
+		options = !isMethodCall && args.length ?
+			$.widget.extend.apply( null, [ options ].concat(args) ) :
+			options;
+
+		if ( isMethodCall ) {
+			this.each(function() {
+				var methodValue,
+					instance = $.data( this, fullName );
+				if ( !instance ) {
+					return $.error( "cannot call methods on " + name + " prior to initialization; " +
+						"attempted to call method '" + options + "'" );
+				}
+				if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+					return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+				}
+				methodValue = instance[ options ].apply( instance, args );
+				if ( methodValue !== instance && methodValue !== undefined ) {
+					returnValue = methodValue && methodValue.jquery ?
+						returnValue.pushStack( methodValue.get() ) :
+						methodValue;
+					return false;
+				}
+			});
+		} else {
+			this.each(function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} )._init();
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			});
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+	options: {
+		disabled: false,
+
+		// callbacks
+		create: null
+	},
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = uuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			});
+			this.document = $( element.style ?
+				// element within the document
+				element.ownerDocument :
+				// element is window or document
+				element.document || element );
+			this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+		}
+
+		this._create();
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+	_getCreateOptions: $.noop,
+	_getCreateEventData: $.noop,
+	_create: $.noop,
+	_init: $.noop,
+
+	destroy: function() {
+		this._destroy();
+		// we can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.unbind( this.eventNamespace )
+			// 1.9 BC for #7810
+			// TODO remove dual storage
+			.removeData( this.widgetName )
+			.removeData( this.widgetFullName )
+			// support: jquery <1.6.3
+			// http://bugs.jquery.com/ticket/9413
+			.removeData( $.camelCase( this.widgetFullName ) );
+		this.widget()
+			.unbind( this.eventNamespace )
+			.removeAttr( "aria-disabled" )
+			.removeClass(
+				this.widgetFullName + "-disabled " +
+				"ui-state-disabled" );
+
+		// clean up events and states
+		this.bindings.unbind( this.eventNamespace );
+		this.hoverable.removeClass( "ui-state-hover" );
+		this.focusable.removeClass( "ui-state-focus" );
+	},
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key,
+			parts,
+			curOption,
+			i;
+
+		if ( arguments.length === 0 ) {
+			// don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+			// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( value === undefined ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( value === undefined ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+	_setOption: function( key, value ) {
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this.widget()
+				.toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
+				.attr( "aria-disabled", value );
+			this.hoverable.removeClass( "ui-state-hover" );
+			this.focusable.removeClass( "ui-state-focus" );
+		}
+
+		return this;
+	},
+
+	enable: function() {
+		return this._setOption( "disabled", false );
+	},
+	disable: function() {
+		return this._setOption( "disabled", true );
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement,
+			instance = this;
+
+		// no suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// no element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			// accept selectors, DOM elements
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+				// allow panes to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+							$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^(\w+)\s*(.*)$/ ),
+				eventName = match[1] + instance.eventNamespace,
+				selector = match[2];
+			if ( selector ) {
+				delegateElement.delegate( selector, eventName, handlerProxy );
+			} else {
+				element.bind( eventName, handlerProxy );
+			}
+		});
+	},
+
+	_off: function( element, eventName ) {
+		eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+		element.unbind( eventName ).undelegate( eventName );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-hover" );
+			}
+		});
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-focus" );
+			}
+		});
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig,
+			callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+		// the original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+		var hasOptions,
+			effectName = !options ?
+				method :
+				options === true || typeof options === "number" ?
+					defaultEffect :
+					options.effect || defaultEffect;
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue(function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			});
+		}
+	};
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var mouseHandled = false;
+$( document ).mouseup( function() {
+	mouseHandled = false;
+});
+
+$.widget("ui.mouse", {
+	version: "1.10.3",
+	options: {
+		cancel: "input,textarea,button,select,option",
+		distance: 1,
+		delay: 0
+	},
+	_mouseInit: function() {
+		var that = this;
+
+		this.element
+			.bind("mousedown."+this.widgetName, function(event) {
+				return that._mouseDown(event);
+			})
+			.bind("click."+this.widgetName, function(event) {
+				if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
+					$.removeData(event.target, that.widgetName + ".preventClickEvent");
+					event.stopImmediatePropagation();
+					return false;
+				}
+			});
+
+		this.started = false;
+	},
+
+	// TODO: make sure destroying one instance of mouse doesn't mess with
+	// other instances of mouse
+	_mouseDestroy: function() {
+		this.element.unbind("."+this.widgetName);
+		if ( this._mouseMoveDelegate ) {
+			$(document)
+				.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+				.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+		}
+	},
+
+	_mouseDown: function(event) {
+		// don't let more than one widget handle mouseStart
+		if( mouseHandled ) { return; }
+
+		// we may have missed mouseup (out of window)
+		(this._mouseStarted && this._mouseUp(event));
+
+		this._mouseDownEvent = event;
+
+		var that = this,
+			btnIsLeft = (event.which === 1),
+			// event.target.nodeName works around a bug in IE 8 with
+			// disabled inputs (#7620)
+			elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
+		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
+			return true;
+		}
+
+		this.mouseDelayMet = !this.options.delay;
+		if (!this.mouseDelayMet) {
+			this._mouseDelayTimer = setTimeout(function() {
+				that.mouseDelayMet = true;
+			}, this.options.delay);
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted = (this._mouseStart(event) !== false);
+			if (!this._mouseStarted) {
+				event.preventDefault();
+				return true;
+			}
+		}
+
+		// Click event may never have fired (Gecko & Opera)
+		if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
+			$.removeData(event.target, this.widgetName + ".preventClickEvent");
+		}
+
+		// these delegates are required to keep context
+		this._mouseMoveDelegate = function(event) {
+			return that._mouseMove(event);
+		};
+		this._mouseUpDelegate = function(event) {
+			return that._mouseUp(event);
+		};
+		$(document)
+			.bind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.bind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		event.preventDefault();
+
+		mouseHandled = true;
+		return true;
+	},
+
+	_mouseMove: function(event) {
+		// IE mouseup check - mouseup happened when mouse was out of window
+		if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
+			return this._mouseUp(event);
+		}
+
+		if (this._mouseStarted) {
+			this._mouseDrag(event);
+			return event.preventDefault();
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted =
+				(this._mouseStart(this._mouseDownEvent, event) !== false);
+			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
+		}
+
+		return !this._mouseStarted;
+	},
+
+	_mouseUp: function(event) {
+		$(document)
+			.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		if (this._mouseStarted) {
+			this._mouseStarted = false;
+
+			if (event.target === this._mouseDownEvent.target) {
+				$.data(event.target, this.widgetName + ".preventClickEvent", true);
+			}
+
+			this._mouseStop(event);
+		}
+
+		return false;
+	},
+
+	_mouseDistanceMet: function(event) {
+		return (Math.max(
+				Math.abs(this._mouseDownEvent.pageX - event.pageX),
+				Math.abs(this._mouseDownEvent.pageY - event.pageY)
+			) >= this.options.distance
+		);
+	},
+
+	_mouseDelayMet: function(/* event */) {
+		return this.mouseDelayMet;
+	},
+
+	// These are placeholder methods, to be overriden by extending plugin
+	_mouseStart: function(/* event */) {},
+	_mouseDrag: function(/* event */) {},
+	_mouseStop: function(/* event */) {},
+	_mouseCapture: function(/* event */) { return true; }
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.widget("ui.draggable", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "drag",
+	options: {
+		addClasses: true,
+		appendTo: "parent",
+		axis: false,
+		connectToSortable: false,
+		containment: false,
+		cursor: "auto",
+		cursorAt: false,
+		grid: false,
+		handle: false,
+		helper: "original",
+		iframeFix: false,
+		opacity: false,
+		refreshPositions: false,
+		revert: false,
+		revertDuration: 500,
+		scope: "default",
+		scroll: true,
+		scrollSensitivity: 20,
+		scrollSpeed: 20,
+		snap: false,
+		snapMode: "both",
+		snapTolerance: 20,
+		stack: false,
+		zIndex: false,
+
+		// callbacks
+		drag: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) {
+			this.element[0].style.position = "relative";
+		}
+		if (this.options.addClasses){
+			this.element.addClass("ui-draggable");
+		}
+		if (this.options.disabled){
+			this.element.addClass("ui-draggable-disabled");
+		}
+
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function(event) {
+
+		var o = this.options;
+
+		// among others, prevent a drag on a resizable-handle
+		if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
+			return false;
+		}
+
+		//Quit if we're not on a valid handle
+		this.handle = this._getHandle(event);
+		if (!this.handle) {
+			return false;
+		}
+
+		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
+			$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>")
+			.css({
+				width: this.offsetWidth+"px", height: this.offsetHeight+"px",
+				position: "absolute", opacity: "0.001", zIndex: 1000
+			})
+			.css($(this).offset())
+			.appendTo("body");
+		});
+
+		return true;
+
+	},
+
+	_mouseStart: function(event) {
+
+		var o = this.options;
+
+		//Create and append the visible helper
+		this.helper = this._createHelper(event);
+
+		this.helper.addClass("ui-draggable-dragging");
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		//If ddmanager is used for droppables, set the global draggable
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.current = this;
+		}
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Store the helper's css position
+		this.cssPosition = this.helper.css( "position" );
+		this.scrollParent = this.helper.scrollParent();
+		this.offsetParent = this.helper.offsetParent();
+		this.offsetParentCssPosition = this.offsetParent.css( "position" );
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.positionAbs = this.element.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		//Reset scroll cache
+		this.offset.scroll = false;
+
+		$.extend(this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
+		});
+
+		//Generate the original position
+		this.originalPosition = this.position = this._generatePosition(event);
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
+
+		//Set a containment if given in the options
+		this._setContainment();
+
+		//Trigger event + callbacks
+		if(this._trigger("start", event) === false) {
+			this._clear();
+			return false;
+		}
+
+		//Recache the helper size
+		this._cacheHelperProportions();
+
+		//Prepare the droppable offsets
+		if ($.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(this, event);
+		}
+
+
+		this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStart(this, event);
+		}
+
+		return true;
+	},
+
+	_mouseDrag: function(event, noPropagation) {
+		// reset any necessary cached properties (see #5009)
+		if ( this.offsetParentCssPosition === "fixed" ) {
+			this.offset.parent = this._getParentOffset();
+		}
+
+		//Compute the helpers position
+		this.position = this._generatePosition(event);
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		//Call plugins and callbacks and use the resulting position if something is returned
+		if (!noPropagation) {
+			var ui = this._uiHash();
+			if(this._trigger("drag", event, ui) === false) {
+				this._mouseUp({});
+				return false;
+			}
+			this.position = ui.position;
+		}
+
+		if(!this.options.axis || this.options.axis !== "y") {
+			this.helper[0].style.left = this.position.left+"px";
+		}
+		if(!this.options.axis || this.options.axis !== "x") {
+			this.helper[0].style.top = this.position.top+"px";
+		}
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.drag(this, event);
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		//If we are using droppables, inform the manager about the drop
+		var that = this,
+			dropped = false;
+		if ($.ui.ddmanager && !this.options.dropBehaviour) {
+			dropped = $.ui.ddmanager.drop(this, event);
+		}
+
+		//if a drop comes from outside (a sortable)
+		if(this.dropped) {
+			dropped = this.dropped;
+			this.dropped = false;
+		}
+
+		//if the original element is no longer in the DOM don't bother to continue (see #8269)
+		if ( this.options.helper === "original" && !$.contains( this.element[ 0 ].ownerDocument, this.element[ 0 ] ) ) {
+			return false;
+		}
+
+		if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
+			$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
+				if(that._trigger("stop", event) !== false) {
+					that._clear();
+				}
+			});
+		} else {
+			if(this._trigger("stop", event) !== false) {
+				this._clear();
+			}
+		}
+
+		return false;
+	},
+
+	_mouseUp: function(event) {
+		//Remove frame helpers
+		$("div.ui-draggable-iframeFix").each(function() {
+			this.parentNode.removeChild(this);
+		});
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
+		if( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStop(this, event);
+		}
+
+		return $.ui.mouse.prototype._mouseUp.call(this, event);
+	},
+
+	cancel: function() {
+
+		if(this.helper.is(".ui-draggable-dragging")) {
+			this._mouseUp({});
+		} else {
+			this._clear();
+		}
+
+		return this;
+
+	},
+
+	_getHandle: function(event) {
+		return this.options.handle ?
+			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
+			true;
+	},
+
+	_createHelper: function(event) {
+
+		var o = this.options,
+			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element);
+
+		if(!helper.parents("body").length) {
+			helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
+		}
+
+		if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
+			helper.css("position", "absolute");
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function(obj) {
+		if (typeof obj === "string") {
+			obj = obj.split(" ");
+		}
+		if ($.isArray(obj)) {
+			obj = {left: +obj[0], top: +obj[1] || 0};
+		}
+		if ("left" in obj) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ("right" in obj) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ("top" in obj) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ("bottom" in obj) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+		//Get the offsetParent and cache its position
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
+		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
+		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		//This needs to be actually done for all browsers, since pageX/pageY includes this information
+		//Ugly IE fix
+		if((this.offsetParent[0] === document.body) ||
+			(this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
+			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if(this.cssPosition === "relative") {
+			var p = this.element.position();
+			return {
+				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
+				left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
+			};
+		} else {
+			return { top: 0, left: 0 };
+		}
+
+	},
+
+	_cacheMargins: function() {
+		this.margins = {
+			left: (parseInt(this.element.css("marginLeft"),10) || 0),
+			top: (parseInt(this.element.css("marginTop"),10) || 0),
+			right: (parseInt(this.element.css("marginRight"),10) || 0),
+			bottom: (parseInt(this.element.css("marginBottom"),10) || 0)
+		};
+	},
+
+	_cacheHelperProportions: function() {
+		this.helperProportions = {
+			width: this.helper.outerWidth(),
+			height: this.helper.outerHeight()
+		};
+	},
+
+	_setContainment: function() {
+
+		var over, c, ce,
+			o = this.options;
+
+		if ( !o.containment ) {
+			this.containment = null;
+			return;
+		}
+
+		if ( o.containment === "window" ) {
+			this.containment = [
+				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
+				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
+				$( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,
+				$( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
+			];
+			return;
+		}
+
+		if ( o.containment === "document") {
+			this.containment = [
+				0,
+				0,
+				$( document ).width() - this.helperProportions.width - this.margins.left,
+				( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
+			];
+			return;
+		}
+
+		if ( o.containment.constructor === Array ) {
+			this.containment = o.containment;
+			return;
+		}
+
+		if ( o.containment === "parent" ) {
+			o.containment = this.helper[ 0 ].parentNode;
+		}
+
+		c = $( o.containment );
+		ce = c[ 0 ];
+
+		if( !ce ) {
+			return;
+		}
+
+		over = c.css( "overflow" ) !== "hidden";
+
+		this.containment = [
+			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
+			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ) ,
+			( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right,
+			( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top  - this.margins.bottom
+		];
+		this.relative_container = c;
+	},
+
+	_convertPositionTo: function(d, pos) {
+
+		if(!pos) {
+			pos = this.position;
+		}
+
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent;
+
+		//Cache the scroll
+		if (!this.offset.scroll) {
+			this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()};
+		}
+
+		return {
+			top: (
+				pos.top	+																// The absolute mouse position
+				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top * mod -										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) * mod )
+			),
+			left: (
+				pos.left +																// The absolute mouse position
+				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) * mod )
+			)
+		};
+
+	},
+
+	_generatePosition: function(event) {
+
+		var containment, co, top, left,
+			o = this.options,
+			scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent,
+			pageX = event.pageX,
+			pageY = event.pageY;
+
+		//Cache the scroll
+		if (!this.offset.scroll) {
+			this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()};
+		}
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		// If we are not dragging yet, we won't check for options
+		if ( this.originalPosition ) {
+			if ( this.containment ) {
+				if ( this.relative_container ){
+					co = this.relative_container.offset();
+					containment = [
+						this.containment[ 0 ] + co.left,
+						this.containment[ 1 ] + co.top,
+						this.containment[ 2 ] + co.left,
+						this.containment[ 3 ] + co.top
+					];
+				}
+				else {
+					containment = this.containment;
+				}
+
+				if(event.pageX - this.offset.click.left < containment[0]) {
+					pageX = containment[0] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top < containment[1]) {
+					pageY = containment[1] + this.offset.click.top;
+				}
+				if(event.pageX - this.offset.click.left > containment[2]) {
+					pageX = containment[2] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top > containment[3]) {
+					pageY = containment[3] + this.offset.click.top;
+				}
+			}
+
+			if(o.grid) {
+				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
+				top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
+				pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
+
+				left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
+				pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
+			}
+
+		}
+
+		return {
+			top: (
+				pageY -																	// The absolute mouse position
+				this.offset.click.top	-												// Click offset (relative to the element)
+				this.offset.relative.top -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
+				( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top )
+			),
+			left: (
+				pageX -																	// The absolute mouse position
+				this.offset.click.left -												// Click offset (relative to the element)
+				this.offset.relative.left -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
+				( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left )
+			)
+		};
+
+	},
+
+	_clear: function() {
+		this.helper.removeClass("ui-draggable-dragging");
+		if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
+			this.helper.remove();
+		}
+		this.helper = null;
+		this.cancelHelperRemoval = false;
+	},
+
+	// From now on bulk stuff - mainly helpers
+
+	_trigger: function(type, event, ui) {
+		ui = ui || this._uiHash();
+		$.ui.plugin.call(this, type, [event, ui]);
+		//The absolute position has to be recalculated after plugins
+		if(type === "drag") {
+			this.positionAbs = this._convertPositionTo("absolute");
+		}
+		return $.Widget.prototype._trigger.call(this, type, event, ui);
+	},
+
+	plugins: {},
+
+	_uiHash: function() {
+		return {
+			helper: this.helper,
+			position: this.position,
+			originalPosition: this.originalPosition,
+			offset: this.positionAbs
+		};
+	}
+
+});
+
+$.ui.plugin.add("draggable", "connectToSortable", {
+	start: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), o = inst.options,
+			uiSortable = $.extend({}, ui, { item: inst.element });
+		inst.sortables = [];
+		$(o.connectToSortable).each(function() {
+			var sortable = $.data(this, "ui-sortable");
+			if (sortable && !sortable.options.disabled) {
+				inst.sortables.push({
+					instance: sortable,
+					shouldRevert: sortable.options.revert
+				});
+				sortable.refreshPositions();	// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
+				sortable._trigger("activate", event, uiSortable);
+			}
+		});
+
+	},
+	stop: function(event, ui) {
+
+		//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
+		var inst = $(this).data("ui-draggable"),
+			uiSortable = $.extend({}, ui, { item: inst.element });
+
+		$.each(inst.sortables, function() {
+			if(this.instance.isOver) {
+
+				this.instance.isOver = 0;
+
+				inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
+				this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
+
+				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid"
+				if(this.shouldRevert) {
+					this.instance.options.revert = this.shouldRevert;
+				}
+
+				//Trigger the stop of the sortable
+				this.instance._mouseStop(event);
+
+				this.instance.options.helper = this.instance.options._helper;
+
+				//If the helper has been the original item, restore properties in the sortable
+				if(inst.options.helper === "original") {
+					this.instance.currentItem.css({ top: "auto", left: "auto" });
+				}
+
+			} else {
+				this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
+				this.instance._trigger("deactivate", event, uiSortable);
+			}
+
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), that = this;
+
+		$.each(inst.sortables, function() {
+
+			var innermostIntersecting = false,
+				thisSortable = this;
+
+			//Copy over some variables to allow calling the sortable's native _intersectsWith
+			this.instance.positionAbs = inst.positionAbs;
+			this.instance.helperProportions = inst.helperProportions;
+			this.instance.offset.click = inst.offset.click;
+
+			if(this.instance._intersectsWith(this.instance.containerCache)) {
+				innermostIntersecting = true;
+				$.each(inst.sortables, function () {
+					this.instance.positionAbs = inst.positionAbs;
+					this.instance.helperProportions = inst.helperProportions;
+					this.instance.offset.click = inst.offset.click;
+					if (this !== thisSortable &&
+						this.instance._intersectsWith(this.instance.containerCache) &&
+						$.contains(thisSortable.instance.element[0], this.instance.element[0])
+					) {
+						innermostIntersecting = false;
+					}
+					return innermostIntersecting;
+				});
+			}
+
+
+			if(innermostIntersecting) {
+				//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
+				if(!this.instance.isOver) {
+
+					this.instance.isOver = 1;
+					//Now we fake the start of dragging for the sortable instance,
+					//by cloning the list group item, appending it to the sortable and using it as inst.currentItem
+					//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
+					this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true);
+					this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
+					this.instance.options.helper = function() { return ui.helper[0]; };
+
+					event.target = this.instance.currentItem[0];
+					this.instance._mouseCapture(event, true);
+					this.instance._mouseStart(event, true, true);
+
+					//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
+					this.instance.offset.click.top = inst.offset.click.top;
+					this.instance.offset.click.left = inst.offset.click.left;
+					this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
+					this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
+
+					inst._trigger("toSortable", event);
+					inst.dropped = this.instance.element; //draggable revert needs that
+					//hack so receive/update callbacks work (mostly)
+					inst.currentItem = inst.element;
+					this.instance.fromOutside = inst;
+
+				}
+
+				//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
+				if(this.instance.currentItem) {
+					this.instance._mouseDrag(event);
+				}
+
+			} else {
+
+				//If it doesn't intersect with the sortable, and it intersected before,
+				//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
+				if(this.instance.isOver) {
+
+					this.instance.isOver = 0;
+					this.instance.cancelHelperRemoval = true;
+
+					//Prevent reverting on this forced stop
+					this.instance.options.revert = false;
+
+					// The out event needs to be triggered independently
+					this.instance._trigger("out", event, this.instance._uiHash(this.instance));
+
+					this.instance._mouseStop(event, true);
+					this.instance.options.helper = this.instance.options._helper;
+
+					//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
+					this.instance.currentItem.remove();
+					if(this.instance.placeholder) {
+						this.instance.placeholder.remove();
+					}
+
+					inst._trigger("fromSortable", event);
+					inst.dropped = false; //draggable revert needs that
+				}
+
+			}
+
+		});
+
+	}
+});
+
+$.ui.plugin.add("draggable", "cursor", {
+	start: function() {
+		var t = $("body"), o = $(this).data("ui-draggable").options;
+		if (t.css("cursor")) {
+			o._cursor = t.css("cursor");
+		}
+		t.css("cursor", o.cursor);
+	},
+	stop: function() {
+		var o = $(this).data("ui-draggable").options;
+		if (o._cursor) {
+			$("body").css("cursor", o._cursor);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "opacity", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("opacity")) {
+			o._opacity = t.css("opacity");
+		}
+		t.css("opacity", o.opacity);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._opacity) {
+			$(ui.helper).css("opacity", o._opacity);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "scroll", {
+	start: function() {
+		var i = $(this).data("ui-draggable");
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+			i.overflowOffset = i.scrollParent.offset();
+		}
+	},
+	drag: function( event ) {
+
+		var i = $(this).data("ui-draggable"), o = i.options, scrolled = false;
+
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+
+			if(!o.axis || o.axis !== "x") {
+				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
+				} else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
+				} else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
+				}
+			}
+
+		} else {
+
+			if(!o.axis || o.axis !== "x") {
+				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+				}
+			}
+
+		}
+
+		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(i, event);
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "snap", {
+	start: function() {
+
+		var i = $(this).data("ui-draggable"),
+			o = i.options;
+
+		i.snapElements = [];
+
+		$(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
+			var $t = $(this),
+				$o = $t.offset();
+			if(this !== i.element[0]) {
+				i.snapElements.push({
+					item: this,
+					width: $t.outerWidth(), height: $t.outerHeight(),
+					top: $o.top, left: $o.left
+				});
+			}
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var ts, bs, ls, rs, l, r, t, b, i, first,
+			inst = $(this).data("ui-draggable"),
+			o = inst.options,
+			d = o.snapTolerance,
+			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
+			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
+
+		for (i = inst.snapElements.length - 1; i >= 0; i--){
+
+			l = inst.snapElements[i].left;
+			r = l + inst.snapElements[i].width;
+			t = inst.snapElements[i].top;
+			b = t + inst.snapElements[i].height;
+
+			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {
+				if(inst.snapElements[i].snapping) {
+					(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+				}
+				inst.snapElements[i].snapping = false;
+				continue;
+			}
+
+			if(o.snapMode !== "inner") {
+				ts = Math.abs(t - y2) <= d;
+				bs = Math.abs(b - y1) <= d;
+				ls = Math.abs(l - x2) <= d;
+				rs = Math.abs(r - x1) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
+				}
+			}
+
+			first = (ts || bs || ls || rs);
+
+			if(o.snapMode !== "outer") {
+				ts = Math.abs(t - y1) <= d;
+				bs = Math.abs(b - y2) <= d;
+				ls = Math.abs(l - x1) <= d;
+				rs = Math.abs(r - x2) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
+				}
+			}
+
+			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
+				(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+			}
+			inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
+
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "stack", {
+	start: function() {
+		var min,
+			o = this.data("ui-draggable").options,
+			group = $.makeArray($(o.stack)).sort(function(a,b) {
+				return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
+			});
+
+		if (!group.length) { return; }
+
+		min = parseInt($(group[0]).css("zIndex"), 10) || 0;
+		$(group).each(function(i) {
+			$(this).css("zIndex", min + i);
+		});
+		this.css("zIndex", (min + group.length));
+	}
+});
+
+$.ui.plugin.add("draggable", "zIndex", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("zIndex")) {
+			o._zIndex = t.css("zIndex");
+		}
+		t.css("zIndex", o.zIndex);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._zIndex) {
+			$(ui.helper).css("zIndex", o._zIndex);
+		}
+	}
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+function isOverAxis( x, reference, size ) {
+	return ( x > reference ) && ( x < ( reference + size ) );
+}
+
+$.widget("ui.droppable", {
+	version: "1.10.3",
+	widgetEventPrefix: "drop",
+	options: {
+		accept: "*",
+		activeClass: false,
+		addClasses: true,
+		greedy: false,
+		hoverClass: false,
+		scope: "default",
+		tolerance: "intersect",
+
+		// callbacks
+		activate: null,
+		deactivate: null,
+		drop: null,
+		out: null,
+		over: null
+	},
+	_create: function() {
+
+		var o = this.options,
+			accept = o.accept;
+
+		this.isover = false;
+		this.isout = true;
+
+		this.accept = $.isFunction(accept) ? accept : function(d) {
+			return d.is(accept);
+		};
+
+		//Store the droppable's proportions
+		this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };
+
+		// Add the reference and positions to the manager
+		$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
+		$.ui.ddmanager.droppables[o.scope].push(this);
+
+		(o.addClasses && this.element.addClass("ui-droppable"));
+
+	},
+
+	_destroy: function() {
+		var i = 0,
+			drop = $.ui.ddmanager.droppables[this.options.scope];
+
+		for ( ; i < drop.length; i++ ) {
+			if ( drop[i] === this ) {
+				drop.splice(i, 1);
+			}
+		}
+
+		this.element.removeClass("ui-droppable ui-droppable-disabled");
+	},
+
+	_setOption: function(key, value) {
+
+		if(key === "accept") {
+			this.accept = $.isFunction(value) ? value : function(d) {
+				return d.is(value);
+			};
+		}
+		$.Widget.prototype._setOption.apply(this, arguments);
+	},
+
+	_activate: function(event) {
+		var draggable = $.ui.ddmanager.current;
+		if(this.options.activeClass) {
+			this.element.addClass(this.options.activeClass);
+		}
+		if(draggable){
+			this._trigger("activate", event, this.ui(draggable));
+		}
+	},
+
+	_deactivate: function(event) {
+		var draggable = $.ui.ddmanager.current;
+		if(this.options.activeClass) {
+			this.element.removeClass(this.options.activeClass);
+		}
+		if(draggable){
+			this._trigger("deactivate", event, this.ui(draggable));
+		}
+	},
+
+	_over: function(event) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return;
+		}
+
+		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.hoverClass) {
+				this.element.addClass(this.options.hoverClass);
+			}
+			this._trigger("over", event, this.ui(draggable));
+		}
+
+	},
+
+	_out: function(event) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return;
+		}
+
+		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.hoverClass) {
+				this.element.removeClass(this.options.hoverClass);
+			}
+			this._trigger("out", event, this.ui(draggable));
+		}
+
+	},
+
+	_drop: function(event,custom) {
+
+		var draggable = custom || $.ui.ddmanager.current,
+			childrenIntersection = false;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return false;
+		}
+
+		this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
+			var inst = $.data(this, "ui-droppable");
+			if(
+				inst.options.greedy &&
+				!inst.options.disabled &&
+				inst.options.scope === draggable.options.scope &&
+				inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) &&
+				$.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
+			) { childrenIntersection = true; return false; }
+		});
+		if(childrenIntersection) {
+			return false;
+		}
+
+		if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.activeClass) {
+				this.element.removeClass(this.options.activeClass);
+			}
+			if(this.options.hoverClass) {
+				this.element.removeClass(this.options.hoverClass);
+			}
+			this._trigger("drop", event, this.ui(draggable));
+			return this.element;
+		}
+
+		return false;
+
+	},
+
+	ui: function(c) {
+		return {
+			draggable: (c.currentItem || c.element),
+			helper: c.helper,
+			position: c.position,
+			offset: c.positionAbs
+		};
+	}
+
+});
+
+$.ui.intersect = function(draggable, droppable, toleranceMode) {
+
+	if (!droppable.offset) {
+		return false;
+	}
+
+	var draggableLeft, draggableTop,
+		x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
+		y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height,
+		l = droppable.offset.left, r = l + droppable.proportions.width,
+		t = droppable.offset.top, b = t + droppable.proportions.height;
+
+	switch (toleranceMode) {
+		case "fit":
+			return (l <= x1 && x2 <= r && t <= y1 && y2 <= b);
+		case "intersect":
+			return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half
+				x2 - (draggable.helperProportions.width / 2) < r && // Left Half
+				t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half
+				y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
+		case "pointer":
+			draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left);
+			draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top);
+			return isOverAxis( draggableTop, t, droppable.proportions.height ) && isOverAxis( draggableLeft, l, droppable.proportions.width );
+		case "touch":
+			return (
+				(y1 >= t && y1 <= b) ||	// Top edge touching
+				(y2 >= t && y2 <= b) ||	// Bottom edge touching
+				(y1 < t && y2 > b)		// Surrounded vertically
+			) && (
+				(x1 >= l && x1 <= r) ||	// Left edge touching
+				(x2 >= l && x2 <= r) ||	// Right edge touching
+				(x1 < l && x2 > r)		// Surrounded horizontally
+			);
+		default:
+			return false;
+		}
+
+};
+
+/*
+	This manager tracks offsets of draggables and droppables
+*/
+$.ui.ddmanager = {
+	current: null,
+	droppables: { "default": [] },
+	prepareOffsets: function(t, event) {
+
+		var i, j,
+			m = $.ui.ddmanager.droppables[t.options.scope] || [],
+			type = event ? event.type : null, // workaround for #2317
+			list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack();
+
+		droppablesLoop: for (i = 0; i < m.length; i++) {
+
+			//No disabled and non-accepted
+			if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) {
+				continue;
+			}
+
+			// Filter out elements in the current dragged item
+			for (j=0; j < list.length; j++) {
+				if(list[j] === m[i].element[0]) {
+					m[i].proportions.height = 0;
+					continue droppablesLoop;
+				}
+			}
+
+			m[i].visible = m[i].element.css("display") !== "none";
+			if(!m[i].visible) {
+				continue;
+			}
+
+			//Activate the droppable if used directly from draggables
+			if(type === "mousedown") {
+				m[i]._activate.call(m[i], event);
+			}
+
+			m[i].offset = m[i].element.offset();
+			m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
+
+		}
+
+	},
+	drop: function(draggable, event) {
+
+		var dropped = false;
+		// Create a copy of the droppables in case the list changes during the drop (#9116)
+		$.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() {
+
+			if(!this.options) {
+				return;
+			}
+			if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) {
+				dropped = this._drop.call(this, event) || dropped;
+			}
+
+			if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+				this.isout = true;
+				this.isover = false;
+				this._deactivate.call(this, event);
+			}
+
+		});
+		return dropped;
+
+	},
+	dragStart: function( draggable, event ) {
+		//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
+		draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
+			if( !draggable.options.refreshPositions ) {
+				$.ui.ddmanager.prepareOffsets( draggable, event );
+			}
+		});
+	},
+	drag: function(draggable, event) {
+
+		//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
+		if(draggable.options.refreshPositions) {
+			$.ui.ddmanager.prepareOffsets(draggable, event);
+		}
+
+		//Run through all droppables and check their positions based on specific tolerance options
+		$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
+
+			if(this.options.disabled || this.greedyChild || !this.visible) {
+				return;
+			}
+
+			var parentInstance, scope, parent,
+				intersects = $.ui.intersect(draggable, this, this.options.tolerance),
+				c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null);
+			if(!c) {
+				return;
+			}
+
+			if (this.options.greedy) {
+				// find droppable parents with same scope
+				scope = this.options.scope;
+				parent = this.element.parents(":data(ui-droppable)").filter(function () {
+					return $.data(this, "ui-droppable").options.scope === scope;
+				});
+
+				if (parent.length) {
+					parentInstance = $.data(parent[0], "ui-droppable");
+					parentInstance.greedyChild = (c === "isover");
+				}
+			}
+
+			// we just moved into a greedy child
+			if (parentInstance && c === "isover") {
+				parentInstance.isover = false;
+				parentInstance.isout = true;
+				parentInstance._out.call(parentInstance, event);
+			}
+
+			this[c] = true;
+			this[c === "isout" ? "isover" : "isout"] = false;
+			this[c === "isover" ? "_over" : "_out"].call(this, event);
+
+			// we just moved out of a greedy child
+			if (parentInstance && c === "isout") {
+				parentInstance.isout = false;
+				parentInstance.isover = true;
+				parentInstance._over.call(parentInstance, event);
+			}
+		});
+
+	},
+	dragStop: function( draggable, event ) {
+		draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
+		//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
+		if( !draggable.options.refreshPositions ) {
+			$.ui.ddmanager.prepareOffsets( draggable, event );
+		}
+	}
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+function num(v) {
+	return parseInt(v, 10) || 0;
+}
+
+function isNumber(value) {
+	return !isNaN(parseInt(value, 10));
+}
+
+$.widget("ui.resizable", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "resize",
+	options: {
+		alsoResize: false,
+		animate: false,
+		animateDuration: "slow",
+		animateEasing: "swing",
+		aspectRatio: false,
+		autoHide: false,
+		containment: false,
+		ghost: false,
+		grid: false,
+		handles: "e,s,se",
+		helper: false,
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 10,
+		minWidth: 10,
+		// See #7960
+		zIndex: 90,
+
+		// callbacks
+		resize: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		var n, i, handle, axis, hname,
+			that = this,
+			o = this.options;
+		this.element.addClass("ui-resizable");
+
+		$.extend(this, {
+			_aspectRatio: !!(o.aspectRatio),
+			aspectRatio: o.aspectRatio,
+			originalElement: this.element,
+			_proportionallyResizeElements: [],
+			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
+		});
+
+		//Wrap the element if it cannot hold child nodes
+		if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
+
+			//Create a wrapper element and set the wrapper to the new current internal element
+			this.element.wrap(
+				$("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
+					position: this.element.css("position"),
+					width: this.element.outerWidth(),
+					height: this.element.outerHeight(),
+					top: this.element.css("top"),
+					left: this.element.css("left")
+				})
+			);
+
+			//Overwrite the original this.element
+			this.element = this.element.parent().data(
+				"ui-resizable", this.element.data("ui-resizable")
+			);
+
+			this.elementIsWrapper = true;
+
+			//Move margins to the wrapper
+			this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
+			this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
+
+			//Prevent Safari textarea resize
+			this.originalResizeStyle = this.originalElement.css("resize");
+			this.originalElement.css("resize", "none");
+
+			//Push the actual element to our proportionallyResize internal array
+			this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" }));
+
+			// avoid IE jump (hard set the margin)
+			this.originalElement.css({ margin: this.originalElement.css("margin") });
+
+			// fix handlers offset
+			this._proportionallyResize();
+
+		}
+
+		this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" });
+		if(this.handles.constructor === String) {
+
+			if ( this.handles === "all") {
+				this.handles = "n,e,s,w,se,sw,ne,nw";
+			}
+
+			n = this.handles.split(",");
+			this.handles = {};
+
+			for(i = 0; i < n.length; i++) {
+
+				handle = $.trim(n[i]);
+				hname = "ui-resizable-"+handle;
+				axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
+
+				// Apply zIndex to all handles - see #7960
+				axis.css({ zIndex: o.zIndex });
+
+				//TODO : What's going on here?
+				if ("se" === handle) {
+					axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
+				}
+
+				//Insert into internal handles object and append to element
+				this.handles[handle] = ".ui-resizable-"+handle;
+				this.element.append(axis);
+			}
+
+		}
+
+		this._renderAxis = function(target) {
+
+			var i, axis, padPos, padWrapper;
+
+			target = target || this.element;
+
+			for(i in this.handles) {
+
+				if(this.handles[i].constructor === String) {
+					this.handles[i] = $(this.handles[i], this.element).show();
+				}
+
+				//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
+				if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
+
+					axis = $(this.handles[i], this.element);
+
+					//Checking the correct pad and border
+					padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
+
+					//The padding type i have to apply...
+					padPos = [ "padding",
+						/ne|nw|n/.test(i) ? "Top" :
+						/se|sw|s/.test(i) ? "Bottom" :
+						/^e$/.test(i) ? "Right" : "Left" ].join("");
+
+					target.css(padPos, padWrapper);
+
+					this._proportionallyResize();
+
+				}
+
+				//TODO: What's that good for? There's not anything to be executed left
+				if(!$(this.handles[i]).length) {
+					continue;
+				}
+			}
+		};
+
+		//TODO: make renderAxis a prototype function
+		this._renderAxis(this.element);
+
+		this._handles = $(".ui-resizable-handle", this.element)
+			.disableSelection();
+
+		//Matching axis name
+		this._handles.mouseover(function() {
+			if (!that.resizing) {
+				if (this.className) {
+					axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
+				}
+				//Axis, default = se
+				that.axis = axis && axis[1] ? axis[1] : "se";
+			}
+		});
+
+		//If we want to auto hide the elements
+		if (o.autoHide) {
+			this._handles.hide();
+			$(this.element)
+				.addClass("ui-resizable-autohide")
+				.mouseenter(function() {
+					if (o.disabled) {
+						return;
+					}
+					$(this).removeClass("ui-resizable-autohide");
+					that._handles.show();
+				})
+				.mouseleave(function(){
+					if (o.disabled) {
+						return;
+					}
+					if (!that.resizing) {
+						$(this).addClass("ui-resizable-autohide");
+						that._handles.hide();
+					}
+				});
+		}
+
+		//Initialize the mouse interaction
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+
+		this._mouseDestroy();
+
+		var wrapper,
+			_destroy = function(exp) {
+				$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
+					.removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove();
+			};
+
+		//TODO: Unwrap at same DOM position
+		if (this.elementIsWrapper) {
+			_destroy(this.element);
+			wrapper = this.element;
+			this.originalElement.css({
+				position: wrapper.css("position"),
+				width: wrapper.outerWidth(),
+				height: wrapper.outerHeight(),
+				top: wrapper.css("top"),
+				left: wrapper.css("left")
+			}).insertAfter( wrapper );
+			wrapper.remove();
+		}
+
+		this.originalElement.css("resize", this.originalResizeStyle);
+		_destroy(this.originalElement);
+
+		return this;
+	},
+
+	_mouseCapture: function(event) {
+		var i, handle,
+			capture = false;
+
+		for (i in this.handles) {
+			handle = $(this.handles[i])[0];
+			if (handle === event.target || $.contains(handle, event.target)) {
+				capture = true;
+			}
+		}
+
+		return !this.options.disabled && capture;
+	},
+
+	_mouseStart: function(event) {
+
+		var curleft, curtop, cursor,
+			o = this.options,
+			iniPos = this.element.position(),
+			el = this.element;
+
+		this.resizing = true;
+
+		// bugfix for http://dev.jquery.com/ticket/1749
+		if ( (/absolute/).test( el.css("position") ) ) {
+			el.css({ position: "absolute", top: el.css("top"), left: el.css("left") });
+		} else if (el.is(".ui-draggable")) {
+			el.css({ position: "absolute", top: iniPos.top, left: iniPos.left });
+		}
+
+		this._renderProxy();
+
+		curleft = num(this.helper.css("left"));
+		curtop = num(this.helper.css("top"));
+
+		if (o.containment) {
+			curleft += $(o.containment).scrollLeft() || 0;
+			curtop += $(o.containment).scrollTop() || 0;
+		}
+
+		//Store needed variables
+		this.offset = this.helper.offset();
+		this.position = { left: curleft, top: curtop };
+		this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalPosition = { left: curleft, top: curtop };
+		this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
+		this.originalMousePosition = { left: event.pageX, top: event.pageY };
+
+		//Aspect Ratio
+		this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
+
+		cursor = $(".ui-resizable-" + this.axis).css("cursor");
+		$("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
+
+		el.addClass("ui-resizable-resizing");
+		this._propagate("start", event);
+		return true;
+	},
+
+	_mouseDrag: function(event) {
+
+		//Increase performance, avoid regex
+		var data,
+			el = this.helper, props = {},
+			smp = this.originalMousePosition,
+			a = this.axis,
+			prevTop = this.position.top,
+			prevLeft = this.position.left,
+			prevWidth = this.size.width,
+			prevHeight = this.size.height,
+			dx = (event.pageX-smp.left)||0,
+			dy = (event.pageY-smp.top)||0,
+			trigger = this._change[a];
+
+		if (!trigger) {
+			return false;
+		}
+
+		// Calculate the attrs that will be change
+		data = trigger.apply(this, [event, dx, dy]);
+
+		// Put this in the mouseDrag handler since the user can start pressing shift while resizing
+		this._updateVirtualBoundaries(event.shiftKey);
+		if (this._aspectRatio || event.shiftKey) {
+			data = this._updateRatio(data, event);
+		}
+
+		data = this._respectSize(data, event);
+
+		this._updateCache(data);
+
+		// plugins callbacks need to be called first
+		this._propagate("resize", event);
+
+		if (this.position.top !== prevTop) {
+			props.top = this.position.top + "px";
+		}
+		if (this.position.left !== prevLeft) {
+			props.left = this.position.left + "px";
+		}
+		if (this.size.width !== prevWidth) {
+			props.width = this.size.width + "px";
+		}
+		if (this.size.height !== prevHeight) {
+			props.height = this.size.height + "px";
+		}
+		el.css(props);
+
+		if (!this._helper && this._proportionallyResizeElements.length) {
+			this._proportionallyResize();
+		}
+
+		// Call the user callback if the element was resized
+		if ( ! $.isEmptyObject(props) ) {
+			this._trigger("resize", event, this.ui());
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		this.resizing = false;
+		var pr, ista, soffseth, soffsetw, s, left, top,
+			o = this.options, that = this;
+
+		if(this._helper) {
+
+			pr = this._proportionallyResizeElements;
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName);
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height;
+			soffsetw = ista ? 0 : that.sizeDiff.width;
+
+			s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) };
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null;
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+			if (!o.animate) {
+				this.element.css($.extend(s, { top: top, left: left }));
+			}
+
+			that.helper.height(that.size.height);
+			that.helper.width(that.size.width);
+
+			if (this._helper && !o.animate) {
+				this._proportionallyResize();
+			}
+		}
+
+		$("body").css("cursor", "auto");
+
+		this.element.removeClass("ui-resizable-resizing");
+
+		this._propagate("stop", event);
+
+		if (this._helper) {
+			this.helper.remove();
+		}
+
+		return false;
+
+	},
+
+	_updateVirtualBoundaries: function(forceAspectRatio) {
+		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
+			o = this.options;
+
+		b = {
+			minWidth: isNumber(o.minWidth) ? o.minWidth : 0,
+			maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,
+			minHeight: isNumber(o.minHeight) ? o.minHeight : 0,
+			maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity
+		};
+
+		if(this._aspectRatio || forceAspectRatio) {
+			// We want to create an enclosing box whose aspect ration is the requested one
+			// First, compute the "projected" size for each dimension based on the aspect ratio and other dimension
+			pMinWidth = b.minHeight * this.aspectRatio;
+			pMinHeight = b.minWidth / this.aspectRatio;
+			pMaxWidth = b.maxHeight * this.aspectRatio;
+			pMaxHeight = b.maxWidth / this.aspectRatio;
+
+			if(pMinWidth > b.minWidth) {
+				b.minWidth = pMinWidth;
+			}
+			if(pMinHeight > b.minHeight) {
+				b.minHeight = pMinHeight;
+			}
+			if(pMaxWidth < b.maxWidth) {
+				b.maxWidth = pMaxWidth;
+			}
+			if(pMaxHeight < b.maxHeight) {
+				b.maxHeight = pMaxHeight;
+			}
+		}
+		this._vBoundaries = b;
+	},
+
+	_updateCache: function(data) {
+		this.offset = this.helper.offset();
+		if (isNumber(data.left)) {
+			this.position.left = data.left;
+		}
+		if (isNumber(data.top)) {
+			this.position.top = data.top;
+		}
+		if (isNumber(data.height)) {
+			this.size.height = data.height;
+		}
+		if (isNumber(data.width)) {
+			this.size.width = data.width;
+		}
+	},
+
+	_updateRatio: function( data ) {
+
+		var cpos = this.position,
+			csize = this.size,
+			a = this.axis;
+
+		if (isNumber(data.height)) {
+			data.width = (data.height * this.aspectRatio);
+		} else if (isNumber(data.width)) {
+			data.height = (data.width / this.aspectRatio);
+		}
+
+		if (a === "sw") {
+			data.left = cpos.left + (csize.width - data.width);
+			data.top = null;
+		}
+		if (a === "nw") {
+			data.top = cpos.top + (csize.height - data.height);
+			data.left = cpos.left + (csize.width - data.width);
+		}
+
+		return data;
+	},
+
+	_respectSize: function( data ) {
+
+		var o = this._vBoundaries,
+			a = this.axis,
+			ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
+			isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
+			dw = this.originalPosition.left + this.originalSize.width,
+			dh = this.position.top + this.size.height,
+			cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
+		if (isminw) {
+			data.width = o.minWidth;
+		}
+		if (isminh) {
+			data.height = o.minHeight;
+		}
+		if (ismaxw) {
+			data.width = o.maxWidth;
+		}
+		if (ismaxh) {
+			data.height = o.maxHeight;
+		}
+
+		if (isminw && cw) {
+			data.left = dw - o.minWidth;
+		}
+		if (ismaxw && cw) {
+			data.left = dw - o.maxWidth;
+		}
+		if (isminh && ch) {
+			data.top = dh - o.minHeight;
+		}
+		if (ismaxh && ch) {
+			data.top = dh - o.maxHeight;
+		}
+
+		// fixing jump error on top/left - bug #2330
+		if (!data.width && !data.height && !data.left && data.top) {
+			data.top = null;
+		} else if (!data.width && !data.height && !data.top && data.left) {
+			data.left = null;
+		}
+
+		return data;
+	},
+
+	_proportionallyResize: function() {
+
+		if (!this._proportionallyResizeElements.length) {
+			return;
+		}
+
+		var i, j, borders, paddings, prel,
+			element = this.helper || this.element;
+
+		for ( i=0; i < this._proportionallyResizeElements.length; i++) {
+
+			prel = this._proportionallyResizeElements[i];
+
+			if (!this.borderDif) {
+				this.borderDif = [];
+				borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")];
+				paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")];
+
+				for ( j = 0; j < borders.length; j++ ) {
+					this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 );
+				}
+			}
+
+			prel.css({
+				height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
+				width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
+			});
+
+		}
+
+	},
+
+	_renderProxy: function() {
+
+		var el = this.element, o = this.options;
+		this.elementOffset = el.offset();
+
+		if(this._helper) {
+
+			this.helper = this.helper || $("<div style='overflow:hidden;'></div>");
+
+			this.helper.addClass(this._helper).css({
+				width: this.element.outerWidth() - 1,
+				height: this.element.outerHeight() - 1,
+				position: "absolute",
+				left: this.elementOffset.left +"px",
+				top: this.elementOffset.top +"px",
+				zIndex: ++o.zIndex //TODO: Don't modify option
+			});
+
+			this.helper
+				.appendTo("body")
+				.disableSelection();
+
+		} else {
+			this.helper = this.element;
+		}
+
+	},
+
+	_change: {
+		e: function(event, dx) {
+			return { width: this.originalSize.width + dx };
+		},
+		w: function(event, dx) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { left: sp.left + dx, width: cs.width - dx };
+		},
+		n: function(event, dx, dy) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { top: sp.top + dy, height: cs.height - dy };
+		},
+		s: function(event, dx, dy) {
+			return { height: this.originalSize.height + dy };
+		},
+		se: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		sw: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		},
+		ne: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		nw: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		}
+	},
+
+	_propagate: function(n, event) {
+		$.ui.plugin.call(this, n, [event, this.ui()]);
+		(n !== "resize" && this._trigger(n, event, this.ui()));
+	},
+
+	plugins: {},
+
+	ui: function() {
+		return {
+			originalElement: this.originalElement,
+			element: this.element,
+			helper: this.helper,
+			position: this.position,
+			size: this.size,
+			originalSize: this.originalSize,
+			originalPosition: this.originalPosition
+		};
+	}
+
+});
+
+/*
+ * Resizable Extensions
+ */
+
+$.ui.plugin.add("resizable", "animate", {
+
+	stop: function( event ) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			pr = that._proportionallyResizeElements,
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName),
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height,
+			soffsetw = ista ? 0 : that.sizeDiff.width,
+			style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null,
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+		that.element.animate(
+			$.extend(style, top && left ? { top: top, left: left } : {}), {
+				duration: o.animateDuration,
+				easing: o.animateEasing,
+				step: function() {
+
+					var data = {
+						width: parseInt(that.element.css("width"), 10),
+						height: parseInt(that.element.css("height"), 10),
+						top: parseInt(that.element.css("top"), 10),
+						left: parseInt(that.element.css("left"), 10)
+					};
+
+					if (pr && pr.length) {
+						$(pr[0]).css({ width: data.width, height: data.height });
+					}
+
+					// propagating resize, and updating values for each animation step
+					that._updateCache(data);
+					that._propagate("resize", event);
+
+				}
+			}
+		);
+	}
+
+});
+
+$.ui.plugin.add("resizable", "containment", {
+
+	start: function() {
+		var element, p, co, ch, cw, width, height,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			el = that.element,
+			oc = o.containment,
+			ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
+
+		if (!ce) {
+			return;
+		}
+
+		that.containerElement = $(ce);
+
+		if (/document/.test(oc) || oc === document) {
+			that.containerOffset = { left: 0, top: 0 };
+			that.containerPosition = { left: 0, top: 0 };
+
+			that.parentData = {
+				element: $(document), left: 0, top: 0,
+				width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
+			};
+		}
+
+		// i'm a node, so compute top, left, right, bottom
+		else {
+			element = $(ce);
+			p = [];
+			$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
+
+			that.containerOffset = element.offset();
+			that.containerPosition = element.position();
+			that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
+
+			co = that.containerOffset;
+			ch = that.containerSize.height;
+			cw = that.containerSize.width;
+			width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw );
+			height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
+
+			that.parentData = {
+				element: ce, left: co.left, top: co.top, width: width, height: height
+			};
+		}
+	},
+
+	resize: function( event ) {
+		var woset, hoset, isParent, isOffsetRelative,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset, cp = that.position,
+			pRatio = that._aspectRatio || event.shiftKey,
+			cop = { top:0, left:0 }, ce = that.containerElement;
+
+		if (ce[0] !== document && (/static/).test(ce.css("position"))) {
+			cop = co;
+		}
+
+		if (cp.left < (that._helper ? co.left : 0)) {
+			that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+			that.position.left = o.helper ? co.left : 0;
+		}
+
+		if (cp.top < (that._helper ? co.top : 0)) {
+			that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+			that.position.top = that._helper ? co.top : 0;
+		}
+
+		that.offset.left = that.parentData.left+that.position.left;
+		that.offset.top = that.parentData.top+that.position.top;
+
+		woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width );
+		hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );
+
+		isParent = that.containerElement.get(0) === that.element.parent().get(0);
+		isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position"));
+
+		if(isParent && isOffsetRelative) {
+			woset -= that.parentData.left;
+		}
+
+		if (woset + that.size.width >= that.parentData.width) {
+			that.size.width = that.parentData.width - woset;
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+		}
+
+		if (hoset + that.size.height >= that.parentData.height) {
+			that.size.height = that.parentData.height - hoset;
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+		}
+	},
+
+	stop: function(){
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset,
+			cop = that.containerPosition,
+			ce = that.containerElement,
+			helper = $(that.helper),
+			ho = helper.offset(),
+			w = helper.outerWidth() - that.sizeDiff.width,
+			h = helper.outerHeight() - that.sizeDiff.height;
+
+		if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+		if (that._helper && !o.animate && (/static/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+	}
+});
+
+$.ui.plugin.add("resizable", "alsoResize", {
+
+	start: function () {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			_store = function (exp) {
+				$(exp).each(function() {
+					var el = $(this);
+					el.data("ui-resizable-alsoresize", {
+						width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
+						left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
+					});
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
+			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
+			else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
+		}else{
+			_store(o.alsoResize);
+		}
+	},
+
+	resize: function (event, ui) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			os = that.originalSize,
+			op = that.originalPosition,
+			delta = {
+				height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,
+				top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0
+			},
+
+			_alsoResize = function (exp, c) {
+				$(exp).each(function() {
+					var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
+						css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
+
+					$.each(css, function (i, prop) {
+						var sum = (start[prop]||0) + (delta[prop]||0);
+						if (sum && sum >= 0) {
+							style[prop] = sum || null;
+						}
+					});
+
+					el.css(style);
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
+			$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
+		}else{
+			_alsoResize(o.alsoResize);
+		}
+	},
+
+	stop: function () {
+		$(this).removeData("resizable-alsoresize");
+	}
+});
+
+$.ui.plugin.add("resizable", "ghost", {
+
+	start: function() {
+
+		var that = $(this).data("ui-resizable"), o = that.options, cs = that.size;
+
+		that.ghost = that.originalElement.clone();
+		that.ghost
+			.css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
+			.addClass("ui-resizable-ghost")
+			.addClass(typeof o.ghost === "string" ? o.ghost : "");
+
+		that.ghost.appendTo(that.helper);
+
+	},
+
+	resize: function(){
+		var that = $(this).data("ui-resizable");
+		if (that.ghost) {
+			that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width });
+		}
+	},
+
+	stop: function() {
+		var that = $(this).data("ui-resizable");
+		if (that.ghost && that.helper) {
+			that.helper.get(0).removeChild(that.ghost.get(0));
+		}
+	}
+
+});
+
+$.ui.plugin.add("resizable", "grid", {
+
+	resize: function() {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			cs = that.size,
+			os = that.originalSize,
+			op = that.originalPosition,
+			a = that.axis,
+			grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid,
+			gridX = (grid[0]||1),
+			gridY = (grid[1]||1),
+			ox = Math.round((cs.width - os.width) / gridX) * gridX,
+			oy = Math.round((cs.height - os.height) / gridY) * gridY,
+			newWidth = os.width + ox,
+			newHeight = os.height + oy,
+			isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
+			isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
+			isMinWidth = o.minWidth && (o.minWidth > newWidth),
+			isMinHeight = o.minHeight && (o.minHeight > newHeight);
+
+		o.grid = grid;
+
+		if (isMinWidth) {
+			newWidth = newWidth + gridX;
+		}
+		if (isMinHeight) {
+			newHeight = newHeight + gridY;
+		}
+		if (isMaxWidth) {
+			newWidth = newWidth - gridX;
+		}
+		if (isMaxHeight) {
+			newHeight = newHeight - gridY;
+		}
+
+		if (/^(se|s|e)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+		} else if (/^(ne)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+		} else if (/^(sw)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.left = op.left - ox;
+		} else {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+			that.position.left = op.left - ox;
+		}
+	}
+
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.widget("ui.selectable", $.ui.mouse, {
+	version: "1.10.3",
+	options: {
+		appendTo: "body",
+		autoRefresh: true,
+		distance: 0,
+		filter: "*",
+		tolerance: "touch",
+
+		// callbacks
+		selected: null,
+		selecting: null,
+		start: null,
+		stop: null,
+		unselected: null,
+		unselecting: null
+	},
+	_create: function() {
+		var selectees,
+			that = this;
+
+		this.element.addClass("ui-selectable");
+
+		this.dragged = false;
+
+		// cache selectee children based on filter
+		this.refresh = function() {
+			selectees = $(that.options.filter, that.element[0]);
+			selectees.addClass("ui-selectee");
+			selectees.each(function() {
+				var $this = $(this),
+					pos = $this.offset();
+				$.data(this, "selectable-item", {
+					element: this,
+					$element: $this,
+					left: pos.left,
+					top: pos.top,
+					right: pos.left + $this.outerWidth(),
+					bottom: pos.top + $this.outerHeight(),
+					startselected: false,
+					selected: $this.hasClass("ui-selected"),
+					selecting: $this.hasClass("ui-selecting"),
+					unselecting: $this.hasClass("ui-unselecting")
+				});
+			});
+		};
+		this.refresh();
+
+		this.selectees = selectees.addClass("ui-selectee");
+
+		this._mouseInit();
+
+		this.helper = $("<div class='ui-selectable-helper'></div>");
+	},
+
+	_destroy: function() {
+		this.selectees
+			.removeClass("ui-selectee")
+			.removeData("selectable-item");
+		this.element
+			.removeClass("ui-selectable ui-selectable-disabled");
+		this._mouseDestroy();
+	},
+
+	_mouseStart: function(event) {
+		var that = this,
+			options = this.options;
+
+		this.opos = [event.pageX, event.pageY];
+
+		if (this.options.disabled) {
+			return;
+		}
+
+		this.selectees = $(options.filter, this.element[0]);
+
+		this._trigger("start", event);
+
+		$(options.appendTo).append(this.helper);
+		// position helper (lasso)
+		this.helper.css({
+			"left": event.pageX,
+			"top": event.pageY,
+			"width": 0,
+			"height": 0
+		});
+
+		if (options.autoRefresh) {
+			this.refresh();
+		}
+
+		this.selectees.filter(".ui-selected").each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.startselected = true;
+			if (!event.metaKey && !event.ctrlKey) {
+				selectee.$element.removeClass("ui-selected");
+				selectee.selected = false;
+				selectee.$element.addClass("ui-unselecting");
+				selectee.unselecting = true;
+				// selectable UNSELECTING callback
+				that._trigger("unselecting", event, {
+					unselecting: selectee.element
+				});
+			}
+		});
+
+		$(event.target).parents().addBack().each(function() {
+			var doSelect,
+				selectee = $.data(this, "selectable-item");
+			if (selectee) {
+				doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");
+				selectee.$element
+					.removeClass(doSelect ? "ui-unselecting" : "ui-selected")
+					.addClass(doSelect ? "ui-selecting" : "ui-unselecting");
+				selectee.unselecting = !doSelect;
+				selectee.selecting = doSelect;
+				selectee.selected = doSelect;
+				// selectable (UN)SELECTING callback
+				if (doSelect) {
+					that._trigger("selecting", event, {
+						selecting: selectee.element
+					});
+				} else {
+					that._trigger("unselecting", event, {
+						unselecting: selectee.element
+					});
+				}
+				return false;
+			}
+		});
+
+	},
+
+	_mouseDrag: function(event) {
+
+		this.dragged = true;
+
+		if (this.options.disabled) {
+			return;
+		}
+
+		var tmp,
+			that = this,
+			options = this.options,
+			x1 = this.opos[0],
+			y1 = this.opos[1],
+			x2 = event.pageX,
+			y2 = event.pageY;
+
+		if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
+		if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }
+		this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
+
+		this.selectees.each(function() {
+			var selectee = $.data(this, "selectable-item"),
+				hit = false;
+
+			//prevent helper from being selected if appendTo: selectable
+			if (!selectee || selectee.element === that.element[0]) {
+				return;
+			}
+
+			if (options.tolerance === "touch") {
+				hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
+			} else if (options.tolerance === "fit") {
+				hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
+			}
+
+			if (hit) {
+				// SELECT
+				if (selectee.selected) {
+					selectee.$element.removeClass("ui-selected");
+					selectee.selected = false;
+				}
+				if (selectee.unselecting) {
+					selectee.$element.removeClass("ui-unselecting");
+					selectee.unselecting = false;
+				}
+				if (!selectee.selecting) {
+					selectee.$element.addClass("ui-selecting");
+					selectee.selecting = true;
+					// selectable SELECTING callback
+					that._trigger("selecting", event, {
+						selecting: selectee.element
+					});
+				}
+			} else {
+				// UNSELECT
+				if (selectee.selecting) {
+					if ((event.metaKey || event.ctrlKey) && selectee.startselected) {
+						selectee.$element.removeClass("ui-selecting");
+						selectee.selecting = false;
+						selectee.$element.addClass("ui-selected");
+						selectee.selected = true;
+					} else {
+						selectee.$element.removeClass("ui-selecting");
+						selectee.selecting = false;
+						if (selectee.startselected) {
+							selectee.$element.addClass("ui-unselecting");
+							selectee.unselecting = true;
+						}
+						// selectable UNSELECTING callback
+						that._trigger("unselecting", event, {
+							unselecting: selectee.element
+						});
+					}
+				}
+				if (selectee.selected) {
+					if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {
+						selectee.$element.removeClass("ui-selected");
+						selectee.selected = false;
+
+						selectee.$element.addClass("ui-unselecting");
+						selectee.unselecting = true;
+						// selectable UNSELECTING callback
+						that._trigger("unselecting", event, {
+							unselecting: selectee.element
+						});
+					}
+				}
+			}
+		});
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+		var that = this;
+
+		this.dragged = false;
+
+		$(".ui-unselecting", this.element[0]).each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.$element.removeClass("ui-unselecting");
+			selectee.unselecting = false;
+			selectee.startselected = false;
+			that._trigger("unselected", event, {
+				unselected: selectee.element
+			});
+		});
+		$(".ui-selecting", this.element[0]).each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.$element.removeClass("ui-selecting").addClass("ui-selected");
+			selectee.selecting = false;
+			selectee.selected = true;
+			selectee.startselected = true;
+			that._trigger("selected", event, {
+				selected: selectee.element
+			});
+		});
+		this._trigger("stop", event);
+
+		this.helper.remove();
+
+		return false;
+	}
+
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+/*jshint loopfunc: true */
+
+function isOverAxis( x, reference, size ) {
+	return ( x > reference ) && ( x < ( reference + size ) );
+}
+
+function isFloating(item) {
+	return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display"));
+}
+
+$.widget("ui.sortable", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "sort",
+	ready: false,
+	options: {
+		appendTo: "parent",
+		axis: false,
+		connectWith: false,
+		containment: false,
+		cursor: "auto",
+		cursorAt: false,
+		dropOnEmpty: true,
+		forcePlaceholderSize: false,
+		forceHelperSize: false,
+		grid: false,
+		handle: false,
+		helper: "original",
+		items: "> *",
+		opacity: false,
+		placeholder: false,
+		revert: false,
+		scroll: true,
+		scrollSensitivity: 20,
+		scrollSpeed: 20,
+		scope: "default",
+		tolerance: "intersect",
+		zIndex: 1000,
+
+		// callbacks
+		activate: null,
+		beforeStop: null,
+		change: null,
+		deactivate: null,
+		out: null,
+		over: null,
+		receive: null,
+		remove: null,
+		sort: null,
+		start: null,
+		stop: null,
+		update: null
+	},
+	_create: function() {
+
+		var o = this.options;
+		this.containerCache = {};
+		this.element.addClass("ui-sortable");
+
+		//Get the items
+		this.refresh();
+
+		//Let's determine if the items are being displayed horizontally
+		this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false;
+
+		//Let's determine the parent's offset
+		this.offset = this.element.offset();
+
+		//Initialize mouse events for interaction
+		this._mouseInit();
+
+		//We're ready to go
+		this.ready = true;
+
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass("ui-sortable ui-sortable-disabled");
+		this._mouseDestroy();
+
+		for ( var i = this.items.length - 1; i >= 0; i-- ) {
+			this.items[i].item.removeData(this.widgetName + "-item");
+		}
+
+		return this;
+	},
+
+	_setOption: function(key, value){
+		if ( key === "disabled" ) {
+			this.options[ key ] = value;
+
+			this.widget().toggleClass( "ui-sortable-disabled", !!value );
+		} else {
+			// Don't call widget base _setOption for disable as it adds ui-state-disabled class
+			$.Widget.prototype._setOption.apply(this, arguments);
+		}
+	},
+
+	_mouseCapture: function(event, overrideHandle) {
+		var currentItem = null,
+			validHandle = false,
+			that = this;
+
+		if (this.reverting) {
+			return false;
+		}
+
+		if(this.options.disabled || this.options.type === "static") {
+			return false;
+		}
+
+		//We have to refresh the items data once first
+		this._refreshItems(event);
+
+		//Find out if the clicked node (or one of its parents) is a actual item in this.items
+		$(event.target).parents().each(function() {
+			if($.data(this, that.widgetName + "-item") === that) {
+				currentItem = $(this);
+				return false;
+			}
+		});
+		if($.data(event.target, that.widgetName + "-item") === that) {
+			currentItem = $(event.target);
+		}
+
+		if(!currentItem) {
+			return false;
+		}
+		if(this.options.handle && !overrideHandle) {
+			$(this.options.handle, currentItem).find("*").addBack().each(function() {
+				if(this === event.target) {
+					validHandle = true;
+				}
+			});
+			if(!validHandle) {
+				return false;
+			}
+		}
+
+		this.currentItem = currentItem;
+		this._removeCurrentsFromItems();
+		return true;
+
+	},
+
+	_mouseStart: function(event, overrideHandle, noActivation) {
+
+		var i, body,
+			o = this.options;
+
+		this.currentContainer = this;
+
+		//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
+		this.refreshPositions();
+
+		//Create and append the visible helper
+		this.helper = this._createHelper(event);
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Get the next scrolling parent
+		this.scrollParent = this.helper.scrollParent();
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.currentItem.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		$.extend(this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
+		});
+
+		// Only after we got the offset, we can change the helper's position to absolute
+		// TODO: Still need to figure out a way to make relative sorting possible
+		this.helper.css("position", "absolute");
+		this.cssPosition = this.helper.css("position");
+
+		//Generate the original position
+		this.originalPosition = this._generatePosition(event);
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
+
+		//Cache the former DOM position
+		this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
+
+		//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
+		if(this.helper[0] !== this.currentItem[0]) {
+			this.currentItem.hide();
+		}
+
+		//Create the placeholder
+		this._createPlaceholder();
+
+		//Set a containment if given in the options
+		if(o.containment) {
+			this._setContainment();
+		}
+
+		if( o.cursor && o.cursor !== "auto" ) { // cursor option
+			body = this.document.find( "body" );
+
+			// support: IE
+			this.storedCursor = body.css( "cursor" );
+			body.css( "cursor", o.cursor );
+
+			this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body );
+		}
+
+		if(o.opacity) { // opacity option
+			if (this.helper.css("opacity")) {
+				this._storedOpacity = this.helper.css("opacity");
+			}
+			this.helper.css("opacity", o.opacity);
+		}
+
+		if(o.zIndex) { // zIndex option
+			if (this.helper.css("zIndex")) {
+				this._storedZIndex = this.helper.css("zIndex");
+			}
+			this.helper.css("zIndex", o.zIndex);
+		}
+
+		//Prepare scrolling
+		if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
+			this.overflowOffset = this.scrollParent.offset();
+		}
+
+		//Call callbacks
+		this._trigger("start", event, this._uiHash());
+
+		//Recache the helper size
+		if(!this._preserveHelperProportions) {
+			this._cacheHelperProportions();
+		}
+
+
+		//Post "activate" events to possible containers
+		if( !noActivation ) {
+			for ( i = this.containers.length - 1; i >= 0; i-- ) {
+				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
+			}
+		}
+
+		//Prepare possible droppables
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.current = this;
+		}
+
+		if ($.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(this, event);
+		}
+
+		this.dragging = true;
+
+		this.helper.addClass("ui-sortable-helper");
+		this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
+		return true;
+
+	},
+
+	_mouseDrag: function(event) {
+		var i, item, itemElement, intersection,
+			o = this.options,
+			scrolled = false;
+
+		//Compute the helpers position
+		this.position = this._generatePosition(event);
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		if (!this.lastPositionAbs) {
+			this.lastPositionAbs = this.positionAbs;
+		}
+
+		//Do scrolling
+		if(this.options.scroll) {
+			if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
+
+				if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
+					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
+				} else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {
+					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
+				}
+
+				if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
+					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
+				} else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {
+					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
+				}
+
+			} else {
+
+				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+				}
+
+				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+				}
+
+			}
+
+			if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
+				$.ui.ddmanager.prepareOffsets(this, event);
+			}
+		}
+
+		//Regenerate the absolute position used for position checks
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		//Set the helper position
+		if(!this.options.axis || this.options.axis !== "y") {
+			this.helper[0].style.left = this.position.left+"px";
+		}
+		if(!this.options.axis || this.options.axis !== "x") {
+			this.helper[0].style.top = this.position.top+"px";
+		}
+
+		//Rearrange
+		for (i = this.items.length - 1; i >= 0; i--) {
+
+			//Cache variables and intersection, continue if no intersection
+			item = this.items[i];
+			itemElement = item.item[0];
+			intersection = this._intersectsWithPointer(item);
+			if (!intersection) {
+				continue;
+			}
+
+			// Only put the placeholder inside the current Container, skip all
+			// items form other containers. This works because when moving
+			// an item from one container to another the
+			// currentContainer is switched before the placeholder is moved.
+			//
+			// Without this moving items in "sub-sortables" can cause the placeholder to jitter
+			// beetween the outer and inner container.
+			if (item.instance !== this.currentContainer) {
+				continue;
+			}
+
+			// cannot intersect with itself
+			// no useless actions that have been done before
+			// no action if the item moved is the parent of the item checked
+			if (itemElement !== this.currentItem[0] &&
+				this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement &&
+				!$.contains(this.placeholder[0], itemElement) &&
+				(this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true)
+			) {
+
+				this.direction = intersection === 1 ? "down" : "up";
+
+				if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) {
+					this._rearrange(event, item);
+				} else {
+					break;
+				}
+
+				this._trigger("change", event, this._uiHash());
+				break;
+			}
+		}
+
+		//Post events to containers
+		this._contactContainers(event);
+
+		//Interconnect with droppables
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.drag(this, event);
+		}
+
+		//Call callbacks
+		this._trigger("sort", event, this._uiHash());
+
+		this.lastPositionAbs = this.positionAbs;
+		return false;
+
+	},
+
+	_mouseStop: function(event, noPropagation) {
+
+		if(!event) {
+			return;
+		}
+
+		//If we are using droppables, inform the manager about the drop
+		if ($.ui.ddmanager && !this.options.dropBehaviour) {
+			$.ui.ddmanager.drop(this, event);
+		}
+
+		if(this.options.revert) {
+			var that = this,
+				cur = this.placeholder.offset(),
+				axis = this.options.axis,
+				animation = {};
+
+			if ( !axis || axis === "x" ) {
+				animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft);
+			}
+			if ( !axis || axis === "y" ) {
+				animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop);
+			}
+			this.reverting = true;
+			$(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {
+				that._clear(event);
+			});
+		} else {
+			this._clear(event, noPropagation);
+		}
+
+		return false;
+
+	},
+
+	cancel: function() {
+
+		if(this.dragging) {
+
+			this._mouseUp({ target: null });
+
+			if(this.options.helper === "original") {
+				this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
+			} else {
+				this.currentItem.show();
+			}
+
+			//Post deactivating events to containers
+			for (var i = this.containers.length - 1; i >= 0; i--){
+				this.containers[i]._trigger("deactivate", null, this._uiHash(this));
+				if(this.containers[i].containerCache.over) {
+					this.containers[i]._trigger("out", null, this._uiHash(this));
+					this.containers[i].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		if (this.placeholder) {
+			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
+			if(this.placeholder[0].parentNode) {
+				this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+			}
+			if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) {
+				this.helper.remove();
+			}
+
+			$.extend(this, {
+				helper: null,
+				dragging: false,
+				reverting: false,
+				_noFinalSort: null
+			});
+
+			if(this.domPosition.prev) {
+				$(this.domPosition.prev).after(this.currentItem);
+			} else {
+				$(this.domPosition.parent).prepend(this.currentItem);
+			}
+		}
+
+		return this;
+
+	},
+
+	serialize: function(o) {
+
+		var items = this._getItemsAsjQuery(o && o.connected),
+			str = [];
+		o = o || {};
+
+		$(items).each(function() {
+			var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/));
+			if (res) {
+				str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2]));
+			}
+		});
+
+		if(!str.length && o.key) {
+			str.push(o.key + "=");
+		}
+
+		return str.join("&");
+
+	},
+
+	toArray: function(o) {
+
+		var items = this._getItemsAsjQuery(o && o.connected),
+			ret = [];
+
+		o = o || {};
+
+		items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); });
+		return ret;
+
+	},
+
+	/* Be careful with the following core functions */
+	_intersectsWith: function(item) {
+
+		var x1 = this.positionAbs.left,
+			x2 = x1 + this.helperProportions.width,
+			y1 = this.positionAbs.top,
+			y2 = y1 + this.helperProportions.height,
+			l = item.left,
+			r = l + item.width,
+			t = item.top,
+			b = t + item.height,
+			dyClick = this.offset.click.top,
+			dxClick = this.offset.click.left,
+			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),
+			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),
+			isOverElement = isOverElementHeight && isOverElementWidth;
+
+		if ( this.options.tolerance === "pointer" ||
+			this.options.forcePointerForContainers ||
+			(this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"])
+		) {
+			return isOverElement;
+		} else {
+
+			return (l < x1 + (this.helperProportions.width / 2) && // Right Half
+				x2 - (this.helperProportions.width / 2) < r && // Left Half
+				t < y1 + (this.helperProportions.height / 2) && // Bottom Half
+				y2 - (this.helperProportions.height / 2) < b ); // Top Half
+
+		}
+	},
+
+	_intersectsWithPointer: function(item) {
+
+		var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
+			isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
+			isOverElement = isOverElementHeight && isOverElementWidth,
+			verticalDirection = this._getDragVerticalDirection(),
+			horizontalDirection = this._getDragHorizontalDirection();
+
+		if (!isOverElement) {
+			return false;
+		}
+
+		return this.floating ?
+			( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 )
+			: ( verticalDirection && (verticalDirection === "down" ? 2 : 1) );
+
+	},
+
+	_intersectsWithSides: function(item) {
+
+		var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
+			isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
+			verticalDirection = this._getDragVerticalDirection(),
+			horizontalDirection = this._getDragHorizontalDirection();
+
+		if (this.floating && horizontalDirection) {
+			return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf));
+		} else {
+			return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf));
+		}
+
+	},
+
+	_getDragVerticalDirection: function() {
+		var delta = this.positionAbs.top - this.lastPositionAbs.top;
+		return delta !== 0 && (delta > 0 ? "down" : "up");
+	},
+
+	_getDragHorizontalDirection: function() {
+		var delta = this.positionAbs.left - this.lastPositionAbs.left;
+		return delta !== 0 && (delta > 0 ? "right" : "left");
+	},
+
+	refresh: function(event) {
+		this._refreshItems(event);
+		this.refreshPositions();
+		return this;
+	},
+
+	_connectWith: function() {
+		var options = this.options;
+		return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;
+	},
+
+	_getItemsAsjQuery: function(connected) {
+
+		var i, j, cur, inst,
+			items = [],
+			queries = [],
+			connectWith = this._connectWith();
+
+		if(connectWith && connected) {
+			for (i = connectWith.length - 1; i >= 0; i--){
+				cur = $(connectWith[i]);
+				for ( j = cur.length - 1; j >= 0; j--){
+					inst = $.data(cur[j], this.widgetFullName);
+					if(inst && inst !== this && !inst.options.disabled) {
+						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);
+					}
+				}
+			}
+		}
+
+		queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
+
+		for (i = queries.length - 1; i >= 0; i--){
+			queries[i][0].each(function() {
+				items.push(this);
+			});
+		}
+
+		return $(items);
+
+	},
+
+	_removeCurrentsFromItems: function() {
+
+		var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
+
+		this.items = $.grep(this.items, function (item) {
+			for (var j=0; j < list.length; j++) {
+				if(list[j] === item.item[0]) {
+					return false;
+				}
+			}
+			return true;
+		});
+
+	},
+
+	_refreshItems: function(event) {
+
+		this.items = [];
+		this.containers = [this];
+
+		var i, j, cur, inst, targetData, _queries, item, queriesLength,
+			items = this.items,
+			queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],
+			connectWith = this._connectWith();
+
+		if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down
+			for (i = connectWith.length - 1; i >= 0; i--){
+				cur = $(connectWith[i]);
+				for (j = cur.length - 1; j >= 0; j--){
+					inst = $.data(cur[j], this.widgetFullName);
+					if(inst && inst !== this && !inst.options.disabled) {
+						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
+						this.containers.push(inst);
+					}
+				}
+			}
+		}
+
+		for (i = queries.length - 1; i >= 0; i--) {
+			targetData = queries[i][1];
+			_queries = queries[i][0];
+
+			for (j=0, queriesLength = _queries.length; j < queriesLength; j++) {
+				item = $(_queries[j]);
+
+				item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager)
+
+				items.push({
+					item: item,
+					instance: targetData,
+					width: 0, height: 0,
+					left: 0, top: 0
+				});
+			}
+		}
+
+	},
+
+	refreshPositions: function(fast) {
+
+		//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
+		if(this.offsetParent && this.helper) {
+			this.offset.parent = this._getParentOffset();
+		}
+
+		var i, item, t, p;
+
+		for (i = this.items.length - 1; i >= 0; i--){
+			item = this.items[i];
+
+			//We ignore calculating positions of all connected containers when we're not over them
+			if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {
+				continue;
+			}
+
+			t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
+
+			if (!fast) {
+				item.width = t.outerWidth();
+				item.height = t.outerHeight();
+			}
+
+			p = t.offset();
+			item.left = p.left;
+			item.top = p.top;
+		}
+
+		if(this.options.custom && this.options.custom.refreshContainers) {
+			this.options.custom.refreshContainers.call(this);
+		} else {
+			for (i = this.containers.length - 1; i >= 0; i--){
+				p = this.containers[i].element.offset();
+				this.containers[i].containerCache.left = p.left;
+				this.containers[i].containerCache.top = p.top;
+				this.containers[i].containerCache.width	= this.containers[i].element.outerWidth();
+				this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
+			}
+		}
+
+		return this;
+	},
+
+	_createPlaceholder: function(that) {
+		that = that || this;
+		var className,
+			o = that.options;
+
+		if(!o.placeholder || o.placeholder.constructor === String) {
+			className = o.placeholder;
+			o.placeholder = {
+				element: function() {
+
+					var nodeName = that.currentItem[0].nodeName.toLowerCase(),
+						element = $( "<" + nodeName + ">", that.document[0] )
+							.addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
+							.removeClass("ui-sortable-helper");
+
+					if ( nodeName === "tr" ) {
+						that.currentItem.children().each(function() {
+							$( "<td>&#160;</td>", that.document[0] )
+								.attr( "colspan", $( this ).attr( "colspan" ) || 1 )
+								.appendTo( element );
+						});
+					} else if ( nodeName === "img" ) {
+						element.attr( "src", that.currentItem.attr( "src" ) );
+					}
+
+					if ( !className ) {
+						element.css( "visibility", "hidden" );
+					}
+
+					return element;
+				},
+				update: function(container, p) {
+
+					// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
+					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
+					if(className && !o.forcePlaceholderSize) {
+						return;
+					}
+
+					//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
+					if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); }
+					if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }
+				}
+			};
+		}
+
+		//Create the placeholder
+		that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
+
+		//Append it after the actual current item
+		that.currentItem.after(that.placeholder);
+
+		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
+		o.placeholder.update(that, that.placeholder);
+
+	},
+
+	_contactContainers: function(event) {
+		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating,
+			innermostContainer = null,
+			innermostIndex = null;
+
+		// get innermost container that intersects with item
+		for (i = this.containers.length - 1; i >= 0; i--) {
+
+			// never consider a container that's located within the item itself
+			if($.contains(this.currentItem[0], this.containers[i].element[0])) {
+				continue;
+			}
+
+			if(this._intersectsWith(this.containers[i].containerCache)) {
+
+				// if we've already found a container and it's more "inner" than this, then continue
+				if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {
+					continue;
+				}
+
+				innermostContainer = this.containers[i];
+				innermostIndex = i;
+
+			} else {
+				// container doesn't intersect. trigger "out" event if necessary
+				if(this.containers[i].containerCache.over) {
+					this.containers[i]._trigger("out", event, this._uiHash(this));
+					this.containers[i].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		// if no intersecting containers found, return
+		if(!innermostContainer) {
+			return;
+		}
+
+		// move the item into the container if it's not there already
+		if(this.containers.length === 1) {
+			if (!this.containers[innermostIndex].containerCache.over) {
+				this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
+				this.containers[innermostIndex].containerCache.over = 1;
+			}
+		} else {
+
+			//When entering a new container, we will find the item with the least distance and append our item near it
+			dist = 10000;
+			itemWithLeastDistance = null;
+			floating = innermostContainer.floating || isFloating(this.currentItem);
+			posProperty = floating ? "left" : "top";
+			sizeProperty = floating ? "width" : "height";
+			base = this.positionAbs[posProperty] + this.offset.click[posProperty];
+			for (j = this.items.length - 1; j >= 0; j--) {
+				if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {
+					continue;
+				}
+				if(this.items[j].item[0] === this.currentItem[0]) {
+					continue;
+				}
+				if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) {
+					continue;
+				}
+				cur = this.items[j].item.offset()[posProperty];
+				nearBottom = false;
+				if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){
+					nearBottom = true;
+					cur += this.items[j][sizeProperty];
+				}
+
+				if(Math.abs(cur - base) < dist) {
+					dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
+					this.direction = nearBottom ? "up": "down";
+				}
+			}
+
+			//Check if dropOnEmpty is enabled
+			if(!itemWithLeastDistance && !this.options.dropOnEmpty) {
+				return;
+			}
+
+			if(this.currentContainer === this.containers[innermostIndex]) {
+				return;
+			}
+
+			itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
+			this._trigger("change", event, this._uiHash());
+			this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
+			this.currentContainer = this.containers[innermostIndex];
+
+			//Update the placeholder
+			this.options.placeholder.update(this.currentContainer, this.placeholder);
+
+			this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
+			this.containers[innermostIndex].containerCache.over = 1;
+		}
+
+
+	},
+
+	_createHelper: function(event) {
+
+		var o = this.options,
+			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem);
+
+		//Add the helper to the DOM if that didn't happen already
+		if(!helper.parents("body").length) {
+			$(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
+		}
+
+		if(helper[0] === this.currentItem[0]) {
+			this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };
+		}
+
+		if(!helper[0].style.width || o.forceHelperSize) {
+			helper.width(this.currentItem.width());
+		}
+		if(!helper[0].style.height || o.forceHelperSize) {
+			helper.height(this.currentItem.height());
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function(obj) {
+		if (typeof obj === "string") {
+			obj = obj.split(" ");
+		}
+		if ($.isArray(obj)) {
+			obj = {left: +obj[0], top: +obj[1] || 0};
+		}
+		if ("left" in obj) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ("right" in obj) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ("top" in obj) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ("bottom" in obj) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+
+		//Get the offsetParent and cache its position
+		this.offsetParent = this.helper.offsetParent();
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
+		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
+		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		// This needs to be actually done for all browsers, since pageX/pageY includes this information
+		// with an ugly IE fix
+		if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
+			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if(this.cssPosition === "relative") {
+			var p = this.currentItem.position();
+			return {
+				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
+				left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
+			};
+		} else {
+			return { top: 0, left: 0 };
+		}
+
+	},
+
+	_cacheMargins: function() {
+		this.margins = {
+			left: (parseInt(this.currentItem.css("marginLeft"),10) || 0),
+			top: (parseInt(this.currentItem.css("marginTop"),10) || 0)
+		};
+	},
+
+	_cacheHelperProportions: function() {
+		this.helperProportions = {
+			width: this.helper.outerWidth(),
+			height: this.helper.outerHeight()
+		};
+	},
+
+	_setContainment: function() {
+
+		var ce, co, over,
+			o = this.options;
+		if(o.containment === "parent") {
+			o.containment = this.helper[0].parentNode;
+		}
+		if(o.containment === "document" || o.containment === "window") {
+			this.containment = [
+				0 - this.offset.relative.left - this.offset.parent.left,
+				0 - this.offset.relative.top - this.offset.parent.top,
+				$(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left,
+				($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+		if(!(/^(document|window|parent)$/).test(o.containment)) {
+			ce = $(o.containment)[0];
+			co = $(o.containment).offset();
+			over = ($(ce).css("overflow") !== "hidden");
+
+			this.containment = [
+				co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
+				co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
+				co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
+				co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+	},
+
+	_convertPositionTo: function(d, pos) {
+
+		if(!pos) {
+			pos = this.position;
+		}
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
+			scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		return {
+			top: (
+				pos.top	+																// The absolute mouse position
+				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top * mod -											// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
+			),
+			left: (
+				pos.left +																// The absolute mouse position
+				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
+			)
+		};
+
+	},
+
+	_generatePosition: function(event) {
+
+		var top, left,
+			o = this.options,
+			pageX = event.pageX,
+			pageY = event.pageY,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		// This is another very weird special case that only happens for relative elements:
+		// 1. If the css position is relative
+		// 2. and the scroll parent is the document or similar to the offset parent
+		// we have to refresh the relative offset during the scroll so there are no jumps
+		if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {
+			this.offset.relative = this._getRelativeOffset();
+		}
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		if(this.originalPosition) { //If we are not dragging yet, we won't check for options
+
+			if(this.containment) {
+				if(event.pageX - this.offset.click.left < this.containment[0]) {
+					pageX = this.containment[0] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top < this.containment[1]) {
+					pageY = this.containment[1] + this.offset.click.top;
+				}
+				if(event.pageX - this.offset.click.left > this.containment[2]) {
+					pageX = this.containment[2] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top > this.containment[3]) {
+					pageY = this.containment[3] + this.offset.click.top;
+				}
+			}
+
+			if(o.grid) {
+				top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
+				pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
+
+				left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
+				pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
+			}
+
+		}
+
+		return {
+			top: (
+				pageY -																// The absolute mouse position
+				this.offset.click.top -													// Click offset (relative to the element)
+				this.offset.relative.top	-											// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
+			),
+			left: (
+				pageX -																// The absolute mouse position
+				this.offset.click.left -												// Click offset (relative to the element)
+				this.offset.relative.left	-											// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
+			)
+		};
+
+	},
+
+	_rearrange: function(event, i, a, hardRefresh) {
+
+		a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling));
+
+		//Various things done here to improve the performance:
+		// 1. we create a setTimeout, that calls refreshPositions
+		// 2. on the instance, we have a counter variable, that get's higher after every append
+		// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
+		// 4. this lets only the last addition to the timeout stack through
+		this.counter = this.counter ? ++this.counter : 1;
+		var counter = this.counter;
+
+		this._delay(function() {
+			if(counter === this.counter) {
+				this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
+			}
+		});
+
+	},
+
+	_clear: function(event, noPropagation) {
+
+		this.reverting = false;
+		// We delay all events that have to be triggered to after the point where the placeholder has been removed and
+		// everything else normalized again
+		var i,
+			delayedTriggers = [];
+
+		// We first have to update the dom position of the actual currentItem
+		// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
+		if(!this._noFinalSort && this.currentItem.parent().length) {
+			this.placeholder.before(this.currentItem);
+		}
+		this._noFinalSort = null;
+
+		if(this.helper[0] === this.currentItem[0]) {
+			for(i in this._storedCSS) {
+				if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") {
+					this._storedCSS[i] = "";
+				}
+			}
+			this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
+		} else {
+			this.currentItem.show();
+		}
+
+		if(this.fromOutside && !noPropagation) {
+			delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
+		}
+		if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {
+			delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
+		}
+
+		// Check if the items Container has Changed and trigger appropriate
+		// events.
+		if (this !== this.currentContainer) {
+			if(!noPropagation) {
+				delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); };  }).call(this, this.currentContainer));
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this));  }; }).call(this, this.currentContainer));
+			}
+		}
+
+
+		//Post events to containers
+		for (i = this.containers.length - 1; i >= 0; i--){
+			if(!noPropagation) {
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); };  }).call(this, this.containers[i]));
+			}
+			if(this.containers[i].containerCache.over) {
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); };  }).call(this, this.containers[i]));
+				this.containers[i].containerCache.over = 0;
+			}
+		}
+
+		//Do what was originally in plugins
+		if ( this.storedCursor ) {
+			this.document.find( "body" ).css( "cursor", this.storedCursor );
+			this.storedStylesheet.remove();
+		}
+		if(this._storedOpacity) {
+			this.helper.css("opacity", this._storedOpacity);
+		}
+		if(this._storedZIndex) {
+			this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex);
+		}
+
+		this.dragging = false;
+		if(this.cancelHelperRemoval) {
+			if(!noPropagation) {
+				this._trigger("beforeStop", event, this._uiHash());
+				for (i=0; i < delayedTriggers.length; i++) {
+					delayedTriggers[i].call(this, event);
+				} //Trigger all delayed events
+				this._trigger("stop", event, this._uiHash());
+			}
+
+			this.fromOutside = false;
+			return false;
+		}
+
+		if(!noPropagation) {
+			this._trigger("beforeStop", event, this._uiHash());
+		}
+
+		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
+		this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+
+		if(this.helper[0] !== this.currentItem[0]) {
+			this.helper.remove();
+		}
+		this.helper = null;
+
+		if(!noPropagation) {
+			for (i=0; i < delayedTriggers.length; i++) {
+				delayedTriggers[i].call(this, event);
+			} //Trigger all delayed events
+			this._trigger("stop", event, this._uiHash());
+		}
+
+		this.fromOutside = false;
+		return true;
+
+	},
+
+	_trigger: function() {
+		if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
+			this.cancel();
+		}
+	},
+
+	_uiHash: function(_inst) {
+		var inst = _inst || this;
+		return {
+			helper: inst.helper,
+			placeholder: inst.placeholder || $([]),
+			position: inst.position,
+			originalPosition: inst.originalPosition,
+			offset: inst.positionAbs,
+			item: inst.currentItem,
+			sender: _inst ? _inst.element : null
+		};
+	}
+
+});
+
+})(jQuery);
+
+(function($, undefined) {
+
+var dataSpace = "ui-effects-";
+
+$.effects = {
+	effect: {}
+};
+
+/*!
+ * jQuery Color Animations v2.1.2
+ * https://github.com/jquery/jquery-color
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * Date: Wed Jan 16 08:47:09 2013 -0600
+ */
+(function( jQuery, undefined ) {
+
+	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
+
+	// plusequals test for += 100 -= 100
+	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
+	// a set of RE's that can match strings and generate color tuples.
+	stringParsers = [{
+			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ],
+					execResult[ 3 ],
+					execResult[ 4 ]
+				];
+			}
+		}, {
+			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ] * 2.55,
+					execResult[ 2 ] * 2.55,
+					execResult[ 3 ] * 2.55,
+					execResult[ 4 ]
+				];
+			}
+		}, {
+			// this regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+			// this regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			space: "hsla",
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ] / 100,
+					execResult[ 3 ] / 100,
+					execResult[ 4 ]
+				];
+			}
+		}],
+
+	// jQuery.Color( )
+	color = jQuery.Color = function( color, green, blue, alpha ) {
+		return new jQuery.Color.fn.parse( color, green, blue, alpha );
+	},
+	spaces = {
+		rgba: {
+			props: {
+				red: {
+					idx: 0,
+					type: "byte"
+				},
+				green: {
+					idx: 1,
+					type: "byte"
+				},
+				blue: {
+					idx: 2,
+					type: "byte"
+				}
+			}
+		},
+
+		hsla: {
+			props: {
+				hue: {
+					idx: 0,
+					type: "degrees"
+				},
+				saturation: {
+					idx: 1,
+					type: "percent"
+				},
+				lightness: {
+					idx: 2,
+					type: "percent"
+				}
+			}
+		}
+	},
+	propTypes = {
+		"byte": {
+			floor: true,
+			max: 255
+		},
+		"percent": {
+			max: 1
+		},
+		"degrees": {
+			mod: 360,
+			floor: true
+		}
+	},
+	support = color.support = {},
+
+	// element for support tests
+	supportElem = jQuery( "<p>" )[ 0 ],
+
+	// colors = jQuery.Color.names
+	colors,
+
+	// local aliases of functions called often
+	each = jQuery.each;
+
+// determine rgba support immediately
+supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
+support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
+
+// define cache name and alpha properties
+// for rgba and hsla spaces
+each( spaces, function( spaceName, space ) {
+	space.cache = "_" + spaceName;
+	space.props.alpha = {
+		idx: 3,
+		type: "percent",
+		def: 1
+	};
+});
+
+function clamp( value, prop, allowEmpty ) {
+	var type = propTypes[ prop.type ] || {};
+
+	if ( value == null ) {
+		return (allowEmpty || !prop.def) ? null : prop.def;
+	}
+
+	// ~~ is an short way of doing floor for positive numbers
+	value = type.floor ? ~~value : parseFloat( value );
+
+	// IE will pass in empty strings as value for alpha,
+	// which will hit this case
+	if ( isNaN( value ) ) {
+		return prop.def;
+	}
+
+	if ( type.mod ) {
+		// we add mod before modding to make sure that negatives values
+		// get converted properly: -10 -> 350
+		return (value + type.mod) % type.mod;
+	}
+
+	// for now all property types without mod have min and max
+	return 0 > value ? 0 : type.max < value ? type.max : value;
+}
+
+function stringParse( string ) {
+	var inst = color(),
+		rgba = inst._rgba = [];
+
+	string = string.toLowerCase();
+
+	each( stringParsers, function( i, parser ) {
+		var parsed,
+			match = parser.re.exec( string ),
+			values = match && parser.parse( match ),
+			spaceName = parser.space || "rgba";
+
+		if ( values ) {
+			parsed = inst[ spaceName ]( values );
+
+			// if this was an rgba parse the assignment might happen twice
+			// oh well....
+			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
+			rgba = inst._rgba = parsed._rgba;
+
+			// exit each( stringParsers ) here because we matched
+			return false;
+		}
+	});
+
+	// Found a stringParser that handled it
+	if ( rgba.length ) {
+
+		// if this came from a parsed string, force "transparent" when alpha is 0
+		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
+		if ( rgba.join() === "0,0,0,0" ) {
+			jQuery.extend( rgba, colors.transparent );
+		}
+		return inst;
+	}
+
+	// named colors
+	return colors[ string ];
+}
+
+color.fn = jQuery.extend( color.prototype, {
+	parse: function( red, green, blue, alpha ) {
+		if ( red === undefined ) {
+			this._rgba = [ null, null, null, null ];
+			return this;
+		}
+		if ( red.jquery || red.nodeType ) {
+			red = jQuery( red ).css( green );
+			green = undefined;
+		}
+
+		var inst = this,
+			type = jQuery.type( red ),
+			rgba = this._rgba = [];
+
+		// more than 1 argument specified - assume ( red, green, blue, alpha )
+		if ( green !== undefined ) {
+			red = [ red, green, blue, alpha ];
+			type = "array";
+		}
+
+		if ( type === "string" ) {
+			return this.parse( stringParse( red ) || colors._default );
+		}
+
+		if ( type === "array" ) {
+			each( spaces.rgba.props, function( key, prop ) {
+				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
+			});
+			return this;
+		}
+
+		if ( type === "object" ) {
+			if ( red instanceof color ) {
+				each( spaces, function( spaceName, space ) {
+					if ( red[ space.cache ] ) {
+						inst[ space.cache ] = red[ space.cache ].slice();
+					}
+				});
+			} else {
+				each( spaces, function( spaceName, space ) {
+					var cache = space.cache;
+					each( space.props, function( key, prop ) {
+
+						// if the cache doesn't exist, and we know how to convert
+						if ( !inst[ cache ] && space.to ) {
+
+							// if the value was null, we don't need to copy it
+							// if the key was alpha, we don't need to copy it either
+							if ( key === "alpha" || red[ key ] == null ) {
+								return;
+							}
+							inst[ cache ] = space.to( inst._rgba );
+						}
+
+						// this is the only case where we allow nulls for ALL properties.
+						// call clamp with alwaysAllowEmpty
+						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
+					});
+
+					// everything defined but alpha?
+					if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
+						// use the default of 1
+						inst[ cache ][ 3 ] = 1;
+						if ( space.from ) {
+							inst._rgba = space.from( inst[ cache ] );
+						}
+					}
+				});
+			}
+			return this;
+		}
+	},
+	is: function( compare ) {
+		var is = color( compare ),
+			same = true,
+			inst = this;
+
+		each( spaces, function( _, space ) {
+			var localCache,
+				isCache = is[ space.cache ];
+			if (isCache) {
+				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
+				each( space.props, function( _, prop ) {
+					if ( isCache[ prop.idx ] != null ) {
+						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
+						return same;
+					}
+				});
+			}
+			return same;
+		});
+		return same;
+	},
+	_space: function() {
+		var used = [],
+			inst = this;
+		each( spaces, function( spaceName, space ) {
+			if ( inst[ space.cache ] ) {
+				used.push( spaceName );
+			}
+		});
+		return used.pop();
+	},
+	transition: function( other, distance ) {
+		var end = color( other ),
+			spaceName = end._space(),
+			space = spaces[ spaceName ],
+			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
+			start = startColor[ space.cache ] || space.to( startColor._rgba ),
+			result = start.slice();
+
+		end = end[ space.cache ];
+		each( space.props, function( key, prop ) {
+			var index = prop.idx,
+				startValue = start[ index ],
+				endValue = end[ index ],
+				type = propTypes[ prop.type ] || {};
+
+			// if null, don't override start value
+			if ( endValue === null ) {
+				return;
+			}
+			// if null - use end
+			if ( startValue === null ) {
+				result[ index ] = endValue;
+			} else {
+				if ( type.mod ) {
+					if ( endValue - startValue > type.mod / 2 ) {
+						startValue += type.mod;
+					} else if ( startValue - endValue > type.mod / 2 ) {
+						startValue -= type.mod;
+					}
+				}
+				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
+			}
+		});
+		return this[ spaceName ]( result );
+	},
+	blend: function( opaque ) {
+		// if we are already opaque - return ourself
+		if ( this._rgba[ 3 ] === 1 ) {
+			return this;
+		}
+
+		var rgb = this._rgba.slice(),
+			a = rgb.pop(),
+			blend = color( opaque )._rgba;
+
+		return color( jQuery.map( rgb, function( v, i ) {
+			return ( 1 - a ) * blend[ i ] + a * v;
+		}));
+	},
+	toRgbaString: function() {
+		var prefix = "rgba(",
+			rgba = jQuery.map( this._rgba, function( v, i ) {
+				return v == null ? ( i > 2 ? 1 : 0 ) : v;
+			});
+
+		if ( rgba[ 3 ] === 1 ) {
+			rgba.pop();
+			prefix = "rgb(";
+		}
+
+		return prefix + rgba.join() + ")";
+	},
+	toHslaString: function() {
+		var prefix = "hsla(",
+			hsla = jQuery.map( this.hsla(), function( v, i ) {
+				if ( v == null ) {
+					v = i > 2 ? 1 : 0;
+				}
+
+				// catch 1 and 2
+				if ( i && i < 3 ) {
+					v = Math.round( v * 100 ) + "%";
+				}
+				return v;
+			});
+
+		if ( hsla[ 3 ] === 1 ) {
+			hsla.pop();
+			prefix = "hsl(";
+		}
+		return prefix + hsla.join() + ")";
+	},
+	toHexString: function( includeAlpha ) {
+		var rgba = this._rgba.slice(),
+			alpha = rgba.pop();
+
+		if ( includeAlpha ) {
+			rgba.push( ~~( alpha * 255 ) );
+		}
+
+		return "#" + jQuery.map( rgba, function( v ) {
+
+			// default to 0 when nulls exist
+			v = ( v || 0 ).toString( 16 );
+			return v.length === 1 ? "0" + v : v;
+		}).join("");
+	},
+	toString: function() {
+		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
+	}
+});
+color.fn.parse.prototype = color.fn;
+
+// hsla conversions adapted from:
+// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
+
+function hue2rgb( p, q, h ) {
+	h = ( h + 1 ) % 1;
+	if ( h * 6 < 1 ) {
+		return p + (q - p) * h * 6;
+	}
+	if ( h * 2 < 1) {
+		return q;
+	}
+	if ( h * 3 < 2 ) {
+		return p + (q - p) * ((2/3) - h) * 6;
+	}
+	return p;
+}
+
+spaces.hsla.to = function ( rgba ) {
+	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
+		return [ null, null, null, rgba[ 3 ] ];
+	}
+	var r = rgba[ 0 ] / 255,
+		g = rgba[ 1 ] / 255,
+		b = rgba[ 2 ] / 255,
+		a = rgba[ 3 ],
+		max = Math.max( r, g, b ),
+		min = Math.min( r, g, b ),
+		diff = max - min,
+		add = max + min,
+		l = add * 0.5,
+		h, s;
+
+	if ( min === max ) {
+		h = 0;
+	} else if ( r === max ) {
+		h = ( 60 * ( g - b ) / diff ) + 360;
+	} else if ( g === max ) {
+		h = ( 60 * ( b - r ) / diff ) + 120;
+	} else {
+		h = ( 60 * ( r - g ) / diff ) + 240;
+	}
+
+	// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
+	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
+	if ( diff === 0 ) {
+		s = 0;
+	} else if ( l <= 0.5 ) {
+		s = diff / add;
+	} else {
+		s = diff / ( 2 - add );
+	}
+	return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
+};
+
+spaces.hsla.from = function ( hsla ) {
+	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
+		return [ null, null, null, hsla[ 3 ] ];
+	}
+	var h = hsla[ 0 ] / 360,
+		s = hsla[ 1 ],
+		l = hsla[ 2 ],
+		a = hsla[ 3 ],
+		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
+		p = 2 * l - q;
+
+	return [
+		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
+		Math.round( hue2rgb( p, q, h ) * 255 ),
+		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
+		a
+	];
+};
+
+
+each( spaces, function( spaceName, space ) {
+	var props = space.props,
+		cache = space.cache,
+		to = space.to,
+		from = space.from;
+
+	// makes rgba() and hsla()
+	color.fn[ spaceName ] = function( value ) {
+
+		// generate a cache for this space if it doesn't exist
+		if ( to && !this[ cache ] ) {
+			this[ cache ] = to( this._rgba );
+		}
+		if ( value === undefined ) {
+			return this[ cache ].slice();
+		}
+
+		var ret,
+			type = jQuery.type( value ),
+			arr = ( type === "array" || type === "object" ) ? value : arguments,
+			local = this[ cache ].slice();
+
+		each( props, function( key, prop ) {
+			var val = arr[ type === "object" ? key : prop.idx ];
+			if ( val == null ) {
+				val = local[ prop.idx ];
+			}
+			local[ prop.idx ] = clamp( val, prop );
+		});
+
+		if ( from ) {
+			ret = color( from( local ) );
+			ret[ cache ] = local;
+			return ret;
+		} else {
+			return color( local );
+		}
+	};
+
+	// makes red() green() blue() alpha() hue() saturation() lightness()
+	each( props, function( key, prop ) {
+		// alpha is included in more than one space
+		if ( color.fn[ key ] ) {
+			return;
+		}
+		color.fn[ key ] = function( value ) {
+			var vtype = jQuery.type( value ),
+				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
+				local = this[ fn ](),
+				cur = local[ prop.idx ],
+				match;
+
+			if ( vtype === "undefined" ) {
+				return cur;
+			}
+
+			if ( vtype === "function" ) {
+				value = value.call( this, cur );
+				vtype = jQuery.type( value );
+			}
+			if ( value == null && prop.empty ) {
+				return this;
+			}
+			if ( vtype === "string" ) {
+				match = rplusequals.exec( value );
+				if ( match ) {
+					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
+				}
+			}
+			local[ prop.idx ] = value;
+			return this[ fn ]( local );
+		};
+	});
+});
+
+// add cssHook and .fx.step function for each named hook.
+// accept a space separated string of properties
+color.hook = function( hook ) {
+	var hooks = hook.split( " " );
+	each( hooks, function( i, hook ) {
+		jQuery.cssHooks[ hook ] = {
+			set: function( elem, value ) {
+				var parsed, curElem,
+					backgroundColor = "";
+
+				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
+					value = color( parsed || value );
+					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
+						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
+						while (
+							(backgroundColor === "" || backgroundColor === "transparent") &&
+							curElem && curElem.style
+						) {
+							try {
+								backgroundColor = jQuery.css( curElem, "backgroundColor" );
+								curElem = curElem.parentNode;
+							} catch ( e ) {
+							}
+						}
+
+						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
+							backgroundColor :
+							"_default" );
+					}
+
+					value = value.toRgbaString();
+				}
+				try {
+					elem.style[ hook ] = value;
+				} catch( e ) {
+					// wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
+				}
+			}
+		};
+		jQuery.fx.step[ hook ] = function( fx ) {
+			if ( !fx.colorInit ) {
+				fx.start = color( fx.elem, hook );
+				fx.end = color( fx.end );
+				fx.colorInit = true;
+			}
+			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
+		};
+	});
+
+};
+
+color.hook( stepHooks );
+
+jQuery.cssHooks.borderColor = {
+	expand: function( value ) {
+		var expanded = {};
+
+		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
+			expanded[ "border" + part + "Color" ] = value;
+		});
+		return expanded;
+	}
+};
+
+// Basic color names only.
+// Usage of any of the other color names requires adding yourself or including
+// jquery.color.svg-names.js.
+colors = jQuery.Color.names = {
+	// 4.1. Basic color keywords
+	aqua: "#00ffff",
+	black: "#000000",
+	blue: "#0000ff",
+	fuchsia: "#ff00ff",
+	gray: "#808080",
+	green: "#008000",
+	lime: "#00ff00",
+	maroon: "#800000",
+	navy: "#000080",
+	olive: "#808000",
+	purple: "#800080",
+	red: "#ff0000",
+	silver: "#c0c0c0",
+	teal: "#008080",
+	white: "#ffffff",
+	yellow: "#ffff00",
+
+	// 4.2.3. "transparent" color keyword
+	transparent: [ null, null, null, 0 ],
+
+	_default: "#ffffff"
+};
+
+})( jQuery );
+
+
+/******************************************************************************/
+/****************************** CLASS ANIMATIONS ******************************/
+/******************************************************************************/
+(function() {
+
+var classAnimationActions = [ "add", "remove", "toggle" ],
+	shorthandStyles = {
+		border: 1,
+		borderBottom: 1,
+		borderColor: 1,
+		borderLeft: 1,
+		borderRight: 1,
+		borderTop: 1,
+		borderWidth: 1,
+		margin: 1,
+		padding: 1
+	};
+
+$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) {
+	$.fx.step[ prop ] = function( fx ) {
+		if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
+			jQuery.style( fx.elem, prop, fx.end );
+			fx.setAttr = true;
+		}
+	};
+});
+
+function getElementStyles( elem ) {
+	var key, len,
+		style = elem.ownerDocument.defaultView ?
+			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
+			elem.currentStyle,
+		styles = {};
+
+	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
+		len = style.length;
+		while ( len-- ) {
+			key = style[ len ];
+			if ( typeof style[ key ] === "string" ) {
+				styles[ $.camelCase( key ) ] = style[ key ];
+			}
+		}
+	// support: Opera, IE <9
+	} else {
+		for ( key in style ) {
+			if ( typeof style[ key ] === "string" ) {
+				styles[ key ] = style[ key ];
+			}
+		}
+	}
+
+	return styles;
+}
+
+
+function styleDifference( oldStyle, newStyle ) {
+	var diff = {},
+		name, value;
+
+	for ( name in newStyle ) {
+		value = newStyle[ name ];
+		if ( oldStyle[ name ] !== value ) {
+			if ( !shorthandStyles[ name ] ) {
+				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
+					diff[ name ] = value;
+				}
+			}
+		}
+	}
+
+	return diff;
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+$.effects.animateClass = function( value, duration, easing, callback ) {
+	var o = $.speed( duration, easing, callback );
+
+	return this.queue( function() {
+		var animated = $( this ),
+			baseClass = animated.attr( "class" ) || "",
+			applyClassChange,
+			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
+
+		// map the animated objects to store the original styles.
+		allAnimations = allAnimations.map(function() {
+			var el = $( this );
+			return {
+				el: el,
+				start: getElementStyles( this )
+			};
+		});
+
+		// apply class change
+		applyClassChange = function() {
+			$.each( classAnimationActions, function(i, action) {
+				if ( value[ action ] ) {
+					animated[ action + "Class" ]( value[ action ] );
+				}
+			});
+		};
+		applyClassChange();
+
+		// map all animated objects again - calculate new styles and diff
+		allAnimations = allAnimations.map(function() {
+			this.end = getElementStyles( this.el[ 0 ] );
+			this.diff = styleDifference( this.start, this.end );
+			return this;
+		});
+
+		// apply original class
+		animated.attr( "class", baseClass );
+
+		// map all animated objects again - this time collecting a promise
+		allAnimations = allAnimations.map(function() {
+			var styleInfo = this,
+				dfd = $.Deferred(),
+				opts = $.extend({}, o, {
+					queue: false,
+					complete: function() {
+						dfd.resolve( styleInfo );
+					}
+				});
+
+			this.el.animate( this.diff, opts );
+			return dfd.promise();
+		});
+
+		// once all animations have completed:
+		$.when.apply( $, allAnimations.get() ).done(function() {
+
+			// set the final class
+			applyClassChange();
+
+			// for each animated element,
+			// clear all css properties that were animated
+			$.each( arguments, function() {
+				var el = this.el;
+				$.each( this.diff, function(key) {
+					el.css( key, "" );
+				});
+			});
+
+			// this is guarnteed to be there if you use jQuery.speed()
+			// it also handles dequeuing the next anim...
+			o.complete.call( animated[ 0 ] );
+		});
+	});
+};
+
+$.fn.extend({
+	addClass: (function( orig ) {
+		return function( classNames, speed, easing, callback ) {
+			return speed ?
+				$.effects.animateClass.call( this,
+					{ add: classNames }, speed, easing, callback ) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.addClass ),
+
+	removeClass: (function( orig ) {
+		return function( classNames, speed, easing, callback ) {
+			return arguments.length > 1 ?
+				$.effects.animateClass.call( this,
+					{ remove: classNames }, speed, easing, callback ) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.removeClass ),
+
+	toggleClass: (function( orig ) {
+		return function( classNames, force, speed, easing, callback ) {
+			if ( typeof force === "boolean" || force === undefined ) {
+				if ( !speed ) {
+					// without speed parameter
+					return orig.apply( this, arguments );
+				} else {
+					return $.effects.animateClass.call( this,
+						(force ? { add: classNames } : { remove: classNames }),
+						speed, easing, callback );
+				}
+			} else {
+				// without force parameter
+				return $.effects.animateClass.call( this,
+					{ toggle: classNames }, force, speed, easing );
+			}
+		};
+	})( $.fn.toggleClass ),
+
+	switchClass: function( remove, add, speed, easing, callback) {
+		return $.effects.animateClass.call( this, {
+			add: add,
+			remove: remove
+		}, speed, easing, callback );
+	}
+});
+
+})();
+
+/******************************************************************************/
+/*********************************** EFFECTS **********************************/
+/******************************************************************************/
+
+(function() {
+
+$.extend( $.effects, {
+	version: "1.10.3",
+
+	// Saves a set of properties in a data storage
+	save: function( element, set ) {
+		for( var i=0; i < set.length; i++ ) {
+			if ( set[ i ] !== null ) {
+				element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
+			}
+		}
+	},
+
+	// Restores a set of previously saved properties from a data storage
+	restore: function( element, set ) {
+		var val, i;
+		for( i=0; i < set.length; i++ ) {
+			if ( set[ i ] !== null ) {
+				val = element.data( dataSpace + set[ i ] );
+				// support: jQuery 1.6.2
+				// http://bugs.jquery.com/ticket/9917
+				// jQuery 1.6.2 incorrectly returns undefined for any falsy value.
+				// We can't differentiate between "" and 0 here, so we just assume
+				// empty string since it's likely to be a more common value...
+				if ( val === undefined ) {
+					val = "";
+				}
+				element.css( set[ i ], val );
+			}
+		}
+	},
+
+	setMode: function( el, mode ) {
+		if (mode === "toggle") {
+			mode = el.is( ":hidden" ) ? "show" : "hide";
+		}
+		return mode;
+	},
+
+	// Translates a [top,left] array into a baseline value
+	// this should be a little more flexible in the future to handle a string & hash
+	getBaseline: function( origin, original ) {
+		var y, x;
+		switch ( origin[ 0 ] ) {
+			case "top": y = 0; break;
+			case "middle": y = 0.5; break;
+			case "bottom": y = 1; break;
+			default: y = origin[ 0 ] / original.height;
+		}
+		switch ( origin[ 1 ] ) {
+			case "left": x = 0; break;
+			case "center": x = 0.5; break;
+			case "right": x = 1; break;
+			default: x = origin[ 1 ] / original.width;
+		}
+		return {
+			x: x,
+			y: y
+		};
+	},
+
+	// Wraps the element around a wrapper that copies position properties
+	createWrapper: function( element ) {
+
+		// if the element is already wrapped, return it
+		if ( element.parent().is( ".ui-effects-wrapper" )) {
+			return element.parent();
+		}
+
+		// wrap the element
+		var props = {
+				width: element.outerWidth(true),
+				height: element.outerHeight(true),
+				"float": element.css( "float" )
+			},
+			wrapper = $( "<div></div>" )
+				.addClass( "ui-effects-wrapper" )
+				.css({
+					fontSize: "100%",
+					background: "transparent",
+					border: "none",
+					margin: 0,
+					padding: 0
+				}),
+			// Store the size in case width/height are defined in % - Fixes #5245
+			size = {
+				width: element.width(),
+				height: element.height()
+			},
+			active = document.activeElement;
+
+		// support: Firefox
+		// Firefox incorrectly exposes anonymous content
+		// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
+		try {
+			active.id;
+		} catch( e ) {
+			active = document.body;
+		}
+
+		element.wrap( wrapper );
+
+		// Fixes #7595 - Elements lose focus when wrapped.
+		if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+			$( active ).focus();
+		}
+
+		wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element
+
+		// transfer positioning properties to the wrapper
+		if ( element.css( "position" ) === "static" ) {
+			wrapper.css({ position: "relative" });
+			element.css({ position: "relative" });
+		} else {
+			$.extend( props, {
+				position: element.css( "position" ),
+				zIndex: element.css( "z-index" )
+			});
+			$.each([ "top", "left", "bottom", "right" ], function(i, pos) {
+				props[ pos ] = element.css( pos );
+				if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
+					props[ pos ] = "auto";
+				}
+			});
+			element.css({
+				position: "relative",
+				top: 0,
+				left: 0,
+				right: "auto",
+				bottom: "auto"
+			});
+		}
+		element.css(size);
+
+		return wrapper.css( props ).show();
+	},
+
+	removeWrapper: function( element ) {
+		var active = document.activeElement;
+
+		if ( element.parent().is( ".ui-effects-wrapper" ) ) {
+			element.parent().replaceWith( element );
+
+			// Fixes #7595 - Elements lose focus when wrapped.
+			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+				$( active ).focus();
+			}
+		}
+
+
+		return element;
+	},
+
+	setTransition: function( element, list, factor, value ) {
+		value = value || {};
+		$.each( list, function( i, x ) {
+			var unit = element.cssUnit( x );
+			if ( unit[ 0 ] > 0 ) {
+				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
+			}
+		});
+		return value;
+	}
+});
+
+// return an effect options object for the given parameters:
+function _normalizeArguments( effect, options, speed, callback ) {
+
+	// allow passing all options as the first parameter
+	if ( $.isPlainObject( effect ) ) {
+		options = effect;
+		effect = effect.effect;
+	}
+
+	// convert to an object
+	effect = { effect: effect };
+
+	// catch (effect, null, ...)
+	if ( options == null ) {
+		options = {};
+	}
+
+	// catch (effect, callback)
+	if ( $.isFunction( options ) ) {
+		callback = options;
+		speed = null;
+		options = {};
+	}
+
+	// catch (effect, speed, ?)
+	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
+		callback = speed;
+		speed = options;
+		options = {};
+	}
+
+	// catch (effect, options, callback)
+	if ( $.isFunction( speed ) ) {
+		callback = speed;
+		speed = null;
+	}
+
+	// add options to effect
+	if ( options ) {
+		$.extend( effect, options );
+	}
+
+	speed = speed || options.duration;
+	effect.duration = $.fx.off ? 0 :
+		typeof speed === "number" ? speed :
+		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
+		$.fx.speeds._default;
+
+	effect.complete = callback || options.complete;
+
+	return effect;
+}
+
+function standardAnimationOption( option ) {
+	// Valid standard speeds (nothing, number, named speed)
+	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
+		return true;
+	}
+
+	// Invalid strings - treat as "normal" speed
+	if ( typeof option === "string" && !$.effects.effect[ option ] ) {
+		return true;
+	}
+
+	// Complete callback
+	if ( $.isFunction( option ) ) {
+		return true;
+	}
+
+	// Options hash (but not naming an effect)
+	if ( typeof option === "object" && !option.effect ) {
+		return true;
+	}
+
+	// Didn't match any standard API
+	return false;
+}
+
+$.fn.extend({
+	effect: function( /* effect, options, speed, callback */ ) {
+		var args = _normalizeArguments.apply( this, arguments ),
+			mode = args.mode,
+			queue = args.queue,
+			effectMethod = $.effects.effect[ args.effect ];
+
+		if ( $.fx.off || !effectMethod ) {
+			// delegate to the original method (e.g., .show()) if possible
+			if ( mode ) {
+				return this[ mode ]( args.duration, args.complete );
+			} else {
+				return this.each( function() {
+					if ( args.complete ) {
+						args.complete.call( this );
+					}
+				});
+			}
+		}
+
+		function run( next ) {
+			var elem = $( this ),
+				complete = args.complete,
+				mode = args.mode;
+
+			function done() {
+				if ( $.isFunction( complete ) ) {
+					complete.call( elem[0] );
+				}
+				if ( $.isFunction( next ) ) {
+					next();
+				}
+			}
+
+			// If the element already has the correct final state, delegate to
+			// the core methods so the internal tracking of "olddisplay" works.
+			if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
+				elem[ mode ]();
+				done();
+			} else {
+				effectMethod.call( elem[0], args, done );
+			}
+		}
+
+		return queue === false ? this.each( run ) : this.queue( queue || "fx", run );
+	},
+
+	show: (function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "show";
+				return this.effect.call( this, args );
+			}
+		};
+	})( $.fn.show ),
+
+	hide: (function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "hide";
+				return this.effect.call( this, args );
+			}
+		};
+	})( $.fn.hide ),
+
+	toggle: (function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "toggle";
+				return this.effect.call( this, args );
+			}
+		};
+	})( $.fn.toggle ),
+
+	// helper functions
+	cssUnit: function(key) {
+		var style = this.css( key ),
+			val = [];
+
+		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
+			if ( style.indexOf( unit ) > 0 ) {
+				val = [ parseFloat( style ), unit ];
+			}
+		});
+		return val;
+	}
+});
+
+})();
+
+/******************************************************************************/
+/*********************************** EASING ***********************************/
+/******************************************************************************/
+
+(function() {
+
+// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
+
+var baseEasings = {};
+
+$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
+	baseEasings[ name ] = function( p ) {
+		return Math.pow( p, i + 2 );
+	};
+});
+
+$.extend( baseEasings, {
+	Sine: function ( p ) {
+		return 1 - Math.cos( p * Math.PI / 2 );
+	},
+	Circ: function ( p ) {
+		return 1 - Math.sqrt( 1 - p * p );
+	},
+	Elastic: function( p ) {
+		return p === 0 || p === 1 ? p :
+			-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );
+	},
+	Back: function( p ) {
+		return p * p * ( 3 * p - 2 );
+	},
+	Bounce: function ( p ) {
+		var pow2,
+			bounce = 4;
+
+		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
+		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
+	}
+});
+
+$.each( baseEasings, function( name, easeIn ) {
+	$.easing[ "easeIn" + name ] = easeIn;
+	$.easing[ "easeOut" + name ] = function( p ) {
+		return 1 - easeIn( 1 - p );
+	};
+	$.easing[ "easeInOut" + name ] = function( p ) {
+		return p < 0.5 ?
+			easeIn( p * 2 ) / 2 :
+			1 - easeIn( p * -2 + 2 ) / 2;
+	};
+});
+
+})();
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+var uid = 0,
+	hideProps = {},
+	showProps = {};
+
+hideProps.height = hideProps.paddingTop = hideProps.paddingBottom =
+	hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide";
+showProps.height = showProps.paddingTop = showProps.paddingBottom =
+	showProps.borderTopWidth = showProps.borderBottomWidth = "show";
+
+$.widget( "ui.accordion", {
+	version: "1.10.3",
+	options: {
+		active: 0,
+		animate: {},
+		collapsible: false,
+		event: "click",
+		header: "> li > :first-child,> :not(li):even",
+		heightStyle: "auto",
+		icons: {
+			activeHeader: "ui-icon-triangle-1-s",
+			header: "ui-icon-triangle-1-e"
+		},
+
+		// callbacks
+		activate: null,
+		beforeActivate: null
+	},
+
+	_create: function() {
+		var options = this.options;
+		this.prevShow = this.prevHide = $();
+		this.element.addClass( "ui-accordion ui-widget ui-helper-reset" )
+			// ARIA
+			.attr( "role", "tablist" );
+
+		// don't allow collapsible: false and active: false / null
+		if ( !options.collapsible && (options.active === false || options.active == null) ) {
+			options.active = 0;
+		}
+
+		this._processPanels();
+		// handle negative values
+		if ( options.active < 0 ) {
+			options.active += this.headers.length;
+		}
+		this._refresh();
+	},
+
+	_getCreateEventData: function() {
+		return {
+			header: this.active,
+			panel: !this.active.length ? $() : this.active.next(),
+			content: !this.active.length ? $() : this.active.next()
+		};
+	},
+
+	_createIcons: function() {
+		var icons = this.options.icons;
+		if ( icons ) {
+			$( "<span>" )
+				.addClass( "ui-accordion-header-icon ui-icon " + icons.header )
+				.prependTo( this.headers );
+			this.active.children( ".ui-accordion-header-icon" )
+				.removeClass( icons.header )
+				.addClass( icons.activeHeader );
+			this.headers.addClass( "ui-accordion-icons" );
+		}
+	},
+
+	_destroyIcons: function() {
+		this.headers
+			.removeClass( "ui-accordion-icons" )
+			.children( ".ui-accordion-header-icon" )
+				.remove();
+	},
+
+	_destroy: function() {
+		var contents;
+
+		// clean up main element
+		this.element
+			.removeClass( "ui-accordion ui-widget ui-helper-reset" )
+			.removeAttr( "role" );
+
+		// clean up headers
+		this.headers
+			.removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-selected" )
+			.removeAttr( "aria-controls" )
+			.removeAttr( "tabIndex" )
+			.each(function() {
+				if ( /^ui-accordion/.test( this.id ) ) {
+					this.removeAttribute( "id" );
+				}
+			});
+		this._destroyIcons();
+
+		// clean up content panels
+		contents = this.headers.next()
+			.css( "display", "" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-expanded" )
+			.removeAttr( "aria-hidden" )
+			.removeAttr( "aria-labelledby" )
+			.removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" )
+			.each(function() {
+				if ( /^ui-accordion/.test( this.id ) ) {
+					this.removeAttribute( "id" );
+				}
+			});
+		if ( this.options.heightStyle !== "content" ) {
+			contents.css( "height", "" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "event" ) {
+			if ( this.options.event ) {
+				this._off( this.headers, this.options.event );
+			}
+			this._setupEvents( value );
+		}
+
+		this._super( key, value );
+
+		// setting collapsible: false while collapsed; open first panel
+		if ( key === "collapsible" && !value && this.options.active === false ) {
+			this._activate( 0 );
+		}
+
+		if ( key === "icons" ) {
+			this._destroyIcons();
+			if ( value ) {
+				this._createIcons();
+			}
+		}
+
+		// #5332 - opacity doesn't cascade to positioned elements in IE
+		// so we need to add the disabled class to the headers and panels
+		if ( key === "disabled" ) {
+			this.headers.add( this.headers.next() )
+				.toggleClass( "ui-state-disabled", !!value );
+		}
+	},
+
+	_keydown: function( event ) {
+		/*jshint maxcomplexity:15*/
+		if ( event.altKey || event.ctrlKey ) {
+			return;
+		}
+
+		var keyCode = $.ui.keyCode,
+			length = this.headers.length,
+			currentIndex = this.headers.index( event.target ),
+			toFocus = false;
+
+		switch ( event.keyCode ) {
+			case keyCode.RIGHT:
+			case keyCode.DOWN:
+				toFocus = this.headers[ ( currentIndex + 1 ) % length ];
+				break;
+			case keyCode.LEFT:
+			case keyCode.UP:
+				toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
+				break;
+			case keyCode.SPACE:
+			case keyCode.ENTER:
+				this._eventHandler( event );
+				break;
+			case keyCode.HOME:
+				toFocus = this.headers[ 0 ];
+				break;
+			case keyCode.END:
+				toFocus = this.headers[ length - 1 ];
+				break;
+		}
+
+		if ( toFocus ) {
+			$( event.target ).attr( "tabIndex", -1 );
+			$( toFocus ).attr( "tabIndex", 0 );
+			toFocus.focus();
+			event.preventDefault();
+		}
+	},
+
+	_panelKeyDown : function( event ) {
+		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
+			$( event.currentTarget ).prev().focus();
+		}
+	},
+
+	refresh: function() {
+		var options = this.options;
+		this._processPanels();
+
+		// was collapsed or no panel
+		if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {
+			options.active = false;
+			this.active = $();
+		// active false only when collapsible is true
+		} else if ( options.active === false ) {
+			this._activate( 0 );
+		// was active, but active panel is gone
+		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			// all remaining panel are disabled
+			if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) {
+				options.active = false;
+				this.active = $();
+			// activate previous panel
+			} else {
+				this._activate( Math.max( 0, options.active - 1 ) );
+			}
+		// was active, active panel still exists
+		} else {
+			// make sure active index is correct
+			options.active = this.headers.index( this.active );
+		}
+
+		this._destroyIcons();
+
+		this._refresh();
+	},
+
+	_processPanels: function() {
+		this.headers = this.element.find( this.options.header )
+			.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" );
+
+		this.headers.next()
+			.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
+			.filter(":not(.ui-accordion-content-active)")
+			.hide();
+	},
+
+	_refresh: function() {
+		var maxHeight,
+			options = this.options,
+			heightStyle = options.heightStyle,
+			parent = this.element.parent(),
+			accordionId = this.accordionId = "ui-accordion-" +
+				(this.element.attr( "id" ) || ++uid);
+
+		this.active = this._findActive( options.active )
+			.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" )
+			.removeClass( "ui-corner-all" );
+		this.active.next()
+			.addClass( "ui-accordion-content-active" )
+			.show();
+
+		this.headers
+			.attr( "role", "tab" )
+			.each(function( i ) {
+				var header = $( this ),
+					headerId = header.attr( "id" ),
+					panel = header.next(),
+					panelId = panel.attr( "id" );
+				if ( !headerId ) {
+					headerId = accordionId + "-header-" + i;
+					header.attr( "id", headerId );
+				}
+				if ( !panelId ) {
+					panelId = accordionId + "-panel-" + i;
+					panel.attr( "id", panelId );
+				}
+				header.attr( "aria-controls", panelId );
+				panel.attr( "aria-labelledby", headerId );
+			})
+			.next()
+				.attr( "role", "tabpanel" );
+
+		this.headers
+			.not( this.active )
+			.attr({
+				"aria-selected": "false",
+				tabIndex: -1
+			})
+			.next()
+				.attr({
+					"aria-expanded": "false",
+					"aria-hidden": "true"
+				})
+				.hide();
+
+		// make sure at least one header is in the tab order
+		if ( !this.active.length ) {
+			this.headers.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active.attr({
+				"aria-selected": "true",
+				tabIndex: 0
+			})
+			.next()
+				.attr({
+					"aria-expanded": "true",
+					"aria-hidden": "false"
+				});
+		}
+
+		this._createIcons();
+
+		this._setupEvents( options.event );
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			this.element.siblings( ":visible" ).each(function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			});
+
+			this.headers.each(function() {
+				maxHeight -= $( this ).outerHeight( true );
+			});
+
+			this.headers.next()
+				.each(function() {
+					$( this ).height( Math.max( 0, maxHeight -
+						$( this ).innerHeight() + $( this ).height() ) );
+				})
+				.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.headers.next()
+				.each(function() {
+					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
+				})
+				.height( maxHeight );
+		}
+	},
+
+	_activate: function( index ) {
+		var active = this._findActive( index )[ 0 ];
+
+		// trying to activate the already active panel
+		if ( active === this.active[ 0 ] ) {
+			return;
+		}
+
+		// trying to collapse, simulate a click on the currently active header
+		active = active || this.active[ 0 ];
+
+		this._eventHandler({
+			target: active,
+			currentTarget: active,
+			preventDefault: $.noop
+		});
+	},
+
+	_findActive: function( selector ) {
+		return typeof selector === "number" ? this.headers.eq( selector ) : $();
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			keydown: "_keydown"
+		};
+		if ( event ) {
+			$.each( event.split(" "), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			});
+		}
+
+		this._off( this.headers.add( this.headers.next() ) );
+		this._on( this.headers, events );
+		this._on( this.headers.next(), { keydown: "_panelKeyDown" });
+		this._hoverable( this.headers );
+		this._focusable( this.headers );
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			clicked = $( event.currentTarget ),
+			clickedIsActive = clicked[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : clicked.next(),
+			toHide = active.next(),
+			eventData = {
+				oldHeader: active,
+				oldPanel: toHide,
+				newHeader: collapsing ? $() : clicked,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if (
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.headers.index( clicked );
+
+		// when the call to ._toggle() comes after the class changes
+		// it causes a very odd bug in IE 8 (see #6720)
+		this.active = clickedIsActive ? $() : clicked;
+		this._toggle( eventData );
+
+		// switch classes
+		// corner classes on the previously active header stay after the animation
+		active.removeClass( "ui-accordion-header-active ui-state-active" );
+		if ( options.icons ) {
+			active.children( ".ui-accordion-header-icon" )
+				.removeClass( options.icons.activeHeader )
+				.addClass( options.icons.header );
+		}
+
+		if ( !clickedIsActive ) {
+			clicked
+				.removeClass( "ui-corner-all" )
+				.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );
+			if ( options.icons ) {
+				clicked.children( ".ui-accordion-header-icon" )
+					.removeClass( options.icons.header )
+					.addClass( options.icons.activeHeader );
+			}
+
+			clicked
+				.next()
+				.addClass( "ui-accordion-content-active" );
+		}
+	},
+
+	_toggle: function( data ) {
+		var toShow = data.newPanel,
+			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
+
+		// handle activating a panel during the animation for another activation
+		this.prevShow.add( this.prevHide ).stop( true, true );
+		this.prevShow = toShow;
+		this.prevHide = toHide;
+
+		if ( this.options.animate ) {
+			this._animate( toShow, toHide, data );
+		} else {
+			toHide.hide();
+			toShow.show();
+			this._toggleComplete( data );
+		}
+
+		toHide.attr({
+			"aria-expanded": "false",
+			"aria-hidden": "true"
+		});
+		toHide.prev().attr( "aria-selected", "false" );
+		// if we're switching panels, remove the old header from the tab order
+		// if we're opening from collapsed state, remove the previous header from the tab order
+		// if we're collapsing, then keep the collapsing header in the tab order
+		if ( toShow.length && toHide.length ) {
+			toHide.prev().attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.headers.filter(function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			})
+			.attr( "tabIndex", -1 );
+		}
+
+		toShow
+			.attr({
+				"aria-expanded": "true",
+				"aria-hidden": "false"
+			})
+			.prev()
+				.attr({
+					"aria-selected": "true",
+					tabIndex: 0
+				});
+	},
+
+	_animate: function( toShow, toHide, data ) {
+		var total, easing, duration,
+			that = this,
+			adjust = 0,
+			down = toShow.length &&
+				( !toHide.length || ( toShow.index() < toHide.index() ) ),
+			animate = this.options.animate || {},
+			options = down && animate.down || animate,
+			complete = function() {
+				that._toggleComplete( data );
+			};
+
+		if ( typeof options === "number" ) {
+			duration = options;
+		}
+		if ( typeof options === "string" ) {
+			easing = options;
+		}
+		// fall back from options to animation in case of partial down settings
+		easing = easing || options.easing || animate.easing;
+		duration = duration || options.duration || animate.duration;
+
+		if ( !toHide.length ) {
+			return toShow.animate( showProps, duration, easing, complete );
+		}
+		if ( !toShow.length ) {
+			return toHide.animate( hideProps, duration, easing, complete );
+		}
+
+		total = toShow.show().outerHeight();
+		toHide.animate( hideProps, {
+			duration: duration,
+			easing: easing,
+			step: function( now, fx ) {
+				fx.now = Math.round( now );
+			}
+		});
+		toShow
+			.hide()
+			.animate( showProps, {
+				duration: duration,
+				easing: easing,
+				complete: complete,
+				step: function( now, fx ) {
+					fx.now = Math.round( now );
+					if ( fx.prop !== "height" ) {
+						adjust += fx.now;
+					} else if ( that.options.heightStyle !== "content" ) {
+						fx.now = Math.round( total - toHide.outerHeight() - adjust );
+						adjust = 0;
+					}
+				}
+			});
+	},
+
+	_toggleComplete: function( data ) {
+		var toHide = data.oldPanel;
+
+		toHide
+			.removeClass( "ui-accordion-content-active" )
+			.prev()
+				.removeClass( "ui-corner-top" )
+				.addClass( "ui-corner-all" );
+
+		// Work around for rendering bug in IE (#5421)
+		if ( toHide.length ) {
+			toHide.parent()[0].className = toHide.parent()[0].className;
+		}
+
+		this._trigger( "activate", null, data );
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// used to prevent race conditions with remote data sources
+var requestIndex = 0;
+
+$.widget( "ui.autocomplete", {
+	version: "1.10.3",
+	defaultElement: "<input>",
+	options: {
+		appendTo: null,
+		autoFocus: false,
+		delay: 300,
+		minLength: 1,
+		position: {
+			my: "left top",
+			at: "left bottom",
+			collision: "none"
+		},
+		source: null,
+
+		// callbacks
+		change: null,
+		close: null,
+		focus: null,
+		open: null,
+		response: null,
+		search: null,
+		select: null
+	},
+
+	pending: 0,
+
+	_create: function() {
+		// Some browsers only repeat keydown events, not keypress events,
+		// so we use the suppressKeyPress flag to determine if we've already
+		// handled the keydown event. #7269
+		// Unfortunately the code for & in keypress is the same as the up arrow,
+		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
+		// events when we know the keydown event was used to modify the
+		// search term. #7799
+		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
+			nodeName = this.element[0].nodeName.toLowerCase(),
+			isTextarea = nodeName === "textarea",
+			isInput = nodeName === "input";
+
+		this.isMultiLine =
+			// Textareas are always multi-line
+			isTextarea ? true :
+			// Inputs are always single-line, even if inside a contentEditable element
+			// IE also treats inputs as contentEditable
+			isInput ? false :
+			// All other element types are determined by whether or not they're contentEditable
+			this.element.prop( "isContentEditable" );
+
+		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
+		this.isNewMenu = true;
+
+		this.element
+			.addClass( "ui-autocomplete-input" )
+			.attr( "autocomplete", "off" );
+
+		this._on( this.element, {
+			keydown: function( event ) {
+				/*jshint maxcomplexity:15*/
+				if ( this.element.prop( "readOnly" ) ) {
+					suppressKeyPress = true;
+					suppressInput = true;
+					suppressKeyPressRepeat = true;
+					return;
+				}
+
+				suppressKeyPress = false;
+				suppressInput = false;
+				suppressKeyPressRepeat = false;
+				var keyCode = $.ui.keyCode;
+				switch( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					suppressKeyPress = true;
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					suppressKeyPress = true;
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					suppressKeyPress = true;
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					suppressKeyPress = true;
+					this._keyEvent( "next", event );
+					break;
+				case keyCode.ENTER:
+				case keyCode.NUMPAD_ENTER:
+					// when menu is open and has focus
+					if ( this.menu.active ) {
+						// #6055 - Opera still allows the keypress to occur
+						// which causes forms to submit
+						suppressKeyPress = true;
+						event.preventDefault();
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.TAB:
+					if ( this.menu.active ) {
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.ESCAPE:
+					if ( this.menu.element.is( ":visible" ) ) {
+						this._value( this.term );
+						this.close( event );
+						// Different browsers have different default behavior for escape
+						// Single press can mean undo or clear
+						// Double press in IE means clear the whole form
+						event.preventDefault();
+					}
+					break;
+				default:
+					suppressKeyPressRepeat = true;
+					// search timeout should be triggered before the input value is changed
+					this._searchTimeout( event );
+					break;
+				}
+			},
+			keypress: function( event ) {
+				if ( suppressKeyPress ) {
+					suppressKeyPress = false;
+					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+						event.preventDefault();
+					}
+					return;
+				}
+				if ( suppressKeyPressRepeat ) {
+					return;
+				}
+
+				// replicate some key handlers to allow them to repeat in Firefox and Opera
+				var keyCode = $.ui.keyCode;
+				switch( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					this._keyEvent( "next", event );
+					break;
+				}
+			},
+			input: function( event ) {
+				if ( suppressInput ) {
+					suppressInput = false;
+					event.preventDefault();
+					return;
+				}
+				this._searchTimeout( event );
+			},
+			focus: function() {
+				this.selectedItem = null;
+				this.previous = this._value();
+			},
+			blur: function( event ) {
+				if ( this.cancelBlur ) {
+					delete this.cancelBlur;
+					return;
+				}
+
+				clearTimeout( this.searching );
+				this.close( event );
+				this._change( event );
+			}
+		});
+
+		this._initSource();
+		this.menu = $( "<ul>" )
+			.addClass( "ui-autocomplete ui-front" )
+			.appendTo( this._appendTo() )
+			.menu({
+				// disable ARIA support, the live region takes care of that
+				role: null
+			})
+			.hide()
+			.data( "ui-menu" );
+
+		this._on( this.menu.element, {
+			mousedown: function( event ) {
+				// prevent moving focus out of the text field
+				event.preventDefault();
+
+				// IE doesn't prevent moving focus even with event.preventDefault()
+				// so we set a flag to know when we should ignore the blur event
+				this.cancelBlur = true;
+				this._delay(function() {
+					delete this.cancelBlur;
+				});
+
+				// clicking on the scrollbar causes focus to shift to the body
+				// but we can't detect a mouseup or a click immediately afterward
+				// so we have to track the next mousedown and close the menu if
+				// the user clicks somewhere outside of the autocomplete
+				var menuElement = this.menu.element[ 0 ];
+				if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
+					this._delay(function() {
+						var that = this;
+						this.document.one( "mousedown", function( event ) {
+							if ( event.target !== that.element[ 0 ] &&
+									event.target !== menuElement &&
+									!$.contains( menuElement, event.target ) ) {
+								that.close();
+							}
+						});
+					});
+				}
+			},
+			menufocus: function( event, ui ) {
+				// support: Firefox
+				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
+				if ( this.isNewMenu ) {
+					this.isNewMenu = false;
+					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
+						this.menu.blur();
+
+						this.document.one( "mousemove", function() {
+							$( event.target ).trigger( event.originalEvent );
+						});
+
+						return;
+					}
+				}
+
+				var item = ui.item.data( "ui-autocomplete-item" );
+				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
+					// use value to match what will end up in the input, if it was a key event
+					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
+						this._value( item.value );
+					}
+				} else {
+					// Normally the input is populated with the item's value as the
+					// menu is navigated, causing screen readers to notice a change and
+					// announce the item. Since the focus event was canceled, this doesn't
+					// happen, so we update the live region so that screen readers can
+					// still notice the change and announce it.
+					this.liveRegion.text( item.value );
+				}
+			},
+			menuselect: function( event, ui ) {
+				var item = ui.item.data( "ui-autocomplete-item" ),
+					previous = this.previous;
+
+				// only trigger when focus was lost (click on menu)
+				if ( this.element[0] !== this.document[0].activeElement ) {
+					this.element.focus();
+					this.previous = previous;
+					// #6109 - IE triggers two focus events and the second
+					// is asynchronous, so we need to reset the previous
+					// term synchronously and asynchronously :-(
+					this._delay(function() {
+						this.previous = previous;
+						this.selectedItem = item;
+					});
+				}
+
+				if ( false !== this._trigger( "select", event, { item: item } ) ) {
+					this._value( item.value );
+				}
+				// reset the term after the select event
+				// this allows custom select handling to work properly
+				this.term = this._value();
+
+				this.close( event );
+				this.selectedItem = item;
+			}
+		});
+
+		this.liveRegion = $( "<span>", {
+				role: "status",
+				"aria-live": "polite"
+			})
+			.addClass( "ui-helper-hidden-accessible" )
+			.insertBefore( this.element );
+
+		// turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		});
+	},
+
+	_destroy: function() {
+		clearTimeout( this.searching );
+		this.element
+			.removeClass( "ui-autocomplete-input" )
+			.removeAttr( "autocomplete" );
+		this.menu.element.remove();
+		this.liveRegion.remove();
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "source" ) {
+			this._initSource();
+		}
+		if ( key === "appendTo" ) {
+			this.menu.element.appendTo( this._appendTo() );
+		}
+		if ( key === "disabled" && value && this.xhr ) {
+			this.xhr.abort();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+
+		if ( element ) {
+			element = element.jquery || element.nodeType ?
+				$( element ) :
+				this.document.find( element ).eq( 0 );
+		}
+
+		if ( !element ) {
+			element = this.element.closest( ".ui-front" );
+		}
+
+		if ( !element.length ) {
+			element = this.document[0].body;
+		}
+
+		return element;
+	},
+
+	_initSource: function() {
+		var array, url,
+			that = this;
+		if ( $.isArray(this.options.source) ) {
+			array = this.options.source;
+			this.source = function( request, response ) {
+				response( $.ui.autocomplete.filter( array, request.term ) );
+			};
+		} else if ( typeof this.options.source === "string" ) {
+			url = this.options.source;
+			this.source = function( request, response ) {
+				if ( that.xhr ) {
+					that.xhr.abort();
+				}
+				that.xhr = $.ajax({
+					url: url,
+					data: request,
+					dataType: "json",
+					success: function( data ) {
+						response( data );
+					},
+					error: function() {
+						response( [] );
+					}
+				});
+			};
+		} else {
+			this.source = this.options.source;
+		}
+	},
+
+	_searchTimeout: function( event ) {
+		clearTimeout( this.searching );
+		this.searching = this._delay(function() {
+			// only search if the value has changed
+			if ( this.term !== this._value() ) {
+				this.selectedItem = null;
+				this.search( null, event );
+			}
+		}, this.options.delay );
+	},
+
+	search: function( value, event ) {
+		value = value != null ? value : this._value();
+
+		// always save the actual value, not the one passed as an argument
+		this.term = this._value();
+
+		if ( value.length < this.options.minLength ) {
+			return this.close( event );
+		}
+
+		if ( this._trigger( "search", event ) === false ) {
+			return;
+		}
+
+		return this._search( value );
+	},
+
+	_search: function( value ) {
+		this.pending++;
+		this.element.addClass( "ui-autocomplete-loading" );
+		this.cancelSearch = false;
+
+		this.source( { term: value }, this._response() );
+	},
+
+	_response: function() {
+		var that = this,
+			index = ++requestIndex;
+
+		return function( content ) {
+			if ( index === requestIndex ) {
+				that.__response( content );
+			}
+
+			that.pending--;
+			if ( !that.pending ) {
+				that.element.removeClass( "ui-autocomplete-loading" );
+			}
+		};
+	},
+
+	__response: function( content ) {
+		if ( content ) {
+			content = this._normalize( content );
+		}
+		this._trigger( "response", null, { content: content } );
+		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
+			this._suggest( content );
+			this._trigger( "open" );
+		} else {
+			// use ._close() instead of .close() so we don't cancel future searches
+			this._close();
+		}
+	},
+
+	close: function( event ) {
+		this.cancelSearch = true;
+		this._close( event );
+	},
+
+	_close: function( event ) {
+		if ( this.menu.element.is( ":visible" ) ) {
+			this.menu.element.hide();
+			this.menu.blur();
+			this.isNewMenu = true;
+			this._trigger( "close", event );
+		}
+	},
+
+	_change: function( event ) {
+		if ( this.previous !== this._value() ) {
+			this._trigger( "change", event, { item: this.selectedItem } );
+		}
+	},
+
+	_normalize: function( items ) {
+		// assume all items have the right format when the first item is complete
+		if ( items.length && items[0].label && items[0].value ) {
+			return items;
+		}
+		return $.map( items, function( item ) {
+			if ( typeof item === "string" ) {
+				return {
+					label: item,
+					value: item
+				};
+			}
+			return $.extend({
+				label: item.label || item.value,
+				value: item.value || item.label
+			}, item );
+		});
+	},
+
+	_suggest: function( items ) {
+		var ul = this.menu.element.empty();
+		this._renderMenu( ul, items );
+		this.isNewMenu = true;
+		this.menu.refresh();
+
+		// size and position menu
+		ul.show();
+		this._resizeMenu();
+		ul.position( $.extend({
+			of: this.element
+		}, this.options.position ));
+
+		if ( this.options.autoFocus ) {
+			this.menu.next();
+		}
+	},
+
+	_resizeMenu: function() {
+		var ul = this.menu.element;
+		ul.outerWidth( Math.max(
+			// Firefox wraps long text (possibly a rounding bug)
+			// so we add 1px to avoid the wrapping (#7513)
+			ul.width( "" ).outerWidth() + 1,
+			this.element.outerWidth()
+		) );
+	},
+
+	_renderMenu: function( ul, items ) {
+		var that = this;
+		$.each( items, function( index, item ) {
+			that._renderItemData( ul, item );
+		});
+	},
+
+	_renderItemData: function( ul, item ) {
+		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
+	},
+
+	_renderItem: function( ul, item ) {
+		return $( "<li>" )
+			.append( $( "<a>" ).text( item.label ) )
+			.appendTo( ul );
+	},
+
+	_move: function( direction, event ) {
+		if ( !this.menu.element.is( ":visible" ) ) {
+			this.search( null, event );
+			return;
+		}
+		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
+				this.menu.isLastItem() && /^next/.test( direction ) ) {
+			this._value( this.term );
+			this.menu.blur();
+			return;
+		}
+		this.menu[ direction ]( event );
+	},
+
+	widget: function() {
+		return this.menu.element;
+	},
+
+	_value: function() {
+		return this.valueMethod.apply( this.element, arguments );
+	},
+
+	_keyEvent: function( keyEvent, event ) {
+		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+			this._move( keyEvent, event );
+
+			// prevents moving cursor to beginning/end of the text field in some browsers
+			event.preventDefault();
+		}
+	}
+});
+
+$.extend( $.ui.autocomplete, {
+	escapeRegex: function( value ) {
+		return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
+	},
+	filter: function(array, term) {
+		var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
+		return $.grep( array, function(value) {
+			return matcher.test( value.label || value.value || value );
+		});
+	}
+});
+
+
+// live region extension, adding a `messages` option
+// NOTE: This is an experimental API. We are still investigating
+// a full solution for string manipulation and internationalization.
+$.widget( "ui.autocomplete", $.ui.autocomplete, {
+	options: {
+		messages: {
+			noResults: "No search results.",
+			results: function( amount ) {
+				return amount + ( amount > 1 ? " results are" : " result is" ) +
+					" available, use up and down arrow keys to navigate.";
+			}
+		}
+	},
+
+	__response: function( content ) {
+		var message;
+		this._superApply( arguments );
+		if ( this.options.disabled || this.cancelSearch ) {
+			return;
+		}
+		if ( content && content.length ) {
+			message = this.options.messages.results( content.length );
+		} else {
+			message = this.options.messages.noResults;
+		}
+		this.liveRegion.text( message );
+	}
+});
+
+}( jQuery ));
+
+(function( $, undefined ) {
+
+var lastActive, startXPos, startYPos, clickDragged,
+	baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
+	stateClasses = "ui-state-hover ui-state-active ",
+	typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
+	formResetHandler = function() {
+		var form = $( this );
+		setTimeout(function() {
+			form.find( ":ui-button" ).button( "refresh" );
+		}, 1 );
+	},
+	radioGroup = function( radio ) {
+		var name = radio.name,
+			form = radio.form,
+			radios = $( [] );
+		if ( name ) {
+			name = name.replace( /'/g, "\\'" );
+			if ( form ) {
+				radios = $( form ).find( "[name='" + name + "']" );
+			} else {
+				radios = $( "[name='" + name + "']", radio.ownerDocument )
+					.filter(function() {
+						return !this.form;
+					});
+			}
+		}
+		return radios;
+	};
+
+$.widget( "ui.button", {
+	version: "1.10.3",
+	defaultElement: "<button>",
+	options: {
+		disabled: null,
+		text: true,
+		label: null,
+		icons: {
+			primary: null,
+			secondary: null
+		}
+	},
+	_create: function() {
+		this.element.closest( "form" )
+			.unbind( "reset" + this.eventNamespace )
+			.bind( "reset" + this.eventNamespace, formResetHandler );
+
+		if ( typeof this.options.disabled !== "boolean" ) {
+			this.options.disabled = !!this.element.prop( "disabled" );
+		} else {
+			this.element.prop( "disabled", this.options.disabled );
+		}
+
+		this._determineButtonType();
+		this.hasTitle = !!this.buttonElement.attr( "title" );
+
+		var that = this,
+			options = this.options,
+			toggleButton = this.type === "checkbox" || this.type === "radio",
+			activeClass = !toggleButton ? "ui-state-active" : "",
+			focusClass = "ui-state-focus";
+
+		if ( options.label === null ) {
+			options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
+		}
+
+		this._hoverable( this.buttonElement );
+
+		this.buttonElement
+			.addClass( baseClasses )
+			.attr( "role", "button" )
+			.bind( "mouseenter" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				if ( this === lastActive ) {
+					$( this ).addClass( "ui-state-active" );
+				}
+			})
+			.bind( "mouseleave" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				$( this ).removeClass( activeClass );
+			})
+			.bind( "click" + this.eventNamespace, function( event ) {
+				if ( options.disabled ) {
+					event.preventDefault();
+					event.stopImmediatePropagation();
+				}
+			});
+
+		this.element
+			.bind( "focus" + this.eventNamespace, function() {
+				// no need to check disabled, focus won't be triggered anyway
+				that.buttonElement.addClass( focusClass );
+			})
+			.bind( "blur" + this.eventNamespace, function() {
+				that.buttonElement.removeClass( focusClass );
+			});
+
+		if ( toggleButton ) {
+			this.element.bind( "change" + this.eventNamespace, function() {
+				if ( clickDragged ) {
+					return;
+				}
+				that.refresh();
+			});
+			// if mouse moves between mousedown and mouseup (drag) set clickDragged flag
+			// prevents issue where button state changes but checkbox/radio checked state
+			// does not in Firefox (see ticket #6970)
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					clickDragged = false;
+					startXPos = event.pageX;
+					startYPos = event.pageY;
+				})
+				.bind( "mouseup" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					if ( startXPos !== event.pageX || startYPos !== event.pageY ) {
+						clickDragged = true;
+					}
+			});
+		}
+
+		if ( this.type === "checkbox" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+			});
+		} else if ( this.type === "radio" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+				$( this ).addClass( "ui-state-active" );
+				that.buttonElement.attr( "aria-pressed", "true" );
+
+				var radio = that.element[ 0 ];
+				radioGroup( radio )
+					.not( radio )
+					.map(function() {
+						return $( this ).button( "widget" )[ 0 ];
+					})
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			});
+		} else {
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).addClass( "ui-state-active" );
+					lastActive = this;
+					that.document.one( "mouseup", function() {
+						lastActive = null;
+					});
+				})
+				.bind( "mouseup" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).removeClass( "ui-state-active" );
+				})
+				.bind( "keydown" + this.eventNamespace, function(event) {
+					if ( options.disabled ) {
+						return false;
+					}
+					if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {
+						$( this ).addClass( "ui-state-active" );
+					}
+				})
+				// see #8559, we bind to blur here in case the button element loses
+				// focus between keydown and keyup, it would be left in an "active" state
+				.bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
+					$( this ).removeClass( "ui-state-active" );
+				});
+
+			if ( this.buttonElement.is("a") ) {
+				this.buttonElement.keyup(function(event) {
+					if ( event.keyCode === $.ui.keyCode.SPACE ) {
+						// TODO pass through original event correctly (just as 2nd argument doesn't work)
+						$( this ).click();
+					}
+				});
+			}
+		}
+
+		// TODO: pull out $.Widget's handling for the disabled option into
+		// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
+		// be overridden by individual plugins
+		this._setOption( "disabled", options.disabled );
+		this._resetButton();
+	},
+
+	_determineButtonType: function() {
+		var ancestor, labelSelector, checked;
+
+		if ( this.element.is("[type=checkbox]") ) {
+			this.type = "checkbox";
+		} else if ( this.element.is("[type=radio]") ) {
+			this.type = "radio";
+		} else if ( this.element.is("input") ) {
+			this.type = "input";
+		} else {
+			this.type = "button";
+		}
+
+		if ( this.type === "checkbox" || this.type === "radio" ) {
+			// we don't search against the document in case the element
+			// is disconnected from the DOM
+			ancestor = this.element.parents().last();
+			labelSelector = "label[for='" + this.element.attr("id") + "']";
+			this.buttonElement = ancestor.find( labelSelector );
+			if ( !this.buttonElement.length ) {
+				ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
+				this.buttonElement = ancestor.filter( labelSelector );
+				if ( !this.buttonElement.length ) {
+					this.buttonElement = ancestor.find( labelSelector );
+				}
+			}
+			this.element.addClass( "ui-helper-hidden-accessible" );
+
+			checked = this.element.is( ":checked" );
+			if ( checked ) {
+				this.buttonElement.addClass( "ui-state-active" );
+			}
+			this.buttonElement.prop( "aria-pressed", checked );
+		} else {
+			this.buttonElement = this.element;
+		}
+	},
+
+	widget: function() {
+		return this.buttonElement;
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-helper-hidden-accessible" );
+		this.buttonElement
+			.removeClass( baseClasses + " " + stateClasses + " " + typeClasses )
+			.removeAttr( "role" )
+			.removeAttr( "aria-pressed" )
+			.html( this.buttonElement.find(".ui-button-text").html() );
+
+		if ( !this.hasTitle ) {
+			this.buttonElement.removeAttr( "title" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "disabled" ) {
+			if ( value ) {
+				this.element.prop( "disabled", true );
+			} else {
+				this.element.prop( "disabled", false );
+			}
+			return;
+		}
+		this._resetButton();
+	},
+
+	refresh: function() {
+		//See #8237 & #8828
+		var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );
+
+		if ( isDisabled !== this.options.disabled ) {
+			this._setOption( "disabled", isDisabled );
+		}
+		if ( this.type === "radio" ) {
+			radioGroup( this.element[0] ).each(function() {
+				if ( $( this ).is( ":checked" ) ) {
+					$( this ).button( "widget" )
+						.addClass( "ui-state-active" )
+						.attr( "aria-pressed", "true" );
+				} else {
+					$( this ).button( "widget" )
+						.removeClass( "ui-state-active" )
+						.attr( "aria-pressed", "false" );
+				}
+			});
+		} else if ( this.type === "checkbox" ) {
+			if ( this.element.is( ":checked" ) ) {
+				this.buttonElement
+					.addClass( "ui-state-active" )
+					.attr( "aria-pressed", "true" );
+			} else {
+				this.buttonElement
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			}
+		}
+	},
+
+	_resetButton: function() {
+		if ( this.type === "input" ) {
+			if ( this.options.label ) {
+				this.element.val( this.options.label );
+			}
+			return;
+		}
+		var buttonElement = this.buttonElement.removeClass( typeClasses ),
+			buttonText = $( "<span></span>", this.document[0] )
+				.addClass( "ui-button-text" )
+				.html( this.options.label )
+				.appendTo( buttonElement.empty() )
+				.text(),
+			icons = this.options.icons,
+			multipleIcons = icons.primary && icons.secondary,
+			buttonClasses = [];
+
+		if ( icons.primary || icons.secondary ) {
+			if ( this.options.text ) {
+				buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
+			}
+
+			if ( icons.primary ) {
+				buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
+			}
+
+			if ( icons.secondary ) {
+				buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
+			}
+
+			if ( !this.options.text ) {
+				buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
+
+				if ( !this.hasTitle ) {
+					buttonElement.attr( "title", $.trim( buttonText ) );
+				}
+			}
+		} else {
+			buttonClasses.push( "ui-button-text-only" );
+		}
+		buttonElement.addClass( buttonClasses.join( " " ) );
+	}
+});
+
+$.widget( "ui.buttonset", {
+	version: "1.10.3",
+	options: {
+		items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"
+	},
+
+	_create: function() {
+		this.element.addClass( "ui-buttonset" );
+	},
+
+	_init: function() {
+		this.refresh();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "disabled" ) {
+			this.buttons.button( "option", key, value );
+		}
+
+		this._super( key, value );
+	},
+
+	refresh: function() {
+		var rtl = this.element.css( "direction" ) === "rtl";
+
+		this.buttons = this.element.find( this.options.items )
+			.filter( ":ui-button" )
+				.button( "refresh" )
+			.end()
+			.not( ":ui-button" )
+				.button()
+			.end()
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
+				.filter( ":first" )
+					.addClass( rtl ? "ui-corner-right" : "ui-corner-left" )
+				.end()
+				.filter( ":last" )
+					.addClass( rtl ? "ui-corner-left" : "ui-corner-right" )
+				.end()
+			.end();
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-buttonset" );
+		this.buttons
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-left ui-corner-right" )
+			.end()
+			.button( "destroy" );
+	}
+});
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+$.extend($.ui, { datepicker: { version: "1.10.3" } });
+
+var PROP_NAME = "datepicker",
+	instActive;
+
+/* Date picker manager.
+   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
+   Settings for (groups of) date pickers are maintained in an instance object,
+   allowing multiple different settings on the same page. */
+
+function Datepicker() {
+	this._curInst = null; // The current instance in use
+	this._keyEvent = false; // If the last event was a key event
+	this._disabledInputs = []; // List of date picker inputs that have been disabled
+	this._datepickerShowing = false; // True if the popup picker is showing , false if not
+	this._inDialog = false; // True if showing within a "dialog", false if not
+	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
+	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
+	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
+	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
+	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
+	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
+	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
+	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
+	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
+	this.regional = []; // Available regional settings, indexed by language code
+	this.regional[""] = { // Default regional settings
+		closeText: "Done", // Display text for close link
+		prevText: "Prev", // Display text for previous month link
+		nextText: "Next", // Display text for next month link
+		currentText: "Today", // Display text for current month link
+		monthNames: ["January","February","March","April","May","June",
+			"July","August","September","October","November","December"], // Names of months for drop-down and formatting
+		monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting
+		dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting
+		dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting
+		dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday
+		weekHeader: "Wk", // Column header for week of the year
+		dateFormat: "mm/dd/yy", // See format options on parseDate
+		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
+		isRTL: false, // True if right-to-left language, false if left-to-right
+		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
+		yearSuffix: "" // Additional text to append to the year in the month headers
+	};
+	this._defaults = { // Global defaults for all the date picker instances
+		showOn: "focus", // "focus" for popup on focus,
+			// "button" for trigger button, or "both" for either
+		showAnim: "fadeIn", // Name of jQuery animation for popup
+		showOptions: {}, // Options for enhanced animations
+		defaultDate: null, // Used when field is blank: actual date,
+			// +/-number for offset from today, null for today
+		appendText: "", // Display text following the input box, e.g. showing the format
+		buttonText: "...", // Text for trigger button
+		buttonImage: "", // URL for trigger button image
+		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
+		hideIfNoPrevNext: false, // True to hide next/previous month links
+			// if not applicable, false to just disable them
+		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
+		gotoCurrent: false, // True if today link goes back to current selection instead
+		changeMonth: false, // True if month can be selected directly, false if only prev/next
+		changeYear: false, // True if year can be selected directly, false if only prev/next
+		yearRange: "c-10:c+10", // Range of years to display in drop-down,
+			// either relative to today's year (-nn:+nn), relative to currently displayed year
+			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
+		showOtherMonths: false, // True to show dates in other months, false to leave blank
+		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
+		showWeek: false, // True to show week of the year, false to not show it
+		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
+			// takes a Date and returns the number of the week for it
+		shortYearCutoff: "+10", // Short year values < this are in the current century,
+			// > this are in the previous century,
+			// string value starting with "+" for current year + value
+		minDate: null, // The earliest selectable date, or null for no limit
+		maxDate: null, // The latest selectable date, or null for no limit
+		duration: "fast", // Duration of display/closure
+		beforeShowDay: null, // Function that takes a date and returns an array with
+			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
+			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
+		beforeShow: null, // Function that takes an input field and
+			// returns a set of custom settings for the date picker
+		onSelect: null, // Define a callback function when a date is selected
+		onChangeMonthYear: null, // Define a callback function when the month or year is changed
+		onClose: null, // Define a callback function when the datepicker is closed
+		numberOfMonths: 1, // Number of months to show at a time
+		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
+		stepMonths: 1, // Number of months to step back/forward
+		stepBigMonths: 12, // Number of months to step back/forward for the big links
+		altField: "", // Selector for an alternate field to store selected dates into
+		altFormat: "", // The date format to use for the alternate field
+		constrainInput: true, // The input is constrained by the current date format
+		showButtonPanel: false, // True to show button panel, false to not show it
+		autoSize: false, // True to size the input for the date format, false to leave as is
+		disabled: false // The initial disabled state
+	};
+	$.extend(this._defaults, this.regional[""]);
+	this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));
+}
+
+$.extend(Datepicker.prototype, {
+	/* Class name added to elements to indicate already configured with a date picker. */
+	markerClassName: "hasDatepicker",
+
+	//Keep track of the maximum number of rows displayed (see #7043)
+	maxRows: 4,
+
+	// TODO rename to "widget" when switching to widget factory
+	_widgetDatepicker: function() {
+		return this.dpDiv;
+	},
+
+	/* Override the default settings for all instances of the date picker.
+	 * @param  settings  object - the new settings to use as defaults (anonymous object)
+	 * @return the manager object
+	 */
+	setDefaults: function(settings) {
+		extendRemove(this._defaults, settings || {});
+		return this;
+	},
+
+	/* Attach the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
+	 */
+	_attachDatepicker: function(target, settings) {
+		var nodeName, inline, inst;
+		nodeName = target.nodeName.toLowerCase();
+		inline = (nodeName === "div" || nodeName === "span");
+		if (!target.id) {
+			this.uuid += 1;
+			target.id = "dp" + this.uuid;
+		}
+		inst = this._newInst($(target), inline);
+		inst.settings = $.extend({}, settings || {});
+		if (nodeName === "input") {
+			this._connectDatepicker(target, inst);
+		} else if (inline) {
+			this._inlineDatepicker(target, inst);
+		}
+	},
+
+	/* Create a new instance object. */
+	_newInst: function(target, inline) {
+		var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars
+		return {id: id, input: target, // associated target
+			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
+			drawMonth: 0, drawYear: 0, // month being drawn
+			inline: inline, // is datepicker inline or not
+			dpDiv: (!inline ? this.dpDiv : // presentation div
+			bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))};
+	},
+
+	/* Attach the date picker to an input field. */
+	_connectDatepicker: function(target, inst) {
+		var input = $(target);
+		inst.append = $([]);
+		inst.trigger = $([]);
+		if (input.hasClass(this.markerClassName)) {
+			return;
+		}
+		this._attachments(input, inst);
+		input.addClass(this.markerClassName).keydown(this._doKeyDown).
+			keypress(this._doKeyPress).keyup(this._doKeyUp);
+		this._autoSize(inst);
+		$.data(target, PROP_NAME, inst);
+		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+	},
+
+	/* Make attachments based on settings. */
+	_attachments: function(input, inst) {
+		var showOn, buttonText, buttonImage,
+			appendText = this._get(inst, "appendText"),
+			isRTL = this._get(inst, "isRTL");
+
+		if (inst.append) {
+			inst.append.remove();
+		}
+		if (appendText) {
+			inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>");
+			input[isRTL ? "before" : "after"](inst.append);
+		}
+
+		input.unbind("focus", this._showDatepicker);
+
+		if (inst.trigger) {
+			inst.trigger.remove();
+		}
+
+		showOn = this._get(inst, "showOn");
+		if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field
+			input.focus(this._showDatepicker);
+		}
+		if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked
+			buttonText = this._get(inst, "buttonText");
+			buttonImage = this._get(inst, "buttonImage");
+			inst.trigger = $(this._get(inst, "buttonImageOnly") ?
+				$("<img/>").addClass(this._triggerClass).
+					attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
+				$("<button type='button'></button>").addClass(this._triggerClass).
+					html(!buttonImage ? buttonText : $("<img/>").attr(
+					{ src:buttonImage, alt:buttonText, title:buttonText })));
+			input[isRTL ? "before" : "after"](inst.trigger);
+			inst.trigger.click(function() {
+				if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {
+					$.datepicker._hideDatepicker();
+				} else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {
+					$.datepicker._hideDatepicker();
+					$.datepicker._showDatepicker(input[0]);
+				} else {
+					$.datepicker._showDatepicker(input[0]);
+				}
+				return false;
+			});
+		}
+	},
+
+	/* Apply the maximum length for the date format. */
+	_autoSize: function(inst) {
+		if (this._get(inst, "autoSize") && !inst.inline) {
+			var findMax, max, maxI, i,
+				date = new Date(2009, 12 - 1, 20), // Ensure double digits
+				dateFormat = this._get(inst, "dateFormat");
+
+			if (dateFormat.match(/[DM]/)) {
+				findMax = function(names) {
+					max = 0;
+					maxI = 0;
+					for (i = 0; i < names.length; i++) {
+						if (names[i].length > max) {
+							max = names[i].length;
+							maxI = i;
+						}
+					}
+					return maxI;
+				};
+				date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
+					"monthNames" : "monthNamesShort"))));
+				date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
+					"dayNames" : "dayNamesShort"))) + 20 - date.getDay());
+			}
+			inst.input.attr("size", this._formatDate(inst, date).length);
+		}
+	},
+
+	/* Attach an inline date picker to a div. */
+	_inlineDatepicker: function(target, inst) {
+		var divSpan = $(target);
+		if (divSpan.hasClass(this.markerClassName)) {
+			return;
+		}
+		divSpan.addClass(this.markerClassName).append(inst.dpDiv);
+		$.data(target, PROP_NAME, inst);
+		this._setDate(inst, this._getDefaultDate(inst), true);
+		this._updateDatepicker(inst);
+		this._updateAlternate(inst);
+		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
+		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
+		inst.dpDiv.css( "display", "block" );
+	},
+
+	/* Pop-up the date picker in a "dialog" box.
+	 * @param  input element - ignored
+	 * @param  date	string or Date - the initial date to display
+	 * @param  onSelect  function - the function to call when a date is selected
+	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
+	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
+	 *					event - with x/y coordinates or
+	 *					leave empty for default (screen centre)
+	 * @return the manager object
+	 */
+	_dialogDatepicker: function(input, date, onSelect, settings, pos) {
+		var id, browserWidth, browserHeight, scrollX, scrollY,
+			inst = this._dialogInst; // internal instance
+
+		if (!inst) {
+			this.uuid += 1;
+			id = "dp" + this.uuid;
+			this._dialogInput = $("<input type='text' id='" + id +
+				"' style='position: absolute; top: -100px; width: 0px;'/>");
+			this._dialogInput.keydown(this._doKeyDown);
+			$("body").append(this._dialogInput);
+			inst = this._dialogInst = this._newInst(this._dialogInput, false);
+			inst.settings = {};
+			$.data(this._dialogInput[0], PROP_NAME, inst);
+		}
+		extendRemove(inst.settings, settings || {});
+		date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);
+		this._dialogInput.val(date);
+
+		this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
+		if (!this._pos) {
+			browserWidth = document.documentElement.clientWidth;
+			browserHeight = document.documentElement.clientHeight;
+			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
+			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
+			this._pos = // should use actual width/height below
+				[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
+		}
+
+		// move input on screen for focus, but hidden behind dialog
+		this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px");
+		inst.settings.onSelect = onSelect;
+		this._inDialog = true;
+		this.dpDiv.addClass(this._dialogClass);
+		this._showDatepicker(this._dialogInput[0]);
+		if ($.blockUI) {
+			$.blockUI(this.dpDiv);
+		}
+		$.data(this._dialogInput[0], PROP_NAME, inst);
+		return this;
+	},
+
+	/* Detach a datepicker from its control.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_destroyDatepicker: function(target) {
+		var nodeName,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		$.removeData(target, PROP_NAME);
+		if (nodeName === "input") {
+			inst.append.remove();
+			inst.trigger.remove();
+			$target.removeClass(this.markerClassName).
+				unbind("focus", this._showDatepicker).
+				unbind("keydown", this._doKeyDown).
+				unbind("keypress", this._doKeyPress).
+				unbind("keyup", this._doKeyUp);
+		} else if (nodeName === "div" || nodeName === "span") {
+			$target.removeClass(this.markerClassName).empty();
+		}
+	},
+
+	/* Enable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_enableDatepicker: function(target) {
+		var nodeName, inline,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if (nodeName === "input") {
+			target.disabled = false;
+			inst.trigger.filter("button").
+				each(function() { this.disabled = false; }).end().
+				filter("img").css({opacity: "1.0", cursor: ""});
+		} else if (nodeName === "div" || nodeName === "span") {
+			inline = $target.children("." + this._inlineClass);
+			inline.children().removeClass("ui-state-disabled");
+			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
+				prop("disabled", false);
+		}
+		this._disabledInputs = $.map(this._disabledInputs,
+			function(value) { return (value === target ? null : value); }); // delete entry
+	},
+
+	/* Disable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_disableDatepicker: function(target) {
+		var nodeName, inline,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if (nodeName === "input") {
+			target.disabled = true;
+			inst.trigger.filter("button").
+				each(function() { this.disabled = true; }).end().
+				filter("img").css({opacity: "0.5", cursor: "default"});
+		} else if (nodeName === "div" || nodeName === "span") {
+			inline = $target.children("." + this._inlineClass);
+			inline.children().addClass("ui-state-disabled");
+			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
+				prop("disabled", true);
+		}
+		this._disabledInputs = $.map(this._disabledInputs,
+			function(value) { return (value === target ? null : value); }); // delete entry
+		this._disabledInputs[this._disabledInputs.length] = target;
+	},
+
+	/* Is the first field in a jQuery collection disabled as a datepicker?
+	 * @param  target	element - the target input field or division or span
+	 * @return boolean - true if disabled, false if enabled
+	 */
+	_isDisabledDatepicker: function(target) {
+		if (!target) {
+			return false;
+		}
+		for (var i = 0; i < this._disabledInputs.length; i++) {
+			if (this._disabledInputs[i] === target) {
+				return true;
+			}
+		}
+		return false;
+	},
+
+	/* Retrieve the instance data for the target control.
+	 * @param  target  element - the target input field or division or span
+	 * @return  object - the associated instance data
+	 * @throws  error if a jQuery problem getting data
+	 */
+	_getInst: function(target) {
+		try {
+			return $.data(target, PROP_NAME);
+		}
+		catch (err) {
+			throw "Missing instance data for this datepicker";
+		}
+	},
+
+	/* Update or retrieve the settings for a date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 * @param  name	object - the new settings to update or
+	 *				string - the name of the setting to change or retrieve,
+	 *				when retrieving also "all" for all instance settings or
+	 *				"defaults" for all global defaults
+	 * @param  value   any - the new value for the setting
+	 *				(omit if above is an object or to retrieve a value)
+	 */
+	_optionDatepicker: function(target, name, value) {
+		var settings, date, minDate, maxDate,
+			inst = this._getInst(target);
+
+		if (arguments.length === 2 && typeof name === "string") {
+			return (name === "defaults" ? $.extend({}, $.datepicker._defaults) :
+				(inst ? (name === "all" ? $.extend({}, inst.settings) :
+				this._get(inst, name)) : null));
+		}
+
+		settings = name || {};
+		if (typeof name === "string") {
+			settings = {};
+			settings[name] = value;
+		}
+
+		if (inst) {
+			if (this._curInst === inst) {
+				this._hideDatepicker();
+			}
+
+			date = this._getDateDatepicker(target, true);
+			minDate = this._getMinMaxDate(inst, "min");
+			maxDate = this._getMinMaxDate(inst, "max");
+			extendRemove(inst.settings, settings);
+			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
+			if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {
+				inst.settings.minDate = this._formatDate(inst, minDate);
+			}
+			if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {
+				inst.settings.maxDate = this._formatDate(inst, maxDate);
+			}
+			if ( "disabled" in settings ) {
+				if ( settings.disabled ) {
+					this._disableDatepicker(target);
+				} else {
+					this._enableDatepicker(target);
+				}
+			}
+			this._attachments($(target), inst);
+			this._autoSize(inst);
+			this._setDate(inst, date);
+			this._updateAlternate(inst);
+			this._updateDatepicker(inst);
+		}
+	},
+
+	// change method deprecated
+	_changeDatepicker: function(target, name, value) {
+		this._optionDatepicker(target, name, value);
+	},
+
+	/* Redraw the date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 */
+	_refreshDatepicker: function(target) {
+		var inst = this._getInst(target);
+		if (inst) {
+			this._updateDatepicker(inst);
+		}
+	},
+
+	/* Set the dates for a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  date	Date - the new date
+	 */
+	_setDateDatepicker: function(target, date) {
+		var inst = this._getInst(target);
+		if (inst) {
+			this._setDate(inst, date);
+			this._updateDatepicker(inst);
+			this._updateAlternate(inst);
+		}
+	},
+
+	/* Get the date(s) for the first entry in a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  noDefault boolean - true if no default date is to be used
+	 * @return Date - the current date
+	 */
+	_getDateDatepicker: function(target, noDefault) {
+		var inst = this._getInst(target);
+		if (inst && !inst.inline) {
+			this._setDateFromField(inst, noDefault);
+		}
+		return (inst ? this._getDate(inst) : null);
+	},
+
+	/* Handle keystrokes. */
+	_doKeyDown: function(event) {
+		var onSelect, dateStr, sel,
+			inst = $.datepicker._getInst(event.target),
+			handled = true,
+			isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
+
+		inst._keyEvent = true;
+		if ($.datepicker._datepickerShowing) {
+			switch (event.keyCode) {
+				case 9: $.datepicker._hideDatepicker();
+						handled = false;
+						break; // hide on tab out
+				case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." +
+									$.datepicker._currentClass + ")", inst.dpDiv);
+						if (sel[0]) {
+							$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
+						}
+
+						onSelect = $.datepicker._get(inst, "onSelect");
+						if (onSelect) {
+							dateStr = $.datepicker._formatDate(inst);
+
+							// trigger custom callback
+							onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
+						} else {
+							$.datepicker._hideDatepicker();
+						}
+
+						return false; // don't submit the form
+				case 27: $.datepicker._hideDatepicker();
+						break; // hide on escape
+				case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
+							-$.datepicker._get(inst, "stepBigMonths") :
+							-$.datepicker._get(inst, "stepMonths")), "M");
+						break; // previous month/year on page up/+ ctrl
+				case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
+							+$.datepicker._get(inst, "stepBigMonths") :
+							+$.datepicker._get(inst, "stepMonths")), "M");
+						break; // next month/year on page down/+ ctrl
+				case 35: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._clearDate(event.target);
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // clear on ctrl or command +end
+				case 36: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._gotoToday(event.target);
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // current on ctrl or command +home
+				case 37: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						// -1 day on ctrl or command +left
+						if (event.originalEvent.altKey) {
+							$.datepicker._adjustDate(event.target, (event.ctrlKey ?
+								-$.datepicker._get(inst, "stepBigMonths") :
+								-$.datepicker._get(inst, "stepMonths")), "M");
+						}
+						// next month/year on alt +left on Mac
+						break;
+				case 38: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, -7, "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // -1 week on ctrl or command +up
+				case 39: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						// +1 day on ctrl or command +right
+						if (event.originalEvent.altKey) {
+							$.datepicker._adjustDate(event.target, (event.ctrlKey ?
+								+$.datepicker._get(inst, "stepBigMonths") :
+								+$.datepicker._get(inst, "stepMonths")), "M");
+						}
+						// next month/year on alt +right
+						break;
+				case 40: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, +7, "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // +1 week on ctrl or command +down
+				default: handled = false;
+			}
+		} else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home
+			$.datepicker._showDatepicker(this);
+		} else {
+			handled = false;
+		}
+
+		if (handled) {
+			event.preventDefault();
+			event.stopPropagation();
+		}
+	},
+
+	/* Filter entered characters - based on date format. */
+	_doKeyPress: function(event) {
+		var chars, chr,
+			inst = $.datepicker._getInst(event.target);
+
+		if ($.datepicker._get(inst, "constrainInput")) {
+			chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat"));
+			chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);
+			return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1);
+		}
+	},
+
+	/* Synchronise manual entry and field/alternate field. */
+	_doKeyUp: function(event) {
+		var date,
+			inst = $.datepicker._getInst(event.target);
+
+		if (inst.input.val() !== inst.lastVal) {
+			try {
+				date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
+					(inst.input ? inst.input.val() : null),
+					$.datepicker._getFormatConfig(inst));
+
+				if (date) { // only if valid
+					$.datepicker._setDateFromField(inst);
+					$.datepicker._updateAlternate(inst);
+					$.datepicker._updateDatepicker(inst);
+				}
+			}
+			catch (err) {
+			}
+		}
+		return true;
+	},
+
+	/* Pop-up the date picker for a given input field.
+	 * If false returned from beforeShow event handler do not show.
+	 * @param  input  element - the input field attached to the date picker or
+	 *					event - if triggered by focus
+	 */
+	_showDatepicker: function(input) {
+		input = input.target || input;
+		if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger
+			input = $("input", input.parentNode)[0];
+		}
+
+		if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here
+			return;
+		}
+
+		var inst, beforeShow, beforeShowSettings, isFixed,
+			offset, showAnim, duration;
+
+		inst = $.datepicker._getInst(input);
+		if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
+			$.datepicker._curInst.dpDiv.stop(true, true);
+			if ( inst && $.datepicker._datepickerShowing ) {
+				$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
+			}
+		}
+
+		beforeShow = $.datepicker._get(inst, "beforeShow");
+		beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
+		if(beforeShowSettings === false){
+			return;
+		}
+		extendRemove(inst.settings, beforeShowSettings);
+
+		inst.lastVal = null;
+		$.datepicker._lastInput = input;
+		$.datepicker._setDateFromField(inst);
+
+		if ($.datepicker._inDialog) { // hide cursor
+			input.value = "";
+		}
+		if (!$.datepicker._pos) { // position below input
+			$.datepicker._pos = $.datepicker._findPos(input);
+			$.datepicker._pos[1] += input.offsetHeight; // add the height
+		}
+
+		isFixed = false;
+		$(input).parents().each(function() {
+			isFixed |= $(this).css("position") === "fixed";
+			return !isFixed;
+		});
+
+		offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
+		$.datepicker._pos = null;
+		//to avoid flashes on Firefox
+		inst.dpDiv.empty();
+		// determine sizing offscreen
+		inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"});
+		$.datepicker._updateDatepicker(inst);
+		// fix width for dynamic number of date pickers
+		// and adjust position before showing
+		offset = $.datepicker._checkOffset(inst, offset, isFixed);
+		inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
+			"static" : (isFixed ? "fixed" : "absolute")), display: "none",
+			left: offset.left + "px", top: offset.top + "px"});
+
+		if (!inst.inline) {
+			showAnim = $.datepicker._get(inst, "showAnim");
+			duration = $.datepicker._get(inst, "duration");
+			inst.dpDiv.zIndex($(input).zIndex()+1);
+			$.datepicker._datepickerShowing = true;
+
+			if ( $.effects && $.effects.effect[ showAnim ] ) {
+				inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration);
+			} else {
+				inst.dpDiv[showAnim || "show"](showAnim ? duration : null);
+			}
+
+			if ( $.datepicker._shouldFocusInput( inst ) ) {
+				inst.input.focus();
+			}
+
+			$.datepicker._curInst = inst;
+		}
+	},
+
+	/* Generate the date picker content. */
+	_updateDatepicker: function(inst) {
+		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
+		instActive = inst; // for delegate hover events
+		inst.dpDiv.empty().append(this._generateHTML(inst));
+		this._attachHandlers(inst);
+		inst.dpDiv.find("." + this._dayOverClass + " a").mouseover();
+
+		var origyearshtml,
+			numMonths = this._getNumberOfMonths(inst),
+			cols = numMonths[1],
+			width = 17;
+
+		inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
+		if (cols > 1) {
+			inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em");
+		}
+		inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") +
+			"Class"]("ui-datepicker-multi");
+		inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") +
+			"Class"]("ui-datepicker-rtl");
+
+		if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
+			inst.input.focus();
+		}
+
+		// deffered render of the years select (to avoid flashes on Firefox)
+		if( inst.yearshtml ){
+			origyearshtml = inst.yearshtml;
+			setTimeout(function(){
+				//assure that inst.yearshtml didn't change.
+				if( origyearshtml === inst.yearshtml && inst.yearshtml ){
+					inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml);
+				}
+				origyearshtml = inst.yearshtml = null;
+			}, 0);
+		}
+	},
+
+	// #6694 - don't focus the input if it's already focused
+	// this breaks the change event in IE
+	// Support: IE and jQuery <1.9
+	_shouldFocusInput: function( inst ) {
+		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
+	},
+
+	/* Check positioning to remain on screen. */
+	_checkOffset: function(inst, offset, isFixed) {
+		var dpWidth = inst.dpDiv.outerWidth(),
+			dpHeight = inst.dpDiv.outerHeight(),
+			inputWidth = inst.input ? inst.input.outerWidth() : 0,
+			inputHeight = inst.input ? inst.input.outerHeight() : 0,
+			viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),
+			viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
+
+		offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0);
+		offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;
+		offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
+
+		// now check if datepicker is showing outside window viewport - move to a better place if so.
+		offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
+			Math.abs(offset.left + dpWidth - viewWidth) : 0);
+		offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
+			Math.abs(dpHeight + inputHeight) : 0);
+
+		return offset;
+	},
+
+	/* Find an object's position on the screen. */
+	_findPos: function(obj) {
+		var position,
+			inst = this._getInst(obj),
+			isRTL = this._get(inst, "isRTL");
+
+		while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {
+			obj = obj[isRTL ? "previousSibling" : "nextSibling"];
+		}
+
+		position = $(obj).offset();
+		return [position.left, position.top];
+	},
+
+	/* Hide the date picker from view.
+	 * @param  input  element - the input field attached to the date picker
+	 */
+	_hideDatepicker: function(input) {
+		var showAnim, duration, postProcess, onClose,
+			inst = this._curInst;
+
+		if (!inst || (input && inst !== $.data(input, PROP_NAME))) {
+			return;
+		}
+
+		if (this._datepickerShowing) {
+			showAnim = this._get(inst, "showAnim");
+			duration = this._get(inst, "duration");
+			postProcess = function() {
+				$.datepicker._tidyDialog(inst);
+			};
+
+			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
+			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
+				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess);
+			} else {
+				inst.dpDiv[(showAnim === "slideDown" ? "slideUp" :
+					(showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess);
+			}
+
+			if (!showAnim) {
+				postProcess();
+			}
+			this._datepickerShowing = false;
+
+			onClose = this._get(inst, "onClose");
+			if (onClose) {
+				onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]);
+			}
+
+			this._lastInput = null;
+			if (this._inDialog) {
+				this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });
+				if ($.blockUI) {
+					$.unblockUI();
+					$("body").append(this.dpDiv);
+				}
+			}
+			this._inDialog = false;
+		}
+	},
+
+	/* Tidy up after a dialog display. */
+	_tidyDialog: function(inst) {
+		inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar");
+	},
+
+	/* Close date picker if clicked elsewhere. */
+	_checkExternalClick: function(event) {
+		if (!$.datepicker._curInst) {
+			return;
+		}
+
+		var $target = $(event.target),
+			inst = $.datepicker._getInst($target[0]);
+
+		if ( ( ( $target[0].id !== $.datepicker._mainDivId &&
+				$target.parents("#" + $.datepicker._mainDivId).length === 0 &&
+				!$target.hasClass($.datepicker.markerClassName) &&
+				!$target.closest("." + $.datepicker._triggerClass).length &&
+				$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||
+			( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {
+				$.datepicker._hideDatepicker();
+		}
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustDate: function(id, offset, period) {
+		var target = $(id),
+			inst = this._getInst(target[0]);
+
+		if (this._isDisabledDatepicker(target[0])) {
+			return;
+		}
+		this._adjustInstDate(inst, offset +
+			(period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning
+			period);
+		this._updateDatepicker(inst);
+	},
+
+	/* Action for current link. */
+	_gotoToday: function(id) {
+		var date,
+			target = $(id),
+			inst = this._getInst(target[0]);
+
+		if (this._get(inst, "gotoCurrent") && inst.currentDay) {
+			inst.selectedDay = inst.currentDay;
+			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
+			inst.drawYear = inst.selectedYear = inst.currentYear;
+		} else {
+			date = new Date();
+			inst.selectedDay = date.getDate();
+			inst.drawMonth = inst.selectedMonth = date.getMonth();
+			inst.drawYear = inst.selectedYear = date.getFullYear();
+		}
+		this._notifyChange(inst);
+		this._adjustDate(target);
+	},
+
+	/* Action for selecting a new month/year. */
+	_selectMonthYear: function(id, select, period) {
+		var target = $(id),
+			inst = this._getInst(target[0]);
+
+		inst["selected" + (period === "M" ? "Month" : "Year")] =
+		inst["draw" + (period === "M" ? "Month" : "Year")] =
+			parseInt(select.options[select.selectedIndex].value,10);
+
+		this._notifyChange(inst);
+		this._adjustDate(target);
+	},
+
+	/* Action for selecting a day. */
+	_selectDay: function(id, month, year, td) {
+		var inst,
+			target = $(id);
+
+		if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
+			return;
+		}
+
+		inst = this._getInst(target[0]);
+		inst.selectedDay = inst.currentDay = $("a", td).html();
+		inst.selectedMonth = inst.currentMonth = month;
+		inst.selectedYear = inst.currentYear = year;
+		this._selectDate(id, this._formatDate(inst,
+			inst.currentDay, inst.currentMonth, inst.currentYear));
+	},
+
+	/* Erase the input field and hide the date picker. */
+	_clearDate: function(id) {
+		var target = $(id);
+		this._selectDate(target, "");
+	},
+
+	/* Update the input field with the selected date. */
+	_selectDate: function(id, dateStr) {
+		var onSelect,
+			target = $(id),
+			inst = this._getInst(target[0]);
+
+		dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
+		if (inst.input) {
+			inst.input.val(dateStr);
+		}
+		this._updateAlternate(inst);
+
+		onSelect = this._get(inst, "onSelect");
+		if (onSelect) {
+			onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
+		} else if (inst.input) {
+			inst.input.trigger("change"); // fire the change event
+		}
+
+		if (inst.inline){
+			this._updateDatepicker(inst);
+		} else {
+			this._hideDatepicker();
+			this._lastInput = inst.input[0];
+			if (typeof(inst.input[0]) !== "object") {
+				inst.input.focus(); // restore focus
+			}
+			this._lastInput = null;
+		}
+	},
+
+	/* Update any alternate field to synchronise with the main field. */
+	_updateAlternate: function(inst) {
+		var altFormat, date, dateStr,
+			altField = this._get(inst, "altField");
+
+		if (altField) { // update alternate field too
+			altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat");
+			date = this._getDate(inst);
+			dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
+			$(altField).each(function() { $(this).val(dateStr); });
+		}
+	},
+
+	/* Set as beforeShowDay function to prevent selection of weekends.
+	 * @param  date  Date - the date to customise
+	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
+	 */
+	noWeekends: function(date) {
+		var day = date.getDay();
+		return [(day > 0 && day < 6), ""];
+	},
+
+	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
+	 * @param  date  Date - the date to get the week for
+	 * @return  number - the number of the week within the year that contains this date
+	 */
+	iso8601Week: function(date) {
+		var time,
+			checkDate = new Date(date.getTime());
+
+		// Find Thursday of this week starting on Monday
+		checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
+
+		time = checkDate.getTime();
+		checkDate.setMonth(0); // Compare with Jan 1
+		checkDate.setDate(1);
+		return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
+	},
+
+	/* Parse a string value into a date object.
+	 * See formatDate below for the possible formats.
+	 *
+	 * @param  format string - the expected format of the date
+	 * @param  value string - the date in the above format
+	 * @param  settings Object - attributes include:
+	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  Date - the extracted date value or null if value is blank
+	 */
+	parseDate: function (format, value, settings) {
+		if (format == null || value == null) {
+			throw "Invalid arguments";
+		}
+
+		value = (typeof value === "object" ? value.toString() : value + "");
+		if (value === "") {
+			return null;
+		}
+
+		var iFormat, dim, extra,
+			iValue = 0,
+			shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,
+			shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
+				new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),
+			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
+			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
+			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
+			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
+			year = -1,
+			month = -1,
+			day = -1,
+			doy = -1,
+			literal = false,
+			date,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			},
+			// Extract a number from the string value
+			getNumber = function(match) {
+				var isDoubled = lookAhead(match),
+					size = (match === "@" ? 14 : (match === "!" ? 20 :
+					(match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))),
+					digits = new RegExp("^\\d{1," + size + "}"),
+					num = value.substring(iValue).match(digits);
+				if (!num) {
+					throw "Missing number at position " + iValue;
+				}
+				iValue += num[0].length;
+				return parseInt(num[0], 10);
+			},
+			// Extract a name from the string value and convert to an index
+			getName = function(match, shortNames, longNames) {
+				var index = -1,
+					names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
+						return [ [k, v] ];
+					}).sort(function (a, b) {
+						return -(a[1].length - b[1].length);
+					});
+
+				$.each(names, function (i, pair) {
+					var name = pair[1];
+					if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
+						index = pair[0];
+						iValue += name.length;
+						return false;
+					}
+				});
+				if (index !== -1) {
+					return index + 1;
+				} else {
+					throw "Unknown name at position " + iValue;
+				}
+			},
+			// Confirm that a literal character matches the string value
+			checkLiteral = function() {
+				if (value.charAt(iValue) !== format.charAt(iFormat)) {
+					throw "Unexpected literal at position " + iValue;
+				}
+				iValue++;
+			};
+
+		for (iFormat = 0; iFormat < format.length; iFormat++) {
+			if (literal) {
+				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+					literal = false;
+				} else {
+					checkLiteral();
+				}
+			} else {
+				switch (format.charAt(iFormat)) {
+					case "d":
+						day = getNumber("d");
+						break;
+					case "D":
+						getName("D", dayNamesShort, dayNames);
+						break;
+					case "o":
+						doy = getNumber("o");
+						break;
+					case "m":
+						month = getNumber("m");
+						break;
+					case "M":
+						month = getName("M", monthNamesShort, monthNames);
+						break;
+					case "y":
+						year = getNumber("y");
+						break;
+					case "@":
+						date = new Date(getNumber("@"));
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "!":
+						date = new Date((getNumber("!") - this._ticksTo1970) / 10000);
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "'":
+						if (lookAhead("'")){
+							checkLiteral();
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						checkLiteral();
+				}
+			}
+		}
+
+		if (iValue < value.length){
+			extra = value.substr(iValue);
+			if (!/^\s+/.test(extra)) {
+				throw "Extra/unparsed characters found in date: " + extra;
+			}
+		}
+
+		if (year === -1) {
+			year = new Date().getFullYear();
+		} else if (year < 100) {
+			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
+				(year <= shortYearCutoff ? 0 : -100);
+		}
+
+		if (doy > -1) {
+			month = 1;
+			day = doy;
+			do {
+				dim = this._getDaysInMonth(year, month - 1);
+				if (day <= dim) {
+					break;
+				}
+				month++;
+				day -= dim;
+			} while (true);
+		}
+
+		date = this._daylightSavingAdjust(new Date(year, month - 1, day));
+		if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
+			throw "Invalid date"; // E.g. 31/02/00
+		}
+		return date;
+	},
+
+	/* Standard date formats. */
+	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
+	COOKIE: "D, dd M yy",
+	ISO_8601: "yy-mm-dd",
+	RFC_822: "D, d M y",
+	RFC_850: "DD, dd-M-y",
+	RFC_1036: "D, d M y",
+	RFC_1123: "D, d M yy",
+	RFC_2822: "D, d M yy",
+	RSS: "D, d M y", // RFC 822
+	TICKS: "!",
+	TIMESTAMP: "@",
+	W3C: "yy-mm-dd", // ISO 8601
+
+	_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
+		Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
+
+	/* Format a date object into a string value.
+	 * The format can be combinations of the following:
+	 * d  - day of month (no leading zero)
+	 * dd - day of month (two digit)
+	 * o  - day of year (no leading zeros)
+	 * oo - day of year (three digit)
+	 * D  - day name short
+	 * DD - day name long
+	 * m  - month of year (no leading zero)
+	 * mm - month of year (two digit)
+	 * M  - month name short
+	 * MM - month name long
+	 * y  - year (two digit)
+	 * yy - year (four digit)
+	 * @ - Unix timestamp (ms since 01/01/1970)
+	 * ! - Windows ticks (100ns since 01/01/0001)
+	 * "..." - literal text
+	 * '' - single quote
+	 *
+	 * @param  format string - the desired format of the date
+	 * @param  date Date - the date value to format
+	 * @param  settings Object - attributes include:
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  string - the date in the above format
+	 */
+	formatDate: function (format, date, settings) {
+		if (!date) {
+			return "";
+		}
+
+		var iFormat,
+			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
+			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
+			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
+			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			},
+			// Format a number, with leading zero if necessary
+			formatNumber = function(match, value, len) {
+				var num = "" + value;
+				if (lookAhead(match)) {
+					while (num.length < len) {
+						num = "0" + num;
+					}
+				}
+				return num;
+			},
+			// Format a name, short or long as requested
+			formatName = function(match, value, shortNames, longNames) {
+				return (lookAhead(match) ? longNames[value] : shortNames[value]);
+			},
+			output = "",
+			literal = false;
+
+		if (date) {
+			for (iFormat = 0; iFormat < format.length; iFormat++) {
+				if (literal) {
+					if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+						literal = false;
+					} else {
+						output += format.charAt(iFormat);
+					}
+				} else {
+					switch (format.charAt(iFormat)) {
+						case "d":
+							output += formatNumber("d", date.getDate(), 2);
+							break;
+						case "D":
+							output += formatName("D", date.getDay(), dayNamesShort, dayNames);
+							break;
+						case "o":
+							output += formatNumber("o",
+								Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
+							break;
+						case "m":
+							output += formatNumber("m", date.getMonth() + 1, 2);
+							break;
+						case "M":
+							output += formatName("M", date.getMonth(), monthNamesShort, monthNames);
+							break;
+						case "y":
+							output += (lookAhead("y") ? date.getFullYear() :
+								(date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100);
+							break;
+						case "@":
+							output += date.getTime();
+							break;
+						case "!":
+							output += date.getTime() * 10000 + this._ticksTo1970;
+							break;
+						case "'":
+							if (lookAhead("'")) {
+								output += "'";
+							} else {
+								literal = true;
+							}
+							break;
+						default:
+							output += format.charAt(iFormat);
+					}
+				}
+			}
+		}
+		return output;
+	},
+
+	/* Extract all possible characters from the date format. */
+	_possibleChars: function (format) {
+		var iFormat,
+			chars = "",
+			literal = false,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			};
+
+		for (iFormat = 0; iFormat < format.length; iFormat++) {
+			if (literal) {
+				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+					literal = false;
+				} else {
+					chars += format.charAt(iFormat);
+				}
+			} else {
+				switch (format.charAt(iFormat)) {
+					case "d": case "m": case "y": case "@":
+						chars += "0123456789";
+						break;
+					case "D": case "M":
+						return null; // Accept anything
+					case "'":
+						if (lookAhead("'")) {
+							chars += "'";
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						chars += format.charAt(iFormat);
+				}
+			}
+		}
+		return chars;
+	},
+
+	/* Get a setting value, defaulting if necessary. */
+	_get: function(inst, name) {
+		return inst.settings[name] !== undefined ?
+			inst.settings[name] : this._defaults[name];
+	},
+
+	/* Parse existing date and initialise date picker. */
+	_setDateFromField: function(inst, noDefault) {
+		if (inst.input.val() === inst.lastVal) {
+			return;
+		}
+
+		var dateFormat = this._get(inst, "dateFormat"),
+			dates = inst.lastVal = inst.input ? inst.input.val() : null,
+			defaultDate = this._getDefaultDate(inst),
+			date = defaultDate,
+			settings = this._getFormatConfig(inst);
+
+		try {
+			date = this.parseDate(dateFormat, dates, settings) || defaultDate;
+		} catch (event) {
+			dates = (noDefault ? "" : dates);
+		}
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		inst.currentDay = (dates ? date.getDate() : 0);
+		inst.currentMonth = (dates ? date.getMonth() : 0);
+		inst.currentYear = (dates ? date.getFullYear() : 0);
+		this._adjustInstDate(inst);
+	},
+
+	/* Retrieve the default date shown on opening. */
+	_getDefaultDate: function(inst) {
+		return this._restrictMinMax(inst,
+			this._determineDate(inst, this._get(inst, "defaultDate"), new Date()));
+	},
+
+	/* A date may be specified as an exact value or a relative one. */
+	_determineDate: function(inst, date, defaultDate) {
+		var offsetNumeric = function(offset) {
+				var date = new Date();
+				date.setDate(date.getDate() + offset);
+				return date;
+			},
+			offsetString = function(offset) {
+				try {
+					return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
+						offset, $.datepicker._getFormatConfig(inst));
+				}
+				catch (e) {
+					// Ignore
+				}
+
+				var date = (offset.toLowerCase().match(/^c/) ?
+					$.datepicker._getDate(inst) : null) || new Date(),
+					year = date.getFullYear(),
+					month = date.getMonth(),
+					day = date.getDate(),
+					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
+					matches = pattern.exec(offset);
+
+				while (matches) {
+					switch (matches[2] || "d") {
+						case "d" : case "D" :
+							day += parseInt(matches[1],10); break;
+						case "w" : case "W" :
+							day += parseInt(matches[1],10) * 7; break;
+						case "m" : case "M" :
+							month += parseInt(matches[1],10);
+							day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
+							break;
+						case "y": case "Y" :
+							year += parseInt(matches[1],10);
+							day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
+							break;
+					}
+					matches = pattern.exec(offset);
+				}
+				return new Date(year, month, day);
+			},
+			newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) :
+				(typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
+
+		newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate);
+		if (newDate) {
+			newDate.setHours(0);
+			newDate.setMinutes(0);
+			newDate.setSeconds(0);
+			newDate.setMilliseconds(0);
+		}
+		return this._daylightSavingAdjust(newDate);
+	},
+
+	/* Handle switch to/from daylight saving.
+	 * Hours may be non-zero on daylight saving cut-over:
+	 * > 12 when midnight changeover, but then cannot generate
+	 * midnight datetime, so jump to 1AM, otherwise reset.
+	 * @param  date  (Date) the date to check
+	 * @return  (Date) the corrected date
+	 */
+	_daylightSavingAdjust: function(date) {
+		if (!date) {
+			return null;
+		}
+		date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
+		return date;
+	},
+
+	/* Set the date(s) directly. */
+	_setDate: function(inst, date, noChange) {
+		var clear = !date,
+			origMonth = inst.selectedMonth,
+			origYear = inst.selectedYear,
+			newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
+
+		inst.selectedDay = inst.currentDay = newDate.getDate();
+		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
+		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
+		if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {
+			this._notifyChange(inst);
+		}
+		this._adjustInstDate(inst);
+		if (inst.input) {
+			inst.input.val(clear ? "" : this._formatDate(inst));
+		}
+	},
+
+	/* Retrieve the date(s) directly. */
+	_getDate: function(inst) {
+		var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null :
+			this._daylightSavingAdjust(new Date(
+			inst.currentYear, inst.currentMonth, inst.currentDay)));
+			return startDate;
+	},
+
+	/* Attach the onxxx handlers.  These are declared statically so
+	 * they work with static code transformers like Caja.
+	 */
+	_attachHandlers: function(inst) {
+		var stepMonths = this._get(inst, "stepMonths"),
+			id = "#" + inst.id.replace( /\\\\/g, "\\" );
+		inst.dpDiv.find("[data-handler]").map(function () {
+			var handler = {
+				prev: function () {
+					$.datepicker._adjustDate(id, -stepMonths, "M");
+				},
+				next: function () {
+					$.datepicker._adjustDate(id, +stepMonths, "M");
+				},
+				hide: function () {
+					$.datepicker._hideDatepicker();
+				},
+				today: function () {
+					$.datepicker._gotoToday(id);
+				},
+				selectDay: function () {
+					$.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
+					return false;
+				},
+				selectMonth: function () {
+					$.datepicker._selectMonthYear(id, this, "M");
+					return false;
+				},
+				selectYear: function () {
+					$.datepicker._selectMonthYear(id, this, "Y");
+					return false;
+				}
+			};
+			$(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);
+		});
+	},
+
+	/* Generate the HTML for the current state of the date picker. */
+	_generateHTML: function(inst) {
+		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
+			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
+			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
+			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
+			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
+			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
+			tempDate = new Date(),
+			today = this._daylightSavingAdjust(
+				new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time
+			isRTL = this._get(inst, "isRTL"),
+			showButtonPanel = this._get(inst, "showButtonPanel"),
+			hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"),
+			navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"),
+			numMonths = this._getNumberOfMonths(inst),
+			showCurrentAtPos = this._get(inst, "showCurrentAtPos"),
+			stepMonths = this._get(inst, "stepMonths"),
+			isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),
+			currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
+				new Date(inst.currentYear, inst.currentMonth, inst.currentDay))),
+			minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			drawMonth = inst.drawMonth - showCurrentAtPos,
+			drawYear = inst.drawYear;
+
+		if (drawMonth < 0) {
+			drawMonth += 12;
+			drawYear--;
+		}
+		if (maxDate) {
+			maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
+				maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
+			maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
+			while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
+				drawMonth--;
+				if (drawMonth < 0) {
+					drawMonth = 11;
+					drawYear--;
+				}
+			}
+		}
+		inst.drawMonth = drawMonth;
+		inst.drawYear = drawYear;
+
+		prevText = this._get(inst, "prevText");
+		prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
+			this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
+			this._getFormatConfig(inst)));
+
+		prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
+			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
+			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" :
+			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>"));
+
+		nextText = this._get(inst, "nextText");
+		nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
+			this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
+			this._getFormatConfig(inst)));
+
+		next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
+			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
+			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" :
+			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>"));
+
+		currentText = this._get(inst, "currentText");
+		gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today);
+		currentText = (!navigationAsDateFormat ? currentText :
+			this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
+
+		controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
+			this._get(inst, "closeText") + "</button>" : "");
+
+		buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") +
+			(this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
+			">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "";
+
+		firstDay = parseInt(this._get(inst, "firstDay"),10);
+		firstDay = (isNaN(firstDay) ? 0 : firstDay);
+
+		showWeek = this._get(inst, "showWeek");
+		dayNames = this._get(inst, "dayNames");
+		dayNamesMin = this._get(inst, "dayNamesMin");
+		monthNames = this._get(inst, "monthNames");
+		monthNamesShort = this._get(inst, "monthNamesShort");
+		beforeShowDay = this._get(inst, "beforeShowDay");
+		showOtherMonths = this._get(inst, "showOtherMonths");
+		selectOtherMonths = this._get(inst, "selectOtherMonths");
+		defaultDate = this._getDefaultDate(inst);
+		html = "";
+		dow;
+		for (row = 0; row < numMonths[0]; row++) {
+			group = "";
+			this.maxRows = 4;
+			for (col = 0; col < numMonths[1]; col++) {
+				selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
+				cornerClass = " ui-corner-all";
+				calender = "";
+				if (isMultiMonth) {
+					calender += "<div class='ui-datepicker-group";
+					if (numMonths[1] > 1) {
+						switch (col) {
+							case 0: calender += " ui-datepicker-group-first";
+								cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break;
+							case numMonths[1]-1: calender += " ui-datepicker-group-last";
+								cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break;
+							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
+						}
+					}
+					calender += "'>";
+				}
+				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
+					(/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
+					(/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
+					this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
+					row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
+					"</div><table class='ui-datepicker-calendar'><thead>" +
+					"<tr>";
+				thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : "");
+				for (dow = 0; dow < 7; dow++) { // days of the week
+					day = (dow + firstDay) % 7;
+					thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" +
+						"<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";
+				}
+				calender += thead + "</tr></thead><tbody>";
+				daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
+				if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {
+					inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
+				}
+				leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
+				curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
+				numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
+				this.maxRows = numRows;
+				printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
+				for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows
+					calender += "<tr>";
+					tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
+						this._get(inst, "calculateWeek")(printDate) + "</td>");
+					for (dow = 0; dow < 7; dow++) { // create date picker days
+						daySettings = (beforeShowDay ?
+							beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]);
+						otherMonth = (printDate.getMonth() !== drawMonth);
+						unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
+							(minDate && printDate < minDate) || (maxDate && printDate > maxDate);
+						tbody += "<td class='" +
+							((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends
+							(otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months
+							((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key
+							(defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?
+							// or defaultDate is current printedDate and defaultDate is selectedDate
+							" " + this._dayOverClass : "") + // highlight selected day
+							(unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") +  // highlight unselectable days
+							(otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
+							(printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
+							(printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
+							((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
+							(unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
+							(otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
+							(unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
+							(printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") +
+							(printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day
+							(otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months
+							"' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date
+						printDate.setDate(printDate.getDate() + 1);
+						printDate = this._daylightSavingAdjust(printDate);
+					}
+					calender += tbody + "</tr>";
+				}
+				drawMonth++;
+				if (drawMonth > 11) {
+					drawMonth = 0;
+					drawYear++;
+				}
+				calender += "</tbody></table>" + (isMultiMonth ? "</div>" +
+							((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : "");
+				group += calender;
+			}
+			html += group;
+		}
+		html += buttonPanel;
+		inst._keyEvent = false;
+		return html;
+	},
+
+	/* Generate the month and year header. */
+	_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
+			secondary, monthNames, monthNamesShort) {
+
+		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
+			changeMonth = this._get(inst, "changeMonth"),
+			changeYear = this._get(inst, "changeYear"),
+			showMonthAfterYear = this._get(inst, "showMonthAfterYear"),
+			html = "<div class='ui-datepicker-title'>",
+			monthHtml = "";
+
+		// month selection
+		if (secondary || !changeMonth) {
+			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
+		} else {
+			inMinYear = (minDate && minDate.getFullYear() === drawYear);
+			inMaxYear = (maxDate && maxDate.getFullYear() === drawYear);
+			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
+			for ( month = 0; month < 12; month++) {
+				if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {
+					monthHtml += "<option value='" + month + "'" +
+						(month === drawMonth ? " selected='selected'" : "") +
+						">" + monthNamesShort[month] + "</option>";
+				}
+			}
+			monthHtml += "</select>";
+		}
+
+		if (!showMonthAfterYear) {
+			html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "");
+		}
+
+		// year selection
+		if ( !inst.yearshtml ) {
+			inst.yearshtml = "";
+			if (secondary || !changeYear) {
+				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
+			} else {
+				// determine range of years to display
+				years = this._get(inst, "yearRange").split(":");
+				thisYear = new Date().getFullYear();
+				determineYear = function(value) {
+					var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) :
+						(value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :
+						parseInt(value, 10)));
+					return (isNaN(year) ? thisYear : year);
+				};
+				year = determineYear(years[0]);
+				endYear = Math.max(year, determineYear(years[1] || ""));
+				year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
+				endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
+				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
+				for (; year <= endYear; year++) {
+					inst.yearshtml += "<option value='" + year + "'" +
+						(year === drawYear ? " selected='selected'" : "") +
+						">" + year + "</option>";
+				}
+				inst.yearshtml += "</select>";
+
+				html += inst.yearshtml;
+				inst.yearshtml = null;
+			}
+		}
+
+		html += this._get(inst, "yearSuffix");
+		if (showMonthAfterYear) {
+			html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml;
+		}
+		html += "</div>"; // Close datepicker_header
+		return html;
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustInstDate: function(inst, offset, period) {
+		var year = inst.drawYear + (period === "Y" ? offset : 0),
+			month = inst.drawMonth + (period === "M" ? offset : 0),
+			day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0),
+			date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));
+
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		if (period === "M" || period === "Y") {
+			this._notifyChange(inst);
+		}
+	},
+
+	/* Ensure a date is within any min/max bounds. */
+	_restrictMinMax: function(inst, date) {
+		var minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			newDate = (minDate && date < minDate ? minDate : date);
+		return (maxDate && newDate > maxDate ? maxDate : newDate);
+	},
+
+	/* Notify change of month/year. */
+	_notifyChange: function(inst) {
+		var onChange = this._get(inst, "onChangeMonthYear");
+		if (onChange) {
+			onChange.apply((inst.input ? inst.input[0] : null),
+				[inst.selectedYear, inst.selectedMonth + 1, inst]);
+		}
+	},
+
+	/* Determine the number of months to show. */
+	_getNumberOfMonths: function(inst) {
+		var numMonths = this._get(inst, "numberOfMonths");
+		return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths));
+	},
+
+	/* Determine the current maximum date - ensure no time components are set. */
+	_getMinMaxDate: function(inst, minMax) {
+		return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
+	},
+
+	/* Find the number of days in a given month. */
+	_getDaysInMonth: function(year, month) {
+		return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
+	},
+
+	/* Find the day of the week of the first of a month. */
+	_getFirstDayOfMonth: function(year, month) {
+		return new Date(year, month, 1).getDay();
+	},
+
+	/* Determines if we should allow a "next/prev" month display change. */
+	_canAdjustMonth: function(inst, offset, curYear, curMonth) {
+		var numMonths = this._getNumberOfMonths(inst),
+			date = this._daylightSavingAdjust(new Date(curYear,
+			curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
+
+		if (offset < 0) {
+			date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
+		}
+		return this._isInRange(inst, date);
+	},
+
+	/* Is the given date in the accepted range? */
+	_isInRange: function(inst, date) {
+		var yearSplit, currentYear,
+			minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			minYear = null,
+			maxYear = null,
+			years = this._get(inst, "yearRange");
+			if (years){
+				yearSplit = years.split(":");
+				currentYear = new Date().getFullYear();
+				minYear = parseInt(yearSplit[0], 10);
+				maxYear = parseInt(yearSplit[1], 10);
+				if ( yearSplit[0].match(/[+\-].*/) ) {
+					minYear += currentYear;
+				}
+				if ( yearSplit[1].match(/[+\-].*/) ) {
+					maxYear += currentYear;
+				}
+			}
+
+		return ((!minDate || date.getTime() >= minDate.getTime()) &&
+			(!maxDate || date.getTime() <= maxDate.getTime()) &&
+			(!minYear || date.getFullYear() >= minYear) &&
+			(!maxYear || date.getFullYear() <= maxYear));
+	},
+
+	/* Provide the configuration settings for formatting/parsing. */
+	_getFormatConfig: function(inst) {
+		var shortYearCutoff = this._get(inst, "shortYearCutoff");
+		shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff :
+			new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
+		return {shortYearCutoff: shortYearCutoff,
+			dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"),
+			monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")};
+	},
+
+	/* Format the given date for display. */
+	_formatDate: function(inst, day, month, year) {
+		if (!day) {
+			inst.currentDay = inst.selectedDay;
+			inst.currentMonth = inst.selectedMonth;
+			inst.currentYear = inst.selectedYear;
+		}
+		var date = (day ? (typeof day === "object" ? day :
+			this._daylightSavingAdjust(new Date(year, month, day))) :
+			this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
+		return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));
+	}
+});
+
+/*
+ * Bind hover events for datepicker elements.
+ * Done via delegate so the binding only occurs once in the lifetime of the parent div.
+ * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
+ */
+function bindHover(dpDiv) {
+	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
+	return dpDiv.delegate(selector, "mouseout", function() {
+			$(this).removeClass("ui-state-hover");
+			if (this.className.indexOf("ui-datepicker-prev") !== -1) {
+				$(this).removeClass("ui-datepicker-prev-hover");
+			}
+			if (this.className.indexOf("ui-datepicker-next") !== -1) {
+				$(this).removeClass("ui-datepicker-next-hover");
+			}
+		})
+		.delegate(selector, "mouseover", function(){
+			if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {
+				$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
+				$(this).addClass("ui-state-hover");
+				if (this.className.indexOf("ui-datepicker-prev") !== -1) {
+					$(this).addClass("ui-datepicker-prev-hover");
+				}
+				if (this.className.indexOf("ui-datepicker-next") !== -1) {
+					$(this).addClass("ui-datepicker-next-hover");
+				}
+			}
+		});
+}
+
+/* jQuery extend now ignores nulls! */
+function extendRemove(target, props) {
+	$.extend(target, props);
+	for (var name in props) {
+		if (props[name] == null) {
+			target[name] = props[name];
+		}
+	}
+	return target;
+}
+
+/* Invoke the datepicker functionality.
+   @param  options  string - a command, optionally followed by additional parameters or
+					Object - settings for attaching new datepicker functionality
+   @return  jQuery object */
+$.fn.datepicker = function(options){
+
+	/* Verify an empty collection wasn't passed - Fixes #6976 */
+	if ( !this.length ) {
+		return this;
+	}
+
+	/* Initialise the date picker. */
+	if (!$.datepicker.initialized) {
+		$(document).mousedown($.datepicker._checkExternalClick);
+		$.datepicker.initialized = true;
+	}
+
+	/* Append datepicker main container to body if not exist. */
+	if ($("#"+$.datepicker._mainDivId).length === 0) {
+		$("body").append($.datepicker.dpDiv);
+	}
+
+	var otherArgs = Array.prototype.slice.call(arguments, 1);
+	if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) {
+		return $.datepicker["_" + options + "Datepicker"].
+			apply($.datepicker, [this[0]].concat(otherArgs));
+	}
+	if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") {
+		return $.datepicker["_" + options + "Datepicker"].
+			apply($.datepicker, [this[0]].concat(otherArgs));
+	}
+	return this.each(function() {
+		typeof options === "string" ?
+			$.datepicker["_" + options + "Datepicker"].
+				apply($.datepicker, [this].concat(otherArgs)) :
+			$.datepicker._attachDatepicker(this, options);
+	});
+};
+
+$.datepicker = new Datepicker(); // singleton instance
+$.datepicker.initialized = false;
+$.datepicker.uuid = new Date().getTime();
+$.datepicker.version = "1.10.3";
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+var sizeRelatedOptions = {
+		buttons: true,
+		height: true,
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true,
+		width: true
+	},
+	resizableRelatedOptions = {
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true
+	};
+
+$.widget( "ui.dialog", {
+	version: "1.10.3",
+	options: {
+		appendTo: "body",
+		autoOpen: true,
+		buttons: [],
+		closeOnEscape: true,
+		closeText: "close",
+		dialogClass: "",
+		draggable: true,
+		hide: null,
+		height: "auto",
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 150,
+		minWidth: 150,
+		modal: false,
+		position: {
+			my: "center",
+			at: "center",
+			of: window,
+			collision: "fit",
+			// Ensure the titlebar is always visible
+			using: function( pos ) {
+				var topOffset = $( this ).css( pos ).offset().top;
+				if ( topOffset < 0 ) {
+					$( this ).css( "top", pos.top - topOffset );
+				}
+			}
+		},
+		resizable: true,
+		show: null,
+		title: null,
+		width: 300,
+
+		// callbacks
+		beforeClose: null,
+		close: null,
+		drag: null,
+		dragStart: null,
+		dragStop: null,
+		focus: null,
+		open: null,
+		resize: null,
+		resizeStart: null,
+		resizeStop: null
+	},
+
+	_create: function() {
+		this.originalCss = {
+			display: this.element[0].style.display,
+			width: this.element[0].style.width,
+			minHeight: this.element[0].style.minHeight,
+			maxHeight: this.element[0].style.maxHeight,
+			height: this.element[0].style.height
+		};
+		this.originalPosition = {
+			parent: this.element.parent(),
+			index: this.element.parent().children().index( this.element )
+		};
+		this.originalTitle = this.element.attr("title");
+		this.options.title = this.options.title || this.originalTitle;
+
+		this._createWrapper();
+
+		this.element
+			.show()
+			.removeAttr("title")
+			.addClass("ui-dialog-content ui-widget-content")
+			.appendTo( this.uiDialog );
+
+		this._createTitlebar();
+		this._createButtonPane();
+
+		if ( this.options.draggable && $.fn.draggable ) {
+			this._makeDraggable();
+		}
+		if ( this.options.resizable && $.fn.resizable ) {
+			this._makeResizable();
+		}
+
+		this._isOpen = false;
+	},
+
+	_init: function() {
+		if ( this.options.autoOpen ) {
+			this.open();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+		if ( element && (element.jquery || element.nodeType) ) {
+			return $( element );
+		}
+		return this.document.find( element || "body" ).eq( 0 );
+	},
+
+	_destroy: function() {
+		var next,
+			originalPosition = this.originalPosition;
+
+		this._destroyOverlay();
+
+		this.element
+			.removeUniqueId()
+			.removeClass("ui-dialog-content ui-widget-content")
+			.css( this.originalCss )
+			// Without detaching first, the following becomes really slow
+			.detach();
+
+		this.uiDialog.stop( true, true ).remove();
+
+		if ( this.originalTitle ) {
+			this.element.attr( "title", this.originalTitle );
+		}
+
+		next = originalPosition.parent.children().eq( originalPosition.index );
+		// Don't try to place the dialog next to itself (#8613)
+		if ( next.length && next[0] !== this.element[0] ) {
+			next.before( this.element );
+		} else {
+			originalPosition.parent.append( this.element );
+		}
+	},
+
+	widget: function() {
+		return this.uiDialog;
+	},
+
+	disable: $.noop,
+	enable: $.noop,
+
+	close: function( event ) {
+		var that = this;
+
+		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
+			return;
+		}
+
+		this._isOpen = false;
+		this._destroyOverlay();
+
+		if ( !this.opener.filter(":focusable").focus().length ) {
+			// Hiding a focused element doesn't trigger blur in WebKit
+			// so in case we have nothing to focus on, explicitly blur the active element
+			// https://bugs.webkit.org/show_bug.cgi?id=47182
+			$( this.document[0].activeElement ).blur();
+		}
+
+		this._hide( this.uiDialog, this.options.hide, function() {
+			that._trigger( "close", event );
+		});
+	},
+
+	isOpen: function() {
+		return this._isOpen;
+	},
+
+	moveToTop: function() {
+		this._moveToTop();
+	},
+
+	_moveToTop: function( event, silent ) {
+		var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length;
+		if ( moved && !silent ) {
+			this._trigger( "focus", event );
+		}
+		return moved;
+	},
+
+	open: function() {
+		var that = this;
+		if ( this._isOpen ) {
+			if ( this._moveToTop() ) {
+				this._focusTabbable();
+			}
+			return;
+		}
+
+		this._isOpen = true;
+		this.opener = $( this.document[0].activeElement );
+
+		this._size();
+		this._position();
+		this._createOverlay();
+		this._moveToTop( null, true );
+		this._show( this.uiDialog, this.options.show, function() {
+			that._focusTabbable();
+			that._trigger("focus");
+		});
+
+		this._trigger("open");
+	},
+
+	_focusTabbable: function() {
+		// Set focus to the first match:
+		// 1. First element inside the dialog matching [autofocus]
+		// 2. Tabbable element inside the content element
+		// 3. Tabbable element inside the buttonpane
+		// 4. The close button
+		// 5. The dialog itself
+		var hasFocus = this.element.find("[autofocus]");
+		if ( !hasFocus.length ) {
+			hasFocus = this.element.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogButtonPane.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogTitlebarClose.filter(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialog;
+		}
+		hasFocus.eq( 0 ).focus();
+	},
+
+	_keepFocus: function( event ) {
+		function checkFocus() {
+			var activeElement = this.document[0].activeElement,
+				isActive = this.uiDialog[0] === activeElement ||
+					$.contains( this.uiDialog[0], activeElement );
+			if ( !isActive ) {
+				this._focusTabbable();
+			}
+		}
+		event.preventDefault();
+		checkFocus.call( this );
+		// support: IE
+		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
+		// so we check again later
+		this._delay( checkFocus );
+	},
+
+	_createWrapper: function() {
+		this.uiDialog = $("<div>")
+			.addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " +
+				this.options.dialogClass )
+			.hide()
+			.attr({
+				// Setting tabIndex makes the div focusable
+				tabIndex: -1,
+				role: "dialog"
+			})
+			.appendTo( this._appendTo() );
+
+		this._on( this.uiDialog, {
+			keydown: function( event ) {
+				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
+						event.keyCode === $.ui.keyCode.ESCAPE ) {
+					event.preventDefault();
+					this.close( event );
+					return;
+				}
+
+				// prevent tabbing out of dialogs
+				if ( event.keyCode !== $.ui.keyCode.TAB ) {
+					return;
+				}
+				var tabbables = this.uiDialog.find(":tabbable"),
+					first = tabbables.filter(":first"),
+					last  = tabbables.filter(":last");
+
+				if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {
+					first.focus( 1 );
+					event.preventDefault();
+				} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
+					last.focus( 1 );
+					event.preventDefault();
+				}
+			},
+			mousedown: function( event ) {
+				if ( this._moveToTop( event ) ) {
+					this._focusTabbable();
+				}
+			}
+		});
+
+		// We assume that any existing aria-describedby attribute means
+		// that the dialog content is marked up properly
+		// otherwise we brute force the content as the description
+		if ( !this.element.find("[aria-describedby]").length ) {
+			this.uiDialog.attr({
+				"aria-describedby": this.element.uniqueId().attr("id")
+			});
+		}
+	},
+
+	_createTitlebar: function() {
+		var uiDialogTitle;
+
+		this.uiDialogTitlebar = $("<div>")
+			.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
+			.prependTo( this.uiDialog );
+		this._on( this.uiDialogTitlebar, {
+			mousedown: function( event ) {
+				// Don't prevent click on close button (#8838)
+				// Focusing a dialog that is partially scrolled out of view
+				// causes the browser to scroll it into view, preventing the click event
+				if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) {
+					// Dialog isn't getting focus when dragging (#8063)
+					this.uiDialog.focus();
+				}
+			}
+		});
+
+		this.uiDialogTitlebarClose = $("<button></button>")
+			.button({
+				label: this.options.closeText,
+				icons: {
+					primary: "ui-icon-closethick"
+				},
+				text: false
+			})
+			.addClass("ui-dialog-titlebar-close")
+			.appendTo( this.uiDialogTitlebar );
+		this._on( this.uiDialogTitlebarClose, {
+			click: function( event ) {
+				event.preventDefault();
+				this.close( event );
+			}
+		});
+
+		uiDialogTitle = $("<span>")
+			.uniqueId()
+			.addClass("ui-dialog-title")
+			.prependTo( this.uiDialogTitlebar );
+		this._title( uiDialogTitle );
+
+		this.uiDialog.attr({
+			"aria-labelledby": uiDialogTitle.attr("id")
+		});
+	},
+
+	_title: function( title ) {
+		if ( !this.options.title ) {
+			title.html("&#160;");
+		}
+		title.text( this.options.title );
+	},
+
+	_createButtonPane: function() {
+		this.uiDialogButtonPane = $("<div>")
+			.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");
+
+		this.uiButtonSet = $("<div>")
+			.addClass("ui-dialog-buttonset")
+			.appendTo( this.uiDialogButtonPane );
+
+		this._createButtons();
+	},
+
+	_createButtons: function() {
+		var that = this,
+			buttons = this.options.buttons;
+
+		// if we already have a button pane, remove it
+		this.uiDialogButtonPane.remove();
+		this.uiButtonSet.empty();
+
+		if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {
+			this.uiDialog.removeClass("ui-dialog-buttons");
+			return;
+		}
+
+		$.each( buttons, function( name, props ) {
+			var click, buttonOptions;
+			props = $.isFunction( props ) ?
+				{ click: props, text: name } :
+				props;
+			// Default to a non-submitting button
+			props = $.extend( { type: "button" }, props );
+			// Change the context for the click callback to be the main element
+			click = props.click;
+			props.click = function() {
+				click.apply( that.element[0], arguments );
+			};
+			buttonOptions = {
+				icons: props.icons,
+				text: props.showText
+			};
+			delete props.icons;
+			delete props.showText;
+			$( "<button></button>", props )
+				.button( buttonOptions )
+				.appendTo( that.uiButtonSet );
+		});
+		this.uiDialog.addClass("ui-dialog-buttons");
+		this.uiDialogButtonPane.appendTo( this.uiDialog );
+	},
+
+	_makeDraggable: function() {
+		var that = this,
+			options = this.options;
+
+		function filteredUi( ui ) {
+			return {
+				position: ui.position,
+				offset: ui.offset
+			};
+		}
+
+		this.uiDialog.draggable({
+			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
+			handle: ".ui-dialog-titlebar",
+			containment: "document",
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-dragging");
+				that._blockFrames();
+				that._trigger( "dragStart", event, filteredUi( ui ) );
+			},
+			drag: function( event, ui ) {
+				that._trigger( "drag", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.position = [
+					ui.position.left - that.document.scrollLeft(),
+					ui.position.top - that.document.scrollTop()
+				];
+				$( this ).removeClass("ui-dialog-dragging");
+				that._unblockFrames();
+				that._trigger( "dragStop", event, filteredUi( ui ) );
+			}
+		});
+	},
+
+	_makeResizable: function() {
+		var that = this,
+			options = this.options,
+			handles = options.resizable,
+			// .ui-resizable has position: relative defined in the stylesheet
+			// but dialogs have to use absolute or fixed positioning
+			position = this.uiDialog.css("position"),
+			resizeHandles = typeof handles === "string" ?
+				handles	:
+				"n,e,s,w,se,sw,ne,nw";
+
+		function filteredUi( ui ) {
+			return {
+				originalPosition: ui.originalPosition,
+				originalSize: ui.originalSize,
+				position: ui.position,
+				size: ui.size
+			};
+		}
+
+		this.uiDialog.resizable({
+			cancel: ".ui-dialog-content",
+			containment: "document",
+			alsoResize: this.element,
+			maxWidth: options.maxWidth,
+			maxHeight: options.maxHeight,
+			minWidth: options.minWidth,
+			minHeight: this._minHeight(),
+			handles: resizeHandles,
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-resizing");
+				that._blockFrames();
+				that._trigger( "resizeStart", event, filteredUi( ui ) );
+			},
+			resize: function( event, ui ) {
+				that._trigger( "resize", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.height = $( this ).height();
+				options.width = $( this ).width();
+				$( this ).removeClass("ui-dialog-resizing");
+				that._unblockFrames();
+				that._trigger( "resizeStop", event, filteredUi( ui ) );
+			}
+		})
+		.css( "position", position );
+	},
+
+	_minHeight: function() {
+		var options = this.options;
+
+		return options.height === "auto" ?
+			options.minHeight :
+			Math.min( options.minHeight, options.height );
+	},
+
+	_position: function() {
+		// Need to show the dialog to get the actual offset in the position plugin
+		var isVisible = this.uiDialog.is(":visible");
+		if ( !isVisible ) {
+			this.uiDialog.show();
+		}
+		this.uiDialog.position( this.options.position );
+		if ( !isVisible ) {
+			this.uiDialog.hide();
+		}
+	},
+
+	_setOptions: function( options ) {
+		var that = this,
+			resize = false,
+			resizableOptions = {};
+
+		$.each( options, function( key, value ) {
+			that._setOption( key, value );
+
+			if ( key in sizeRelatedOptions ) {
+				resize = true;
+			}
+			if ( key in resizableRelatedOptions ) {
+				resizableOptions[ key ] = value;
+			}
+		});
+
+		if ( resize ) {
+			this._size();
+			this._position();
+		}
+		if ( this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", resizableOptions );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		/*jshint maxcomplexity:15*/
+		var isDraggable, isResizable,
+			uiDialog = this.uiDialog;
+
+		if ( key === "dialogClass" ) {
+			uiDialog
+				.removeClass( this.options.dialogClass )
+				.addClass( value );
+		}
+
+		if ( key === "disabled" ) {
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "appendTo" ) {
+			this.uiDialog.appendTo( this._appendTo() );
+		}
+
+		if ( key === "buttons" ) {
+			this._createButtons();
+		}
+
+		if ( key === "closeText" ) {
+			this.uiDialogTitlebarClose.button({
+				// Ensure that we always pass a string
+				label: "" + value
+			});
+		}
+
+		if ( key === "draggable" ) {
+			isDraggable = uiDialog.is(":data(ui-draggable)");
+			if ( isDraggable && !value ) {
+				uiDialog.draggable("destroy");
+			}
+
+			if ( !isDraggable && value ) {
+				this._makeDraggable();
+			}
+		}
+
+		if ( key === "position" ) {
+			this._position();
+		}
+
+		if ( key === "resizable" ) {
+			// currently resizable, becoming non-resizable
+			isResizable = uiDialog.is(":data(ui-resizable)");
+			if ( isResizable && !value ) {
+				uiDialog.resizable("destroy");
+			}
+
+			// currently resizable, changing handles
+			if ( isResizable && typeof value === "string" ) {
+				uiDialog.resizable( "option", "handles", value );
+			}
+
+			// currently non-resizable, becoming resizable
+			if ( !isResizable && value !== false ) {
+				this._makeResizable();
+			}
+		}
+
+		if ( key === "title" ) {
+			this._title( this.uiDialogTitlebar.find(".ui-dialog-title") );
+		}
+	},
+
+	_size: function() {
+		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
+		// divs will both have width and height set, so we need to reset them
+		var nonContentHeight, minContentHeight, maxContentHeight,
+			options = this.options;
+
+		// Reset content sizing
+		this.element.show().css({
+			width: "auto",
+			minHeight: 0,
+			maxHeight: "none",
+			height: 0
+		});
+
+		if ( options.minWidth > options.width ) {
+			options.width = options.minWidth;
+		}
+
+		// reset wrapper sizing
+		// determine the height of all the non-content elements
+		nonContentHeight = this.uiDialog.css({
+				height: "auto",
+				width: options.width
+			})
+			.outerHeight();
+		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
+		maxContentHeight = typeof options.maxHeight === "number" ?
+			Math.max( 0, options.maxHeight - nonContentHeight ) :
+			"none";
+
+		if ( options.height === "auto" ) {
+			this.element.css({
+				minHeight: minContentHeight,
+				maxHeight: maxContentHeight,
+				height: "auto"
+			});
+		} else {
+			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
+		}
+
+		if (this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
+		}
+	},
+
+	_blockFrames: function() {
+		this.iframeBlocks = this.document.find( "iframe" ).map(function() {
+			var iframe = $( this );
+
+			return $( "<div>" )
+				.css({
+					position: "absolute",
+					width: iframe.outerWidth(),
+					height: iframe.outerHeight()
+				})
+				.appendTo( iframe.parent() )
+				.offset( iframe.offset() )[0];
+		});
+	},
+
+	_unblockFrames: function() {
+		if ( this.iframeBlocks ) {
+			this.iframeBlocks.remove();
+			delete this.iframeBlocks;
+		}
+	},
+
+	_allowInteraction: function( event ) {
+		if ( $( event.target ).closest(".ui-dialog").length ) {
+			return true;
+		}
+
+		// TODO: Remove hack when datepicker implements
+		// the .ui-front logic (#8989)
+		return !!$( event.target ).closest(".ui-datepicker").length;
+	},
+
+	_createOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		var that = this,
+			widgetFullName = this.widgetFullName;
+		if ( !$.ui.dialog.overlayInstances ) {
+			// Prevent use of anchors and inputs.
+			// We use a delay in case the overlay is created from an
+			// event that we're going to be cancelling. (#2804)
+			this._delay(function() {
+				// Handle .dialog().dialog("close") (#4065)
+				if ( $.ui.dialog.overlayInstances ) {
+					this.document.bind( "focusin.dialog", function( event ) {
+						if ( !that._allowInteraction( event ) ) {
+							event.preventDefault();
+							$(".ui-dialog:visible:last .ui-dialog-content")
+								.data( widgetFullName )._focusTabbable();
+						}
+					});
+				}
+			});
+		}
+
+		this.overlay = $("<div>")
+			.addClass("ui-widget-overlay ui-front")
+			.appendTo( this._appendTo() );
+		this._on( this.overlay, {
+			mousedown: "_keepFocus"
+		});
+		$.ui.dialog.overlayInstances++;
+	},
+
+	_destroyOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		if ( this.overlay ) {
+			$.ui.dialog.overlayInstances--;
+
+			if ( !$.ui.dialog.overlayInstances ) {
+				this.document.unbind( "focusin.dialog" );
+			}
+			this.overlay.remove();
+			this.overlay = null;
+		}
+	}
+});
+
+$.ui.dialog.overlayInstances = 0;
+
+// DEPRECATED
+if ( $.uiBackCompat !== false ) {
+	// position option with array notation
+	// just override with old implementation
+	$.widget( "ui.dialog", $.ui.dialog, {
+		_position: function() {
+			var position = this.options.position,
+				myAt = [],
+				offset = [ 0, 0 ],
+				isVisible;
+
+			if ( position ) {
+				if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
+					myAt = position.split ? position.split(" ") : [ position[0], position[1] ];
+					if ( myAt.length === 1 ) {
+						myAt[1] = myAt[0];
+					}
+
+					$.each( [ "left", "top" ], function( i, offsetPosition ) {
+						if ( +myAt[ i ] === myAt[ i ] ) {
+							offset[ i ] = myAt[ i ];
+							myAt[ i ] = offsetPosition;
+						}
+					});
+
+					position = {
+						my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
+							myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
+						at: myAt.join(" ")
+					};
+				}
+
+				position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
+			} else {
+				position = $.ui.dialog.prototype.options.position;
+			}
+
+			// need to show the dialog to get the actual offset in the position plugin
+			isVisible = this.uiDialog.is(":visible");
+			if ( !isVisible ) {
+				this.uiDialog.show();
+			}
+			this.uiDialog.position( position );
+			if ( !isVisible ) {
+				this.uiDialog.hide();
+			}
+		}
+	});
+}
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+var rvertical = /up|down|vertical/,
+	rpositivemotion = /up|left|vertical|horizontal/;
+
+$.effects.effect.blind = function( o, done ) {
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		direction = o.direction || "up",
+		vertical = rvertical.test( direction ),
+		ref = vertical ? "height" : "width",
+		ref2 = vertical ? "top" : "left",
+		motion = rpositivemotion.test( direction ),
+		animation = {},
+		show = mode === "show",
+		wrapper, distance, margin;
+
+	// if already wrapped, the wrapper's properties are my property. #6245
+	if ( el.parent().is( ".ui-effects-wrapper" ) ) {
+		$.effects.save( el.parent(), props );
+	} else {
+		$.effects.save( el, props );
+	}
+	el.show();
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+
+	distance = wrapper[ ref ]();
+	margin = parseFloat( wrapper.css( ref2 ) ) || 0;
+
+	animation[ ref ] = show ? distance : 0;
+	if ( !motion ) {
+		el
+			.css( vertical ? "bottom" : "right", 0 )
+			.css( vertical ? "top" : "left", "auto" )
+			.css({ position: "absolute" });
+
+		animation[ ref2 ] = show ? margin : distance + margin;
+	}
+
+	// start at 0 if we are showing
+	if ( show ) {
+		wrapper.css( ref, 0 );
+		if ( ! motion ) {
+			wrapper.css( ref2, margin + distance );
+		}
+	}
+
+	// Animate
+	wrapper.animate( animation, {
+		duration: o.duration,
+		easing: o.easing,
+		queue: false,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.bounce = function( o, done ) {
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+
+		// defaults:
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		hide = mode === "hide",
+		show = mode === "show",
+		direction = o.direction || "up",
+		distance = o.distance,
+		times = o.times || 5,
+
+		// number of internal animations
+		anims = times * 2 + ( show || hide ? 1 : 0 ),
+		speed = o.duration / anims,
+		easing = o.easing,
+
+		// utility:
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ),
+		i,
+		upAnim,
+		downAnim,
+
+		// we will need to re-assemble the queue to stack our animations in place
+		queue = el.queue(),
+		queuelen = queue.length;
+
+	// Avoid touching opacity to prevent clearType and PNG issues in IE
+	if ( show || hide ) {
+		props.push( "opacity" );
+	}
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el ); // Create Wrapper
+
+	// default distance for the BIGGEST bounce is the outer Distance / 3
+	if ( !distance ) {
+		distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
+	}
+
+	if ( show ) {
+		downAnim = { opacity: 1 };
+		downAnim[ ref ] = 0;
+
+		// if we are showing, force opacity 0 and set the initial position
+		// then do the "first" animation
+		el.css( "opacity", 0 )
+			.css( ref, motion ? -distance * 2 : distance * 2 )
+			.animate( downAnim, speed, easing );
+	}
+
+	// start at the smallest distance if we are hiding
+	if ( hide ) {
+		distance = distance / Math.pow( 2, times - 1 );
+	}
+
+	downAnim = {};
+	downAnim[ ref ] = 0;
+	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
+	for ( i = 0; i < times; i++ ) {
+		upAnim = {};
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		el.animate( upAnim, speed, easing )
+			.animate( downAnim, speed, easing );
+
+		distance = hide ? distance * 2 : distance / 2;
+	}
+
+	// Last Bounce when Hiding
+	if ( hide ) {
+		upAnim = { opacity: 0 };
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		el.animate( upAnim, speed, easing );
+	}
+
+	el.queue(function() {
+		if ( hide ) {
+			el.hide();
+		}
+		$.effects.restore( el, props );
+		$.effects.removeWrapper( el );
+		done();
+	});
+
+	// inject all the animations we just queued to be first in line (after "inprogress")
+	if ( queuelen > 1) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	el.dequeue();
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.clip = function( o, done ) {
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		direction = o.direction || "vertical",
+		vert = direction === "vertical",
+		size = vert ? "height" : "width",
+		position = vert ? "top" : "left",
+		animation = {},
+		wrapper, animate, distance;
+
+	// Save & Show
+	$.effects.save( el, props );
+	el.show();
+
+	// Create Wrapper
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+	animate = ( el[0].tagName === "IMG" ) ? wrapper : el;
+	distance = animate[ size ]();
+
+	// Shift
+	if ( show ) {
+		animate.css( size, 0 );
+		animate.css( position, distance / 2 );
+	}
+
+	// Create Animation Object:
+	animation[ size ] = show ? distance : 0;
+	animation[ position ] = show ? 0 : distance / 2;
+
+	// Animate
+	animate.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( !show ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.drop = function( o, done ) {
+
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		direction = o.direction || "left",
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg",
+		animation = {
+			opacity: show ? 1 : 0
+		},
+		distance;
+
+	// Adjust
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+
+	distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2;
+
+	if ( show ) {
+		el
+			.css( "opacity", 0 )
+			.css( ref, motion === "pos" ? -distance : distance );
+	}
+
+	// Animation
+	animation[ ref ] = ( show ?
+		( motion === "pos" ? "+=" : "-=" ) :
+		( motion === "pos" ? "-=" : "+=" ) ) +
+		distance;
+
+	// Animate
+	el.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.explode = function( o, done ) {
+
+	var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
+		cells = rows,
+		el = $( this ),
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+
+		// show and then visibility:hidden the element before calculating offset
+		offset = el.show().css( "visibility", "hidden" ).offset(),
+
+		// width and height of a piece
+		width = Math.ceil( el.outerWidth() / cells ),
+		height = Math.ceil( el.outerHeight() / rows ),
+		pieces = [],
+
+		// loop
+		i, j, left, top, mx, my;
+
+	// children animate complete:
+	function childComplete() {
+		pieces.push( this );
+		if ( pieces.length === rows * cells ) {
+			animComplete();
+		}
+	}
+
+	// clone the element for each row and cell.
+	for( i = 0; i < rows ; i++ ) { // ===>
+		top = offset.top + i * height;
+		my = i - ( rows - 1 ) / 2 ;
+
+		for( j = 0; j < cells ; j++ ) { // |||
+			left = offset.left + j * width;
+			mx = j - ( cells - 1 ) / 2 ;
+
+			// Create a clone of the now hidden main element that will be absolute positioned
+			// within a wrapper div off the -left and -top equal to size of our pieces
+			el
+				.clone()
+				.appendTo( "body" )
+				.wrap( "<div></div>" )
+				.css({
+					position: "absolute",
+					visibility: "visible",
+					left: -j * width,
+					top: -i * height
+				})
+
+			// select the wrapper - make it overflow: hidden and absolute positioned based on
+			// where the original was located +left and +top equal to the size of pieces
+				.parent()
+				.addClass( "ui-effects-explode" )
+				.css({
+					position: "absolute",
+					overflow: "hidden",
+					width: width,
+					height: height,
+					left: left + ( show ? mx * width : 0 ),
+					top: top + ( show ? my * height : 0 ),
+					opacity: show ? 0 : 1
+				}).animate({
+					left: left + ( show ? 0 : mx * width ),
+					top: top + ( show ? 0 : my * height ),
+					opacity: show ? 1 : 0
+				}, o.duration || 500, o.easing, childComplete );
+		}
+	}
+
+	function animComplete() {
+		el.css({
+			visibility: "visible"
+		});
+		$( pieces ).remove();
+		if ( !show ) {
+			el.hide();
+		}
+		done();
+	}
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.fade = function( o, done ) {
+	var el = $( this ),
+		mode = $.effects.setMode( el, o.mode || "toggle" );
+
+	el.animate({
+		opacity: mode
+	}, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: done
+	});
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.effects.effect.fold = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		hide = mode === "hide",
+		size = o.size || 15,
+		percent = /([0-9]+)%/.exec( size ),
+		horizFirst = !!o.horizFirst,
+		widthFirst = show !== horizFirst,
+		ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],
+		duration = o.duration / 2,
+		wrapper, distance,
+		animation1 = {},
+		animation2 = {};
+
+	$.effects.save( el, props );
+	el.show();
+
+	// Create Wrapper
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+	distance = widthFirst ?
+		[ wrapper.width(), wrapper.height() ] :
+		[ wrapper.height(), wrapper.width() ];
+
+	if ( percent ) {
+		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
+	}
+	if ( show ) {
+		wrapper.css( horizFirst ? {
+			height: 0,
+			width: size
+		} : {
+			height: size,
+			width: 0
+		});
+	}
+
+	// Animation
+	animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;
+	animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;
+
+	// Animate
+	wrapper
+		.animate( animation1, duration, o.easing )
+		.animate( animation2, duration, o.easing, function() {
+			if ( hide ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.highlight = function( o, done ) {
+	var elem = $( this ),
+		props = [ "backgroundImage", "backgroundColor", "opacity" ],
+		mode = $.effects.setMode( elem, o.mode || "show" ),
+		animation = {
+			backgroundColor: elem.css( "backgroundColor" )
+		};
+
+	if (mode === "hide") {
+		animation.opacity = 0;
+	}
+
+	$.effects.save( elem, props );
+
+	elem
+		.show()
+		.css({
+			backgroundImage: "none",
+			backgroundColor: o.color || "#ffff99"
+		})
+		.animate( animation, {
+			queue: false,
+			duration: o.duration,
+			easing: o.easing,
+			complete: function() {
+				if ( mode === "hide" ) {
+					elem.hide();
+				}
+				$.effects.restore( elem, props );
+				done();
+			}
+		});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.pulsate = function( o, done ) {
+	var elem = $( this ),
+		mode = $.effects.setMode( elem, o.mode || "show" ),
+		show = mode === "show",
+		hide = mode === "hide",
+		showhide = ( show || mode === "hide" ),
+
+		// showing or hiding leaves of the "last" animation
+		anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
+		duration = o.duration / anims,
+		animateTo = 0,
+		queue = elem.queue(),
+		queuelen = queue.length,
+		i;
+
+	if ( show || !elem.is(":visible")) {
+		elem.css( "opacity", 0 ).show();
+		animateTo = 1;
+	}
+
+	// anims - 1 opacity "toggles"
+	for ( i = 1; i < anims; i++ ) {
+		elem.animate({
+			opacity: animateTo
+		}, duration, o.easing );
+		animateTo = 1 - animateTo;
+	}
+
+	elem.animate({
+		opacity: animateTo
+	}, duration, o.easing);
+
+	elem.queue(function() {
+		if ( hide ) {
+			elem.hide();
+		}
+		done();
+	});
+
+	// We just queued up "anims" animations, we need to put them next in the queue
+	if ( queuelen > 1 ) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	elem.dequeue();
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.puff = function( o, done ) {
+	var elem = $( this ),
+		mode = $.effects.setMode( elem, o.mode || "hide" ),
+		hide = mode === "hide",
+		percent = parseInt( o.percent, 10 ) || 150,
+		factor = percent / 100,
+		original = {
+			height: elem.height(),
+			width: elem.width(),
+			outerHeight: elem.outerHeight(),
+			outerWidth: elem.outerWidth()
+		};
+
+	$.extend( o, {
+		effect: "scale",
+		queue: false,
+		fade: true,
+		mode: mode,
+		complete: done,
+		percent: hide ? percent : 100,
+		from: hide ?
+			original :
+			{
+				height: original.height * factor,
+				width: original.width * factor,
+				outerHeight: original.outerHeight * factor,
+				outerWidth: original.outerWidth * factor
+			}
+	});
+
+	elem.effect( o );
+};
+
+$.effects.effect.scale = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		options = $.extend( true, {}, o ),
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		percent = parseInt( o.percent, 10 ) ||
+			( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ),
+		direction = o.direction || "both",
+		origin = o.origin,
+		original = {
+			height: el.height(),
+			width: el.width(),
+			outerHeight: el.outerHeight(),
+			outerWidth: el.outerWidth()
+		},
+		factor = {
+			y: direction !== "horizontal" ? (percent / 100) : 1,
+			x: direction !== "vertical" ? (percent / 100) : 1
+		};
+
+	// We are going to pass this effect to the size effect:
+	options.effect = "size";
+	options.queue = false;
+	options.complete = done;
+
+	// Set default origin and restore for show/hide
+	if ( mode !== "effect" ) {
+		options.origin = origin || ["middle","center"];
+		options.restore = true;
+	}
+
+	options.from = o.from || ( mode === "show" ? {
+		height: 0,
+		width: 0,
+		outerHeight: 0,
+		outerWidth: 0
+	} : original );
+	options.to = {
+		height: original.height * factor.y,
+		width: original.width * factor.x,
+		outerHeight: original.outerHeight * factor.y,
+		outerWidth: original.outerWidth * factor.x
+	};
+
+	// Fade option to support puff
+	if ( options.fade ) {
+		if ( mode === "show" ) {
+			options.from.opacity = 0;
+			options.to.opacity = 1;
+		}
+		if ( mode === "hide" ) {
+			options.from.opacity = 1;
+			options.to.opacity = 0;
+		}
+	}
+
+	// Animate
+	el.effect( options );
+
+};
+
+$.effects.effect.size = function( o, done ) {
+
+	// Create element
+	var original, baseline, factor,
+		el = $( this ),
+		props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ],
+
+		// Always restore
+		props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ],
+
+		// Copy for children
+		props2 = [ "width", "height", "overflow" ],
+		cProps = [ "fontSize" ],
+		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
+		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
+
+		// Set options
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		restore = o.restore || mode !== "effect",
+		scale = o.scale || "both",
+		origin = o.origin || [ "middle", "center" ],
+		position = el.css( "position" ),
+		props = restore ? props0 : props1,
+		zero = {
+			height: 0,
+			width: 0,
+			outerHeight: 0,
+			outerWidth: 0
+		};
+
+	if ( mode === "show" ) {
+		el.show();
+	}
+	original = {
+		height: el.height(),
+		width: el.width(),
+		outerHeight: el.outerHeight(),
+		outerWidth: el.outerWidth()
+	};
+
+	if ( o.mode === "toggle" && mode === "show" ) {
+		el.from = o.to || zero;
+		el.to = o.from || original;
+	} else {
+		el.from = o.from || ( mode === "show" ? zero : original );
+		el.to = o.to || ( mode === "hide" ? zero : original );
+	}
+
+	// Set scaling factor
+	factor = {
+		from: {
+			y: el.from.height / original.height,
+			x: el.from.width / original.width
+		},
+		to: {
+			y: el.to.height / original.height,
+			x: el.to.width / original.width
+		}
+	};
+
+	// Scale the css box
+	if ( scale === "box" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			props = props.concat( vProps );
+			el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );
+			el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );
+		}
+
+		// Horizontal props scaling
+		if ( factor.from.x !== factor.to.x ) {
+			props = props.concat( hProps );
+			el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );
+			el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );
+		}
+	}
+
+	// Scale the content
+	if ( scale === "content" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			props = props.concat( cProps ).concat( props2 );
+			el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );
+			el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );
+		}
+	}
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+	el.css( "overflow", "hidden" ).css( el.from );
+
+	// Adjust
+	if (origin) { // Calculate baseline shifts
+		baseline = $.effects.getBaseline( origin, original );
+		el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;
+		el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;
+		el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;
+		el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;
+	}
+	el.css( el.from ); // set top & left
+
+	// Animate
+	if ( scale === "content" || scale === "both" ) { // Scale the children
+
+		// Add margins/font-size
+		vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps);
+		hProps = hProps.concat([ "marginLeft", "marginRight" ]);
+		props2 = props0.concat(vProps).concat(hProps);
+
+		el.find( "*[width]" ).each( function(){
+			var child = $( this ),
+				c_original = {
+					height: child.height(),
+					width: child.width(),
+					outerHeight: child.outerHeight(),
+					outerWidth: child.outerWidth()
+				};
+			if (restore) {
+				$.effects.save(child, props2);
+			}
+
+			child.from = {
+				height: c_original.height * factor.from.y,
+				width: c_original.width * factor.from.x,
+				outerHeight: c_original.outerHeight * factor.from.y,
+				outerWidth: c_original.outerWidth * factor.from.x
+			};
+			child.to = {
+				height: c_original.height * factor.to.y,
+				width: c_original.width * factor.to.x,
+				outerHeight: c_original.height * factor.to.y,
+				outerWidth: c_original.width * factor.to.x
+			};
+
+			// Vertical props scaling
+			if ( factor.from.y !== factor.to.y ) {
+				child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );
+				child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );
+			}
+
+			// Horizontal props scaling
+			if ( factor.from.x !== factor.to.x ) {
+				child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );
+				child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );
+			}
+
+			// Animate children
+			child.css( child.from );
+			child.animate( child.to, o.duration, o.easing, function() {
+
+				// Restore children
+				if ( restore ) {
+					$.effects.restore( child, props2 );
+				}
+			});
+		});
+	}
+
+	// Animate
+	el.animate( el.to, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( el.to.opacity === 0 ) {
+				el.css( "opacity", el.from.opacity );
+			}
+			if( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			if ( !restore ) {
+
+				// we need to calculate our new positioning based on the scaling
+				if ( position === "static" ) {
+					el.css({
+						position: "relative",
+						top: el.to.top,
+						left: el.to.left
+					});
+				} else {
+					$.each([ "top", "left" ], function( idx, pos ) {
+						el.css( pos, function( _, str ) {
+							var val = parseInt( str, 10 ),
+								toRef = idx ? el.to.left : el.to.top;
+
+							// if original was "auto", recalculate the new value from wrapper
+							if ( str === "auto" ) {
+								return toRef + "px";
+							}
+
+							return val + toRef + "px";
+						});
+					});
+				}
+			}
+
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.shake = function( o, done ) {
+
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		direction = o.direction || "left",
+		distance = o.distance || 20,
+		times = o.times || 3,
+		anims = times * 2 + 1,
+		speed = Math.round(o.duration/anims),
+		ref = (direction === "up" || direction === "down") ? "top" : "left",
+		positiveMotion = (direction === "up" || direction === "left"),
+		animation = {},
+		animation1 = {},
+		animation2 = {},
+		i,
+
+		// we will need to re-assemble the queue to stack our animations in place
+		queue = el.queue(),
+		queuelen = queue.length;
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+
+	// Animation
+	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
+	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
+	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
+
+	// Animate
+	el.animate( animation, speed, o.easing );
+
+	// Shakes
+	for ( i = 1; i < times; i++ ) {
+		el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
+	}
+	el
+		.animate( animation1, speed, o.easing )
+		.animate( animation, speed / 2, o.easing )
+		.queue(function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		});
+
+	// inject all the animations we just queued to be first in line (after "inprogress")
+	if ( queuelen > 1) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	el.dequeue();
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.slide = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "width", "height" ],
+		mode = $.effects.setMode( el, o.mode || "show" ),
+		show = mode === "show",
+		direction = o.direction || "left",
+		ref = (direction === "up" || direction === "down") ? "top" : "left",
+		positiveMotion = (direction === "up" || direction === "left"),
+		distance,
+		animation = {};
+
+	// Adjust
+	$.effects.save( el, props );
+	el.show();
+	distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true );
+
+	$.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+
+	if ( show ) {
+		el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance );
+	}
+
+	// Animation
+	animation[ ref ] = ( show ?
+		( positiveMotion ? "+=" : "-=") :
+		( positiveMotion ? "-=" : "+=")) +
+		distance;
+
+	// Animate
+	el.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.transfer = function( o, done ) {
+	var elem = $( this ),
+		target = $( o.to ),
+		targetFixed = target.css( "position" ) === "fixed",
+		body = $("body"),
+		fixTop = targetFixed ? body.scrollTop() : 0,
+		fixLeft = targetFixed ? body.scrollLeft() : 0,
+		endPosition = target.offset(),
+		animation = {
+			top: endPosition.top - fixTop ,
+			left: endPosition.left - fixLeft ,
+			height: target.innerHeight(),
+			width: target.innerWidth()
+		},
+		startPosition = elem.offset(),
+		transfer = $( "<div class='ui-effects-transfer'></div>" )
+			.appendTo( document.body )
+			.addClass( o.className )
+			.css({
+				top: startPosition.top - fixTop ,
+				left: startPosition.left - fixLeft ,
+				height: elem.innerHeight(),
+				width: elem.innerWidth(),
+				position: targetFixed ? "fixed" : "absolute"
+			})
+			.animate( animation, o.duration, o.easing, function() {
+				transfer.remove();
+				done();
+			});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.widget( "ui.menu", {
+	version: "1.10.3",
+	defaultElement: "<ul>",
+	delay: 300,
+	options: {
+		icons: {
+			submenu: "ui-icon-carat-1-e"
+		},
+		menus: "ul",
+		position: {
+			my: "left top",
+			at: "right top"
+		},
+		role: "menu",
+
+		// callbacks
+		blur: null,
+		focus: null,
+		select: null
+	},
+
+	_create: function() {
+		this.activeMenu = this.element;
+		// flag used to prevent firing of the click handler
+		// as the event bubbles up through nested menus
+		this.mouseHandled = false;
+		this.element
+			.uniqueId()
+			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
+			.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )
+			.attr({
+				role: this.options.role,
+				tabIndex: 0
+			})
+			// need to catch all clicks on disabled menu
+			// not possible through _on
+			.bind( "click" + this.eventNamespace, $.proxy(function( event ) {
+				if ( this.options.disabled ) {
+					event.preventDefault();
+				}
+			}, this ));
+
+		if ( this.options.disabled ) {
+			this.element
+				.addClass( "ui-state-disabled" )
+				.attr( "aria-disabled", "true" );
+		}
+
+		this._on({
+			// Prevent focus from sticking to links inside menu after clicking
+			// them (focus should always stay on UL during navigation).
+			"mousedown .ui-menu-item > a": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-state-disabled > a": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-menu-item:has(a)": function( event ) {
+				var target = $( event.target ).closest( ".ui-menu-item" );
+				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
+					this.mouseHandled = true;
+
+					this.select( event );
+					// Open submenu on click
+					if ( target.has( ".ui-menu" ).length ) {
+						this.expand( event );
+					} else if ( !this.element.is( ":focus" ) ) {
+						// Redirect focus to the menu
+						this.element.trigger( "focus", [ true ] );
+
+						// If the active item is on the top level, let it stay active.
+						// Otherwise, blur the active item since it is no longer visible.
+						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
+							clearTimeout( this.timer );
+						}
+					}
+				}
+			},
+			"mouseenter .ui-menu-item": function( event ) {
+				var target = $( event.currentTarget );
+				// Remove ui-state-active class from siblings of the newly focused menu item
+				// to avoid a jump caused by adjacent elements both having a class with a border
+				target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
+				this.focus( event, target );
+			},
+			mouseleave: "collapseAll",
+			"mouseleave .ui-menu": "collapseAll",
+			focus: function( event, keepActiveItem ) {
+				// If there's already an active item, keep it active
+				// If not, activate the first item
+				var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
+
+				if ( !keepActiveItem ) {
+					this.focus( event, item );
+				}
+			},
+			blur: function( event ) {
+				this._delay(function() {
+					if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
+						this.collapseAll( event );
+					}
+				});
+			},
+			keydown: "_keydown"
+		});
+
+		this.refresh();
+
+		// Clicks outside of a menu collapse any open menus
+		this._on( this.document, {
+			click: function( event ) {
+				if ( !$( event.target ).closest( ".ui-menu" ).length ) {
+					this.collapseAll( event );
+				}
+
+				// Reset the mouseHandled flag
+				this.mouseHandled = false;
+			}
+		});
+	},
+
+	_destroy: function() {
+		// Destroy (sub)menus
+		this.element
+			.removeAttr( "aria-activedescendant" )
+			.find( ".ui-menu" ).addBack()
+				.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
+				.removeAttr( "role" )
+				.removeAttr( "tabIndex" )
+				.removeAttr( "aria-labelledby" )
+				.removeAttr( "aria-expanded" )
+				.removeAttr( "aria-hidden" )
+				.removeAttr( "aria-disabled" )
+				.removeUniqueId()
+				.show();
+
+		// Destroy menu items
+		this.element.find( ".ui-menu-item" )
+			.removeClass( "ui-menu-item" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-disabled" )
+			.children( "a" )
+				.removeUniqueId()
+				.removeClass( "ui-corner-all ui-state-hover" )
+				.removeAttr( "tabIndex" )
+				.removeAttr( "role" )
+				.removeAttr( "aria-haspopup" )
+				.children().each( function() {
+					var elem = $( this );
+					if ( elem.data( "ui-menu-submenu-carat" ) ) {
+						elem.remove();
+					}
+				});
+
+		// Destroy menu dividers
+		this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
+	},
+
+	_keydown: function( event ) {
+		/*jshint maxcomplexity:20*/
+		var match, prev, character, skip, regex,
+			preventDefault = true;
+
+		function escape( value ) {
+			return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
+		}
+
+		switch ( event.keyCode ) {
+		case $.ui.keyCode.PAGE_UP:
+			this.previousPage( event );
+			break;
+		case $.ui.keyCode.PAGE_DOWN:
+			this.nextPage( event );
+			break;
+		case $.ui.keyCode.HOME:
+			this._move( "first", "first", event );
+			break;
+		case $.ui.keyCode.END:
+			this._move( "last", "last", event );
+			break;
+		case $.ui.keyCode.UP:
+			this.previous( event );
+			break;
+		case $.ui.keyCode.DOWN:
+			this.next( event );
+			break;
+		case $.ui.keyCode.LEFT:
+			this.collapse( event );
+			break;
+		case $.ui.keyCode.RIGHT:
+			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
+				this.expand( event );
+			}
+			break;
+		case $.ui.keyCode.ENTER:
+		case $.ui.keyCode.SPACE:
+			this._activate( event );
+			break;
+		case $.ui.keyCode.ESCAPE:
+			this.collapse( event );
+			break;
+		default:
+			preventDefault = false;
+			prev = this.previousFilter || "";
+			character = String.fromCharCode( event.keyCode );
+			skip = false;
+
+			clearTimeout( this.filterTimer );
+
+			if ( character === prev ) {
+				skip = true;
+			} else {
+				character = prev + character;
+			}
+
+			regex = new RegExp( "^" + escape( character ), "i" );
+			match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
+				return regex.test( $( this ).children( "a" ).text() );
+			});
+			match = skip && match.index( this.active.next() ) !== -1 ?
+				this.active.nextAll( ".ui-menu-item" ) :
+				match;
+
+			// If no matches on the current filter, reset to the last character pressed
+			// to move down the menu to the first item that starts with that character
+			if ( !match.length ) {
+				character = String.fromCharCode( event.keyCode );
+				regex = new RegExp( "^" + escape( character ), "i" );
+				match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
+					return regex.test( $( this ).children( "a" ).text() );
+				});
+			}
+
+			if ( match.length ) {
+				this.focus( event, match );
+				if ( match.length > 1 ) {
+					this.previousFilter = character;
+					this.filterTimer = this._delay(function() {
+						delete this.previousFilter;
+					}, 1000 );
+				} else {
+					delete this.previousFilter;
+				}
+			} else {
+				delete this.previousFilter;
+			}
+		}
+
+		if ( preventDefault ) {
+			event.preventDefault();
+		}
+	},
+
+	_activate: function( event ) {
+		if ( !this.active.is( ".ui-state-disabled" ) ) {
+			if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
+				this.expand( event );
+			} else {
+				this.select( event );
+			}
+		}
+	},
+
+	refresh: function() {
+		var menus,
+			icon = this.options.icons.submenu,
+			submenus = this.element.find( this.options.menus );
+
+		// Initialize nested menus
+		submenus.filter( ":not(.ui-menu)" )
+			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
+			.hide()
+			.attr({
+				role: this.options.role,
+				"aria-hidden": "true",
+				"aria-expanded": "false"
+			})
+			.each(function() {
+				var menu = $( this ),
+					item = menu.prev( "a" ),
+					submenuCarat = $( "<span>" )
+						.addClass( "ui-menu-icon ui-icon " + icon )
+						.data( "ui-menu-submenu-carat", true );
+
+				item
+					.attr( "aria-haspopup", "true" )
+					.prepend( submenuCarat );
+				menu.attr( "aria-labelledby", item.attr( "id" ) );
+			});
+
+		menus = submenus.add( this.element );
+
+		// Don't refresh list items that are already adapted
+		menus.children( ":not(.ui-menu-item):has(a)" )
+			.addClass( "ui-menu-item" )
+			.attr( "role", "presentation" )
+			.children( "a" )
+				.uniqueId()
+				.addClass( "ui-corner-all" )
+				.attr({
+					tabIndex: -1,
+					role: this._itemRole()
+				});
+
+		// Initialize unlinked menu-items containing spaces and/or dashes only as dividers
+		menus.children( ":not(.ui-menu-item)" ).each(function() {
+			var item = $( this );
+			// hyphen, em dash, en dash
+			if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {
+				item.addClass( "ui-widget-content ui-menu-divider" );
+			}
+		});
+
+		// Add aria-disabled attribute to any disabled menu item
+		menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
+
+		// If the active item has been removed, blur the menu
+		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			this.blur();
+		}
+	},
+
+	_itemRole: function() {
+		return {
+			menu: "menuitem",
+			listbox: "option"
+		}[ this.options.role ];
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "icons" ) {
+			this.element.find( ".ui-menu-icon" )
+				.removeClass( this.options.icons.submenu )
+				.addClass( value.submenu );
+		}
+		this._super( key, value );
+	},
+
+	focus: function( event, item ) {
+		var nested, focused;
+		this.blur( event, event && event.type === "focus" );
+
+		this._scrollIntoView( item );
+
+		this.active = item.first();
+		focused = this.active.children( "a" ).addClass( "ui-state-focus" );
+		// Only update aria-activedescendant if there's a role
+		// otherwise we assume focus is managed elsewhere
+		if ( this.options.role ) {
+			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
+		}
+
+		// Highlight active parent menu item, if any
+		this.active
+			.parent()
+			.closest( ".ui-menu-item" )
+			.children( "a:first" )
+			.addClass( "ui-state-active" );
+
+		if ( event && event.type === "keydown" ) {
+			this._close();
+		} else {
+			this.timer = this._delay(function() {
+				this._close();
+			}, this.delay );
+		}
+
+		nested = item.children( ".ui-menu" );
+		if ( nested.length && ( /^mouse/.test( event.type ) ) ) {
+			this._startOpening(nested);
+		}
+		this.activeMenu = item.parent();
+
+		this._trigger( "focus", event, { item: item } );
+	},
+
+	_scrollIntoView: function( item ) {
+		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+		if ( this._hasScroll() ) {
+			borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
+			paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
+			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+			scroll = this.activeMenu.scrollTop();
+			elementHeight = this.activeMenu.height();
+			itemHeight = item.height();
+
+			if ( offset < 0 ) {
+				this.activeMenu.scrollTop( scroll + offset );
+			} else if ( offset + itemHeight > elementHeight ) {
+				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+			}
+		}
+	},
+
+	blur: function( event, fromFocus ) {
+		if ( !fromFocus ) {
+			clearTimeout( this.timer );
+		}
+
+		if ( !this.active ) {
+			return;
+		}
+
+		this.active.children( "a" ).removeClass( "ui-state-focus" );
+		this.active = null;
+
+		this._trigger( "blur", event, { item: this.active } );
+	},
+
+	_startOpening: function( submenu ) {
+		clearTimeout( this.timer );
+
+		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
+		// shift in the submenu position when mousing over the carat icon
+		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
+			return;
+		}
+
+		this.timer = this._delay(function() {
+			this._close();
+			this._open( submenu );
+		}, this.delay );
+	},
+
+	_open: function( submenu ) {
+		var position = $.extend({
+			of: this.active
+		}, this.options.position );
+
+		clearTimeout( this.timer );
+		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
+			.hide()
+			.attr( "aria-hidden", "true" );
+
+		submenu
+			.show()
+			.removeAttr( "aria-hidden" )
+			.attr( "aria-expanded", "true" )
+			.position( position );
+	},
+
+	collapseAll: function( event, all ) {
+		clearTimeout( this.timer );
+		this.timer = this._delay(function() {
+			// If we were passed an event, look for the submenu that contains the event
+			var currentMenu = all ? this.element :
+				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
+
+			// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
+			if ( !currentMenu.length ) {
+				currentMenu = this.element;
+			}
+
+			this._close( currentMenu );
+
+			this.blur( event );
+			this.activeMenu = currentMenu;
+		}, this.delay );
+	},
+
+	// With no arguments, closes the currently active menu - if nothing is active
+	// it closes all menus.  If passed an argument, it will search for menus BELOW
+	_close: function( startMenu ) {
+		if ( !startMenu ) {
+			startMenu = this.active ? this.active.parent() : this.element;
+		}
+
+		startMenu
+			.find( ".ui-menu" )
+				.hide()
+				.attr( "aria-hidden", "true" )
+				.attr( "aria-expanded", "false" )
+			.end()
+			.find( "a.ui-state-active" )
+				.removeClass( "ui-state-active" );
+	},
+
+	collapse: function( event ) {
+		var newItem = this.active &&
+			this.active.parent().closest( ".ui-menu-item", this.element );
+		if ( newItem && newItem.length ) {
+			this._close();
+			this.focus( event, newItem );
+		}
+	},
+
+	expand: function( event ) {
+		var newItem = this.active &&
+			this.active
+				.children( ".ui-menu " )
+				.children( ".ui-menu-item" )
+				.first();
+
+		if ( newItem && newItem.length ) {
+			this._open( newItem.parent() );
+
+			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
+			this._delay(function() {
+				this.focus( event, newItem );
+			});
+		}
+	},
+
+	next: function( event ) {
+		this._move( "next", "first", event );
+	},
+
+	previous: function( event ) {
+		this._move( "prev", "last", event );
+	},
+
+	isFirstItem: function() {
+		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
+	},
+
+	isLastItem: function() {
+		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
+	},
+
+	_move: function( direction, filter, event ) {
+		var next;
+		if ( this.active ) {
+			if ( direction === "first" || direction === "last" ) {
+				next = this.active
+					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
+					.eq( -1 );
+			} else {
+				next = this.active
+					[ direction + "All" ]( ".ui-menu-item" )
+					.eq( 0 );
+			}
+		}
+		if ( !next || !next.length || !this.active ) {
+			next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
+		}
+
+		this.focus( event, next );
+	},
+
+	nextPage: function( event ) {
+		var item, base, height;
+
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isLastItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.nextAll( ".ui-menu-item" ).each(function() {
+				item = $( this );
+				return item.offset().top - base - height < 0;
+			});
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.children( ".ui-menu-item" )
+				[ !this.active ? "first" : "last" ]() );
+		}
+	},
+
+	previousPage: function( event ) {
+		var item, base, height;
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isFirstItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.prevAll( ".ui-menu-item" ).each(function() {
+				item = $( this );
+				return item.offset().top - base + height > 0;
+			});
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
+		}
+	},
+
+	_hasScroll: function() {
+		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
+	},
+
+	select: function( event ) {
+		// TODO: It should never be possible to not have an active item at this
+		// point, but the tests don't trigger mouseenter before click.
+		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
+		var ui = { item: this.active };
+		if ( !this.active.has( ".ui-menu" ).length ) {
+			this.collapseAll( event, true );
+		}
+		this._trigger( "select", event, ui );
+	}
+});
+
+}( jQuery ));
+
+(function( $, undefined ) {
+
+$.ui = $.ui || {};
+
+var cachedScrollbarWidth,
+	max = Math.max,
+	abs = Math.abs,
+	round = Math.round,
+	rhorizontal = /left|center|right/,
+	rvertical = /top|center|bottom/,
+	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
+	rposition = /^\w+/,
+	rpercent = /%$/,
+	_position = $.fn.position;
+
+function getOffsets( offsets, width, height ) {
+	return [
+		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
+		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
+	];
+}
+
+function parseCss( element, property ) {
+	return parseInt( $.css( element, property ), 10 ) || 0;
+}
+
+function getDimensions( elem ) {
+	var raw = elem[0];
+	if ( raw.nodeType === 9 ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: 0, left: 0 }
+		};
+	}
+	if ( $.isWindow( raw ) ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
+		};
+	}
+	if ( raw.preventDefault ) {
+		return {
+			width: 0,
+			height: 0,
+			offset: { top: raw.pageY, left: raw.pageX }
+		};
+	}
+	return {
+		width: elem.outerWidth(),
+		height: elem.outerHeight(),
+		offset: elem.offset()
+	};
+}
+
+$.position = {
+	scrollbarWidth: function() {
+		if ( cachedScrollbarWidth !== undefined ) {
+			return cachedScrollbarWidth;
+		}
+		var w1, w2,
+			div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
+			innerDiv = div.children()[0];
+
+		$( "body" ).append( div );
+		w1 = innerDiv.offsetWidth;
+		div.css( "overflow", "scroll" );
+
+		w2 = innerDiv.offsetWidth;
+
+		if ( w1 === w2 ) {
+			w2 = div[0].clientWidth;
+		}
+
+		div.remove();
+
+		return (cachedScrollbarWidth = w1 - w2);
+	},
+	getScrollInfo: function( within ) {
+		var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ),
+			overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ),
+			hasOverflowX = overflowX === "scroll" ||
+				( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
+			hasOverflowY = overflowY === "scroll" ||
+				( overflowY === "auto" && within.height < within.element[0].scrollHeight );
+		return {
+			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
+			height: hasOverflowX ? $.position.scrollbarWidth() : 0
+		};
+	},
+	getWithinInfo: function( element ) {
+		var withinElement = $( element || window ),
+			isWindow = $.isWindow( withinElement[0] );
+		return {
+			element: withinElement,
+			isWindow: isWindow,
+			offset: withinElement.offset() || { left: 0, top: 0 },
+			scrollLeft: withinElement.scrollLeft(),
+			scrollTop: withinElement.scrollTop(),
+			width: isWindow ? withinElement.width() : withinElement.outerWidth(),
+			height: isWindow ? withinElement.height() : withinElement.outerHeight()
+		};
+	}
+};
+
+$.fn.position = function( options ) {
+	if ( !options || !options.of ) {
+		return _position.apply( this, arguments );
+	}
+
+	// make a copy, we don't want to modify arguments
+	options = $.extend( {}, options );
+
+	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
+		target = $( options.of ),
+		within = $.position.getWithinInfo( options.within ),
+		scrollInfo = $.position.getScrollInfo( within ),
+		collision = ( options.collision || "flip" ).split( " " ),
+		offsets = {};
+
+	dimensions = getDimensions( target );
+	if ( target[0].preventDefault ) {
+		// force left top to allow flipping
+		options.at = "left top";
+	}
+	targetWidth = dimensions.width;
+	targetHeight = dimensions.height;
+	targetOffset = dimensions.offset;
+	// clone to reuse original targetOffset later
+	basePosition = $.extend( {}, targetOffset );
+
+	// force my and at to have valid horizontal and vertical positions
+	// if a value is missing or invalid, it will be converted to center
+	$.each( [ "my", "at" ], function() {
+		var pos = ( options[ this ] || "" ).split( " " ),
+			horizontalOffset,
+			verticalOffset;
+
+		if ( pos.length === 1) {
+			pos = rhorizontal.test( pos[ 0 ] ) ?
+				pos.concat( [ "center" ] ) :
+				rvertical.test( pos[ 0 ] ) ?
+					[ "center" ].concat( pos ) :
+					[ "center", "center" ];
+		}
+		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
+		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
+
+		// calculate offsets
+		horizontalOffset = roffset.exec( pos[ 0 ] );
+		verticalOffset = roffset.exec( pos[ 1 ] );
+		offsets[ this ] = [
+			horizontalOffset ? horizontalOffset[ 0 ] : 0,
+			verticalOffset ? verticalOffset[ 0 ] : 0
+		];
+
+		// reduce to just the positions without the offsets
+		options[ this ] = [
+			rposition.exec( pos[ 0 ] )[ 0 ],
+			rposition.exec( pos[ 1 ] )[ 0 ]
+		];
+	});
+
+	// normalize collision option
+	if ( collision.length === 1 ) {
+		collision[ 1 ] = collision[ 0 ];
+	}
+
+	if ( options.at[ 0 ] === "right" ) {
+		basePosition.left += targetWidth;
+	} else if ( options.at[ 0 ] === "center" ) {
+		basePosition.left += targetWidth / 2;
+	}
+
+	if ( options.at[ 1 ] === "bottom" ) {
+		basePosition.top += targetHeight;
+	} else if ( options.at[ 1 ] === "center" ) {
+		basePosition.top += targetHeight / 2;
+	}
+
+	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
+	basePosition.left += atOffset[ 0 ];
+	basePosition.top += atOffset[ 1 ];
+
+	return this.each(function() {
+		var collisionPosition, using,
+			elem = $( this ),
+			elemWidth = elem.outerWidth(),
+			elemHeight = elem.outerHeight(),
+			marginLeft = parseCss( this, "marginLeft" ),
+			marginTop = parseCss( this, "marginTop" ),
+			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
+			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
+			position = $.extend( {}, basePosition ),
+			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
+
+		if ( options.my[ 0 ] === "right" ) {
+			position.left -= elemWidth;
+		} else if ( options.my[ 0 ] === "center" ) {
+			position.left -= elemWidth / 2;
+		}
+
+		if ( options.my[ 1 ] === "bottom" ) {
+			position.top -= elemHeight;
+		} else if ( options.my[ 1 ] === "center" ) {
+			position.top -= elemHeight / 2;
+		}
+
+		position.left += myOffset[ 0 ];
+		position.top += myOffset[ 1 ];
+
+		// if the browser doesn't support fractions, then round for consistent results
+		if ( !$.support.offsetFractions ) {
+			position.left = round( position.left );
+			position.top = round( position.top );
+		}
+
+		collisionPosition = {
+			marginLeft: marginLeft,
+			marginTop: marginTop
+		};
+
+		$.each( [ "left", "top" ], function( i, dir ) {
+			if ( $.ui.position[ collision[ i ] ] ) {
+				$.ui.position[ collision[ i ] ][ dir ]( position, {
+					targetWidth: targetWidth,
+					targetHeight: targetHeight,
+					elemWidth: elemWidth,
+					elemHeight: elemHeight,
+					collisionPosition: collisionPosition,
+					collisionWidth: collisionWidth,
+					collisionHeight: collisionHeight,
+					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
+					my: options.my,
+					at: options.at,
+					within: within,
+					elem : elem
+				});
+			}
+		});
+
+		if ( options.using ) {
+			// adds feedback as second argument to using callback, if present
+			using = function( props ) {
+				var left = targetOffset.left - position.left,
+					right = left + targetWidth - elemWidth,
+					top = targetOffset.top - position.top,
+					bottom = top + targetHeight - elemHeight,
+					feedback = {
+						target: {
+							element: target,
+							left: targetOffset.left,
+							top: targetOffset.top,
+							width: targetWidth,
+							height: targetHeight
+						},
+						element: {
+							element: elem,
+							left: position.left,
+							top: position.top,
+							width: elemWidth,
+							height: elemHeight
+						},
+						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
+						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
+					};
+				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
+					feedback.horizontal = "center";
+				}
+				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
+					feedback.vertical = "middle";
+				}
+				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
+					feedback.important = "horizontal";
+				} else {
+					feedback.important = "vertical";
+				}
+				options.using.call( this, props, feedback );
+			};
+		}
+
+		elem.offset( $.extend( position, { using: using } ) );
+	});
+};
+
+$.ui.position = {
+	fit: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
+				outerWidth = within.width,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = withinOffset - collisionPosLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
+				newOverRight;
+
+			// element is wider than within
+			if ( data.collisionWidth > outerWidth ) {
+				// element is initially over the left side of within
+				if ( overLeft > 0 && overRight <= 0 ) {
+					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
+					position.left += overLeft - newOverRight;
+				// element is initially over right side of within
+				} else if ( overRight > 0 && overLeft <= 0 ) {
+					position.left = withinOffset;
+				// element is initially over both left and right sides of within
+				} else {
+					if ( overLeft > overRight ) {
+						position.left = withinOffset + outerWidth - data.collisionWidth;
+					} else {
+						position.left = withinOffset;
+					}
+				}
+			// too far left -> align with left edge
+			} else if ( overLeft > 0 ) {
+				position.left += overLeft;
+			// too far right -> align with right edge
+			} else if ( overRight > 0 ) {
+				position.left -= overRight;
+			// adjust based on position and margin
+			} else {
+				position.left = max( position.left - collisionPosLeft, position.left );
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
+				outerHeight = data.within.height,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = withinOffset - collisionPosTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
+				newOverBottom;
+
+			// element is taller than within
+			if ( data.collisionHeight > outerHeight ) {
+				// element is initially over the top of within
+				if ( overTop > 0 && overBottom <= 0 ) {
+					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
+					position.top += overTop - newOverBottom;
+				// element is initially over bottom of within
+				} else if ( overBottom > 0 && overTop <= 0 ) {
+					position.top = withinOffset;
+				// element is initially over both top and bottom of within
+				} else {
+					if ( overTop > overBottom ) {
+						position.top = withinOffset + outerHeight - data.collisionHeight;
+					} else {
+						position.top = withinOffset;
+					}
+				}
+			// too far up -> align with top
+			} else if ( overTop > 0 ) {
+				position.top += overTop;
+			// too far down -> align with bottom edge
+			} else if ( overBottom > 0 ) {
+				position.top -= overBottom;
+			// adjust based on position and margin
+			} else {
+				position.top = max( position.top - collisionPosTop, position.top );
+			}
+		}
+	},
+	flip: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.left + within.scrollLeft,
+				outerWidth = within.width,
+				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = collisionPosLeft - offsetLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
+				myOffset = data.my[ 0 ] === "left" ?
+					-data.elemWidth :
+					data.my[ 0 ] === "right" ?
+						data.elemWidth :
+						0,
+				atOffset = data.at[ 0 ] === "left" ?
+					data.targetWidth :
+					data.at[ 0 ] === "right" ?
+						-data.targetWidth :
+						0,
+				offset = -2 * data.offset[ 0 ],
+				newOverRight,
+				newOverLeft;
+
+			if ( overLeft < 0 ) {
+				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
+				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overRight > 0 ) {
+				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
+				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.top + within.scrollTop,
+				outerHeight = within.height,
+				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = collisionPosTop - offsetTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
+				top = data.my[ 1 ] === "top",
+				myOffset = top ?
+					-data.elemHeight :
+					data.my[ 1 ] === "bottom" ?
+						data.elemHeight :
+						0,
+				atOffset = data.at[ 1 ] === "top" ?
+					data.targetHeight :
+					data.at[ 1 ] === "bottom" ?
+						-data.targetHeight :
+						0,
+				offset = -2 * data.offset[ 1 ],
+				newOverTop,
+				newOverBottom;
+			if ( overTop < 0 ) {
+				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
+				if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overBottom > 0 ) {
+				newOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
+				if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+		}
+	},
+	flipfit: {
+		left: function() {
+			$.ui.position.flip.left.apply( this, arguments );
+			$.ui.position.fit.left.apply( this, arguments );
+		},
+		top: function() {
+			$.ui.position.flip.top.apply( this, arguments );
+			$.ui.position.fit.top.apply( this, arguments );
+		}
+	}
+};
+
+// fraction support test
+(function () {
+	var testElement, testElementParent, testElementStyle, offsetLeft, i,
+		body = document.getElementsByTagName( "body" )[ 0 ],
+		div = document.createElement( "div" );
+
+	//Create a "fake body" for testing based on method used in jQuery.support
+	testElement = document.createElement( body ? "div" : "body" );
+	testElementStyle = {
+		visibility: "hidden",
+		width: 0,
+		height: 0,
+		border: 0,
+		margin: 0,
+		background: "none"
+	};
+	if ( body ) {
+		$.extend( testElementStyle, {
+			position: "absolute",
+			left: "-1000px",
+			top: "-1000px"
+		});
+	}
+	for ( i in testElementStyle ) {
+		testElement.style[ i ] = testElementStyle[ i ];
+	}
+	testElement.appendChild( div );
+	testElementParent = body || document.documentElement;
+	testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+	div.style.cssText = "position: absolute; left: 10.7432222px;";
+
+	offsetLeft = $( div ).offset().left;
+	$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
+
+	testElement.innerHTML = "";
+	testElementParent.removeChild( testElement );
+})();
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+$.widget( "ui.progressbar", {
+	version: "1.10.3",
+	options: {
+		max: 100,
+		value: 0,
+
+		change: null,
+		complete: null
+	},
+
+	min: 0,
+
+	_create: function() {
+		// Constrain initial value
+		this.oldValue = this.options.value = this._constrainedValue();
+
+		this.element
+			.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
+			.attr({
+				// Only set static values, aria-valuenow and aria-valuemax are
+				// set inside _refreshValue()
+				role: "progressbar",
+				"aria-valuemin": this.min
+			});
+
+		this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
+			.appendTo( this.element );
+
+		this._refreshValue();
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-valuemin" )
+			.removeAttr( "aria-valuemax" )
+			.removeAttr( "aria-valuenow" );
+
+		this.valueDiv.remove();
+	},
+
+	value: function( newValue ) {
+		if ( newValue === undefined ) {
+			return this.options.value;
+		}
+
+		this.options.value = this._constrainedValue( newValue );
+		this._refreshValue();
+	},
+
+	_constrainedValue: function( newValue ) {
+		if ( newValue === undefined ) {
+			newValue = this.options.value;
+		}
+
+		this.indeterminate = newValue === false;
+
+		// sanitize value
+		if ( typeof newValue !== "number" ) {
+			newValue = 0;
+		}
+
+		return this.indeterminate ? false :
+			Math.min( this.options.max, Math.max( this.min, newValue ) );
+	},
+
+	_setOptions: function( options ) {
+		// Ensure "value" option is set after other values (like max)
+		var value = options.value;
+		delete options.value;
+
+		this._super( options );
+
+		this.options.value = this._constrainedValue( value );
+		this._refreshValue();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "max" ) {
+			// Don't allow a max less than min
+			value = Math.max( this.min, value );
+		}
+
+		this._super( key, value );
+	},
+
+	_percentage: function() {
+		return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
+	},
+
+	_refreshValue: function() {
+		var value = this.options.value,
+			percentage = this._percentage();
+
+		this.valueDiv
+			.toggle( this.indeterminate || value > this.min )
+			.toggleClass( "ui-corner-right", value === this.options.max )
+			.width( percentage.toFixed(0) + "%" );
+
+		this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate );
+
+		if ( this.indeterminate ) {
+			this.element.removeAttr( "aria-valuenow" );
+			if ( !this.overlayDiv ) {
+				this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv );
+			}
+		} else {
+			this.element.attr({
+				"aria-valuemax": this.options.max,
+				"aria-valuenow": value
+			});
+			if ( this.overlayDiv ) {
+				this.overlayDiv.remove();
+				this.overlayDiv = null;
+			}
+		}
+
+		if ( this.oldValue !== value ) {
+			this.oldValue = value;
+			this._trigger( "change" );
+		}
+		if ( value === this.options.max ) {
+			this._trigger( "complete" );
+		}
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// number of pages in a slider
+// (how many times can you page up/down to go through the whole range)
+var numPages = 5;
+
+$.widget( "ui.slider", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "slide",
+
+	options: {
+		animate: false,
+		distance: 0,
+		max: 100,
+		min: 0,
+		orientation: "horizontal",
+		range: false,
+		step: 1,
+		value: 0,
+		values: null,
+
+		// callbacks
+		change: null,
+		slide: null,
+		start: null,
+		stop: null
+	},
+
+	_create: function() {
+		this._keySliding = false;
+		this._mouseSliding = false;
+		this._animateOff = true;
+		this._handleIndex = null;
+		this._detectOrientation();
+		this._mouseInit();
+
+		this.element
+			.addClass( "ui-slider" +
+				" ui-slider-" + this.orientation +
+				" ui-widget" +
+				" ui-widget-content" +
+				" ui-corner-all");
+
+		this._refresh();
+		this._setOption( "disabled", this.options.disabled );
+
+		this._animateOff = false;
+	},
+
+	_refresh: function() {
+		this._createRange();
+		this._createHandles();
+		this._setupEvents();
+		this._refreshValue();
+	},
+
+	_createHandles: function() {
+		var i, handleCount,
+			options = this.options,
+			existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),
+			handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",
+			handles = [];
+
+		handleCount = ( options.values && options.values.length ) || 1;
+
+		if ( existingHandles.length > handleCount ) {
+			existingHandles.slice( handleCount ).remove();
+			existingHandles = existingHandles.slice( 0, handleCount );
+		}
+
+		for ( i = existingHandles.length; i < handleCount; i++ ) {
+			handles.push( handle );
+		}
+
+		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
+
+		this.handle = this.handles.eq( 0 );
+
+		this.handles.each(function( i ) {
+			$( this ).data( "ui-slider-handle-index", i );
+		});
+	},
+
+	_createRange: function() {
+		var options = this.options,
+			classes = "";
+
+		if ( options.range ) {
+			if ( options.range === true ) {
+				if ( !options.values ) {
+					options.values = [ this._valueMin(), this._valueMin() ];
+				} else if ( options.values.length && options.values.length !== 2 ) {
+					options.values = [ options.values[0], options.values[0] ];
+				} else if ( $.isArray( options.values ) ) {
+					options.values = options.values.slice(0);
+				}
+			}
+
+			if ( !this.range || !this.range.length ) {
+				this.range = $( "<div></div>" )
+					.appendTo( this.element );
+
+				classes = "ui-slider-range" +
+				// note: this isn't the most fittingly semantic framework class for this element,
+				// but worked best visually with a variety of themes
+				" ui-widget-header ui-corner-all";
+			} else {
+				this.range.removeClass( "ui-slider-range-min ui-slider-range-max" )
+					// Handle range switching from true to min/max
+					.css({
+						"left": "",
+						"bottom": ""
+					});
+			}
+
+			this.range.addClass( classes +
+				( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) );
+		} else {
+			this.range = $([]);
+		}
+	},
+
+	_setupEvents: function() {
+		var elements = this.handles.add( this.range ).filter( "a" );
+		this._off( elements );
+		this._on( elements, this._handleEvents );
+		this._hoverable( elements );
+		this._focusable( elements );
+	},
+
+	_destroy: function() {
+		this.handles.remove();
+		this.range.remove();
+
+		this.element
+			.removeClass( "ui-slider" +
+				" ui-slider-horizontal" +
+				" ui-slider-vertical" +
+				" ui-widget" +
+				" ui-widget-content" +
+				" ui-corner-all" );
+
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function( event ) {
+		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
+			that = this,
+			o = this.options;
+
+		if ( o.disabled ) {
+			return false;
+		}
+
+		this.elementSize = {
+			width: this.element.outerWidth(),
+			height: this.element.outerHeight()
+		};
+		this.elementOffset = this.element.offset();
+
+		position = { x: event.pageX, y: event.pageY };
+		normValue = this._normValueFromMouse( position );
+		distance = this._valueMax() - this._valueMin() + 1;
+		this.handles.each(function( i ) {
+			var thisDistance = Math.abs( normValue - that.values(i) );
+			if (( distance > thisDistance ) ||
+				( distance === thisDistance &&
+					(i === that._lastChangedValue || that.values(i) === o.min ))) {
+				distance = thisDistance;
+				closestHandle = $( this );
+				index = i;
+			}
+		});
+
+		allowed = this._start( event, index );
+		if ( allowed === false ) {
+			return false;
+		}
+		this._mouseSliding = true;
+
+		this._handleIndex = index;
+
+		closestHandle
+			.addClass( "ui-state-active" )
+			.focus();
+
+		offset = closestHandle.offset();
+		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
+		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
+			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
+			top: event.pageY - offset.top -
+				( closestHandle.height() / 2 ) -
+				( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -
+				( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +
+				( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
+		};
+
+		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
+			this._slide( event, index, normValue );
+		}
+		this._animateOff = true;
+		return true;
+	},
+
+	_mouseStart: function() {
+		return true;
+	},
+
+	_mouseDrag: function( event ) {
+		var position = { x: event.pageX, y: event.pageY },
+			normValue = this._normValueFromMouse( position );
+
+		this._slide( event, this._handleIndex, normValue );
+
+		return false;
+	},
+
+	_mouseStop: function( event ) {
+		this.handles.removeClass( "ui-state-active" );
+		this._mouseSliding = false;
+
+		this._stop( event, this._handleIndex );
+		this._change( event, this._handleIndex );
+
+		this._handleIndex = null;
+		this._clickOffset = null;
+		this._animateOff = false;
+
+		return false;
+	},
+
+	_detectOrientation: function() {
+		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
+	},
+
+	_normValueFromMouse: function( position ) {
+		var pixelTotal,
+			pixelMouse,
+			percentMouse,
+			valueTotal,
+			valueMouse;
+
+		if ( this.orientation === "horizontal" ) {
+			pixelTotal = this.elementSize.width;
+			pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );
+		} else {
+			pixelTotal = this.elementSize.height;
+			pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );
+		}
+
+		percentMouse = ( pixelMouse / pixelTotal );
+		if ( percentMouse > 1 ) {
+			percentMouse = 1;
+		}
+		if ( percentMouse < 0 ) {
+			percentMouse = 0;
+		}
+		if ( this.orientation === "vertical" ) {
+			percentMouse = 1 - percentMouse;
+		}
+
+		valueTotal = this._valueMax() - this._valueMin();
+		valueMouse = this._valueMin() + percentMouse * valueTotal;
+
+		return this._trimAlignValue( valueMouse );
+	},
+
+	_start: function( event, index ) {
+		var uiHash = {
+			handle: this.handles[ index ],
+			value: this.value()
+		};
+		if ( this.options.values && this.options.values.length ) {
+			uiHash.value = this.values( index );
+			uiHash.values = this.values();
+		}
+		return this._trigger( "start", event, uiHash );
+	},
+
+	_slide: function( event, index, newVal ) {
+		var otherVal,
+			newValues,
+			allowed;
+
+		if ( this.options.values && this.options.values.length ) {
+			otherVal = this.values( index ? 0 : 1 );
+
+			if ( ( this.options.values.length === 2 && this.options.range === true ) &&
+					( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )
+				) {
+				newVal = otherVal;
+			}
+
+			if ( newVal !== this.values( index ) ) {
+				newValues = this.values();
+				newValues[ index ] = newVal;
+				// A slide can be canceled by returning false from the slide callback
+				allowed = this._trigger( "slide", event, {
+					handle: this.handles[ index ],
+					value: newVal,
+					values: newValues
+				} );
+				otherVal = this.values( index ? 0 : 1 );
+				if ( allowed !== false ) {
+					this.values( index, newVal, true );
+				}
+			}
+		} else {
+			if ( newVal !== this.value() ) {
+				// A slide can be canceled by returning false from the slide callback
+				allowed = this._trigger( "slide", event, {
+					handle: this.handles[ index ],
+					value: newVal
+				} );
+				if ( allowed !== false ) {
+					this.value( newVal );
+				}
+			}
+		}
+	},
+
+	_stop: function( event, index ) {
+		var uiHash = {
+			handle: this.handles[ index ],
+			value: this.value()
+		};
+		if ( this.options.values && this.options.values.length ) {
+			uiHash.value = this.values( index );
+			uiHash.values = this.values();
+		}
+
+		this._trigger( "stop", event, uiHash );
+	},
+
+	_change: function( event, index ) {
+		if ( !this._keySliding && !this._mouseSliding ) {
+			var uiHash = {
+				handle: this.handles[ index ],
+				value: this.value()
+			};
+			if ( this.options.values && this.options.values.length ) {
+				uiHash.value = this.values( index );
+				uiHash.values = this.values();
+			}
+
+			//store the last changed value index for reference when handles overlap
+			this._lastChangedValue = index;
+
+			this._trigger( "change", event, uiHash );
+		}
+	},
+
+	value: function( newValue ) {
+		if ( arguments.length ) {
+			this.options.value = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, 0 );
+			return;
+		}
+
+		return this._value();
+	},
+
+	values: function( index, newValue ) {
+		var vals,
+			newValues,
+			i;
+
+		if ( arguments.length > 1 ) {
+			this.options.values[ index ] = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, index );
+			return;
+		}
+
+		if ( arguments.length ) {
+			if ( $.isArray( arguments[ 0 ] ) ) {
+				vals = this.options.values;
+				newValues = arguments[ 0 ];
+				for ( i = 0; i < vals.length; i += 1 ) {
+					vals[ i ] = this._trimAlignValue( newValues[ i ] );
+					this._change( null, i );
+				}
+				this._refreshValue();
+			} else {
+				if ( this.options.values && this.options.values.length ) {
+					return this._values( index );
+				} else {
+					return this.value();
+				}
+			}
+		} else {
+			return this._values();
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var i,
+			valsLength = 0;
+
+		if ( key === "range" && this.options.range === true ) {
+			if ( value === "min" ) {
+				this.options.value = this._values( 0 );
+				this.options.values = null;
+			} else if ( value === "max" ) {
+				this.options.value = this._values( this.options.values.length-1 );
+				this.options.values = null;
+			}
+		}
+
+		if ( $.isArray( this.options.values ) ) {
+			valsLength = this.options.values.length;
+		}
+
+		$.Widget.prototype._setOption.apply( this, arguments );
+
+		switch ( key ) {
+			case "orientation":
+				this._detectOrientation();
+				this.element
+					.removeClass( "ui-slider-horizontal ui-slider-vertical" )
+					.addClass( "ui-slider-" + this.orientation );
+				this._refreshValue();
+				break;
+			case "value":
+				this._animateOff = true;
+				this._refreshValue();
+				this._change( null, 0 );
+				this._animateOff = false;
+				break;
+			case "values":
+				this._animateOff = true;
+				this._refreshValue();
+				for ( i = 0; i < valsLength; i += 1 ) {
+					this._change( null, i );
+				}
+				this._animateOff = false;
+				break;
+			case "min":
+			case "max":
+				this._animateOff = true;
+				this._refreshValue();
+				this._animateOff = false;
+				break;
+			case "range":
+				this._animateOff = true;
+				this._refresh();
+				this._animateOff = false;
+				break;
+		}
+	},
+
+	//internal value getter
+	// _value() returns value trimmed by min and max, aligned by step
+	_value: function() {
+		var val = this.options.value;
+		val = this._trimAlignValue( val );
+
+		return val;
+	},
+
+	//internal values getter
+	// _values() returns array of values trimmed by min and max, aligned by step
+	// _values( index ) returns single value trimmed by min and max, aligned by step
+	_values: function( index ) {
+		var val,
+			vals,
+			i;
+
+		if ( arguments.length ) {
+			val = this.options.values[ index ];
+			val = this._trimAlignValue( val );
+
+			return val;
+		} else if ( this.options.values && this.options.values.length ) {
+			// .slice() creates a copy of the array
+			// this copy gets trimmed by min and max and then returned
+			vals = this.options.values.slice();
+			for ( i = 0; i < vals.length; i+= 1) {
+				vals[ i ] = this._trimAlignValue( vals[ i ] );
+			}
+
+			return vals;
+		} else {
+			return [];
+		}
+	},
+
+	// returns the step-aligned value that val is closest to, between (inclusive) min and max
+	_trimAlignValue: function( val ) {
+		if ( val <= this._valueMin() ) {
+			return this._valueMin();
+		}
+		if ( val >= this._valueMax() ) {
+			return this._valueMax();
+		}
+		var step = ( this.options.step > 0 ) ? this.options.step : 1,
+			valModStep = (val - this._valueMin()) % step,
+			alignValue = val - valModStep;
+
+		if ( Math.abs(valModStep) * 2 >= step ) {
+			alignValue += ( valModStep > 0 ) ? step : ( -step );
+		}
+
+		// Since JavaScript has problems with large floats, round
+		// the final value to 5 digits after the decimal point (see #4124)
+		return parseFloat( alignValue.toFixed(5) );
+	},
+
+	_valueMin: function() {
+		return this.options.min;
+	},
+
+	_valueMax: function() {
+		return this.options.max;
+	},
+
+	_refreshValue: function() {
+		var lastValPercent, valPercent, value, valueMin, valueMax,
+			oRange = this.options.range,
+			o = this.options,
+			that = this,
+			animate = ( !this._animateOff ) ? o.animate : false,
+			_set = {};
+
+		if ( this.options.values && this.options.values.length ) {
+			this.handles.each(function( i ) {
+				valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;
+				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+				if ( that.options.range === true ) {
+					if ( that.orientation === "horizontal" ) {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
+						}
+					} else {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
+						}
+					}
+				}
+				lastValPercent = valPercent;
+			});
+		} else {
+			value = this.value();
+			valueMin = this._valueMin();
+			valueMax = this._valueMax();
+			valPercent = ( valueMax !== valueMin ) ?
+					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
+					0;
+			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+
+			if ( oRange === "min" && this.orientation === "horizontal" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "horizontal" ) {
+				this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
+			}
+			if ( oRange === "min" && this.orientation === "vertical" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "vertical" ) {
+				this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
+			}
+		}
+	},
+
+	_handleEvents: {
+		keydown: function( event ) {
+			/*jshint maxcomplexity:25*/
+			var allowed, curVal, newVal, step,
+				index = $( event.target ).data( "ui-slider-handle-index" );
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+				case $.ui.keyCode.END:
+				case $.ui.keyCode.PAGE_UP:
+				case $.ui.keyCode.PAGE_DOWN:
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					event.preventDefault();
+					if ( !this._keySliding ) {
+						this._keySliding = true;
+						$( event.target ).addClass( "ui-state-active" );
+						allowed = this._start( event, index );
+						if ( allowed === false ) {
+							return;
+						}
+					}
+					break;
+			}
+
+			step = this.options.step;
+			if ( this.options.values && this.options.values.length ) {
+				curVal = newVal = this.values( index );
+			} else {
+				curVal = newVal = this.value();
+			}
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+					newVal = this._valueMin();
+					break;
+				case $.ui.keyCode.END:
+					newVal = this._valueMax();
+					break;
+				case $.ui.keyCode.PAGE_UP:
+					newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );
+					break;
+				case $.ui.keyCode.PAGE_DOWN:
+					newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );
+					break;
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+					if ( curVal === this._valueMax() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal + step );
+					break;
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					if ( curVal === this._valueMin() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal - step );
+					break;
+			}
+
+			this._slide( event, index, newVal );
+		},
+		click: function( event ) {
+			event.preventDefault();
+		},
+		keyup: function( event ) {
+			var index = $( event.target ).data( "ui-slider-handle-index" );
+
+			if ( this._keySliding ) {
+				this._keySliding = false;
+				this._stop( event, index );
+				this._change( event, index );
+				$( event.target ).removeClass( "ui-state-active" );
+			}
+		}
+	}
+
+});
+
+}(jQuery));
+
+(function( $ ) {
+
+function modifier( fn ) {
+	return function() {
+		var previous = this.element.val();
+		fn.apply( this, arguments );
+		this._refresh();
+		if ( previous !== this.element.val() ) {
+			this._trigger( "change" );
+		}
+	};
+}
+
+$.widget( "ui.spinner", {
+	version: "1.10.3",
+	defaultElement: "<input>",
+	widgetEventPrefix: "spin",
+	options: {
+		culture: null,
+		icons: {
+			down: "ui-icon-triangle-1-s",
+			up: "ui-icon-triangle-1-n"
+		},
+		incremental: true,
+		max: null,
+		min: null,
+		numberFormat: null,
+		page: 10,
+		step: 1,
+
+		change: null,
+		spin: null,
+		start: null,
+		stop: null
+	},
+
+	_create: function() {
+		// handle string values that need to be parsed
+		this._setOption( "max", this.options.max );
+		this._setOption( "min", this.options.min );
+		this._setOption( "step", this.options.step );
+
+		// format the value, but don't constrain
+		this._value( this.element.val(), true );
+
+		this._draw();
+		this._on( this._events );
+		this._refresh();
+
+		// turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		});
+	},
+
+	_getCreateOptions: function() {
+		var options = {},
+			element = this.element;
+
+		$.each( [ "min", "max", "step" ], function( i, option ) {
+			var value = element.attr( option );
+			if ( value !== undefined && value.length ) {
+				options[ option ] = value;
+			}
+		});
+
+		return options;
+	},
+
+	_events: {
+		keydown: function( event ) {
+			if ( this._start( event ) && this._keydown( event ) ) {
+				event.preventDefault();
+			}
+		},
+		keyup: "_stop",
+		focus: function() {
+			this.previous = this.element.val();
+		},
+		blur: function( event ) {
+			if ( this.cancelBlur ) {
+				delete this.cancelBlur;
+				return;
+			}
+
+			this._stop();
+			this._refresh();
+			if ( this.previous !== this.element.val() ) {
+				this._trigger( "change", event );
+			}
+		},
+		mousewheel: function( event, delta ) {
+			if ( !delta ) {
+				return;
+			}
+			if ( !this.spinning && !this._start( event ) ) {
+				return false;
+			}
+
+			this._spin( (delta > 0 ? 1 : -1) * this.options.step, event );
+			clearTimeout( this.mousewheelTimer );
+			this.mousewheelTimer = this._delay(function() {
+				if ( this.spinning ) {
+					this._stop( event );
+				}
+			}, 100 );
+			event.preventDefault();
+		},
+		"mousedown .ui-spinner-button": function( event ) {
+			var previous;
+
+			// We never want the buttons to have focus; whenever the user is
+			// interacting with the spinner, the focus should be on the input.
+			// If the input is focused then this.previous is properly set from
+			// when the input first received focus. If the input is not focused
+			// then we need to set this.previous based on the value before spinning.
+			previous = this.element[0] === this.document[0].activeElement ?
+				this.previous : this.element.val();
+			function checkFocus() {
+				var isActive = this.element[0] === this.document[0].activeElement;
+				if ( !isActive ) {
+					this.element.focus();
+					this.previous = previous;
+					// support: IE
+					// IE sets focus asynchronously, so we need to check if focus
+					// moved off of the input because the user clicked on the button.
+					this._delay(function() {
+						this.previous = previous;
+					});
+				}
+			}
+
+			// ensure focus is on (or stays on) the text field
+			event.preventDefault();
+			checkFocus.call( this );
+
+			// support: IE
+			// IE doesn't prevent moving focus even with event.preventDefault()
+			// so we set a flag to know when we should ignore the blur event
+			// and check (again) if focus moved off of the input.
+			this.cancelBlur = true;
+			this._delay(function() {
+				delete this.cancelBlur;
+				checkFocus.call( this );
+			});
+
+			if ( this._start( event ) === false ) {
+				return;
+			}
+
+			this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+		"mouseup .ui-spinner-button": "_stop",
+		"mouseenter .ui-spinner-button": function( event ) {
+			// button will add ui-state-active if mouse was down while mouseleave and kept down
+			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
+				return;
+			}
+
+			if ( this._start( event ) === false ) {
+				return false;
+			}
+			this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+		// TODO: do we really want to consider this a stop?
+		// shouldn't we just stop the repeater and wait until mouseup before
+		// we trigger the stop event?
+		"mouseleave .ui-spinner-button": "_stop"
+	},
+
+	_draw: function() {
+		var uiSpinner = this.uiSpinner = this.element
+			.addClass( "ui-spinner-input" )
+			.attr( "autocomplete", "off" )
+			.wrap( this._uiSpinnerHtml() )
+			.parent()
+				// add buttons
+				.append( this._buttonHtml() );
+
+		this.element.attr( "role", "spinbutton" );
+
+		// button bindings
+		this.buttons = uiSpinner.find( ".ui-spinner-button" )
+			.attr( "tabIndex", -1 )
+			.button()
+			.removeClass( "ui-corner-all" );
+
+		// IE 6 doesn't understand height: 50% for the buttons
+		// unless the wrapper has an explicit height
+		if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&
+				uiSpinner.height() > 0 ) {
+			uiSpinner.height( uiSpinner.height() );
+		}
+
+		// disable spinner if element was already disabled
+		if ( this.options.disabled ) {
+			this.disable();
+		}
+	},
+
+	_keydown: function( event ) {
+		var options = this.options,
+			keyCode = $.ui.keyCode;
+
+		switch ( event.keyCode ) {
+		case keyCode.UP:
+			this._repeat( null, 1, event );
+			return true;
+		case keyCode.DOWN:
+			this._repeat( null, -1, event );
+			return true;
+		case keyCode.PAGE_UP:
+			this._repeat( null, options.page, event );
+			return true;
+		case keyCode.PAGE_DOWN:
+			this._repeat( null, -options.page, event );
+			return true;
+		}
+
+		return false;
+	},
+
+	_uiSpinnerHtml: function() {
+		return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>";
+	},
+
+	_buttonHtml: function() {
+		return "" +
+			"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" +
+				"<span class='ui-icon " + this.options.icons.up + "'>&#9650;</span>" +
+			"</a>" +
+			"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" +
+				"<span class='ui-icon " + this.options.icons.down + "'>&#9660;</span>" +
+			"</a>";
+	},
+
+	_start: function( event ) {
+		if ( !this.spinning && this._trigger( "start", event ) === false ) {
+			return false;
+		}
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+		this.spinning = true;
+		return true;
+	},
+
+	_repeat: function( i, steps, event ) {
+		i = i || 500;
+
+		clearTimeout( this.timer );
+		this.timer = this._delay(function() {
+			this._repeat( 40, steps, event );
+		}, i );
+
+		this._spin( steps * this.options.step, event );
+	},
+
+	_spin: function( step, event ) {
+		var value = this.value() || 0;
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+
+		value = this._adjustValue( value + step * this._increment( this.counter ) );
+
+		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) {
+			this._value( value );
+			this.counter++;
+		}
+	},
+
+	_increment: function( i ) {
+		var incremental = this.options.incremental;
+
+		if ( incremental ) {
+			return $.isFunction( incremental ) ?
+				incremental( i ) :
+				Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );
+		}
+
+		return 1;
+	},
+
+	_precision: function() {
+		var precision = this._precisionOf( this.options.step );
+		if ( this.options.min !== null ) {
+			precision = Math.max( precision, this._precisionOf( this.options.min ) );
+		}
+		return precision;
+	},
+
+	_precisionOf: function( num ) {
+		var str = num.toString(),
+			decimal = str.indexOf( "." );
+		return decimal === -1 ? 0 : str.length - decimal - 1;
+	},
+
+	_adjustValue: function( value ) {
+		var base, aboveMin,
+			options = this.options;
+
+		// make sure we're at a valid step
+		// - find out where we are relative to the base (min or 0)
+		base = options.min !== null ? options.min : 0;
+		aboveMin = value - base;
+		// - round to the nearest step
+		aboveMin = Math.round(aboveMin / options.step) * options.step;
+		// - rounding is based on 0, so adjust back to our base
+		value = base + aboveMin;
+
+		// fix precision from bad JS floating point math
+		value = parseFloat( value.toFixed( this._precision() ) );
+
+		// clamp the value
+		if ( options.max !== null && value > options.max) {
+			return options.max;
+		}
+		if ( options.min !== null && value < options.min ) {
+			return options.min;
+		}
+
+		return value;
+	},
+
+	_stop: function( event ) {
+		if ( !this.spinning ) {
+			return;
+		}
+
+		clearTimeout( this.timer );
+		clearTimeout( this.mousewheelTimer );
+		this.counter = 0;
+		this.spinning = false;
+		this._trigger( "stop", event );
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "culture" || key === "numberFormat" ) {
+			var prevValue = this._parse( this.element.val() );
+			this.options[ key ] = value;
+			this.element.val( this._format( prevValue ) );
+			return;
+		}
+
+		if ( key === "max" || key === "min" || key === "step" ) {
+			if ( typeof value === "string" ) {
+				value = this._parse( value );
+			}
+		}
+		if ( key === "icons" ) {
+			this.buttons.first().find( ".ui-icon" )
+				.removeClass( this.options.icons.up )
+				.addClass( value.up );
+			this.buttons.last().find( ".ui-icon" )
+				.removeClass( this.options.icons.down )
+				.addClass( value.down );
+		}
+
+		this._super( key, value );
+
+		if ( key === "disabled" ) {
+			if ( value ) {
+				this.element.prop( "disabled", true );
+				this.buttons.button( "disable" );
+			} else {
+				this.element.prop( "disabled", false );
+				this.buttons.button( "enable" );
+			}
+		}
+	},
+
+	_setOptions: modifier(function( options ) {
+		this._super( options );
+		this._value( this.element.val() );
+	}),
+
+	_parse: function( val ) {
+		if ( typeof val === "string" && val !== "" ) {
+			val = window.Globalize && this.options.numberFormat ?
+				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
+		}
+		return val === "" || isNaN( val ) ? null : val;
+	},
+
+	_format: function( value ) {
+		if ( value === "" ) {
+			return "";
+		}
+		return window.Globalize && this.options.numberFormat ?
+			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
+			value;
+	},
+
+	_refresh: function() {
+		this.element.attr({
+			"aria-valuemin": this.options.min,
+			"aria-valuemax": this.options.max,
+			// TODO: what should we do with values that can't be parsed?
+			"aria-valuenow": this._parse( this.element.val() )
+		});
+	},
+
+	// update the value without triggering change
+	_value: function( value, allowAny ) {
+		var parsed;
+		if ( value !== "" ) {
+			parsed = this._parse( value );
+			if ( parsed !== null ) {
+				if ( !allowAny ) {
+					parsed = this._adjustValue( parsed );
+				}
+				value = this._format( parsed );
+			}
+		}
+		this.element.val( value );
+		this._refresh();
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-spinner-input" )
+			.prop( "disabled", false )
+			.removeAttr( "autocomplete" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-valuemin" )
+			.removeAttr( "aria-valuemax" )
+			.removeAttr( "aria-valuenow" );
+		this.uiSpinner.replaceWith( this.element );
+	},
+
+	stepUp: modifier(function( steps ) {
+		this._stepUp( steps );
+	}),
+	_stepUp: function( steps ) {
+		if ( this._start() ) {
+			this._spin( (steps || 1) * this.options.step );
+			this._stop();
+		}
+	},
+
+	stepDown: modifier(function( steps ) {
+		this._stepDown( steps );
+	}),
+	_stepDown: function( steps ) {
+		if ( this._start() ) {
+			this._spin( (steps || 1) * -this.options.step );
+			this._stop();
+		}
+	},
+
+	pageUp: modifier(function( pages ) {
+		this._stepUp( (pages || 1) * this.options.page );
+	}),
+
+	pageDown: modifier(function( pages ) {
+		this._stepDown( (pages || 1) * this.options.page );
+	}),
+
+	value: function( newVal ) {
+		if ( !arguments.length ) {
+			return this._parse( this.element.val() );
+		}
+		modifier( this._value ).call( this, newVal );
+	},
+
+	widget: function() {
+		return this.uiSpinner;
+	}
+});
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+var tabId = 0,
+	rhash = /#.*$/;
+
+function getNextTabId() {
+	return ++tabId;
+}
+
+function isLocal( anchor ) {
+	return anchor.hash.length > 1 &&
+		decodeURIComponent( anchor.href.replace( rhash, "" ) ) ===
+			decodeURIComponent( location.href.replace( rhash, "" ) );
+}
+
+$.widget( "ui.tabs", {
+	version: "1.10.3",
+	delay: 300,
+	options: {
+		active: null,
+		collapsible: false,
+		event: "click",
+		heightStyle: "content",
+		hide: null,
+		show: null,
+
+		// callbacks
+		activate: null,
+		beforeActivate: null,
+		beforeLoad: null,
+		load: null
+	},
+
+	_create: function() {
+		var that = this,
+			options = this.options;
+
+		this.running = false;
+
+		this.element
+			.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
+			.toggleClass( "ui-tabs-collapsible", options.collapsible )
+			// Prevent users from focusing disabled tabs via click
+			.delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {
+				if ( $( this ).is( ".ui-state-disabled" ) ) {
+					event.preventDefault();
+				}
+			})
+			// support: IE <9
+			// Preventing the default action in mousedown doesn't prevent IE
+			// from focusing the element, so if the anchor gets focused, blur.
+			// We don't have to worry about focusing the previously focused
+			// element since clicking on a non-focusable element should focus
+			// the body anyway.
+			.delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
+				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
+					this.blur();
+				}
+			});
+
+		this._processTabs();
+		options.active = this._initialActive();
+
+		// Take disabling tabs via class attribute from HTML
+		// into account and update option properly.
+		if ( $.isArray( options.disabled ) ) {
+			options.disabled = $.unique( options.disabled.concat(
+				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
+					return that.tabs.index( li );
+				})
+			) ).sort();
+		}
+
+		// check for length avoids error when initializing empty list
+		if ( this.options.active !== false && this.anchors.length ) {
+			this.active = this._findActive( options.active );
+		} else {
+			this.active = $();
+		}
+
+		this._refresh();
+
+		if ( this.active.length ) {
+			this.load( options.active );
+		}
+	},
+
+	_initialActive: function() {
+		var active = this.options.active,
+			collapsible = this.options.collapsible,
+			locationHash = location.hash.substring( 1 );
+
+		if ( active === null ) {
+			// check the fragment identifier in the URL
+			if ( locationHash ) {
+				this.tabs.each(function( i, tab ) {
+					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
+						active = i;
+						return false;
+					}
+				});
+			}
+
+			// check for a tab marked active via a class
+			if ( active === null ) {
+				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
+			}
+
+			// no active tab, set to false
+			if ( active === null || active === -1 ) {
+				active = this.tabs.length ? 0 : false;
+			}
+		}
+
+		// handle numbers: negative, out of range
+		if ( active !== false ) {
+			active = this.tabs.index( this.tabs.eq( active ) );
+			if ( active === -1 ) {
+				active = collapsible ? false : 0;
+			}
+		}
+
+		// don't allow collapsible: false and active: false
+		if ( !collapsible && active === false && this.anchors.length ) {
+			active = 0;
+		}
+
+		return active;
+	},
+
+	_getCreateEventData: function() {
+		return {
+			tab: this.active,
+			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
+		};
+	},
+
+	_tabKeydown: function( event ) {
+		/*jshint maxcomplexity:15*/
+		var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
+			selectedIndex = this.tabs.index( focusedTab ),
+			goingForward = true;
+
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		switch ( event.keyCode ) {
+			case $.ui.keyCode.RIGHT:
+			case $.ui.keyCode.DOWN:
+				selectedIndex++;
+				break;
+			case $.ui.keyCode.UP:
+			case $.ui.keyCode.LEFT:
+				goingForward = false;
+				selectedIndex--;
+				break;
+			case $.ui.keyCode.END:
+				selectedIndex = this.anchors.length - 1;
+				break;
+			case $.ui.keyCode.HOME:
+				selectedIndex = 0;
+				break;
+			case $.ui.keyCode.SPACE:
+				// Activate only, no collapsing
+				event.preventDefault();
+				clearTimeout( this.activating );
+				this._activate( selectedIndex );
+				return;
+			case $.ui.keyCode.ENTER:
+				// Toggle (cancel delayed activation, allow collapsing)
+				event.preventDefault();
+				clearTimeout( this.activating );
+				// Determine if we should collapse or activate
+				this._activate( selectedIndex === this.options.active ? false : selectedIndex );
+				return;
+			default:
+				return;
+		}
+
+		// Focus the appropriate tab, based on which key was pressed
+		event.preventDefault();
+		clearTimeout( this.activating );
+		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
+
+		// Navigating with control key will prevent automatic activation
+		if ( !event.ctrlKey ) {
+			// Update aria-selected immediately so that AT think the tab is already selected.
+			// Otherwise AT may confuse the user by stating that they need to activate the tab,
+			// but the tab will already be activated by the time the announcement finishes.
+			focusedTab.attr( "aria-selected", "false" );
+			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
+
+			this.activating = this._delay(function() {
+				this.option( "active", selectedIndex );
+			}, this.delay );
+		}
+	},
+
+	_panelKeydown: function( event ) {
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		// Ctrl+up moves focus to the current tab
+		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
+			event.preventDefault();
+			this.active.focus();
+		}
+	},
+
+	// Alt+page up/down moves focus to the previous/next tab (and activates)
+	_handlePageNav: function( event ) {
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
+			this._activate( this._focusNextTab( this.options.active - 1, false ) );
+			return true;
+		}
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
+			this._activate( this._focusNextTab( this.options.active + 1, true ) );
+			return true;
+		}
+	},
+
+	_findNextTab: function( index, goingForward ) {
+		var lastTabIndex = this.tabs.length - 1;
+
+		function constrain() {
+			if ( index > lastTabIndex ) {
+				index = 0;
+			}
+			if ( index < 0 ) {
+				index = lastTabIndex;
+			}
+			return index;
+		}
+
+		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
+			index = goingForward ? index + 1 : index - 1;
+		}
+
+		return index;
+	},
+
+	_focusNextTab: function( index, goingForward ) {
+		index = this._findNextTab( index, goingForward );
+		this.tabs.eq( index ).focus();
+		return index;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "disabled" ) {
+			// don't use the widget factory's disabled handling
+			this._setupDisabled( value );
+			return;
+		}
+
+		this._super( key, value);
+
+		if ( key === "collapsible" ) {
+			this.element.toggleClass( "ui-tabs-collapsible", value );
+			// Setting collapsible: false while collapsed; open first panel
+			if ( !value && this.options.active === false ) {
+				this._activate( 0 );
+			}
+		}
+
+		if ( key === "event" ) {
+			this._setupEvents( value );
+		}
+
+		if ( key === "heightStyle" ) {
+			this._setupHeightStyle( value );
+		}
+	},
+
+	_tabId: function( tab ) {
+		return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
+	},
+
+	_sanitizeSelector: function( hash ) {
+		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
+	},
+
+	refresh: function() {
+		var options = this.options,
+			lis = this.tablist.children( ":has(a[href])" );
+
+		// get disabled tabs from class attribute from HTML
+		// this will get converted to a boolean if needed in _refresh()
+		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
+			return lis.index( tab );
+		});
+
+		this._processTabs();
+
+		// was collapsed or no tabs
+		if ( options.active === false || !this.anchors.length ) {
+			options.active = false;
+			this.active = $();
+		// was active, but active tab is gone
+		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
+			// all remaining tabs are disabled
+			if ( this.tabs.length === options.disabled.length ) {
+				options.active = false;
+				this.active = $();
+			// activate previous tab
+			} else {
+				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
+			}
+		// was active, active tab still exists
+		} else {
+			// make sure active index is correct
+			options.active = this.tabs.index( this.active );
+		}
+
+		this._refresh();
+	},
+
+	_refresh: function() {
+		this._setupDisabled( this.options.disabled );
+		this._setupEvents( this.options.event );
+		this._setupHeightStyle( this.options.heightStyle );
+
+		this.tabs.not( this.active ).attr({
+			"aria-selected": "false",
+			tabIndex: -1
+		});
+		this.panels.not( this._getPanelForTab( this.active ) )
+			.hide()
+			.attr({
+				"aria-expanded": "false",
+				"aria-hidden": "true"
+			});
+
+		// Make sure one tab is in the tab order
+		if ( !this.active.length ) {
+			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active
+				.addClass( "ui-tabs-active ui-state-active" )
+				.attr({
+					"aria-selected": "true",
+					tabIndex: 0
+				});
+			this._getPanelForTab( this.active )
+				.show()
+				.attr({
+					"aria-expanded": "true",
+					"aria-hidden": "false"
+				});
+		}
+	},
+
+	_processTabs: function() {
+		var that = this;
+
+		this.tablist = this._getList()
+			.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.attr( "role", "tablist" );
+
+		this.tabs = this.tablist.find( "> li:has(a[href])" )
+			.addClass( "ui-state-default ui-corner-top" )
+			.attr({
+				role: "tab",
+				tabIndex: -1
+			});
+
+		this.anchors = this.tabs.map(function() {
+				return $( "a", this )[ 0 ];
+			})
+			.addClass( "ui-tabs-anchor" )
+			.attr({
+				role: "presentation",
+				tabIndex: -1
+			});
+
+		this.panels = $();
+
+		this.anchors.each(function( i, anchor ) {
+			var selector, panel, panelId,
+				anchorId = $( anchor ).uniqueId().attr( "id" ),
+				tab = $( anchor ).closest( "li" ),
+				originalAriaControls = tab.attr( "aria-controls" );
+
+			// inline tab
+			if ( isLocal( anchor ) ) {
+				selector = anchor.hash;
+				panel = that.element.find( that._sanitizeSelector( selector ) );
+			// remote tab
+			} else {
+				panelId = that._tabId( tab );
+				selector = "#" + panelId;
+				panel = that.element.find( selector );
+				if ( !panel.length ) {
+					panel = that._createPanel( panelId );
+					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
+				}
+				panel.attr( "aria-live", "polite" );
+			}
+
+			if ( panel.length) {
+				that.panels = that.panels.add( panel );
+			}
+			if ( originalAriaControls ) {
+				tab.data( "ui-tabs-aria-controls", originalAriaControls );
+			}
+			tab.attr({
+				"aria-controls": selector.substring( 1 ),
+				"aria-labelledby": anchorId
+			});
+			panel.attr( "aria-labelledby", anchorId );
+		});
+
+		this.panels
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.attr( "role", "tabpanel" );
+	},
+
+	// allow overriding how to find the list for rare usage scenarios (#7715)
+	_getList: function() {
+		return this.element.find( "ol,ul" ).eq( 0 );
+	},
+
+	_createPanel: function( id ) {
+		return $( "<div>" )
+			.attr( "id", id )
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.data( "ui-tabs-destroy", true );
+	},
+
+	_setupDisabled: function( disabled ) {
+		if ( $.isArray( disabled ) ) {
+			if ( !disabled.length ) {
+				disabled = false;
+			} else if ( disabled.length === this.anchors.length ) {
+				disabled = true;
+			}
+		}
+
+		// disable tabs
+		for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
+			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
+				$( li )
+					.addClass( "ui-state-disabled" )
+					.attr( "aria-disabled", "true" );
+			} else {
+				$( li )
+					.removeClass( "ui-state-disabled" )
+					.removeAttr( "aria-disabled" );
+			}
+		}
+
+		this.options.disabled = disabled;
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			click: function( event ) {
+				event.preventDefault();
+			}
+		};
+		if ( event ) {
+			$.each( event.split(" "), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			});
+		}
+
+		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
+		this._on( this.anchors, events );
+		this._on( this.tabs, { keydown: "_tabKeydown" } );
+		this._on( this.panels, { keydown: "_panelKeydown" } );
+
+		this._focusable( this.tabs );
+		this._hoverable( this.tabs );
+	},
+
+	_setupHeightStyle: function( heightStyle ) {
+		var maxHeight,
+			parent = this.element.parent();
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			maxHeight -= this.element.outerHeight() - this.element.height();
+
+			this.element.siblings( ":visible" ).each(function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			});
+
+			this.element.children().not( this.panels ).each(function() {
+				maxHeight -= $( this ).outerHeight( true );
+			});
+
+			this.panels.each(function() {
+				$( this ).height( Math.max( 0, maxHeight -
+					$( this ).innerHeight() + $( this ).height() ) );
+			})
+			.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.panels.each(function() {
+				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
+			}).height( maxHeight );
+		}
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			anchor = $( event.currentTarget ),
+			tab = anchor.closest( "li" ),
+			clickedIsActive = tab[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : this._getPanelForTab( tab ),
+			toHide = !active.length ? $() : this._getPanelForTab( active ),
+			eventData = {
+				oldTab: active,
+				oldPanel: toHide,
+				newTab: collapsing ? $() : tab,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if ( tab.hasClass( "ui-state-disabled" ) ||
+				// tab is already loading
+				tab.hasClass( "ui-tabs-loading" ) ||
+				// can't switch durning an animation
+				this.running ||
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.tabs.index( tab );
+
+		this.active = clickedIsActive ? $() : tab;
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		if ( !toHide.length && !toShow.length ) {
+			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
+		}
+
+		if ( toShow.length ) {
+			this.load( this.tabs.index( tab ), event );
+		}
+		this._toggle( event, eventData );
+	},
+
+	// handles show/hide for selecting tabs
+	_toggle: function( event, eventData ) {
+		var that = this,
+			toShow = eventData.newPanel,
+			toHide = eventData.oldPanel;
+
+		this.running = true;
+
+		function complete() {
+			that.running = false;
+			that._trigger( "activate", event, eventData );
+		}
+
+		function show() {
+			eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
+
+			if ( toShow.length && that.options.show ) {
+				that._show( toShow, that.options.show, complete );
+			} else {
+				toShow.show();
+				complete();
+			}
+		}
+
+		// start out by hiding, then showing, then completing
+		if ( toHide.length && this.options.hide ) {
+			this._hide( toHide, this.options.hide, function() {
+				eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+				show();
+			});
+		} else {
+			eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+			toHide.hide();
+			show();
+		}
+
+		toHide.attr({
+			"aria-expanded": "false",
+			"aria-hidden": "true"
+		});
+		eventData.oldTab.attr( "aria-selected", "false" );
+		// If we're switching tabs, remove the old tab from the tab order.
+		// If we're opening from collapsed state, remove the previous tab from the tab order.
+		// If we're collapsing, then keep the collapsing tab in the tab order.
+		if ( toShow.length && toHide.length ) {
+			eventData.oldTab.attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.tabs.filter(function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			})
+			.attr( "tabIndex", -1 );
+		}
+
+		toShow.attr({
+			"aria-expanded": "true",
+			"aria-hidden": "false"
+		});
+		eventData.newTab.attr({
+			"aria-selected": "true",
+			tabIndex: 0
+		});
+	},
+
+	_activate: function( index ) {
+		var anchor,
+			active = this._findActive( index );
+
+		// trying to activate the already active panel
+		if ( active[ 0 ] === this.active[ 0 ] ) {
+			return;
+		}
+
+		// trying to collapse, simulate a click on the current active header
+		if ( !active.length ) {
+			active = this.active;
+		}
+
+		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
+		this._eventHandler({
+			target: anchor,
+			currentTarget: anchor,
+			preventDefault: $.noop
+		});
+	},
+
+	_findActive: function( index ) {
+		return index === false ? $() : this.tabs.eq( index );
+	},
+
+	_getIndex: function( index ) {
+		// meta-function to give users option to provide a href string instead of a numerical index.
+		if ( typeof index === "string" ) {
+			index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
+		}
+
+		return index;
+	},
+
+	_destroy: function() {
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
+
+		this.tablist
+			.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.removeAttr( "role" );
+
+		this.anchors
+			.removeClass( "ui-tabs-anchor" )
+			.removeAttr( "role" )
+			.removeAttr( "tabIndex" )
+			.removeUniqueId();
+
+		this.tabs.add( this.panels ).each(function() {
+			if ( $.data( this, "ui-tabs-destroy" ) ) {
+				$( this ).remove();
+			} else {
+				$( this )
+					.removeClass( "ui-state-default ui-state-active ui-state-disabled " +
+						"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )
+					.removeAttr( "tabIndex" )
+					.removeAttr( "aria-live" )
+					.removeAttr( "aria-busy" )
+					.removeAttr( "aria-selected" )
+					.removeAttr( "aria-labelledby" )
+					.removeAttr( "aria-hidden" )
+					.removeAttr( "aria-expanded" )
+					.removeAttr( "role" );
+			}
+		});
+
+		this.tabs.each(function() {
+			var li = $( this ),
+				prev = li.data( "ui-tabs-aria-controls" );
+			if ( prev ) {
+				li
+					.attr( "aria-controls", prev )
+					.removeData( "ui-tabs-aria-controls" );
+			} else {
+				li.removeAttr( "aria-controls" );
+			}
+		});
+
+		this.panels.show();
+
+		if ( this.options.heightStyle !== "content" ) {
+			this.panels.css( "height", "" );
+		}
+	},
+
+	enable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === false ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = false;
+		} else {
+			index = this._getIndex( index );
+			if ( $.isArray( disabled ) ) {
+				disabled = $.map( disabled, function( num ) {
+					return num !== index ? num : null;
+				});
+			} else {
+				disabled = $.map( this.tabs, function( li, num ) {
+					return num !== index ? num : null;
+				});
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	disable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === true ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = true;
+		} else {
+			index = this._getIndex( index );
+			if ( $.inArray( index, disabled ) !== -1 ) {
+				return;
+			}
+			if ( $.isArray( disabled ) ) {
+				disabled = $.merge( [ index ], disabled ).sort();
+			} else {
+				disabled = [ index ];
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	load: function( index, event ) {
+		index = this._getIndex( index );
+		var that = this,
+			tab = this.tabs.eq( index ),
+			anchor = tab.find( ".ui-tabs-anchor" ),
+			panel = this._getPanelForTab( tab ),
+			eventData = {
+				tab: tab,
+				panel: panel
+			};
+
+		// not remote
+		if ( isLocal( anchor[ 0 ] ) ) {
+			return;
+		}
+
+		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
+
+		// support: jQuery <1.8
+		// jQuery <1.8 returns false if the request is canceled in beforeSend,
+		// but as of 1.8, $.ajax() always returns a jqXHR object.
+		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
+			tab.addClass( "ui-tabs-loading" );
+			panel.attr( "aria-busy", "true" );
+
+			this.xhr
+				.success(function( response ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						panel.html( response );
+						that._trigger( "load", event, eventData );
+					}, 1 );
+				})
+				.complete(function( jqXHR, status ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						if ( status === "abort" ) {
+							that.panels.stop( false, true );
+						}
+
+						tab.removeClass( "ui-tabs-loading" );
+						panel.removeAttr( "aria-busy" );
+
+						if ( jqXHR === that.xhr ) {
+							delete that.xhr;
+						}
+					}, 1 );
+				});
+		}
+	},
+
+	_ajaxSettings: function( anchor, event, eventData ) {
+		var that = this;
+		return {
+			url: anchor.attr( "href" ),
+			beforeSend: function( jqXHR, settings ) {
+				return that._trigger( "beforeLoad", event,
+					$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );
+			}
+		};
+	},
+
+	_getPanelForTab: function( tab ) {
+		var id = $( tab ).attr( "aria-controls" );
+		return this.element.find( this._sanitizeSelector( "#" + id ) );
+	}
+});
+
+})( jQuery );
+
+(function( $ ) {
+
+var increments = 0;
+
+function addDescribedBy( elem, id ) {
+	var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
+	describedby.push( id );
+	elem
+		.data( "ui-tooltip-id", id )
+		.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
+}
+
+function removeDescribedBy( elem ) {
+	var id = elem.data( "ui-tooltip-id" ),
+		describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
+		index = $.inArray( id, describedby );
+	if ( index !== -1 ) {
+		describedby.splice( index, 1 );
+	}
+
+	elem.removeData( "ui-tooltip-id" );
+	describedby = $.trim( describedby.join( " " ) );
+	if ( describedby ) {
+		elem.attr( "aria-describedby", describedby );
+	} else {
+		elem.removeAttr( "aria-describedby" );
+	}
+}
+
+$.widget( "ui.tooltip", {
+	version: "1.10.3",
+	options: {
+		content: function() {
+			// support: IE<9, Opera in jQuery <1.7
+			// .text() can't accept undefined, so coerce to a string
+			var title = $( this ).attr( "title" ) || "";
+			// Escape title, since we're going from an attribute to raw HTML
+			return $( "<a>" ).text( title ).html();
+		},
+		hide: true,
+		// Disabled elements have inconsistent behavior across browsers (#8661)
+		items: "[title]:not([disabled])",
+		position: {
+			my: "left top+15",
+			at: "left bottom",
+			collision: "flipfit flip"
+		},
+		show: true,
+		tooltipClass: null,
+		track: false,
+
+		// callbacks
+		close: null,
+		open: null
+	},
+
+	_create: function() {
+		this._on({
+			mouseover: "open",
+			focusin: "open"
+		});
+
+		// IDs of generated tooltips, needed for destroy
+		this.tooltips = {};
+		// IDs of parent tooltips where we removed the title attribute
+		this.parents = {};
+
+		if ( this.options.disabled ) {
+			this._disable();
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var that = this;
+
+		if ( key === "disabled" ) {
+			this[ value ? "_disable" : "_enable" ]();
+			this.options[ key ] = value;
+			// disable element style changes
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "content" ) {
+			$.each( this.tooltips, function( id, element ) {
+				that._updateContent( element );
+			});
+		}
+	},
+
+	_disable: function() {
+		var that = this;
+
+		// close open tooltips
+		$.each( this.tooltips, function( id, element ) {
+			var event = $.Event( "blur" );
+			event.target = event.currentTarget = element[0];
+			that.close( event, true );
+		});
+
+		// remove title attributes to prevent native tooltips
+		this.element.find( this.options.items ).addBack().each(function() {
+			var element = $( this );
+			if ( element.is( "[title]" ) ) {
+				element
+					.data( "ui-tooltip-title", element.attr( "title" ) )
+					.attr( "title", "" );
+			}
+		});
+	},
+
+	_enable: function() {
+		// restore title attributes
+		this.element.find( this.options.items ).addBack().each(function() {
+			var element = $( this );
+			if ( element.data( "ui-tooltip-title" ) ) {
+				element.attr( "title", element.data( "ui-tooltip-title" ) );
+			}
+		});
+	},
+
+	open: function( event ) {
+		var that = this,
+			target = $( event ? event.target : this.element )
+				// we need closest here due to mouseover bubbling,
+				// but always pointing at the same event target
+				.closest( this.options.items );
+
+		// No element to show a tooltip for or the tooltip is already open
+		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
+			return;
+		}
+
+		if ( target.attr( "title" ) ) {
+			target.data( "ui-tooltip-title", target.attr( "title" ) );
+		}
+
+		target.data( "ui-tooltip-open", true );
+
+		// kill parent tooltips, custom or native, for hover
+		if ( event && event.type === "mouseover" ) {
+			target.parents().each(function() {
+				var parent = $( this ),
+					blurEvent;
+				if ( parent.data( "ui-tooltip-open" ) ) {
+					blurEvent = $.Event( "blur" );
+					blurEvent.target = blurEvent.currentTarget = this;
+					that.close( blurEvent, true );
+				}
+				if ( parent.attr( "title" ) ) {
+					parent.uniqueId();
+					that.parents[ this.id ] = {
+						element: this,
+						title: parent.attr( "title" )
+					};
+					parent.attr( "title", "" );
+				}
+			});
+		}
+
+		this._updateContent( target, event );
+	},
+
+	_updateContent: function( target, event ) {
+		var content,
+			contentOption = this.options.content,
+			that = this,
+			eventType = event ? event.type : null;
+
+		if ( typeof contentOption === "string" ) {
+			return this._open( event, target, contentOption );
+		}
+
+		content = contentOption.call( target[0], function( response ) {
+			// ignore async response if tooltip was closed already
+			if ( !target.data( "ui-tooltip-open" ) ) {
+				return;
+			}
+			// IE may instantly serve a cached response for ajax requests
+			// delay this call to _open so the other call to _open runs first
+			that._delay(function() {
+				// jQuery creates a special event for focusin when it doesn't
+				// exist natively. To improve performance, the native event
+				// object is reused and the type is changed. Therefore, we can't
+				// rely on the type being correct after the event finished
+				// bubbling, so we set it back to the previous value. (#8740)
+				if ( event ) {
+					event.type = eventType;
+				}
+				this._open( event, target, response );
+			});
+		});
+		if ( content ) {
+			this._open( event, target, content );
+		}
+	},
+
+	_open: function( event, target, content ) {
+		var tooltip, events, delayedShow,
+			positionOption = $.extend( {}, this.options.position );
+
+		if ( !content ) {
+			return;
+		}
+
+		// Content can be updated multiple times. If the tooltip already
+		// exists, then just update the content and bail.
+		tooltip = this._find( target );
+		if ( tooltip.length ) {
+			tooltip.find( ".ui-tooltip-content" ).html( content );
+			return;
+		}
+
+		// if we have a title, clear it to prevent the native tooltip
+		// we have to check first to avoid defining a title if none exists
+		// (we don't want to cause an element to start matching [title])
+		//
+		// We use removeAttr only for key events, to allow IE to export the correct
+		// accessible attributes. For mouse events, set to empty string to avoid
+		// native tooltip showing up (happens only when removing inside mouseover).
+		if ( target.is( "[title]" ) ) {
+			if ( event && event.type === "mouseover" ) {
+				target.attr( "title", "" );
+			} else {
+				target.removeAttr( "title" );
+			}
+		}
+
+		tooltip = this._tooltip( target );
+		addDescribedBy( target, tooltip.attr( "id" ) );
+		tooltip.find( ".ui-tooltip-content" ).html( content );
+
+		function position( event ) {
+			positionOption.of = event;
+			if ( tooltip.is( ":hidden" ) ) {
+				return;
+			}
+			tooltip.position( positionOption );
+		}
+		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
+			this._on( this.document, {
+				mousemove: position
+			});
+			// trigger once to override element-relative positioning
+			position( event );
+		} else {
+			tooltip.position( $.extend({
+				of: target
+			}, this.options.position ) );
+		}
+
+		tooltip.hide();
+
+		this._show( tooltip, this.options.show );
+		// Handle tracking tooltips that are shown with a delay (#8644). As soon
+		// as the tooltip is visible, position the tooltip using the most recent
+		// event.
+		if ( this.options.show && this.options.show.delay ) {
+			delayedShow = this.delayedShow = setInterval(function() {
+				if ( tooltip.is( ":visible" ) ) {
+					position( positionOption.of );
+					clearInterval( delayedShow );
+				}
+			}, $.fx.interval );
+		}
+
+		this._trigger( "open", event, { tooltip: tooltip } );
+
+		events = {
+			keyup: function( event ) {
+				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
+					var fakeEvent = $.Event(event);
+					fakeEvent.currentTarget = target[0];
+					this.close( fakeEvent, true );
+				}
+			},
+			remove: function() {
+				this._removeTooltip( tooltip );
+			}
+		};
+		if ( !event || event.type === "mouseover" ) {
+			events.mouseleave = "close";
+		}
+		if ( !event || event.type === "focusin" ) {
+			events.focusout = "close";
+		}
+		this._on( true, target, events );
+	},
+
+	close: function( event ) {
+		var that = this,
+			target = $( event ? event.currentTarget : this.element ),
+			tooltip = this._find( target );
+
+		// disabling closes the tooltip, so we need to track when we're closing
+		// to avoid an infinite loop in case the tooltip becomes disabled on close
+		if ( this.closing ) {
+			return;
+		}
+
+		// Clear the interval for delayed tracking tooltips
+		clearInterval( this.delayedShow );
+
+		// only set title if we had one before (see comment in _open())
+		if ( target.data( "ui-tooltip-title" ) ) {
+			target.attr( "title", target.data( "ui-tooltip-title" ) );
+		}
+
+		removeDescribedBy( target );
+
+		tooltip.stop( true );
+		this._hide( tooltip, this.options.hide, function() {
+			that._removeTooltip( $( this ) );
+		});
+
+		target.removeData( "ui-tooltip-open" );
+		this._off( target, "mouseleave focusout keyup" );
+		// Remove 'remove' binding only on delegated targets
+		if ( target[0] !== this.element[0] ) {
+			this._off( target, "remove" );
+		}
+		this._off( this.document, "mousemove" );
+
+		if ( event && event.type === "mouseleave" ) {
+			$.each( this.parents, function( id, parent ) {
+				$( parent.element ).attr( "title", parent.title );
+				delete that.parents[ id ];
+			});
+		}
+
+		this.closing = true;
+		this._trigger( "close", event, { tooltip: tooltip } );
+		this.closing = false;
+	},
+
+	_tooltip: function( element ) {
+		var id = "ui-tooltip-" + increments++,
+			tooltip = $( "<div>" )
+				.attr({
+					id: id,
+					role: "tooltip"
+				})
+				.addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +
+					( this.options.tooltipClass || "" ) );
+		$( "<div>" )
+			.addClass( "ui-tooltip-content" )
+			.appendTo( tooltip );
+		tooltip.appendTo( this.document[0].body );
+		this.tooltips[ id ] = element;
+		return tooltip;
+	},
+
+	_find: function( target ) {
+		var id = target.data( "ui-tooltip-id" );
+		return id ? $( "#" + id ) : $();
+	},
+
+	_removeTooltip: function( tooltip ) {
+		tooltip.remove();
+		delete this.tooltips[ tooltip.attr( "id" ) ];
+	},
+
+	_destroy: function() {
+		var that = this;
+
+		// close open tooltips
+		$.each( this.tooltips, function( id, element ) {
+			// Delegate to close method to handle common cleanup
+			var event = $.Event( "blur" );
+			event.target = event.currentTarget = element[0];
+			that.close( event, true );
+
+			// Remove immediately; destroying an open tooltip doesn't use the
+			// hide animation
+			$( "#" + id ).remove();
+
+			// Restore the title
+			if ( element.data( "ui-tooltip-title" ) ) {
+				element.attr( "title", element.data( "ui-tooltip-title" ) );
+				element.removeData( "ui-tooltip-title" );
+			}
+		});
+	}
+});
+
+}( jQuery ) );
+
+// Knockout JavaScript library v3.0.0
+// (c) Steven Sanderson - http://knockoutjs.com/
+// License: MIT (http://www.opensource.org/licenses/mit-license.php)
+
+(function() {(function(q){var y=this||(0,eval)("this"),w=y.document,K=y.navigator,u=y.jQuery,B=y.JSON;(function(q){"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?q(module.exports||exports):"function"===typeof define&&define.amd?define(["exports"],q):q(y.ko={})})(function(F){function G(a,c){return null===a||typeof a in N?a===c:!1}function H(b,c,d,e){a.d[b]={init:function(b){a.a.f.set(b,L,{});return{controlsDescendantBindings:!0}},update:function(b,h,k,m,f){k=a.a.f.get(b,L);h=a.a.c(h());
+m=!d!==!h;var p=!k.ob;if(p||c||m!==k.Db)p&&(k.ob=a.a.Ya(a.e.childNodes(b),!0)),m?(p||a.e.S(b,a.a.Ya(k.ob)),a.Ta(e?e(f,h):f,b)):a.e.Z(b),k.Db=m}};a.g.Y[b]=!1;a.e.P[b]=!0}var a="undefined"!==typeof F?F:{};a.b=function(b,c){for(var d=b.split("."),e=a,g=0;g<d.length-1;g++)e=e[d[g]];e[d[d.length-1]]=c};a.s=function(a,c,d){a[c]=d};a.version="3.0.0";a.b("version",a.version);a.a=function(){function b(a,b){for(var f in a)a.hasOwnProperty(f)&&b(f,a[f])}function c(k,b){if("input"!==a.a.v(k)||!k.type||"click"!=
+b.toLowerCase())return!1;var f=k.type;return"checkbox"==f||"radio"==f}var d={},e={};d[K&&/Firefox\/2/i.test(K.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];d.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(d,function(a,b){if(b.length)for(var f=0,c=b.length;f<c;f++)e[b[f]]=a});var g={propertychange:!0},h=w&&function(){for(var a=3,b=w.createElement("div"),f=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+
+++a+"]><i></i><![endif]--\x3e",f[0];);return 4<a?a:q}();return{$a:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],n:function(a,b){for(var f=0,c=a.length;f<c;f++)b(a[f])},l:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var f=0,c=a.length;f<c;f++)if(a[f]===b)return f;return-1},Ua:function(a,b,f){for(var c=0,d=a.length;c<d;c++)if(b.call(f,a[c]))return a[c];return null},ia:function(b,c){var f=a.a.l(b,c);0<=f&&b.splice(f,1)},Va:function(b){b=
+b||[];for(var c=[],f=0,d=b.length;f<d;f++)0>a.a.l(c,b[f])&&c.push(b[f]);return c},ha:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)f.push(b(a[c]));return f},ga:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)b(a[c])&&f.push(a[c]);return f},X:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var f=0,c=b.length;f<c;f++)a.push(b[f]);return a},V:function(b,c,f){var d=a.a.l(a.a.Ha(b),c);0>d?f&&b.push(c):f||b.splice(d,1)},extend:function(a,b){if(b)for(var f in b)b.hasOwnProperty(f)&&
+(a[f]=b[f]);return a},K:b,Da:function(a,b){if(!a)return a;var f={},c;for(c in a)a.hasOwnProperty(c)&&(f[c]=b(a[c],c,a));return f},wa:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Vb:function(b){b=a.a.Q(b);for(var c=w.createElement("div"),f=0,d=b.length;f<d;f++)c.appendChild(a.L(b[f]));return c},Ya:function(b,c){for(var f=0,d=b.length,e=[];f<d;f++){var g=b[f].cloneNode(!0);e.push(c?a.L(g):g)}return e},S:function(b,c){a.a.wa(b);if(c)for(var f=0,d=c.length;f<d;f++)b.appendChild(c[f])},nb:function(b,
+c){var f=b.nodeType?[b]:b;if(0<f.length){for(var d=f[0],e=d.parentNode,g=0,n=c.length;g<n;g++)e.insertBefore(c[g],d);g=0;for(n=f.length;g<n;g++)a.removeNode(f[g])}},$:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);if(1<a.length){var f=a[0],c=a[a.length-1];for(a.length=0;f!==c;)if(a.push(f),f=f.nextSibling,!f)return;a.push(c)}}return a},qb:function(a,b){7>h?a.setAttribute("selected",b):a.selected=b},la:function(a){return null===a||a===
+q?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},ec:function(b,c){for(var f=[],d=(b||"").split(c),e=0,g=d.length;e<g;e++){var n=a.a.la(d[e]);""!==n&&f.push(n)}return f},ac:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},Gb:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;
+return!!a},va:function(b){return a.a.Gb(b,b.ownerDocument.documentElement)},Ra:function(b){return!!a.a.Ua(b,a.a.va)},v:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},r:function(b,d,f){var e=h&&g[d];if(e||"undefined"==typeof u)if(e||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var s=function(a){f.call(b,a)},l="on"+d;b.attachEvent(l,s);a.a.C.ea(b,function(){b.detachEvent(l,s)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(d,
+f,!1);else{if(c(b,d)){var n=f;f=function(a,b){var f=this.checked;b&&(this.checked=!0!==b.Ab);n.call(this,a);this.checked=f}}u(b).bind(d,f)}},da:function(a,b){if(!a||!a.nodeType)throw Error("element must be a DOM node when calling triggerEvent");if("undefined"!=typeof u){var f=[];c(a,b)&&f.push({Ab:a.checked});u(a).trigger(b,f)}else if("function"==typeof w.createEvent)if("function"==typeof a.dispatchEvent)f=w.createEvent(e[b]||"HTMLEvents"),f.initEvent(b,!0,!0,y,0,0,0,0,0,!1,!1,!1,!1,0,a),a.dispatchEvent(f);
+else throw Error("The supplied element doesn't support dispatchEvent");else if("undefined"!=typeof a.fireEvent)c(a,b)&&(a.checked=!0!==a.checked),a.fireEvent("on"+b);else throw Error("Browser doesn't support triggering events");},c:function(b){return a.M(b)?b():b},Ha:function(b){return a.M(b)?b.t():b},ma:function(b,c,f){if(c){var d=/\S+/g,e=b.className.match(d)||[];a.a.n(c.match(d),function(b){a.a.V(e,b,f)});b.className=e.join(" ")}},Ma:function(b,c){var f=a.a.c(c);if(null===f||f===q)f="";var d=a.e.firstChild(b);
+!d||3!=d.nodeType||a.e.nextSibling(d)?a.e.S(b,[w.createTextNode(f)]):d.data=f;a.a.Jb(b)},pb:function(a,b){a.name=b;if(7>=h)try{a.mergeAttributes(w.createElement("<input name='"+a.name+"'/>"),!1)}catch(f){}},Jb:function(a){9<=h&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Hb:function(a){if(h){var b=a.style.width;a.style.width=0;a.style.width=b}},Zb:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var f=[],d=b;d<=c;d++)f.push(d);return f},Q:function(a){for(var b=[],c=0,d=a.length;c<
+d;c++)b.push(a[c]);return b},cc:6===h,dc:7===h,ja:h,ab:function(b,c){for(var f=a.a.Q(b.getElementsByTagName("input")).concat(a.a.Q(b.getElementsByTagName("textarea"))),d="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},e=[],g=f.length-1;0<=g;g--)d(f[g])&&e.push(f[g]);return e},Wb:function(b){return"string"==typeof b&&(b=a.a.la(b))?B&&B.parse?B.parse(b):(new Function("return "+b))():null},Na:function(b,c,f){if(!B||!B.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
+return B.stringify(a.a.c(b),c,f)},Xb:function(c,d,f){f=f||{};var e=f.params||{},g=f.includeFields||this.$a,h=c;if("object"==typeof c&&"form"===a.a.v(c))for(var h=c.action,n=g.length-1;0<=n;n--)for(var r=a.a.ab(c,g[n]),v=r.length-1;0<=v;v--)e[r[v].name]=r[v].value;d=a.a.c(d);var t=w.createElement("form");t.style.display="none";t.action=h;t.method="post";for(var E in d)c=w.createElement("input"),c.name=E,c.value=a.a.Na(a.a.c(d[E])),t.appendChild(c);b(e,function(a,b){var c=w.createElement("input");c.name=
+a;c.value=b;t.appendChild(c)});w.body.appendChild(t);f.submitter?f.submitter(t):t.submit();setTimeout(function(){t.parentNode.removeChild(t)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.n);a.b("utils.arrayFirst",a.a.Ua);a.b("utils.arrayFilter",a.a.ga);a.b("utils.arrayGetDistinctValues",a.a.Va);a.b("utils.arrayIndexOf",a.a.l);a.b("utils.arrayMap",a.a.ha);a.b("utils.arrayPushAll",a.a.X);a.b("utils.arrayRemoveItem",a.a.ia);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",
+a.a.$a);a.b("utils.getFormFields",a.a.ab);a.b("utils.peekObservable",a.a.Ha);a.b("utils.postJson",a.a.Xb);a.b("utils.parseJson",a.a.Wb);a.b("utils.registerEventHandler",a.a.r);a.b("utils.stringifyJson",a.a.Na);a.b("utils.range",a.a.Zb);a.b("utils.toggleDomNodeCssClass",a.a.ma);a.b("utils.triggerEvent",a.a.da);a.b("utils.unwrapObservable",a.a.c);a.b("utils.objectForEach",a.a.K);a.b("utils.addOrRemoveItem",a.a.V);a.b("unwrap",a.a.c);Function.prototype.bind||(Function.prototype.bind=function(a){var c=
+this,d=Array.prototype.slice.call(arguments);a=d.shift();return function(){return c.apply(a,d.concat(Array.prototype.slice.call(arguments)))}});a.a.f=new function(){function a(b,h){var k=b[d];if(!k||"null"===k||!e[k]){if(!h)return q;k=b[d]="ko"+c++;e[k]={}}return e[k]}var c=0,d="__ko__"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===q?q:e[d]},set:function(c,d,e){if(e!==q||a(c,!1)!==q)a(c,!0)[d]=e},clear:function(a){var b=a[d];return b?(delete e[b],a[d]=null,!0):!1},D:function(){return c++ +
+d}}};a.b("utils.domData",a.a.f);a.b("utils.domData.clear",a.a.f.clear);a.a.C=new function(){function b(b,c){var e=a.a.f.get(b,d);e===q&&c&&(e=[],a.a.f.set(b,d,e));return e}function c(d){var e=b(d,!1);if(e)for(var e=e.slice(0),m=0;m<e.length;m++)e[m](d);a.a.f.clear(d);"function"==typeof u&&"function"==typeof u.cleanData&&u.cleanData([d]);if(g[d.nodeType])for(e=d.firstChild;d=e;)e=d.nextSibling,8===d.nodeType&&c(d)}var d=a.a.f.D(),e={1:!0,8:!0,9:!0},g={1:!0,9:!0};return{ea:function(a,c){if("function"!=
+typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},mb:function(c,e){var g=b(c,!1);g&&(a.a.ia(g,e),0==g.length&&a.a.f.set(c,d,q))},L:function(b){if(e[b.nodeType]&&(c(b),g[b.nodeType])){var d=[];a.a.X(d,b.getElementsByTagName("*"));for(var m=0,f=d.length;m<f;m++)c(d[m])}return b},removeNode:function(b){a.L(b);b.parentNode&&b.parentNode.removeChild(b)}}};a.L=a.a.C.L;a.removeNode=a.a.C.removeNode;a.b("cleanNode",a.L);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.C);
+a.b("utils.domNodeDisposal.addDisposeCallback",a.a.C.ea);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.C.mb);(function(){a.a.Fa=function(b){var c;if("undefined"!=typeof u)if(u.parseHTML)c=u.parseHTML(b)||[];else{if((c=u.clean([b]))&&c[0]){for(b=c[0];b.parentNode&&11!==b.parentNode.nodeType;)b=b.parentNode;b.parentNode&&b.parentNode.removeChild(b)}}else{var d=a.a.la(b).toLowerCase();c=w.createElement("div");d=d.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!d.indexOf("<tr")&&[2,
+"<table><tbody>","</tbody></table>"]||(!d.indexOf("<td")||!d.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""];b="ignored<div>"+d[1]+b+d[2]+"</div>";for("function"==typeof y.innerShiv?c.appendChild(y.innerShiv(b)):c.innerHTML=b;d[0]--;)c=c.lastChild;c=a.a.Q(c.lastChild.childNodes)}return c};a.a.Ka=function(b,c){a.a.wa(b);c=a.a.c(c);if(null!==c&&c!==q)if("string"!=typeof c&&(c=c.toString()),"undefined"!=typeof u)u(b).html(c);else for(var d=a.a.Fa(c),e=0;e<d.length;e++)b.appendChild(d[e])}})();
+a.b("utils.parseHtmlFragment",a.a.Fa);a.b("utils.setHtml",a.a.Ka);a.u=function(){function b(c,e){if(c)if(8==c.nodeType){var g=a.u.jb(c.nodeValue);null!=g&&e.push({Fb:c,Tb:g})}else if(1==c.nodeType)for(var g=0,h=c.childNodes,k=h.length;g<k;g++)b(h[g],e)}var c={};return{Ca:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);
+c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},ub:function(a,b){var g=c[a];if(g===q)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return g.apply(null,b||[]),!0}finally{delete c[a]}},vb:function(c,e){var g=[];b(c,g);for(var h=0,k=g.length;h<k;h++){var m=g[h].Fb,f=[m];e&&a.a.X(f,e);a.u.ub(g[h].Tb,f);m.nodeValue="";m.parentNode&&m.parentNode.removeChild(m)}},jb:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.u);a.b("memoization.memoize",
+a.u.Ca);a.b("memoization.unmemoize",a.u.ub);a.b("memoization.parseMemoText",a.u.jb);a.b("memoization.unmemoizeDomNodeAndDescendants",a.u.vb);a.xa={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.h({read:b,write:function(a){clearTimeout(d);d=setTimeout(function(){b(a)},c)}})},notify:function(a,c){a.equalityComparer="always"==c?null:G}};var N={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.xa);a.sb=function(b,c,d){this.target=b;this.qa=c;this.Eb=d;a.s(this,"dispose",
+this.B)};a.sb.prototype.B=function(){this.Qb=!0;this.Eb()};a.ca=function(){this.F={};a.a.extend(this,a.ca.fn);a.s(this,"subscribe",this.T);a.s(this,"extend",this.extend);a.s(this,"getSubscriptionsCount",this.Lb)};var I="change";a.ca.fn={T:function(b,c,d){d=d||I;var e=new a.sb(this,c?b.bind(c):b,function(){a.a.ia(this.F[d],e)}.bind(this));this.F[d]||(this.F[d]=[]);this.F[d].push(e);return e},notifySubscribers:function(b,c){c=c||I;if(this.cb(c))try{a.i.Wa();for(var d=this.F[c].slice(0),e=0,g;g=d[e];++e)g&&
+!0!==g.Qb&&g.qa(b)}finally{a.i.end()}},cb:function(a){return this.F[a]&&this.F[a].length},Lb:function(){var b=0;a.a.K(this.F,function(a,d){b+=d.length});return b},extend:function(b){var c=this;b&&a.a.K(b,function(b,e){var g=a.xa[b];"function"==typeof g&&(c=g(c,e)||c)});return c}};a.fb=function(a){return null!=a&&"function"==typeof a.T&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.ca);a.b("isSubscribable",a.fb);a.i=function(){var b=[];return{Wa:function(a){b.push(a&&{qa:a,Za:[]})},
+end:function(){b.pop()},lb:function(c){if(!a.fb(c))throw Error("Only subscribable things can act as dependencies");if(0<b.length){var d=b[b.length-1];!d||0<=a.a.l(d.Za,c)||(d.Za.push(c),d.qa(c))}},p:function(a,d,e){try{return b.push(null),a.apply(d,e||[])}finally{b.pop()}}}}();a.q=function(b){function c(){if(0<arguments.length)return c.equalityComparer&&c.equalityComparer(d,arguments[0])||(c.O(),d=arguments[0],c.N()),this;a.i.lb(c);return d}var d=b;a.ca.call(c);c.t=function(){return d};c.N=function(){c.notifySubscribers(d)};
+c.O=function(){c.notifySubscribers(d,"beforeChange")};a.a.extend(c,a.q.fn);a.s(c,"peek",c.t);a.s(c,"valueHasMutated",c.N);a.s(c,"valueWillMutate",c.O);return c};a.q.fn={equalityComparer:G};var C=a.q.Yb="__ko_proto__";a.q.fn[C]=a.q;a.ya=function(b,c){return null===b||b===q||b[C]===q?!1:b[C]===c?!0:a.ya(b[C],c)};a.M=function(b){return a.ya(b,a.q)};a.gb=function(b){return"function"==typeof b&&b[C]===a.q||"function"==typeof b&&b[C]===a.h&&b.Nb?!0:!1};a.b("observable",a.q);a.b("isObservable",a.M);a.b("isWriteableObservable",
+a.gb);a.ba=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.q(b);a.a.extend(b,a.ba.fn);return b.extend({trackArrayChanges:!0})};a.ba.fn={remove:function(b){for(var c=this.t(),d=[],e="function"!=typeof b||a.M(b)?function(a){return a===b}:b,g=0;g<c.length;g++){var h=c[g];e(h)&&(0===d.length&&this.O(),d.push(h),c.splice(g,1),g--)}d.length&&this.N();return d},removeAll:function(b){if(b===
+q){var c=this.t(),d=c.slice(0);this.O();c.splice(0,c.length);this.N();return d}return b?this.remove(function(c){return 0<=a.a.l(b,c)}):[]},destroy:function(b){var c=this.t(),d="function"!=typeof b||a.M(b)?function(a){return a===b}:b;this.O();for(var e=c.length-1;0<=e;e--)d(c[e])&&(c[e]._destroy=!0);this.N()},destroyAll:function(b){return b===q?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.l(b,c)}):[]},indexOf:function(b){var c=this();return a.a.l(c,b)},replace:function(a,
+c){var d=this.indexOf(a);0<=d&&(this.O(),this.t()[d]=c,this.N())}};a.a.n("pop push reverse shift sort splice unshift".split(" "),function(b){a.ba.fn[b]=function(){var a=this.t();this.O();this.Xa(a,b,arguments);a=a[b].apply(a,arguments);this.N();return a}});a.a.n(["slice"],function(b){a.ba.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.b("observableArray",a.ba);var J="arrayChange";a.xa.trackArrayChanges=function(b){function c(){if(!d){d=!0;var c=b.notifySubscribers;b.notifySubscribers=
+function(a,b){b&&b!==I||++g;return c.apply(this,arguments)};var m=[].concat(b.t()||[]);e=null;b.T(function(c){c=[].concat(c||[]);if(b.cb(J)){var d;if(!e||1<g)e=a.a.ra(m,c,{sparse:!0});d=e;d.length&&b.notifySubscribers(d,J)}m=c;e=null;g=0})}}if(!b.Xa){var d=!1,e=null,g=0,h=b.T;b.T=b.subscribe=function(a,b,f){f===J&&c();return h.apply(this,arguments)};b.Xa=function(a,b,c){function p(a,b,c){h.push({status:a,value:b,index:c})}if(d&&!g){var h=[],l=a.length,n=c.length,r=0;switch(b){case "push":r=l;case "unshift":for(b=
+0;b<n;b++)p("added",c[b],r+b);break;case "pop":r=l-1;case "shift":l&&p("deleted",a[r],r);break;case "splice":b=Math.min(Math.max(0,0>c[0]?l+c[0]:c[0]),l);for(var l=1===n?l:Math.min(b+(c[1]||0),l),n=b+n-2,r=Math.max(l,n),v=2;b<r;++b,++v)b<l&&p("deleted",a[b],b),b<n&&p("added",c[v],b);break;default:return}e=h}}}};a.h=function(b,c,d){function e(){a.a.n(z,function(a){a.B()});z=[]}function g(){var a=k.throttleEvaluation;a&&0<=a?(clearTimeout(x),x=setTimeout(h,a)):h()}function h(){if(!s){if(E&&E()){if(!l){D();
+p=!0;return}}else l=!1;s=!0;try{var b=a.a.ha(z,function(a){return a.target});a.i.Wa(function(c){var d;0<=(d=a.a.l(b,c))?b[d]=q:z.push(c.T(g))});for(var d=c?n.call(c):n(),e=b.length-1;0<=e;e--)b[e]&&z.splice(e,1)[0].B();p=!0;k.equalityComparer&&k.equalityComparer(f,d)||(k.notifySubscribers(f,"beforeChange"),f=d,k.notifySubscribers(f))}finally{a.i.end(),s=!1}z.length||D()}}function k(){if(0<arguments.length){if("function"===typeof r)r.apply(c,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
+return this}p||h();a.i.lb(k);return f}function m(){return!p||0<z.length}var f,p=!1,s=!1,l=!1,n=b;n&&"object"==typeof n?(d=n,n=d.read):(d=d||{},n||(n=d.read));if("function"!=typeof n)throw Error("Pass a function that returns the value of the ko.computed");var r=d.write,v=d.disposeWhenNodeIsRemoved||d.I||null,t=d.disposeWhen||d.ua,E=t,D=e,z=[],x=null;c||(c=d.owner);k.t=function(){p||h();return f};k.Kb=function(){return z.length};k.Nb="function"===typeof d.write;k.B=function(){D()};k.aa=m;a.ca.call(k);
+a.a.extend(k,a.h.fn);a.s(k,"peek",k.t);a.s(k,"dispose",k.B);a.s(k,"isActive",k.aa);a.s(k,"getDependenciesCount",k.Kb);v&&(l=!0,v.nodeType&&(E=function(){return!a.a.va(v)||t&&t()}));!0!==d.deferEvaluation&&h();v&&m()&&(D=function(){a.a.C.mb(v,D);e()},a.a.C.ea(v,D));return k};a.Pb=function(b){return a.ya(b,a.h)};F=a.q.Yb;a.h[F]=a.q;a.h.fn={equalityComparer:G};a.h.fn[F]=a.h;a.b("dependentObservable",a.h);a.b("computed",a.h);a.b("isComputed",a.Pb);(function(){function b(a,g,h){h=h||new d;a=g(a);if("object"!=
+typeof a||null===a||a===q||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var k=a instanceof Array?[]:{};h.save(a,k);c(a,function(c){var d=g(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":k[c]=d;break;case "object":case "undefined":var p=h.get(d);k[c]=p!==q?p:b(d,g,h)}});return k}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=
+[];this.Qa=[]}a.tb=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.M(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.tb(b);return a.a.Na(b,c,d)};d.prototype={save:function(b,c){var d=a.a.l(this.keys,b);0<=d?this.Qa[d]=c:(this.keys.push(b),this.Qa.push(c))},get:function(b){b=a.a.l(this.keys,b);return 0<=b?this.Qa[b]:q}}})();a.b("toJS",a.tb);a.b("toJSON",a.toJSON);(function(){a.k={o:function(b){switch(a.a.v(b)){case "option":return!0===
+b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.d.options.Ea):7>=a.a.ja?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex]):q;default:return b.value}},na:function(b,c){switch(a.a.v(b)){case "option":switch(typeof c){case "string":a.a.f.set(b,a.d.options.Ea,q);"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=c;break;default:a.a.f.set(b,a.d.options.Ea,c),b.__ko__hasDomDataOptionValue__=
+!0,b.value="number"===typeof c?c:""}break;case "select":""===c&&(c=q);if(null===c||c===q)b.selectedIndex=-1;for(var d=b.options.length-1;0<=d;d--)if(a.k.o(b.options[d])==c){b.selectedIndex=d;break}1<b.size||-1!==b.selectedIndex||(b.selectedIndex=0);break;default:if(null===c||c===q)c="";b.value=c}}}})();a.b("selectExtensions",a.k);a.b("selectExtensions.readValue",a.k.o);a.b("selectExtensions.writeValue",a.k.na);a.g=function(){function b(b){b=a.a.la(b);123===b.charCodeAt(0)&&(b=b.slice(1,-1));var c=
+[],d=b.match(e),k,l,n=0;if(d){d.push(",");for(var r=0,v;v=d[r];++r){var t=v.charCodeAt(0);if(44===t){if(0>=n){k&&c.push(l?{key:k,value:l.join("")}:{unknown:k});k=l=n=0;continue}}else if(58===t){if(!l)continue}else if(47===t&&r&&1<v.length)(t=d[r-1].match(g))&&!h[t[0]]&&(b=b.substr(b.indexOf(v)+1),d=b.match(e),d.push(","),r=-1,v="/");else if(40===t||123===t||91===t)++n;else if(41===t||125===t||93===t)--n;else if(!k&&!l){k=34===t||39===t?v.slice(1,-1):v;continue}l?l.push(v):l=[v]}}return c}var c=["true",
+"false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]","g"),g=/[\])"'A-Za-z0-9_$]+$/,h={"in":1,"return":1,"typeof":1},k={};return{Y:[],U:k,Ga:b,ka:function(e,f){function g(b,f){var e,r=a.getBindingHandler(b);if(r&&r.preprocess?f=r.preprocess(f,b,g):1){if(r=k[b])e=f,0<=a.a.l(c,e)?e=!1:(r=e.match(d),e=null===r?!1:r[1]?"Object("+r[1]+")"+
+r[2]:e),r=e;r&&l.push("'"+b+"':function(_z){"+e+"=_z}");n&&(f="function(){return "+f+" }");h.push("'"+b+"':"+f)}}f=f||{};var h=[],l=[],n=f.valueAccessors,r="string"===typeof e?b(e):e;a.a.n(r,function(a){g(a.key||a.unknown,a.value)});l.length&&g("_ko_property_writers","{"+l.join(",")+"}");return h.join(",")},Sb:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},oa:function(b,c,d,e,k){if(b&&a.M(b))!a.gb(b)||k&&b.t()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();
+a.b("expressionRewriting",a.g);a.b("expressionRewriting.bindingRewriteValidators",a.g.Y);a.b("expressionRewriting.parseObjectLiteral",a.g.Ga);a.b("expressionRewriting.preProcessBindings",a.g.ka);a.b("expressionRewriting._twoWayBindings",a.g.U);a.b("jsonExpressionRewriting",a.g);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.g.ka);(function(){function b(a){return 8==a.nodeType&&h.test(g?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&k.test(g?a.text:a.nodeValue)}function d(a,
+d){for(var e=a,k=1,n=[];e=e.nextSibling;){if(c(e)&&(k--,0===k))return n;n.push(e);b(e)&&k++}if(!d)throw Error("Cannot find closing comment tag to match: "+a.nodeValue);return null}function e(a,b){var c=d(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var g=w&&"\x3c!--test--\x3e"===w.createComment("test").text,h=g?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,k=g?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,m={ul:!0,ol:!0};a.e={P:{},childNodes:function(a){return b(a)?
+d(a):a.childNodes},Z:function(c){if(b(c)){c=a.e.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.wa(c)},S:function(c,d){if(b(c)){a.e.Z(c);for(var e=c.nextSibling,k=0,n=d.length;k<n;k++)e.parentNode.insertBefore(d[k],e)}else a.a.S(c,d)},kb:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},eb:function(c,d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):
+c.appendChild(d):a.e.kb(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||c(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){b(a)&&(a=e(a));return a.nextSibling&&c(a.nextSibling)?null:a.nextSibling},Mb:b,bc:function(a){return(a=(g?a.text:a.nodeValue).match(h))?a[1]:null},ib:function(d){if(m[a.a.v(d)]){var k=d.firstChild;if(k){do if(1===k.nodeType){var g;g=k.firstChild;var h=null;if(g){do if(h)h.push(g);else if(b(g)){var n=e(g,!0);n?g=n:h=[g]}else c(g)&&(h=[g]);while(g=
+g.nextSibling)}if(g=h)for(h=k.nextSibling,n=0;n<g.length;n++)h?d.insertBefore(g[n],h):d.appendChild(g[n])}while(k=k.nextSibling)}}}}})();a.b("virtualElements",a.e);a.b("virtualElements.allowedBindings",a.e.P);a.b("virtualElements.emptyNode",a.e.Z);a.b("virtualElements.insertAfter",a.e.eb);a.b("virtualElements.prepend",a.e.kb);a.b("virtualElements.setDomNodeChildren",a.e.S);(function(){a.H=function(){this.zb={}};a.a.extend(a.H.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=
+b.getAttribute("data-bind");case 8:return a.e.Mb(b);default:return!1}},getBindings:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a):null},getBindingAccessors:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a,{valueAccessors:!0}):null},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.e.bc(b);default:return null}},parseBindingsString:function(b,c,d,e){try{var g=this.zb,
+h=b+(e&&e.valueAccessors||""),k;if(!(k=g[h])){var m,f="with($context){with($data||{}){return{"+a.g.ka(b,e)+"}}}";m=new Function("$context","$element",f);k=g[h]=m}return k(c,d)}catch(p){throw p.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+p.message,p;}}});a.H.instance=new a.H})();a.b("bindingProvider",a.H);(function(){function b(a){return function(){return a}}function c(a){return a()}function d(b){return a.a.Da(a.i.p(b),function(a,c){return function(){return b()[c]}})}function e(a,
+b){return d(this.getBindings.bind(this,a,b))}function g(b,c,d){var f,e=a.e.firstChild(c),k=a.H.instance,g=k.preprocessNode;if(g){for(;f=e;)e=a.e.nextSibling(f),g.call(k,f);e=a.e.firstChild(c)}for(;f=e;)e=a.e.nextSibling(f),h(b,f,d)}function h(b,c,d){var f=!0,e=1===c.nodeType;e&&a.e.ib(c);if(e&&d||a.H.instance.nodeHasBindings(c))f=m(c,null,b,d).shouldBindDescendants;f&&!p[a.a.v(c)]&&g(b,c,!e)}function k(b){var c=[],d={},f=[];a.a.K(b,function D(e){if(!d[e]){var k=a.getBindingHandler(e);k&&(k.after&&
+(f.push(e),a.a.n(k.after,function(c){if(b[c]){if(-1!==a.a.l(f,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+f.join(", "));D(c)}}),f.pop()),c.push({key:e,bb:k}));d[e]=!0}});return c}function m(b,d,f,g){var h=a.a.f.get(b,s);if(!d){if(h)throw Error("You cannot apply bindings multiple times to the same element.");a.a.f.set(b,s,!0)}!h&&g&&a.rb(b,f);var m;if(d&&"function"!==typeof d)m=d;else{var p=a.H.instance,l=p.getBindingAccessors||e;if(d||f.A){var A=
+a.h(function(){(m=d?d(f,b):l.call(p,b,f))&&f.A&&f.A();return m},null,{I:b});m&&A.aa()||(A=null)}else m=a.i.p(l,p,[b,f])}var u;if(m){var w=A?function(a){return function(){return c(A()[a])}}:function(a){return m[a]},y=function(){return a.a.Da(A?A():m,c)};y.get=function(a){return m[a]&&c(w(a))};y.has=function(a){return a in m};g=k(m);a.a.n(g,function(c){var d=c.bb.init,e=c.bb.update,k=c.key;if(8===b.nodeType&&!a.e.P[k])throw Error("The binding '"+k+"' cannot be used with virtual elements");try{"function"==
+typeof d&&a.i.p(function(){var a=d(b,w(k),y,f.$data,f);if(a&&a.controlsDescendantBindings){if(u!==q)throw Error("Multiple bindings ("+u+" and "+k+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=k}}),"function"==typeof e&&a.h(function(){e(b,w(k),y,f.$data,f)},null,{I:b})}catch(g){throw g.message='Unable to process binding "'+k+": "+m[k]+'"\nMessage: '+g.message,g;}})}return{shouldBindDescendants:u===q}}function f(b){return b&&
+b instanceof a.G?b:new a.G(b)}a.d={};var p={script:!0};a.getBindingHandler=function(b){return a.d[b]};a.G=function(b,c,d,f){var e=this,k="function"==typeof b,g,h=a.h(function(){var g=k?b():b;c?(c.A&&c.A(),a.a.extend(e,c),h&&(e.A=h)):(e.$parents=[],e.$root=g,e.ko=a);e.$rawData=b;e.$data=g;d&&(e[d]=g);f&&f(e,c,g);return e.$data},null,{ua:function(){return g&&!a.a.Ra(g)},I:!0});h.aa()&&(e.A=h,h.equalityComparer=null,g=[],h.wb=function(b){g.push(b);a.a.C.ea(b,function(b){a.a.ia(g,b);g.length||(h.B(),
+e.A=h=q)})})};a.G.prototype.createChildContext=function(b,c,d){return new a.G(b,this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)})};a.G.prototype.extend=function(b){return new a.G(this.$rawData,this,null,function(c){a.a.extend(c,"function"==typeof b?b():b)})};var s=a.a.f.D(),l=a.a.f.D();a.rb=function(b,c){if(2==arguments.length)a.a.f.set(b,l,c),c.A&&c.A.wb(b);else return a.a.f.get(b,l)};a.pa=function(b,c,d){1===b.nodeType&&
+a.e.ib(b);return m(b,c,f(d),!0)};a.xb=function(c,e,k){k=f(k);return a.pa(c,"function"===typeof e?d(e.bind(null,k,c)):a.a.Da(e,b),k)};a.Ta=function(a,b){1!==b.nodeType&&8!==b.nodeType||g(f(a),b,!0)};a.Sa=function(a,b){if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");b=b||y.document.body;h(f(a),b,!0)};a.ta=function(b){switch(b.nodeType){case 1:case 8:var c=a.rb(b);if(c)return c;if(b.parentNode)return a.ta(b.parentNode)}return q};
+a.Cb=function(b){return(b=a.ta(b))?b.$data:q};a.b("bindingHandlers",a.d);a.b("applyBindings",a.Sa);a.b("applyBindingsToDescendants",a.Ta);a.b("applyBindingAccessorsToNode",a.pa);a.b("applyBindingsToNode",a.xb);a.b("contextFor",a.ta);a.b("dataFor",a.Cb)})();var M={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.K(d,function(c,d){d=a.a.c(d);var h=!1===d||null===d||d===q;h&&b.removeAttribute(c);8>=a.a.ja&&c in M?(c=M[c],h?b.removeAttribute(c):b[c]=d):h||b.setAttribute(c,
+d.toString());"name"===c&&a.a.pb(b,h?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,c,d){function e(){return d.has("checkedValue")?a.a.c(d.get("checkedValue")):b.value}function g(){var k=b.checked,g=s?e():k;if(l&&(!m||k)){var h=a.i.p(c);f?p!==g?(k&&(a.a.V(h,g,!0),a.a.V(h,p,!1)),p=g):a.a.V(h,g,k):a.g.oa(h,d,"checked",g,!0)}}function h(){var d=a.a.c(c());b.checked=f?0<=a.a.l(d,e()):k?d:e()===d}var k="checkbox"==b.type,m="radio"==b.type;if(k||m){var f=k&&a.a.c(c())instanceof
+Array,p=f?e():q,s=m||f,l=!1;m&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.h(g,null,{I:b});a.a.r(b,"click",g);a.h(h,null,{I:b});l=!0}}};a.g.U.checked=!0;a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.d.css={update:function(b,c){var d=a.a.c(c());"object"==typeof d?a.a.K(d,function(c,d){d=a.a.c(d);a.a.ma(b,c,d)}):(d=String(d||""),a.a.ma(b,b.__ko__cssValue,!1),b.__ko__cssValue=d,a.a.ma(b,d,!0))}};a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):
+d||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}};a.d.event={init:function(b,c,d,e,g){var h=c()||{};a.a.K(h,function(k){"string"==typeof k&&a.a.r(b,k,function(b){var f,h=c()[k];if(h){try{var s=a.a.Q(arguments);e=g.$data;s.unshift(e);f=h.apply(e,s)}finally{!0!==f&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(k+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={hb:function(b){return function(){var c=
+b(),d=a.a.Ha(c);if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.J.Aa};a.a.c(c);return{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.J.Aa}}},init:function(b,c){return a.d.template.init(b,a.d.foreach.hb(c))},update:function(b,c,d,e,g){return a.d.template.update(b,a.d.foreach.hb(c),d,e,g)}};a.g.Y.foreach=!1;a.e.P.foreach=!0;a.d.hasfocus=
+{init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var g=b.ownerDocument;if("activeElement"in g){var f;try{f=g.activeElement}catch(h){f=g.body}e=f===b}g=c();a.g.oa(g,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var g=e.bind(null,!0),h=e.bind(null,!1);a.a.r(b,"focus",g);a.a.r(b,"focusin",g);a.a.r(b,"blur",h);a.a.r(b,"focusout",h)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),a.i.p(a.a.da,
+null,[b,d?"focusin":"focusout"]))}};a.g.U.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.g.U.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ka(b,c())}};var L=a.a.f.D();H("if");H("ifnot",!1,!0);H("with",!0,!1,function(a,c){return a.createChildContext(c)});a.d.options={init:function(b){if("select"!==a.a.v(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,
+c,d){function e(){return a.a.ga(b.options,function(a){return a.selected})}function g(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function h(c,d){if(p.length){var f=0<=a.a.l(p,a.k.o(d[0]));a.a.qb(d[0],f);l&&!f&&a.i.p(a.a.da,null,[b,"change"])}}var k=0!=b.length&&b.multiple?b.scrollTop:null;c=a.a.c(c());var m=d.get("optionsIncludeDestroyed"),f={},p;p=b.multiple?a.a.ha(e(),a.k.o):0<=b.selectedIndex?[a.k.o(b.options[b.selectedIndex])]:[];if(c){"undefined"==typeof c.length&&(c=[c]);
+var s=a.a.ga(c,function(b){return m||b===q||null===b||!a.a.c(b._destroy)});d.has("optionsCaption")&&(c=a.a.c(d.get("optionsCaption")),null!==c&&c!==q&&s.unshift(f))}else c=[];var l=!1;c=h;d.has("optionsAfterRender")&&(c=function(b,c){h(0,c);a.i.p(d.get("optionsAfterRender"),null,[c[0],b!==f?b:q])});a.a.Ja(b,s,function(b,c,e){e.length&&(p=e[0].selected?[a.k.o(e[0])]:[],l=!0);c=w.createElement("option");b===f?(a.a.Ma(c,d.get("optionsCaption")),a.k.na(c,q)):(e=g(b,d.get("optionsValue"),b),a.k.na(c,a.a.c(e)),
+b=g(b,d.get("optionsText"),e),a.a.Ma(c,b));return[c]},null,c);(b.multiple?p.length&&e().length<p.length:p.length&&0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex])!==p[0]:p.length||0<=b.selectedIndex)&&a.i.p(a.a.da,null,[b,"change"]);a.a.Hb(b);k&&20<Math.abs(k-b.scrollTop)&&(b.scrollTop=k)}};a.d.options.Ea=a.a.f.D();a.d.selectedOptions={after:["options","foreach"],init:function(b,c,d){a.a.r(b,"change",function(){var e=c(),g=[];a.a.n(b.getElementsByTagName("option"),function(b){b.selected&&g.push(a.k.o(b))});
+a.g.oa(e,d,"selectedOptions",g)})},update:function(b,c){if("select"!=a.a.v(b))throw Error("values binding applies only to SELECT elements");var d=a.a.c(c());d&&"number"==typeof d.length&&a.a.n(b.getElementsByTagName("option"),function(b){var c=0<=a.a.l(d,a.k.o(b));a.a.qb(b,c)})}};a.g.U.selectedOptions=!0;a.d.style={update:function(b,c){var d=a.a.c(c()||{});a.a.K(d,function(c,d){d=a.a.c(d);b.style[c]=d||""})}};a.d.submit={init:function(b,c,d,e,g){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");
+a.a.r(b,"submit",function(a){var d,e=c();try{d=e.call(g.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.d.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ma(b,c())}};a.e.P.text=!0;a.d.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.d.uniqueName.Bb;a.a.pb(b,d)}}};a.d.uniqueName.Bb=0;a.d.value={after:["options","foreach"],init:function(b,c,d){function e(){k=!1;var e=c(),f=a.k.o(b);a.g.oa(e,d,"value",f)}var g=
+["change"],h=d.get("valueUpdate"),k=!1;h&&("string"==typeof h&&(h=[h]),a.a.X(g,h),g=a.a.Va(g));!a.a.ja||"input"!=b.tagName.toLowerCase()||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.l(g,"propertychange")||(a.a.r(b,"propertychange",function(){k=!0}),a.a.r(b,"blur",function(){k&&e()}));a.a.n(g,function(c){var d=e;a.a.ac(c,"after")&&(d=function(){setTimeout(e,0)},c=c.substring(5));a.a.r(b,c,d)})},update:function(b,c){var d="select"===a.a.v(b),e=a.a.c(c()),g=a.k.o(b);
+e!==g&&(g=function(){a.k.na(b,e)},g(),d&&(e!==a.k.o(b)?a.i.p(a.a.da,null,[b,"change"]):setTimeout(g,0)))}};a.g.U.value=!0;a.d.visible={update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(c,d,e,g,h){return a.d.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,g,h)}}})("click");a.w=function(){};a.w.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");
+};a.w.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.w.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.m.j(d)}if(1==b.nodeType||8==b.nodeType)return new a.m.W(b);throw Error("Unknown template type: "+b);};a.w.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,
+d)};a.w.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.w.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.w);a.Oa=function(){function b(b,c,d,k){b=a.g.Ga(b);for(var m=a.g.Y,f=0;f<b.length;f++){var p=b[f].key;if(m.hasOwnProperty(p)){var s=m[p];if("function"===typeof s){if(p=s(b[f].value))throw Error(p);}else if(!s)throw Error("This template engine does not support the '"+
+p+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.g.ka(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return k.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{Ib:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Oa.Ub(b,c)},
+d)},Ub:function(a,g){return a.replace(c,function(a,c,d,f,e){return b(e,c,d,g)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",g)})},yb:function(b,c){return a.u.Ca(function(d,k){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.pa(m,b,k)})}}}();a.b("__tr_ambtns",a.Oa.yb);(function(){a.m={};a.m.j=function(a){this.j=a};a.m.j.prototype.text=function(){var b=a.a.v(this.j),b="script"===b?"text":"textarea"===b?"value":"innerHTML";if(0==arguments.length)return this.j[b];var c=arguments[0];
+"innerHTML"===b?a.a.Ka(this.j,c):this.j[b]=c};var b=a.a.f.D()+"_";a.m.j.prototype.data=function(c){if(1===arguments.length)return a.a.f.get(this.j,b+c);a.a.f.set(this.j,b+c,arguments[1])};var c=a.a.f.D();a.m.W=function(a){this.j=a};a.m.W.prototype=new a.m.j;a.m.W.prototype.text=function(){if(0==arguments.length){var b=a.a.f.get(this.j,c)||{};b.Pa===q&&b.sa&&(b.Pa=b.sa.innerHTML);return b.Pa}a.a.f.set(this.j,c,{Pa:arguments[0]})};a.m.j.prototype.nodes=function(){if(0==arguments.length)return(a.a.f.get(this.j,
+c)||{}).sa;a.a.f.set(this.j,c,{sa:arguments[0]})};a.b("templateSources",a.m);a.b("templateSources.domElement",a.m.j);a.b("templateSources.anonymousTemplate",a.m.W)})();(function(){function b(b,c,d){var e;for(c=a.e.nextSibling(c);b&&(e=b)!==c;)b=a.e.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var f=c[0],e=c[c.length-1],g=f.parentNode,h=a.H.instance,n=h.preprocessNode;if(n){b(f,e,function(a,b){var c=a.previousSibling,d=n.call(h,a);d&&(a===f&&(f=d[0]||b),a===e&&(e=d[d.length-1]||c))});c.length=
+0;if(!f)return;f===e?c.push(f):(c.push(f,e),a.a.$(c,g))}b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.Sa(d,b)});b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.u.vb(b,[d])});a.a.$(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,s){s=s||{};var l=b&&d(b),l=l&&l.ownerDocument,n=s.templateEngine||g;a.Oa.Ib(f,n,l);f=n.renderTemplate(f,h,s,l);if("number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");
+l=!1;switch(e){case "replaceChildren":a.e.S(b,f);l=!0;break;case "replaceNode":a.a.nb(b,f);l=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}l&&(c(f,h),s.afterRender&&a.i.p(s.afterRender,null,[f,h.$data]));return f}var g;a.La=function(b){if(b!=q&&!(b instanceof a.w))throw Error("templateEngine must inherit from ko.templateEngine");g=b};a.Ia=function(b,c,f,h,s){f=f||{};if((f.templateEngine||g)==q)throw Error("Set a template engine before calling renderTemplate");
+s=s||"replaceChildren";if(h){var l=d(h);return a.h(function(){var g=c&&c instanceof a.G?c:new a.G(a.a.c(c)),r="function"==typeof b?b(g.$data,g):b,g=e(h,s,r,g,f);"replaceNode"==s&&(h=g,l=d(h))},null,{ua:function(){return!l||!a.a.va(l)},I:l&&"replaceNode"==s?l.parentNode:l})}return a.u.Ca(function(d){a.Ia(b,c,f,d,"replaceNode")})};a.$b=function(b,d,f,g,h){function l(a,b){c(b,r);f.afterRender&&f.afterRender(b,a)}function n(a,c){r=h.createChildContext(a,f.as,function(a){a.$index=c});var d="function"==
+typeof b?b(a,r):b;return e(null,"ignoreTargetNode",d,r,f)}var r;return a.h(function(){var b=a.a.c(d)||[];"undefined"==typeof b.length&&(b=[b]);b=a.a.ga(b,function(b){return f.includeDestroyed||b===q||null===b||!a.a.c(b._destroy)});a.i.p(a.a.Ja,null,[g,b,n,f,l])},null,{I:g})};var h=a.a.f.D();a.d.template={init:function(b,c){var d=a.a.c(c());"string"==typeof d||d.name?a.e.Z(b):(d=a.e.childNodes(b),d=a.a.Vb(d),(new a.m.W(b)).nodes(d));return{controlsDescendantBindings:!0}},update:function(b,c,d,e,g){c=
+a.a.c(c());d={};e=!0;var l,n=null;"string"!=typeof c&&(d=c,c=a.a.c(d.name),"if"in d&&(e=a.a.c(d["if"])),e&&"ifnot"in d&&(e=!a.a.c(d.ifnot)),l=a.a.c(d.data));"foreach"in d?n=a.$b(c||b,e&&d.foreach||[],d,b,g):e?(g="data"in d?g.createChildContext(l,d.as):g,n=a.Ia(c||b,g,d,b)):a.e.Z(b);g=n;(l=a.a.f.get(b,h))&&"function"==typeof l.B&&l.B();a.a.f.set(b,h,g&&g.aa()?g:q)}};a.g.Y.template=function(b){b=a.g.Ga(b);return 1==b.length&&b[0].unknown||a.g.Sb(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};
+a.e.P.template=!0})();a.b("setTemplateEngine",a.La);a.b("renderTemplate",a.Ia);a.a.ra=function(){function a(b,d,e,g,h){var k=Math.min,m=Math.max,f=[],p,q=b.length,l,n=d.length,r=n-q||1,v=q+n+1,t,u,w;for(p=0;p<=q;p++)for(u=t,f.push(t=[]),w=k(n,p+r),l=m(0,p-1);l<=w;l++)t[l]=l?p?b[p-1]===d[l-1]?u[l-1]:k(u[l]||v,t[l-1]||v)+1:l+1:p+1;k=[];m=[];r=[];p=q;for(l=n;p||l;)n=f[p][l]-1,l&&n===f[p][l-1]?m.push(k[k.length]={status:e,value:d[--l],index:l}):p&&n===f[p-1][l]?r.push(k[k.length]={status:g,value:b[--p],
+index:p}):(--l,--p,h.sparse||k.push({status:"retained",value:d[l]}));if(m.length&&r.length){b=10*q;var z;for(d=e=0;(h.dontLimitMoves||d<b)&&(z=m[e]);e++){for(g=0;f=r[g];g++)if(z.value===f.value){z.moved=f.index;f.moved=z.index;r.splice(g,1);d=g=0;break}d+=g}}return k.reverse()}return function(c,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};c=c||[];d=d||[];return c.length<=d.length?a(c,d,"added","deleted",e):a(d,c,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.ra);(function(){function b(b,
+c,g,h,k){var m=[],f=a.h(function(){var f=c(g,k,a.a.$(m,b))||[];0<m.length&&(a.a.nb(m,f),h&&a.i.p(h,null,[g,f,k]));m.splice(0,m.length);a.a.X(m,f)},null,{I:b,ua:function(){return!a.a.Ra(m)}});return{R:m,h:f.aa()?f:q}}var c=a.a.f.D();a.a.Ja=function(d,e,g,h,k){function m(b,c){x=s[c];t!==c&&(z[b]=x);x.za(t++);a.a.$(x.R,d);r.push(x);w.push(x)}function f(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.n(c[d].R,function(a){b(a,d,c[d].fa)})}e=e||[];h=h||{};var p=a.a.f.get(d,c)===q,s=a.a.f.get(d,c)||[],
+l=a.a.ha(s,function(a){return a.fa}),n=a.a.ra(l,e,h.dontLimitMoves),r=[],v=0,t=0,u=[],w=[];e=[];for(var z=[],l=[],x,A=0,y,B;y=n[A];A++)switch(B=y.moved,y.status){case "deleted":B===q&&(x=s[v],x.h&&x.h.B(),u.push.apply(u,a.a.$(x.R,d)),h.beforeRemove&&(e[A]=x,w.push(x)));v++;break;case "retained":m(A,v++);break;case "added":B!==q?m(A,B):(x={fa:y.value,za:a.q(t++)},r.push(x),w.push(x),p||(l[A]=x))}f(h.beforeMove,z);a.a.n(u,h.beforeRemove?a.L:a.removeNode);for(var A=0,p=a.e.firstChild(d),C;x=w[A];A++){x.R||
+a.a.extend(x,b(d,g,x.fa,k,x.za));for(v=0;n=x.R[v];p=n.nextSibling,C=n,v++)n!==p&&a.e.eb(d,n,C);!x.Ob&&k&&(k(x.fa,x.R,x.za),x.Ob=!0)}f(h.beforeRemove,e);f(h.afterMove,z);f(h.afterAdd,l);a.a.f.set(d,c,r)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.Ja);a.J=function(){this.allowTemplateRewriting=!1};a.J.prototype=new a.w;a.J.prototype.renderTemplateSource=function(b){var c=(9>a.a.ja?0:b.nodes)?b.nodes():null;if(c)return a.a.Q(c.cloneNode(!0).childNodes);b=b.text();return a.a.Fa(b)};a.J.Aa=
+new a.J;a.La(a.J.Aa);a.b("nativeTemplateEngine",a.J);(function(){a.Ba=function(){var a=this.Rb=function(){if("undefined"==typeof u||!u.tmpl)return 0;try{if(0<=u.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,g){g=g||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=u.template(null,"{{ko_with $item.koBindingContext}}"+h+
+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=u.extend({koBindingContext:e},g.templateOptions);e=u.tmpl(h,b,e);e.appendTo(w.createElement("div"));u.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(u.tmpl.tag.ko_code={open:"__.push($1 || '');"},u.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.Ba.prototype=
+new a.w;var b=new a.Ba;0<b.Rb&&a.La(b);a.b("jqueryTmplTemplateEngine",a.Ba)})()})})();})();
+//     Underscore.js 1.5.1
+//     http://underscorejs.org
+//     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+!function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,v=e.reduce,h=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,w=i.bind,j=function(n){return n instanceof j?n:this instanceof j?(this._wrapped=n,void 0):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.5.1";var A=j.each=j.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(j.has(n,a)&&t.call(e,n[a],a,n)===r)return};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var E="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduce===v)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(E);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduceRight===h)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(E);return r},j.find=j.detect=function(n,t,r){var e;return O(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var O=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:O(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,function(n){return n[t]})},j.where=function(n,t,r){return j.isEmpty(t)?r?void 0:[]:j[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},j.findWhere=function(n,t){return j.where(n,t,!0)},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);if(!t&&j.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>e.computed&&(e={value:n,computed:a})}),e.value},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);if(!t&&j.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a<e.computed&&(e={value:n,computed:a})}),e.value},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e};var F=function(n){return j.isFunction(n)?n:function(t){return t[n]}};j.sortBy=function(n,t,r){var e=F(t);return j.pluck(j.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index<t.index?-1:1}),"value")};var k=function(n,t,r,e){var u={},i=F(null==t?j.identity:t);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};j.groupBy=function(n,t,r){return k(n,t,r,function(n,t,r){(j.has(n,t)?n[t]:n[t]=[]).push(r)})},j.countBy=function(n,t,r){return k(n,t,r,function(n,t){j.has(n,t)||(n[t]=0),n[t]++})},j.sortedIndex=function(n,t,r,e){r=null==r?j.identity:F(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var R=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return R(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.indexOf(t,n)>=0})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var M=function(){};j.bind=function(n,t){var r,e;if(w&&n.bind===w)return w.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));M.prototype=n.prototype;var u=new M;M.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:new Date,a=null,i=n.apply(e,u)};return function(){var l=new Date;o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u)):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u=null;return function(){var i=this,a=arguments,o=function(){u=null,r||(e=n.apply(i,a))},c=r&&!u;return clearTimeout(u),u=setTimeout(o,t),c&&(e=n.apply(i,a)),e}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push(n[r]);return t},j.pairs=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push([r,n[r]]);return t},j.invert=function(n){var t={};for(var r in n)j.has(n,r)&&(t[n[r]]=r);return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var I={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};I.unescape=j.invert(I.escape);var T={escape:new RegExp("["+j.keys(I.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(I.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(T[n],function(t){return I[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}.call(this);
+//# sourceMappingURL=underscore-min.map
+/*! gridster.js - v0.1.0 - 2013-06-14
+ * http://gridster.net/
+ * Copyright (c) 2013 ducksboard; Licensed MIT */
+
+;
+(function($, window, document, undefined)
+{
+	/**
+	 * Creates objects with coordinates (x1, y1, x2, y2, cx, cy, width, height)
+	 * to simulate DOM elements on the screen.
+	 * Coords is used by Gridster to create a faux grid with any DOM element can
+	 * collide.
+	 *
+	 * @class Coords
+	 * @param {HTMLElement|Object} obj The jQuery HTMLElement or a object with: left,
+	 * top, width and height properties.
+	 * @return {Object} Coords instance.
+	 * @constructor
+	 */
+	function Coords(obj)
+	{
+		if(obj[0] && $.isPlainObject(obj[0]))
+		{
+			this.data = obj[0];
+		}
+		else
+		{
+			this.el = obj;
+		}
+
+		this.isCoords = true;
+		this.coords = {};
+		this.init();
+		return this;
+	}
+
+
+	var fn = Coords.prototype;
+
+
+	fn.init = function()
+	{
+		this.set();
+		this.original_coords = this.get();
+	};
+
+
+	fn.set = function(update, not_update_offsets)
+	{
+		var el = this.el;
+
+		if(el && !update)
+		{
+			this.data = el.offset();
+			this.data.width = el.width();
+			this.data.height = el.height();
+		}
+
+		if(el && update && !not_update_offsets)
+		{
+			var offset = el.offset();
+			this.data.top = offset.top;
+			this.data.left = offset.left;
+		}
+
+		var d = this.data;
+
+		this.coords.x1 = d.left;
+		this.coords.y1 = d.top;
+		this.coords.x2 = d.left + d.width;
+		this.coords.y2 = d.top + d.height;
+		this.coords.cx = d.left + (d.width / 2);
+		this.coords.cy = d.top + (d.height / 2);
+		this.coords.width = d.width;
+		this.coords.height = d.height;
+		this.coords.el = el || false;
+
+		return this;
+	};
+
+
+	fn.update = function(data)
+	{
+		if(!data && !this.el)
+		{
+			return this;
+		}
+
+		if(data)
+		{
+			var new_data = $.extend({}, this.data, data);
+			this.data = new_data;
+			return this.set(true, true);
+		}
+
+		this.set(true);
+		return this;
+	};
+
+
+	fn.get = function()
+	{
+		return this.coords;
+	};
+
+
+	//jQuery adapter
+	$.fn.coords = function()
+	{
+		if(this.data('coords'))
+		{
+			return this.data('coords');
+		}
+
+		var ins = new Coords(this, arguments[0]);
+		this.data('coords', ins);
+		return ins;
+	};
+
+}(jQuery, window, document));
+
+;
+(function($, window, document, undefined)
+{
+
+	var defaults = {
+		colliders_context: document.body
+		// ,on_overlap: function(collider_data){},
+		// on_overlap_start : function(collider_data){},
+		// on_overlap_stop : function(collider_data){}
+	};
+
+
+	/**
+	 * Detects collisions between a DOM element against other DOM elements or
+	 * Coords objects.
+	 *
+	 * @class Collision
+	 * @uses Coords
+	 * @param {HTMLElement} el The jQuery wrapped HTMLElement.
+	 * @param {HTMLElement|Array} colliders Can be a jQuery collection
+	 *  of HTMLElements or an Array of Coords instances.
+	 * @param {Object} [options] An Object with all options you want to
+	 *        overwrite:
+	 *   @param {Function} [options.on_overlap_start] Executes a function the first
+	 *    time each `collider ` is overlapped.
+	 *   @param {Function} [options.on_overlap_stop] Executes a function when a
+	 *    `collider` is no longer collided.
+	 *   @param {Function} [options.on_overlap] Executes a function when the
+	 * mouse is moved during the collision.
+	 * @return {Object} Collision instance.
+	 * @constructor
+	 */
+	function Collision(el, colliders, options)
+	{
+		this.options = $.extend(defaults, options);
+		this.$element = el;
+		this.last_colliders = [];
+		this.last_colliders_coords = [];
+		if(typeof colliders === 'string' || colliders instanceof jQuery)
+		{
+			this.$colliders = $(colliders, this.options.colliders_context).not(this.$element);
+		}
+		else
+		{
+			this.colliders = $(colliders);
+		}
+
+		this.init();
+	}
+
+
+	var fn = Collision.prototype;
+
+
+	fn.init = function()
+	{
+		this.find_collisions();
+	};
+
+
+	fn.overlaps = function(a, b)
+	{
+		var x = false;
+		var y = false;
+
+		if((b.x1 >= a.x1 && b.x1 <= a.x2) || (b.x2 >= a.x1 && b.x2 <= a.x2) || (a.x1 >= b.x1 && a.x2 <= b.x2))
+		{
+			x = true;
+		}
+
+		if((b.y1 >= a.y1 && b.y1 <= a.y2) || (b.y2 >= a.y1 && b.y2 <= a.y2) || (a.y1 >= b.y1 && a.y2 <= b.y2))
+		{
+			y = true;
+		}
+
+		return (x && y);
+	};
+
+
+	fn.detect_overlapping_region = function(a, b)
+	{
+		var regionX = '';
+		var regionY = '';
+
+		if(a.y1 > b.cy && a.y1 < b.y2)
+		{
+			regionX = 'N';
+		}
+		if(a.y2 > b.y1 && a.y2 < b.cy)
+		{
+			regionX = 'S';
+		}
+		if(a.x1 > b.cx && a.x1 < b.x2)
+		{
+			regionY = 'W';
+		}
+		if(a.x2 > b.x1 && a.x2 < b.cx)
+		{
+			regionY = 'E';
+		}
+
+		return (regionX + regionY) || 'C';
+	};
+
+
+	fn.calculate_overlapped_area_coords = function(a, b)
+	{
+		var x1 = Math.max(a.x1, b.x1);
+		var y1 = Math.max(a.y1, b.y1);
+		var x2 = Math.min(a.x2, b.x2);
+		var y2 = Math.min(a.y2, b.y2);
+
+		return $({
+			left  : x1,
+			top   : y1,
+			width : (x2 - x1),
+			height: (y2 - y1)
+		}).coords().get();
+	};
+
+
+	fn.calculate_overlapped_area = function(coords)
+	{
+		return (coords.width * coords.height);
+	};
+
+
+	fn.manage_colliders_start_stop = function(new_colliders_coords, start_callback, stop_callback)
+	{
+		var last = this.last_colliders_coords;
+
+		for(var i = 0, il = last.length; i < il; i++)
+		{
+			if($.inArray(last[i], new_colliders_coords) === -1)
+			{
+				start_callback.call(this, last[i]);
+			}
+		}
+
+		for(var j = 0, jl = new_colliders_coords.length; j < jl; j++)
+		{
+			if($.inArray(new_colliders_coords[j], last) === -1)
+			{
+				stop_callback.call(this, new_colliders_coords[j]);
+			}
+
+		}
+	};
+
+
+	fn.find_collisions = function(player_data_coords)
+	{
+		var self = this;
+		var colliders_coords = [];
+		var colliders_data = [];
+		var $colliders = (this.colliders || this.$colliders);
+		var count = $colliders.length;
+		var player_coords = self.$element.coords().update(player_data_coords || false).get();
+
+		while(count--)
+		{
+			var $collider = self.$colliders ? $($colliders[count]) : $colliders[count];
+			var $collider_coords_ins = ($collider.isCoords) ? $collider : $collider.coords();
+			var collider_coords = $collider_coords_ins.get();
+			var overlaps = self.overlaps(player_coords, collider_coords);
+
+			if(!overlaps)
+			{
+				continue;
+			}
+
+			var region = self.detect_overlapping_region(player_coords, collider_coords);
+
+			//todo: make this an option
+			if(region === 'C')
+			{
+				var area_coords = self.calculate_overlapped_area_coords(player_coords, collider_coords);
+				var area = self.calculate_overlapped_area(area_coords);
+				var collider_data = {
+					area         : area,
+					area_coords  : area_coords,
+					region       : region,
+					coords       : collider_coords,
+					player_coords: player_coords,
+					el           : $collider
+				};
+
+				if(self.options.on_overlap)
+				{
+					self.options.on_overlap.call(this, collider_data);
+				}
+				colliders_coords.push($collider_coords_ins);
+				colliders_data.push(collider_data);
+			}
+		}
+
+		if(self.options.on_overlap_stop || self.options.on_overlap_start)
+		{
+			this.manage_colliders_start_stop(colliders_coords, self.options.on_overlap_start, self.options.on_overlap_stop);
+		}
+
+		this.last_colliders_coords = colliders_coords;
+
+		return colliders_data;
+	};
+
+
+	fn.get_closest_colliders = function(player_data_coords)
+	{
+		var colliders = this.find_collisions(player_data_coords);
+
+		colliders.sort(function(a, b)
+		{
+			/* if colliders are being overlapped by the "C" (center) region,
+			 * we have to set a lower index in the array to which they are placed
+			 * above in the grid. */
+			if(a.region === 'C' && b.region === 'C')
+			{
+				if(a.coords.y1 < b.coords.y1 || a.coords.x1 < b.coords.x1)
+				{
+					return -1;
+				}
+				else
+				{
+					return 1;
+				}
+			}
+
+			if(a.area < b.area)
+			{
+				return 1;
+			}
+
+			return 1;
+		});
+		return colliders;
+	};
+
+
+	//jQuery adapter
+	$.fn.collision = function(collider, options)
+	{
+		return new Collision(this, collider, options);
+	};
+
+
+}(jQuery, window, document));
+
+;
+(function(window, undefined)
+{
+	/* Debounce and throttle functions taken from underscore.js */
+	window.debounce = function(func, wait, immediate)
+	{
+		var timeout;
+		return function()
+		{
+			var context = this, args = arguments;
+			var later = function()
+			{
+				timeout = null;
+				if(!immediate) func.apply(context, args);
+			};
+			if(immediate && !timeout) func.apply(context, args);
+			clearTimeout(timeout);
+			timeout = setTimeout(later, wait);
+		};
+	};
+
+
+	window.throttle = function(func, wait)
+	{
+		var context, args, timeout, throttling, more, result;
+		var whenDone = debounce(function()
+			{
+				more = throttling = false;
+			}, wait);
+		return function()
+		{
+			context = this;
+			args = arguments;
+			var later = function()
+			{
+				timeout = null;
+				if(more) func.apply(context, args);
+				whenDone();
+			};
+			if(!timeout) timeout = setTimeout(later, wait);
+			if(throttling)
+			{
+				more = true;
+			}
+			else
+			{
+				result = func.apply(context, args);
+			}
+			whenDone();
+			throttling = true;
+			return result;
+		};
+	};
+
+})(window);
+
+;
+(function($, window, document, undefined)
+{
+
+	var defaults = {
+		items          : '.gs_w',
+		distance       : 1,
+		limit          : true,
+		offset_left    : 0,
+		autoscroll     : true,
+		ignore_dragging: ['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON'],
+		handle         : null,
+		container_width: 0  // 0 == auto
+		// drag: function(e){},
+		// start : function(e, ui){},
+		// stop : function(e){}
+	};
+
+	var $window = $(window);
+	var isTouch = !!('ontouchstart' in window);
+	var pointer_events = {
+		start: isTouch ? 'touchstart.gridster-draggable' : 'mousedown.gridster-draggable',
+		move : isTouch ? 'touchmove.gridster-draggable' : 'mousemove.gridster-draggable',
+		end  : isTouch ? 'touchend.gridster-draggable' : 'mouseup.gridster-draggable'
+	};
+
+	/**
+	 * Basic drag implementation for DOM elements inside a container.
+	 * Provide start/stop/drag callbacks.
+	 *
+	 * @class Draggable
+	 * @param {HTMLElement} el The HTMLelement that contains all the panes
+	 *  to be dragged.
+	 * @param {Object} [options] An Object with all options you want to
+	 *        overwrite:
+	 *    @param {HTMLElement|String} [options.items] Define who will
+	 *     be the draggable items. Can be a CSS Selector String or a
+	 *     collection of HTMLElements.
+	 *    @param {Number} [options.distance] Distance in pixels after mousedown
+	 *     the mouse must move before dragging should start.
+	 *    @param {Boolean} [options.limit] Constrains dragging to the width of
+	 *     the container
+	 *    @param {offset_left} [options.offset_left] Offset added to the item
+	 *     that is being dragged.
+	 *    @param {Number} [options.drag] Executes a callback when the mouse is
+	 *     moved during the dragging.
+	 *    @param {Number} [options.start] Executes a callback when the drag
+	 *     starts.
+	 *    @param {Number} [options.stop] Executes a callback when the drag stops.
+	 * @return {Object} Returns `el`.
+	 * @constructor
+	 */
+	function Draggable(el, options)
+	{
+		this.options = $.extend({}, defaults, options);
+		this.$body = $(document.body);
+		this.$container = $(el);
+		this.$dragitems = $(this.options.items, this.$container);
+		this.is_dragging = false;
+		this.player_min_left = 0 + this.options.offset_left;
+		this.init();
+	}
+
+	var fn = Draggable.prototype;
+
+	fn.init = function()
+	{
+		this.calculate_positions();
+		this.$container.css('position', 'relative');
+		this.disabled = false;
+		this.events();
+
+		$(window).bind('resize.gridster-draggable', throttle($.proxy(this.calculate_positions, this), 200));
+	};
+
+	fn.setOptions = function(options)
+	{
+		this.options = $.extend(this.options, options);
+	};
+
+	fn.events = function()
+	{
+		this.$container.on('selectstart.gridster-draggable', $.proxy(this.on_select_start, this));
+
+		this.$container.on(pointer_events.start, this.options.items, $.proxy(this.drag_handler, this));
+
+		this.$body.on(pointer_events.end, $.proxy(function(e)
+		{
+			this.is_dragging = false;
+			if(this.disabled)
+			{
+				return;
+			}
+			this.$body.off(pointer_events.move);
+			if(this.drag_start)
+			{
+				this.on_dragstop(e);
+			}
+		}, this));
+	};
+
+	fn.get_actual_pos = function($el)
+	{
+		var pos = $el.position();
+		return pos;
+	};
+
+
+	fn.get_mouse_pos = function(e)
+	{
+		if(isTouch)
+		{
+			var oe = e.originalEvent;
+			e = oe.touches.length ? oe.touches[0] : oe.changedTouches[0];
+		}
+
+		return {
+			left: e.clientX,
+			top : e.clientY
+		};
+	};
+
+
+	fn.get_offset = function(e)
+	{
+		e.preventDefault();
+		var mouse_actual_pos = this.get_mouse_pos(e);
+		var diff_x = Math.round(mouse_actual_pos.left - this.mouse_init_pos.left);
+		var diff_y = Math.round(mouse_actual_pos.top - this.mouse_init_pos.top);
+
+		var left = Math.round(this.el_init_offset.left + diff_x - this.baseX);
+		var top = Math.round(this.el_init_offset.top + diff_y - this.baseY + this.scrollOffset);
+
+		if(this.options.limit)
+		{
+			if(left > this.player_max_left)
+			{
+				left = this.player_max_left;
+			}
+			else if(left < this.player_min_left)
+			{
+				left = this.player_min_left;
+			}
+		}
+
+		return {
+			left      : left,
+			top       : top,
+			mouse_left: mouse_actual_pos.left,
+			mouse_top : mouse_actual_pos.top
+		};
+	};
+
+
+	fn.manage_scroll = function(offset)
+	{
+		/* scroll document */
+		var nextScrollTop;
+		var scrollTop = $window.scrollTop();
+		var min_window_y = scrollTop;
+		var max_window_y = min_window_y + this.window_height;
+
+		var mouse_down_zone = max_window_y - 50;
+		var mouse_up_zone = min_window_y + 50;
+
+		var abs_mouse_left = offset.mouse_left;
+		var abs_mouse_top = min_window_y + offset.mouse_top;
+
+		var max_player_y = (this.doc_height - this.window_height + this.player_height);
+
+		if(abs_mouse_top >= mouse_down_zone)
+		{
+			nextScrollTop = scrollTop + 30;
+			if(nextScrollTop < max_player_y)
+			{
+				$window.scrollTop(nextScrollTop);
+				this.scrollOffset = this.scrollOffset + 30;
+			}
+		}
+
+		if(abs_mouse_top <= mouse_up_zone)
+		{
+			nextScrollTop = scrollTop - 30;
+			if(nextScrollTop > 0)
+			{
+				$window.scrollTop(nextScrollTop);
+				this.scrollOffset = this.scrollOffset - 30;
+			}
+		}
+	};
+
+
+	fn.calculate_positions = function(e)
+	{
+		this.window_height = $window.height();
+	};
+
+
+	fn.drag_handler = function(e)
+	{
+		var node = e.target.nodeName;
+		if(this.disabled || e.which !== 1 && !isTouch)
+		{
+			return;
+		}
+
+		if(this.ignore_drag(e))
+		{
+			return;
+		}
+
+		var self = this;
+		var first = true;
+		this.$player = $(e.currentTarget);
+
+		this.el_init_pos = this.get_actual_pos(this.$player);
+		this.mouse_init_pos = this.get_mouse_pos(e);
+		this.offsetY = this.mouse_init_pos.top - this.el_init_pos.top;
+
+		this.$body.on(pointer_events.move, function(mme)
+		{
+			var mouse_actual_pos = self.get_mouse_pos(mme);
+			var diff_x = Math.abs(mouse_actual_pos.left - self.mouse_init_pos.left);
+			var diff_y = Math.abs(mouse_actual_pos.top - self.mouse_init_pos.top);
+			if(!(diff_x > self.options.distance || diff_y > self.options.distance))
+			{
+				return false;
+			}
+
+			if(first)
+			{
+				first = false;
+				self.on_dragstart.call(self, mme);
+				return false;
+			}
+
+			if(self.is_dragging === true)
+			{
+				self.on_dragmove.call(self, mme);
+			}
+
+			return false;
+		});
+
+		if(!isTouch)
+		{
+			return false;
+		}
+	};
+
+
+	fn.on_dragstart = function(e)
+	{
+		e.preventDefault();
+		this.drag_start = true;
+		this.is_dragging = true;
+		var offset = this.$container.offset();
+		this.baseX = Math.round(offset.left);
+		this.baseY = Math.round(offset.top);
+		this.doc_height = $(document).height();
+
+		if(this.options.helper === 'clone')
+		{
+			this.$helper = this.$player.clone().appendTo(this.$container).addClass('helper');
+			this.helper = true;
+		}
+		else
+		{
+			this.helper = false;
+		}
+		this.scrollOffset = 0;
+		this.el_init_offset = this.$player.offset();
+		this.player_width = this.$player.width();
+		this.player_height = this.$player.height();
+
+		var container_width = this.options.container_width || this.$container.width();
+		this.player_max_left = (container_width - this.player_width + this.options.offset_left);
+
+		if(this.options.start)
+		{
+			this.options.start.call(this.$player, e, {
+				helper: this.helper ? this.$helper : this.$player
+			});
+		}
+		return false;
+	};
+
+
+	fn.on_dragmove = function(e)
+	{
+		var offset = this.get_offset(e);
+
+		this.options.autoscroll && this.manage_scroll(offset);
+
+		(this.helper ? this.$helper : this.$player).css({
+			'position': 'absolute',
+			'left'    : offset.left,
+			'top'     : offset.top
+		});
+
+		var ui = {
+			'position': {
+				'left': offset.left,
+				'top' : offset.top
+			}
+		};
+
+		if(this.options.drag)
+		{
+			this.options.drag.call(this.$player, e, ui);
+		}
+		return false;
+	};
+
+
+	fn.on_dragstop = function(e)
+	{
+		var offset = this.get_offset(e);
+		this.drag_start = false;
+
+		var ui = {
+			'position': {
+				'left': offset.left,
+				'top' : offset.top
+			}
+		};
+
+		if(this.options.stop)
+		{
+			this.options.stop.call(this.$player, e, ui);
+		}
+
+		if(this.helper)
+		{
+			this.$helper.remove();
+		}
+
+		return false;
+	};
+
+	fn.on_select_start = function(e)
+	{
+		if(this.disabled)
+		{
+			return;
+		}
+
+		if(this.ignore_drag(e))
+		{
+			return;
+		}
+
+		return false;
+	};
+
+	fn.enable = function()
+	{
+		this.disabled = false;
+	};
+
+	fn.disable = function()
+	{
+		this.disabled = true;
+	};
+
+
+	fn.destroy = function()
+	{
+		this.disable();
+
+		this.$container.off('.gridster-draggable');
+		this.$body.off('.gridster-draggable');
+		$(window).off('.gridster-draggable');
+
+		$.removeData(this.$container, 'drag');
+	};
+
+	fn.ignore_drag = function(event)
+	{
+		if(this.options.handle)
+		{
+			return !$(event.target).is(this.options.handle);
+		}
+
+		return $.inArray(event.target.nodeName, this.options.ignore_dragging) >= 0;
+	};
+
+	//jQuery adapter
+	$.fn.drag = function(options)
+	{
+		return this.each(function()
+		{
+			if(!$.data(this, 'drag'))
+			{
+				$.data(this, 'drag', new Draggable(this, options));
+			}
+			else
+			{
+				$.data(this, 'drag').setOptions(options);
+			}
+		});
+	};
+
+
+}(jQuery, window, document));
+
+;
+(function($, window, document, undefined)
+{
+
+	var defaults = {
+		namespace               : '',
+		widget_selector         : 'li',
+		widget_margins          : [10, 10],
+		widget_base_dimensions  : [400, 225],
+		extra_rows              : 0,
+		extra_cols              : 0,
+		min_cols                : 1,
+		max_cols                : null,
+		min_rows                : 15,
+		max_size_x              : 6,
+		autogenerate_stylesheet : true,
+		avoid_overlapped_widgets: true,
+		serialize_params        : function($w, wgd)
+		{
+			return {
+				col   : wgd.col,
+				row   : wgd.row,
+				size_x: wgd.size_x,
+				size_y: wgd.size_y
+			};
+		},
+		collision               : {},
+		draggable               : {
+			distance: 4
+		}
+	};
+
+	/**
+	 * @class Gridster
+	 * @uses Draggable
+	 * @uses Collision
+	 * @param {HTMLElement} el The HTMLelement that contains all the panes.
+	 * @param {Object} [options] An Object with all options you want to
+	 *        overwrite:
+	 *    @param {HTMLElement|String} [options.widget_selector] Define who will
+	 *     be the draggable panes. Can be a CSS Selector String or a
+	 *     collection of HTMLElements
+	 *    @param {Array} [options.widget_margins] Margin between panes.
+	 *     The first index for the horizontal margin (left, right) and
+	 *     the second for the vertical margin (top, bottom).
+	 *    @param {Array} [options.widget_base_dimensions] Base widget dimensions
+	 *     in pixels. The first index for the width and the second for the
+	 *     height.
+	 *    @param {Number} [options.extra_cols] Add more columns in addition to
+	 *     those that have been calculated.
+	 *    @param {Number} [options.extra_rows] Add more rows in addition to
+	 *     those that have been calculated.
+	 *    @param {Number} [options.min_cols] The minimum required columns.
+	 *    @param {Number} [options.max_cols] The maximum columns possible (set to null
+	 *     for no maximum).
+	 *    @param {Number} [options.min_rows] The minimum required rows.
+	 *    @param {Number} [options.max_size_x] The maximum number of columns
+	 *     that a widget can span.
+	 *    @param {Boolean} [options.autogenerate_stylesheet] If true, all the
+	 *     CSS required to position all panes in their respective columns
+	 *     and rows will be generated automatically and injected to the
+	 *     `<head>` of the document. You can set this to false, and write
+	 *     your own CSS targeting rows and cols via data-attributes like so:
+	 *     `[data-col="1"] { left: 10px; }`
+	 *    @param {Boolean} [options.avoid_overlapped_widgets] Avoid that panes loaded
+	 *     from the DOM can be overlapped. It is helpful if the positions were
+	 *     bad stored in the database or if there was any conflict.
+	 *    @param {Function} [options.serialize_params] Return the data you want
+	 *     for each widget in the serialization. Two arguments are passed:
+	 *     `$w`: the jQuery wrapped HTMLElement, and `wgd`: the grid
+	 *     coords object (`col`, `row`, `size_x`, `size_y`).
+	 *    @param {Object} [options.collision] An Object with all options for
+	 *     Collision class you want to overwrite. See Collision docs for
+	 *     more info.
+	 *    @param {Object} [options.draggable] An Object with all options for
+	 *     Draggable class you want to overwrite. See Draggable docs for more
+	 *     info.
+	 *
+	 * @constructor
+	 */
+	function Gridster(el, options)
+	{
+		this.options = $.extend(true, defaults, options);
+		this.$el = $(el);
+		this.$wrapper = this.$el.parent();
+		this.$widgets = this.$el.children(this.options.widget_selector).addClass('gs_w');
+		this.panes = [];
+		this.$changed = $([]);
+		this.wrapper_width = this.$wrapper.width();
+		this.min_widget_width = (this.options.widget_margins[0] * 2) + this.options.widget_base_dimensions[0];
+		this.min_widget_height = (this.options.widget_margins[1] * 2) + this.options.widget_base_dimensions[1];
+
+		this.$style_tags = $([]);
+
+		this.init();
+	}
+
+	Gridster.generated_stylesheets = [];
+
+	var fn = Gridster.prototype;
+
+	fn.init = function()
+	{
+		this.generate_grid_and_stylesheet();
+		this.get_widgets_from_DOM();
+		this.set_dom_grid_height();
+		this.$wrapper.addClass('ready');
+		this.draggable();
+
+		$(window).bind('resize.gridster', throttle($.proxy(this.recalculate_faux_grid, this), 200));
+	};
+
+
+	/**
+	 * Disables dragging.
+	 *
+	 * @method disable
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.disable = function()
+	{
+		this.$wrapper.find('.player-revert').removeClass('player-revert');
+		this.drag_api.disable();
+		return this;
+	};
+
+
+	/**
+	 * Enables dragging.
+	 *
+	 * @method enable
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.enable = function()
+	{
+		this.drag_api.enable();
+		return this;
+	};
+
+
+	/**
+	 * Add a new widget to the grid.
+	 *
+	 * @method add_widget
+	 * @param {String|HTMLElement} html The string representing the HTML of the widget
+	 *  or the HTMLElement.
+	 * @param {Number} [size_x] The nº of rows the widget occupies horizontally.
+	 * @param {Number} [size_y] The nº of columns the widget occupies vertically.
+	 * @param {Number} [col] The column the widget should start in.
+	 * @param {Number} [row] The row the widget should start in.
+	 * @return {HTMLElement} Returns the jQuery wrapped HTMLElement representing.
+	 *  the widget that was just created.
+	 */
+	fn.add_widget = function(html, size_x, size_y, col, row)
+	{
+		var pos;
+		size_x || (size_x = 1);
+		size_y || (size_y = 1);
+
+		if(!col & !row)
+		{
+			pos = this.next_position(size_x, size_y);
+		}
+		else
+		{
+			pos = {
+				col: col,
+				row: row
+			};
+
+			this.empty_cells(col, row, size_x, size_y);
+		}
+
+		var $w = $(html).attr({
+			'data-col'  : pos.col,
+			'data-row'  : pos.row,
+			'data-sizex': size_x,
+			'data-sizey': size_y
+		}).addClass('gs_w').appendTo(this.$el).hide();
+
+		this.$widgets = this.$widgets.add($w);
+
+		this.register_widget($w);
+
+		this.add_faux_rows(pos.size_y);
+		//this.add_faux_cols(pos.size_x);
+
+		this.set_dom_grid_height();
+
+		return $w.fadeIn();
+	};
+
+
+	/**
+	 * Change the size of a widget.
+	 *
+	 * @method resize_widget
+	 * @param {HTMLElement} $widget The jQuery wrapped HTMLElement
+	 *  representing the widget.
+	 * @param {Number} size_x The number of columns that will occupy the widget.
+	 * @param {Number} size_y The number of rows that will occupy the widget.
+	 * @param {Function} callback Function executed when the widget is removed.
+	 * @return {HTMLElement} Returns $widget.
+	 */
+	fn.resize_widget = function($widget, size_x, size_y, callback)
+	{
+		var wgd = $widget.coords().grid;
+		size_x || (size_x = wgd.size_x);
+		size_y || (size_y = wgd.size_y);
+
+		if(size_x > this.cols)
+		{
+			size_x = this.cols;
+		}
+
+		var old_cells_occupied = this.get_cells_occupied(wgd);
+		var old_size_x = wgd.size_x;
+		var old_size_y = wgd.size_y;
+		var old_col = wgd.col;
+		var new_col = old_col;
+		var wider = size_x > old_size_x;
+		var taller = size_y > old_size_y;
+
+		if(old_col + size_x - 1 > this.cols)
+		{
+			var diff = old_col + (size_x - 1) - this.cols;
+			var c = old_col - diff;
+			new_col = Math.max(1, c);
+		}
+
+		var new_grid_data = {
+			col   : new_col,
+			row   : wgd.row,
+			size_x: size_x,
+			size_y: size_y
+		};
+
+		var new_cells_occupied = this.get_cells_occupied(new_grid_data);
+
+		var empty_cols = [];
+		$.each(old_cells_occupied.cols, function(i, col)
+		{
+			if($.inArray(col, new_cells_occupied.cols) === -1)
+			{
+				empty_cols.push(col);
+			}
+		});
+
+		var occupied_cols = [];
+		$.each(new_cells_occupied.cols, function(i, col)
+		{
+			if($.inArray(col, old_cells_occupied.cols) === -1)
+			{
+				occupied_cols.push(col);
+			}
+		});
+
+		var empty_rows = [];
+		$.each(old_cells_occupied.rows, function(i, row)
+		{
+			if($.inArray(row, new_cells_occupied.rows) === -1)
+			{
+				empty_rows.push(row);
+			}
+		});
+
+		var occupied_rows = [];
+		$.each(new_cells_occupied.rows, function(i, row)
+		{
+			if($.inArray(row, old_cells_occupied.rows) === -1)
+			{
+				occupied_rows.push(row);
+			}
+		});
+
+		this.remove_from_gridmap(wgd);
+
+		if(occupied_cols.length)
+		{
+			var cols_to_empty = [
+				new_col, wgd.row, size_x, Math.min(old_size_y, size_y), $widget
+			];
+			this.empty_cells.apply(this, cols_to_empty);
+		}
+
+		if(occupied_rows.length)
+		{
+			var rows_to_empty = [new_col, wgd.row, size_x, size_y, $widget];
+			this.empty_cells.apply(this, rows_to_empty);
+		}
+
+		wgd.col = new_col;
+		wgd.size_x = size_x;
+		wgd.size_y = size_y;
+		this.add_to_gridmap(new_grid_data, $widget);
+
+		//update coords instance attributes
+		$widget.data('coords').update({
+			width : (size_x * this.options.widget_base_dimensions[0] + ((size_x - 1) * this.options.widget_margins[0]) * 2),
+			height: (size_y * this.options.widget_base_dimensions[1] + ((size_y - 1) * this.options.widget_margins[1]) * 2)
+		});
+
+		if(size_y > old_size_y)
+		{
+			this.add_faux_rows(size_y - old_size_y);
+		}
+
+		if(size_x > old_size_x)
+		{
+			this.add_faux_cols(size_x - old_size_x);
+		}
+
+		$widget.attr({
+			'data-col'  : new_col,
+			'data-sizex': size_x,
+			'data-sizey': size_y
+		});
+
+		if(empty_cols.length)
+		{
+			var cols_to_remove_holes = [
+				empty_cols[0], wgd.row, empty_cols.length, Math.min(old_size_y, size_y), $widget
+			];
+
+			this.remove_empty_cells.apply(this, cols_to_remove_holes);
+		}
+
+		if(empty_rows.length)
+		{
+			var rows_to_remove_holes = [
+				new_col, wgd.row, size_x, size_y, $widget
+			];
+			this.remove_empty_cells.apply(this, rows_to_remove_holes);
+		}
+
+		if(callback)
+		{
+			callback.call(this, size_x, size_y);
+		}
+
+		return $widget;
+	};
+
+	/**
+	 * Move down panes in cells represented by the arguments col, row, size_x,
+	 * size_y
+	 *
+	 * @method empty_cells
+	 * @param {Number} col The column where the group of cells begin.
+	 * @param {Number} row The row where the group of cells begin.
+	 * @param {Number} size_x The number of columns that the group of cells
+	 * occupy.
+	 * @param {Number} size_y The number of rows that the group of cells
+	 * occupy.
+	 * @param {HTMLElement} $exclude Exclude panes from being moved.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.empty_cells = function(col, row, size_x, size_y, $exclude)
+	{
+		var $nexts = this.widgets_below({
+			col   : col,
+			row   : row - size_y,
+			size_x: size_x,
+			size_y: size_y
+		});
+
+		$nexts.not($exclude).each($.proxy(function(i, w)
+		{
+			var wgd = $(w).coords().grid;
+			if(!(wgd.row <= (row + size_y - 1)))
+			{
+				return;
+			}
+			var diff = (row + size_y) - wgd.row;
+			this.move_widget_down($(w), diff);
+		}, this));
+
+		this.set_dom_grid_height();
+
+		return this;
+	};
+
+
+	/**
+	 * Move up panes below cells represented by the arguments col, row, size_x,
+	 * size_y.
+	 *
+	 * @method remove_empty_cells
+	 * @param {Number} col The column where the group of cells begin.
+	 * @param {Number} row The row where the group of cells begin.
+	 * @param {Number} size_x The number of columns that the group of cells
+	 * occupy.
+	 * @param {Number} size_y The number of rows that the group of cells
+	 * occupy.
+	 * @param {HTMLElement} exclude Exclude panes from being moved.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_empty_cells = function(col, row, size_x, size_y, exclude)
+	{
+		var $nexts = this.widgets_below({
+			col   : col,
+			row   : row,
+			size_x: size_x,
+			size_y: size_y
+		});
+
+		$nexts.not(exclude).each($.proxy(function(i, widget)
+		{
+			this.move_widget_up($(widget), size_y);
+		}, this));
+
+		this.set_dom_grid_height();
+
+		return this;
+	};
+
+
+	/**
+	 * Get the most left column below to add a new widget.
+	 *
+	 * @method next_position
+	 * @param {Number} size_x The nº of rows the widget occupies horizontally.
+	 * @param {Number} size_y The nº of columns the widget occupies vertically.
+	 * @return {Object} Returns a grid coords object representing the future
+	 *  widget coords.
+	 */
+	fn.next_position = function(size_x, size_y)
+	{
+		size_x || (size_x = 1);
+		size_y || (size_y = 1);
+		var ga = this.gridmap;
+		var cols_l = ga.length;
+		var valid_pos = [];
+		var rows_l;
+
+		for(var c = 1; c < cols_l; c++)
+		{
+			rows_l = ga[c].length;
+			for(var r = 1; r <= rows_l; r++)
+			{
+				var can_move_to = this.can_move_to({
+					size_x: size_x,
+					size_y: size_y
+				}, c, r);
+
+				if(can_move_to)
+				{
+					valid_pos.push({
+						col   : c,
+						row   : r,
+						size_y: size_y,
+						size_x: size_x
+					});
+				}
+			}
+		}
+
+		if(valid_pos.length)
+		{
+			return this.sort_by_row_and_col_asc(valid_pos)[0];
+		}
+		return false;
+	};
+
+
+	/**
+	 * Remove a widget from the grid.
+	 *
+	 * @method remove_widget
+	 * @param {HTMLElement} el The jQuery wrapped HTMLElement you want to remove.
+	 * @param {Boolean|Function} silent If true, panes below the removed one
+	 * will not move up. If a Function is passed it will be used as callback.
+	 * @param {Function} callback Function executed when the widget is removed.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_widget = function(el, silent, callback)
+	{
+		var $el = el instanceof jQuery ? el : $(el);
+		var wgd = $el.coords().grid;
+
+		// if silent is a function assume it's a callback
+		if($.isFunction(silent))
+		{
+			callback = silent;
+			silent = false;
+		}
+
+		this.cells_occupied_by_placeholder = {};
+		this.$widgets = this.$widgets.not($el);
+
+		var $nexts = this.widgets_below($el);
+
+		this.remove_from_gridmap(wgd);
+
+		$el.fadeOut($.proxy(function()
+		{
+			$el.remove();
+
+			if(!silent)
+			{
+				$nexts.each($.proxy(function(i, widget)
+				{
+					this.move_widget_up($(widget), wgd.size_y);
+				}, this));
+			}
+
+			this.set_dom_grid_height();
+
+			if(callback)
+			{
+				callback.call(this, el);
+			}
+		}, this));
+	};
+
+
+	/**
+	 * Remove all panes from the grid.
+	 *
+	 * @method remove_all_widgets
+	 * @param {Function} callback Function executed for each widget removed.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_all_widgets = function(callback)
+	{
+		this.$widgets.each($.proxy(function(i, el)
+		{
+			this.remove_widget(el, true, callback);
+		}, this));
+
+		return this;
+	};
+
+
+	/**
+	 * Returns a serialized array of the panes in the grid.
+	 *
+	 * @method serialize
+	 * @param {HTMLElement} [$widgets] The collection of jQuery wrapped
+	 *  HTMLElements you want to serialize. If no argument is passed all panes
+	 *  will be serialized.
+	 * @return {Array} Returns an Array of Objects with the data specified in
+	 *  the serialize_params option.
+	 */
+	fn.serialize = function($widgets)
+	{
+		$widgets || ($widgets = this.$widgets);
+		var result = [];
+		$widgets.each($.proxy(function(i, widget)
+		{
+			result.push(this.options.serialize_params($(widget), $(widget).coords().grid));
+		}, this));
+
+		return result;
+	};
+
+
+	/**
+	 * Returns a serialized array of the panes that have changed their
+	 *  position.
+	 *
+	 * @method serialize_changed
+	 * @return {Array} Returns an Array of Objects with the data specified in
+	 *  the serialize_params option.
+	 */
+	fn.serialize_changed = function()
+	{
+		return this.serialize(this.$changed);
+	};
+
+
+	/**
+	 * Creates the grid coords object representing the widget a add it to the
+	 * mapped array of positions.
+	 *
+	 * @method register_widget
+	 * @return {Array} Returns the instance of the Gridster class.
+	 */
+	fn.register_widget = function($el)
+	{
+
+		var wgd = {
+			'col'   : parseInt($el.attr('data-col'), 10),
+			'row'   : parseInt($el.attr('data-row'), 10),
+			'size_x': parseInt($el.attr('data-sizex'), 10),
+			'size_y': parseInt($el.attr('data-sizey'), 10),
+			'el'    : $el
+		};
+
+		if(this.options.avoid_overlapped_widgets && !this.can_move_to({size_x: wgd.size_x, size_y: wgd.size_y}, wgd.col, wgd.row))
+		{
+			wgd = this.next_position(wgd.size_x, wgd.size_y);
+			wgd.el = $el;
+			$el.attr({
+				'data-col'  : wgd.col,
+				'data-row'  : wgd.row,
+				'data-sizex': wgd.size_x,
+				'data-sizey': wgd.size_y
+			});
+		}
+
+		// attach Coord object to player data-coord attribute
+		$el.data('coords', $el.coords());
+
+		// Extend Coord object with grid position info
+		$el.data('coords').grid = wgd;
+
+		this.add_to_gridmap(wgd, $el);
+
+		return this;
+	};
+
+
+	/**
+	 * Update in the mapped array of positions the value of cells represented by
+	 * the grid coords object passed in the `grid_data` param.
+	 *
+	 * @param {Object} grid_data The grid coords object representing the cells
+	 *  to update in the mapped array.
+	 * @param {HTMLElement|Boolean} value Pass `false` or the jQuery wrapped
+	 *  HTMLElement, depends if you want to delete an existing position or add
+	 *  a new one.
+	 * @method update_widget_position
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.update_widget_position = function(grid_data, value)
+	{
+		this.for_each_cell_occupied(grid_data, function(col, row)
+		{
+			if(!this.gridmap[col])
+			{
+				return this;
+			}
+			this.gridmap[col][row] = value;
+		});
+		return this;
+	};
+
+
+	/**
+	 * Remove a widget from the mapped array of positions.
+	 *
+	 * @method remove_from_gridmap
+	 * @param {Object} grid_data The grid coords object representing the cells
+	 *  to update in the mapped array.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_from_gridmap = function(grid_data)
+	{
+		return this.update_widget_position(grid_data, false);
+	};
+
+
+	/**
+	 * Add a widget to the mapped array of positions.
+	 *
+	 * @method add_to_gridmap
+	 * @param {Object} grid_data The grid coords object representing the cells
+	 *  to update in the mapped array.
+	 * @param {HTMLElement|Boolean} value The value to set in the specified
+	 *  position .
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.add_to_gridmap = function(grid_data, value)
+	{
+		this.update_widget_position(grid_data, value || grid_data.el);
+
+		if(grid_data.el)
+		{
+			var $widgets = this.widgets_below(grid_data.el);
+			$widgets.each($.proxy(function(i, widget)
+			{
+				this.move_widget_up($(widget));
+			}, this));
+		}
+	};
+
+
+	/**
+	 * Make panes draggable.
+	 *
+	 * @uses Draggable
+	 * @method draggable
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.draggable = function()
+	{
+		var self = this;
+		var draggable_options = $.extend(true, {}, this.options.draggable, {
+			offset_left    : this.options.widget_margins[0],
+			container_width: this.container_width,
+			start          : function(event, ui)
+			{
+				self.$widgets.filter('.player-revert').removeClass('player-revert');
+
+				self.$player = $(this);
+				self.$helper = self.options.draggable.helper === 'clone' ? $(ui.helper) : self.$player;
+				self.helper = !self.$helper.is(self.$player);
+
+				self.on_start_drag.call(self, event, ui);
+				self.$el.trigger('gridster:dragstart');
+			},
+			stop           : function(event, ui)
+			{
+				self.on_stop_drag.call(self, event, ui);
+				self.$el.trigger('gridster:dragstop');
+			},
+			drag           : throttle(function(event, ui)
+			{
+				self.on_drag.call(self, event, ui);
+				self.$el.trigger('gridster:drag');
+			}, 60)
+		});
+
+		this.drag_api = this.$el.drag(draggable_options).data('drag');
+		return this;
+	};
+
+
+	/**
+	 * This function is executed when the player begins to be dragged.
+	 *
+	 * @method on_start_drag
+	 * @param {Event} event The original browser event
+	 * @param {Object} ui A prepared ui object.
+	 */
+	fn.on_start_drag = function(event, ui)
+	{
+
+		this.$helper.add(this.$player).add(this.$wrapper).addClass('dragging');
+
+		this.$player.addClass('player');
+		this.player_grid_data = this.$player.coords().grid;
+		this.placeholder_grid_data = $.extend({}, this.player_grid_data);
+
+		//set new grid height along the dragging period
+		this.$el.css('height', this.$el.height() + (this.player_grid_data.size_y * this.min_widget_height));
+
+		var colliders = this.faux_grid;
+		var coords = this.$player.data('coords').coords;
+
+		this.cells_occupied_by_player = this.get_cells_occupied(this.player_grid_data);
+		this.cells_occupied_by_placeholder = this.get_cells_occupied(this.placeholder_grid_data);
+
+		this.last_cols = [];
+		this.last_rows = [];
+
+
+		// see jquery.collision.js
+		this.collision_api = this.$helper.collision(colliders, this.options.collision);
+
+		this.$preview_holder = $('<li />', {
+			'class'   : 'preview-holder',
+			'data-row': this.$player.attr('data-row'),
+			'data-col': this.$player.attr('data-col'),
+			css       : {
+				width : coords.width,
+				height: coords.height
+			}
+		}).appendTo(this.$el);
+
+		if(this.options.draggable.start)
+		{
+			this.options.draggable.start.call(this, event, ui);
+		}
+	};
+
+
+	/**
+	 * This function is executed when the player is being dragged.
+	 *
+	 * @method on_drag
+	 * @param {Event} event The original browser event
+	 * @param {Object} ui A prepared ui object.
+	 */
+	fn.on_drag = function(event, ui)
+	{
+		//break if dragstop has been fired
+		if(this.$player === null)
+		{
+			return false;
+		}
+
+		var abs_offset = {
+			left: ui.position.left + this.baseX,
+			top : ui.position.top + this.baseY
+		};
+
+		this.colliders_data = this.collision_api.get_closest_colliders(abs_offset);
+
+		this.on_overlapped_column_change(this.on_start_overlapping_column, this.on_stop_overlapping_column);
+
+		this.on_overlapped_row_change(this.on_start_overlapping_row, this.on_stop_overlapping_row);
+
+		if(this.helper && this.$player)
+		{
+			this.$player.css({
+				'left': ui.position.left,
+				'top' : ui.position.top
+			});
+		}
+
+		if(this.options.draggable.drag)
+		{
+			this.options.draggable.drag.call(this, event, ui);
+		}
+	};
+
+	/**
+	 * This function is executed when the player stops being dragged.
+	 *
+	 * @method on_stop_drag
+	 * @param {Event} event The original browser event
+	 * @param {Object} ui A prepared ui object.
+	 */
+	fn.on_stop_drag = function(event, ui)
+	{
+		this.$helper.add(this.$player).add(this.$wrapper).removeClass('dragging');
+
+		ui.position.left = ui.position.left + this.baseX;
+		ui.position.top = ui.position.top + this.baseY;
+		this.colliders_data = this.collision_api.get_closest_colliders(ui.position);
+
+		this.on_overlapped_column_change(this.on_start_overlapping_column, this.on_stop_overlapping_column);
+
+		this.on_overlapped_row_change(this.on_start_overlapping_row, this.on_stop_overlapping_row);
+
+		this.$player.addClass('player-revert').removeClass('player').attr({
+				'data-col': this.placeholder_grid_data.col,
+				'data-row': this.placeholder_grid_data.row
+			}).css({
+				'left': '',
+				'top' : ''
+			});
+
+		this.$changed = this.$changed.add(this.$player);
+
+		this.cells_occupied_by_player = this.get_cells_occupied(this.placeholder_grid_data);
+		this.set_cells_player_occupies(this.placeholder_grid_data.col, this.placeholder_grid_data.row);
+
+		this.$player.coords().grid.row = this.placeholder_grid_data.row;
+		this.$player.coords().grid.col = this.placeholder_grid_data.col;
+
+		if(this.options.draggable.stop)
+		{
+			this.options.draggable.stop.call(this, event, ui);
+		}
+
+		this.$preview_holder.remove();
+
+		this.$player = null;
+		this.$helper = null;
+		this.placeholder_grid_data = {};
+		this.player_grid_data = {};
+		this.cells_occupied_by_placeholder = {};
+		this.cells_occupied_by_player = {};
+
+		this.set_dom_grid_height();
+	};
+
+
+	/**
+	 * Executes the callbacks passed as arguments when a column begins to be
+	 * overlapped or stops being overlapped.
+	 *
+	 * @param {Function} start_callback Function executed when a new column
+	 *  begins to be overlapped. The column is passed as first argument.
+	 * @param {Function} stop_callback Function executed when a column stops
+	 *  being overlapped. The column is passed as first argument.
+	 * @method on_overlapped_column_change
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.on_overlapped_column_change = function(start_callback, stop_callback)
+	{
+		if(!this.colliders_data.length)
+		{
+			return this;
+		}
+		var cols = this.get_targeted_columns(this.colliders_data[0].el.data.col);
+
+		var last_n_cols = this.last_cols.length;
+		var n_cols = cols.length;
+		var i;
+
+		for(i = 0; i < n_cols; i++)
+		{
+			if($.inArray(cols[i], this.last_cols) === -1)
+			{
+				(start_callback || $.noop).call(this, cols[i]);
+			}
+		}
+
+		for(i = 0; i < last_n_cols; i++)
+		{
+			if($.inArray(this.last_cols[i], cols) === -1)
+			{
+				(stop_callback || $.noop).call(this, this.last_cols[i]);
+			}
+		}
+
+		this.last_cols = cols;
+
+		return this;
+	};
+
+
+	/**
+	 * Executes the callbacks passed as arguments when a row starts to be
+	 * overlapped or stops being overlapped.
+	 *
+	 * @param {Function} start_callback Function executed when a new row begins
+	 *  to be overlapped. The row is passed as first argument.
+	 * @param {Function} end_callback Function executed when a row stops being
+	 *  overlapped. The row is passed as first argument.
+	 * @method on_overlapped_row_change
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.on_overlapped_row_change = function(start_callback, end_callback)
+	{
+		if(!this.colliders_data.length)
+		{
+			return this;
+		}
+		var rows = this.get_targeted_rows(this.colliders_data[0].el.data.row);
+		var last_n_rows = this.last_rows.length;
+		var n_rows = rows.length;
+		var i;
+
+		for(i = 0; i < n_rows; i++)
+		{
+			if($.inArray(rows[i], this.last_rows) === -1)
+			{
+				(start_callback || $.noop).call(this, rows[i]);
+			}
+		}
+
+		for(i = 0; i < last_n_rows; i++)
+		{
+			if($.inArray(this.last_rows[i], rows) === -1)
+			{
+				(end_callback || $.noop).call(this, this.last_rows[i]);
+			}
+		}
+
+		this.last_rows = rows;
+	};
+
+
+	/**
+	 * Sets the current position of the player
+	 *
+	 * @param {Number} col
+	 * @param {Number} row
+	 * @param {Boolean} no_player
+	 * @method set_player
+	 * @return {object}
+	 */
+	fn.set_player = function(col, row, no_player)
+	{
+		var self = this;
+		if(!no_player)
+		{
+			this.empty_cells_player_occupies();
+		}
+		var cell = !no_player ? self.colliders_data[0].el.data : {col: col};
+		var to_col = cell.col;
+		var to_row = row || cell.row;
+
+		this.player_grid_data = {
+			col   : to_col,
+			row   : to_row,
+			size_y: this.player_grid_data.size_y,
+			size_x: this.player_grid_data.size_x
+		};
+
+		this.cells_occupied_by_player = this.get_cells_occupied(this.player_grid_data);
+
+		var $overlapped_widgets = this.get_widgets_overlapped(this.player_grid_data);
+
+		var constraints = this.widgets_constraints($overlapped_widgets);
+
+		this.manage_movements(constraints.can_go_up, to_col, to_row);
+		this.manage_movements(constraints.can_not_go_up, to_col, to_row);
+
+		/* if there is not panes overlapping in the new player position,
+		 * update the new placeholder position. */
+		if(!$overlapped_widgets.length)
+		{
+			var pp = this.can_go_player_up(this.player_grid_data);
+			if(pp !== false)
+			{
+				to_row = pp;
+			}
+			this.set_placeholder(to_col, to_row);
+		}
+
+		return {
+			col: to_col,
+			row: to_row
+		};
+	};
+
+
+	/**
+	 * See which of the panes in the $panes param collection can go to
+	 * a upper row and which not.
+	 *
+	 * @method widgets_contraints
+	 * @param {jQuery} $widgets A jQuery wrapped collection of
+	 * HTMLElements.
+	 * @return {object} Returns a literal Object with two keys: `can_go_up` &
+	 * `can_not_go_up`. Each contains a set of HTMLElements.
+	 */
+	fn.widgets_constraints = function($widgets)
+	{
+		var $widgets_can_go_up = $([]);
+		var $widgets_can_not_go_up;
+		var wgd_can_go_up = [];
+		var wgd_can_not_go_up = [];
+
+		$widgets.each($.proxy(function(i, w)
+		{
+			var $w = $(w);
+			var wgd = $w.coords().grid;
+			if(this.can_go_widget_up(wgd))
+			{
+				$widgets_can_go_up = $widgets_can_go_up.add($w);
+				wgd_can_go_up.push(wgd);
+			}
+			else
+			{
+				wgd_can_not_go_up.push(wgd);
+			}
+		}, this));
+
+		$widgets_can_not_go_up = $widgets.not($widgets_can_go_up);
+
+		return {
+			can_go_up    : this.sort_by_row_asc(wgd_can_go_up),
+			can_not_go_up: this.sort_by_row_desc(wgd_can_not_go_up)
+		};
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) in ascending way.
+	 *
+	 * @method sort_by_row_asc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_row_asc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(!a.row)
+			{
+				a = $(a).coords().grid;
+				b = $(b).coords().grid;
+			}
+
+			if(a.row > b.row)
+			{
+				return 1;
+			}
+			return -1;
+		});
+
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) placing first the empty cells upper left.
+	 *
+	 * @method sort_by_row_and_col_asc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_row_and_col_asc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(a.row > b.row || a.row === b.row && a.col > b.col)
+			{
+				return 1;
+			}
+			return -1;
+		});
+
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects by column (representing the grid
+	 * coords of each widget) in ascending way.
+	 *
+	 * @method sort_by_col_asc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_col_asc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(a.col > b.col)
+			{
+				return 1;
+			}
+			return -1;
+		});
+
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) in descending way.
+	 *
+	 * @method sort_by_row_desc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_row_desc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(a.row + a.size_y < b.row + b.size_y)
+			{
+				return 1;
+			}
+			return -1;
+		});
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) in descending way.
+	 *
+	 * @method manage_movements
+	 * @param {jQuery} $widgets A jQuery collection of HTMLElements
+	 *  representing the panes you want to move.
+	 * @param {Number} to_col The column to which we want to move the panes.
+	 * @param {Number} to_row The row to which we want to move the panes.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.manage_movements = function($widgets, to_col, to_row)
+	{
+		$.each($widgets, $.proxy(function(i, w)
+		{
+			var wgd = w;
+			var $w = wgd.el;
+
+			var can_go_widget_up = this.can_go_widget_up(wgd);
+
+			if(can_go_widget_up)
+			{
+				//target CAN go up
+				//so move widget up
+				this.move_widget_to($w, can_go_widget_up);
+				this.set_placeholder(to_col, can_go_widget_up + wgd.size_y);
+
+			}
+			else
+			{
+				//target can't go up
+				var can_go_player_up = this.can_go_player_up(this.player_grid_data);
+
+				if(!can_go_player_up)
+				{
+					// target can't go up
+					// player cant't go up
+					// so we need to move widget down to a position that dont
+					// overlaps player
+					var y = (to_row + this.player_grid_data.size_y) - wgd.row;
+
+					this.move_widget_down($w, y);
+					this.set_placeholder(to_col, to_row);
+				}
+			}
+		}, this));
+
+		return this;
+	};
+
+	/**
+	 * Determines if there is a widget in the row and col given. Or if the
+	 * HTMLElement passed as first argument is the player.
+	 *
+	 * @method is_player
+	 * @param {Number|HTMLElement} col_or_el A jQuery wrapped collection of
+	 * HTMLElements.
+	 * @param {Number} [row] The column to which we want to move the panes.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_player = function(col_or_el, row)
+	{
+		if(row && !this.gridmap[col_or_el])
+		{
+			return false;
+		}
+		var $w = row ? this.gridmap[col_or_el][row] : col_or_el;
+		return $w && ($w.is(this.$player) || $w.is(this.$helper));
+	};
+
+
+	/**
+	 * Determines if the widget that is being dragged is currently over the row
+	 * and col given.
+	 *
+	 * @method is_player_in
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_player_in = function(col, row)
+	{
+		var c = this.cells_occupied_by_player || {};
+		return $.inArray(col, c.cols) >= 0 && $.inArray(row, c.rows) >= 0;
+	};
+
+
+	/**
+	 * Determines if the placeholder is currently over the row and col given.
+	 *
+	 * @method is_placeholder_in
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_placeholder_in = function(col, row)
+	{
+		var c = this.cells_occupied_by_placeholder || {};
+		return this.is_placeholder_in_col(col) && $.inArray(row, c.rows) >= 0;
+	};
+
+
+	/**
+	 * Determines if the placeholder is currently over the column given.
+	 *
+	 * @method is_placeholder_in_col
+	 * @param {Number} col The column to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_placeholder_in_col = function(col)
+	{
+		var c = this.cells_occupied_by_placeholder || [];
+		return $.inArray(col, c.cols) >= 0;
+	};
+
+
+	/**
+	 * Determines if the cell represented by col and row params is empty.
+	 *
+	 * @method is_empty
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_empty = function(col, row)
+	{
+		if(typeof this.gridmap[col] !== 'undefined')
+		{
+			if(typeof this.gridmap[col][row] !== 'undefined' && this.gridmap[col][row] === false)
+			{
+				return true;
+			}
+			return false;
+		}
+		return true;
+	};
+
+
+	/**
+	 * Determines if the cell represented by col and row params is occupied.
+	 *
+	 * @method is_occupied
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_occupied = function(col, row)
+	{
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+
+		if(this.gridmap[col][row])
+		{
+			return true;
+		}
+		return false;
+	};
+
+
+	/**
+	 * Determines if there is a widget in the cell represented by col/row params.
+	 *
+	 * @method is_widget
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean|HTMLElement} Returns false if there is no widget,
+	 * else returns the jQuery HTMLElement
+	 */
+	fn.is_widget = function(col, row)
+	{
+		var cell = this.gridmap[col];
+		if(!cell)
+		{
+			return false;
+		}
+
+		cell = cell[row];
+
+		if(cell)
+		{
+			return cell;
+		}
+
+		return false;
+	};
+
+
+	/**
+	 * Determines if there is a widget in the cell represented by col/row
+	 * params and if this is under the widget that is being dragged.
+	 *
+	 * @method is_widget_under_player
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_widget_under_player = function(col, row)
+	{
+		if(this.is_widget(col, row))
+		{
+			return this.is_player_in(col, row);
+		}
+		return false;
+	};
+
+
+	/**
+	 * Get panes overlapping with the player or with the object passed
+	 * representing the grid cells.
+	 *
+	 * @method get_widgets_under_player
+	 * @return {HTMLElement} Returns a jQuery collection of HTMLElements
+	 */
+	fn.get_widgets_under_player = function(cells)
+	{
+		cells || (cells = this.cells_occupied_by_player || {cols: [], rows: []});
+		var $widgets = $([]);
+
+		$.each(cells.cols, $.proxy(function(i, col)
+		{
+			$.each(cells.rows, $.proxy(function(i, row)
+			{
+				if(this.is_widget(col, row))
+				{
+					$widgets = $widgets.add(this.gridmap[col][row]);
+				}
+			}, this));
+		}, this));
+
+		return $widgets;
+	};
+
+
+	/**
+	 * Put placeholder at the row and column specified.
+	 *
+	 * @method set_placeholder
+	 * @param {Number} col The column to which we want to move the
+	 *  placeholder.
+	 * @param {Number} row The row to which we want to move the
+	 *  placeholder.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.set_placeholder = function(col, row)
+	{
+		var phgd = $.extend({}, this.placeholder_grid_data);
+		var $nexts = this.widgets_below({
+			col   : phgd.col,
+			row   : phgd.row,
+			size_y: phgd.size_y,
+			size_x: phgd.size_x
+		});
+
+		// Prevents panes go out of the grid
+		var right_col = (col + phgd.size_x - 1);
+		if(right_col > this.cols)
+		{
+			col = col - (right_col - col);
+		}
+
+		var moved_down = this.placeholder_grid_data.row < row;
+		var changed_column = this.placeholder_grid_data.col !== col;
+
+		this.placeholder_grid_data.col = col;
+		this.placeholder_grid_data.row = row;
+
+		this.cells_occupied_by_placeholder = this.get_cells_occupied(this.placeholder_grid_data);
+
+		this.$preview_holder.attr({
+			'data-row': row,
+			'data-col': col
+		});
+
+		if(moved_down || changed_column)
+		{
+			$nexts.each($.proxy(function(i, widget)
+			{
+				this.move_widget_up($(widget), this.placeholder_grid_data.col - col + phgd.size_y);
+			}, this));
+		}
+
+
+		var $widgets_under_ph = this.get_widgets_under_player(this.cells_occupied_by_placeholder);
+		if($widgets_under_ph.length)
+		{
+			$widgets_under_ph.each($.proxy(function(i, widget)
+			{
+				var $w = $(widget);
+				this.move_widget_down($w, row + phgd.size_y - $w.data('coords').grid.row);
+			}, this));
+		}
+
+	};
+
+
+	/**
+	 * Determines whether the player can move to a position above.
+	 *
+	 * @method can_go_player_up
+	 * @param {Object} widget_grid_data The actual grid coords object of the
+	 *  player.
+	 * @return {Number|Boolean} If the player can be moved to an upper row
+	 *  returns the row number, else returns false.
+	 */
+	fn.can_go_player_up = function(widget_grid_data)
+	{
+		var p_bottom_row = widget_grid_data.row + widget_grid_data.size_y - 1;
+		var result = true;
+		var upper_rows = [];
+		var min_row = 10000;
+		var $widgets_under_player = this.get_widgets_under_player();
+
+		/* generate an array with columns as index and array with upper rows
+		 * empty as value */
+		this.for_each_column_occupied(widget_grid_data, function(tcol)
+		{
+			var grid_col = this.gridmap[tcol];
+			var r = p_bottom_row + 1;
+			upper_rows[tcol] = [];
+
+			while(--r > 0)
+			{
+				if(this.is_empty(tcol, r) || this.is_player(tcol, r) || this.is_widget(tcol, r) && grid_col[r].is($widgets_under_player))
+				{
+					upper_rows[tcol].push(r);
+					min_row = r < min_row ? r : min_row;
+				}
+				else
+				{
+					break;
+				}
+			}
+
+			if(upper_rows[tcol].length === 0)
+			{
+				result = false;
+				return true; //break
+			}
+
+			upper_rows[tcol].sort(function(a, b)
+			{
+				return a - b;
+			});
+		});
+
+		if(!result)
+		{
+			return false;
+		}
+
+		return this.get_valid_rows(widget_grid_data, upper_rows, min_row);
+	};
+
+
+	/**
+	 * Determines whether a widget can move to a position above.
+	 *
+	 * @method can_go_widget_up
+	 * @param {Object} widget_grid_data The actual grid coords object of the
+	 *  widget we want to check.
+	 * @return {Number|Boolean} If the widget can be moved to an upper row
+	 *  returns the row number, else returns false.
+	 */
+	fn.can_go_widget_up = function(widget_grid_data)
+	{
+		var p_bottom_row = widget_grid_data.row + widget_grid_data.size_y - 1;
+		var result = true;
+		var upper_rows = [];
+		var min_row = 10000;
+
+		/* generate an array with columns as index and array with topmost rows
+		 * empty as value */
+		this.for_each_column_occupied(widget_grid_data, function(tcol)
+		{
+			var grid_col = this.gridmap[tcol];
+			upper_rows[tcol] = [];
+
+			var r = p_bottom_row + 1;
+			// iterate over each row
+			while(--r > 0)
+			{
+				if(this.is_widget(tcol, r) && !this.is_player_in(tcol, r))
+				{
+					if(!grid_col[r].is(widget_grid_data.el))
+					{
+						break;
+					}
+				}
+
+				if(!this.is_player(tcol, r) && !this.is_placeholder_in(tcol, r) && !this.is_player_in(tcol, r))
+				{
+					upper_rows[tcol].push(r);
+				}
+
+				if(r < min_row)
+				{
+					min_row = r;
+				}
+			}
+
+			if(upper_rows[tcol].length === 0)
+			{
+				result = false;
+				return true; //break
+			}
+
+			upper_rows[tcol].sort(function(a, b)
+			{
+				return a - b;
+			});
+		});
+
+		if(!result)
+		{
+			return false;
+		}
+
+		return this.get_valid_rows(widget_grid_data, upper_rows, min_row);
+	};
+
+
+	/**
+	 * Search a valid row for the widget represented by `widget_grid_data' in
+	 * the `upper_rows` array. Iteration starts from row specified in `min_row`.
+	 *
+	 * @method get_valid_rows
+	 * @param {Object} widget_grid_data The actual grid coords object of the
+	 *  player.
+	 * @param {Array} upper_rows An array with columns as index and arrays
+	 *  of valid rows as values.
+	 * @param {Number} min_row The upper row from which the iteration will start.
+	 * @return {Number|Boolean} Returns the upper row valid from the `upper_rows`
+	 *  for the widget in question.
+	 */
+	fn.get_valid_rows = function(widget_grid_data, upper_rows, min_row)
+	{
+		var p_top_row = widget_grid_data.row;
+		var p_bottom_row = widget_grid_data.row + widget_grid_data.size_y - 1;
+		var size_y = widget_grid_data.size_y;
+		var r = min_row - 1;
+		var valid_rows = [];
+
+		while(++r <= p_bottom_row)
+		{
+			var common = true;
+			$.each(upper_rows, function(col, rows)
+			{
+				if($.isArray(rows) && $.inArray(r, rows) === -1)
+				{
+					common = false;
+				}
+			});
+
+			if(common === true)
+			{
+				valid_rows.push(r);
+				if(valid_rows.length === size_y)
+				{
+					break;
+				}
+			}
+		}
+
+		var new_row = false;
+		if(size_y === 1)
+		{
+			if(valid_rows[0] !== p_top_row)
+			{
+				new_row = valid_rows[0] || false;
+			}
+		}
+		else
+		{
+			if(valid_rows[0] !== p_top_row)
+			{
+				new_row = this.get_consecutive_numbers_index(valid_rows, size_y);
+			}
+		}
+
+		return new_row;
+	};
+
+
+	fn.get_consecutive_numbers_index = function(arr, size_y)
+	{
+		var max = arr.length;
+		var result = [];
+		var first = true;
+		var prev = -1; // or null?
+
+		for(var i = 0; i < max; i++)
+		{
+			if(first || arr[i] === prev + 1)
+			{
+				result.push(i);
+				if(result.length === size_y)
+				{
+					break;
+				}
+				first = false;
+			}
+			else
+			{
+				result = [];
+				first = true;
+			}
+
+			prev = arr[i];
+		}
+
+		return result.length >= size_y ? arr[result[0]] : false;
+	};
+
+
+	/**
+	 * Get panes overlapping with the player.
+	 *
+	 * @method get_widgets_overlapped
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.get_widgets_overlapped = function()
+	{
+		var $w;
+		var $widgets = $([]);
+		var used = [];
+		var rows_from_bottom = this.cells_occupied_by_player.rows.slice(0);
+		rows_from_bottom.reverse();
+
+		$.each(this.cells_occupied_by_player.cols, $.proxy(function(i, col)
+		{
+			$.each(rows_from_bottom, $.proxy(function(i, row)
+			{
+				// if there is a widget in the player position
+				if(!this.gridmap[col])
+				{
+					return true;
+				} //next iteration
+				var $w = this.gridmap[col][row];
+				if(this.is_occupied(col, row) && !this.is_player($w) && $.inArray($w, used) === -1)
+				{
+					$widgets = $widgets.add($w);
+					used.push($w);
+				}
+
+			}, this));
+		}, this));
+
+		return $widgets;
+	};
+
+
+	/**
+	 * This callback is executed when the player begins to collide with a column.
+	 *
+	 * @method on_start_overlapping_column
+	 * @param {Number} col The collided column.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_start_overlapping_column = function(col)
+	{
+		this.set_player(col, false);
+	};
+
+
+	/**
+	 * A callback executed when the player begins to collide with a row.
+	 *
+	 * @method on_start_overlapping_row
+	 * @param {Number} row The collided row.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_start_overlapping_row = function(row)
+	{
+		this.set_player(false, row);
+	};
+
+
+	/**
+	 * A callback executed when the the player ends to collide with a column.
+	 *
+	 * @method on_stop_overlapping_column
+	 * @param {Number} col The collided row.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_stop_overlapping_column = function(col)
+	{
+		this.set_player(col, false);
+
+		var self = this;
+		this.for_each_widget_below(col, this.cells_occupied_by_player.rows[0], function(tcol, trow)
+			{
+				self.move_widget_up(this, self.player_grid_data.size_y);
+			});
+	};
+
+
+	/**
+	 * This callback is executed when the player ends to collide with a row.
+	 *
+	 * @method on_stop_overlapping_row
+	 * @param {Number} row The collided row.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_stop_overlapping_row = function(row)
+	{
+		this.set_player(false, row);
+
+		var self = this;
+		var cols = this.cells_occupied_by_player.cols;
+		for(var c = 0, cl = cols.length; c < cl; c++)
+		{
+			this.for_each_widget_below(cols[c], row, function(tcol, trow)
+			{
+				self.move_widget_up(this, self.player_grid_data.size_y);
+			});
+		}
+	};
+
+
+	/**
+	 * Move a widget to a specific row. The cell or cells must be empty.
+	 * If the widget has panes below, all of these panes will be moved also
+	 * if they can.
+	 *
+	 * @method move_widget_to
+	 * @param {HTMLElement} $widget The jQuery wrapped HTMLElement of the
+	 * widget is going to be moved.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.move_widget_to = function($widget, row)
+	{
+		var self = this;
+		var widget_grid_data = $widget.coords().grid;
+		var diff = row - widget_grid_data.row;
+		var $next_widgets = this.widgets_below($widget);
+
+		var can_move_to_new_cell = this.can_move_to(widget_grid_data, widget_grid_data.col, row, $widget);
+
+		if(can_move_to_new_cell === false)
+		{
+			return false;
+		}
+
+		this.remove_from_gridmap(widget_grid_data);
+		widget_grid_data.row = row;
+		this.add_to_gridmap(widget_grid_data);
+		$widget.attr('data-row', row);
+		this.$changed = this.$changed.add($widget);
+
+
+		$next_widgets.each(function(i, widget)
+		{
+			var $w = $(widget);
+			var wgd = $w.coords().grid;
+			var can_go_up = self.can_go_widget_up(wgd);
+			if(can_go_up && can_go_up !== wgd.row)
+			{
+				self.move_widget_to($w, can_go_up);
+			}
+		});
+
+		return this;
+	};
+
+
+	/**
+	 * Move up the specified widget and all below it.
+	 *
+	 * @method move_widget_up
+	 * @param {HTMLElement} $widget The widget you want to move.
+	 * @param {Number} [y_units] The number of cells that the widget has to move.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.move_widget_up = function($widget, y_units)
+	{
+		var el_grid_data = $widget.coords().grid;
+		var actual_row = el_grid_data.row;
+		var moved = [];
+		var can_go_up = true;
+		y_units || (y_units = 1);
+
+		if(!this.can_go_up($widget))
+		{
+			return false;
+		} //break;
+
+		this.for_each_column_occupied(el_grid_data, function(col)
+		{
+			// can_go_up
+			if($.inArray($widget, moved) === -1)
+			{
+				var widget_grid_data = $widget.coords().grid;
+				var next_row = actual_row - y_units;
+				next_row = this.can_go_up_to_row(widget_grid_data, col, next_row);
+
+				if(!next_row)
+				{
+					return true;
+				}
+
+				var $next_widgets = this.widgets_below($widget);
+
+				this.remove_from_gridmap(widget_grid_data);
+				widget_grid_data.row = next_row;
+				this.add_to_gridmap(widget_grid_data);
+				$widget.attr('data-row', widget_grid_data.row);
+				this.$changed = this.$changed.add($widget);
+
+				moved.push($widget);
+
+				$next_widgets.each($.proxy(function(i, widget)
+				{
+					this.move_widget_up($(widget), y_units);
+				}, this));
+			}
+		});
+
+	};
+
+
+	/**
+	 * Move down the specified widget and all below it.
+	 *
+	 * @method move_widget_down
+	 * @param {jQuery} $widget The jQuery object representing the widget
+	 *  you want to move.
+	 * @param {Number} y_units The number of cells that the widget has to move.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.move_widget_down = function($widget, y_units)
+	{
+		var el_grid_data = $widget.coords().grid;
+		var actual_row = el_grid_data.row;
+		var moved = [];
+		var y_diff = y_units;
+
+		if(!$widget)
+		{
+			return false;
+		}
+
+		if($.inArray($widget, moved) === -1)
+		{
+
+			var widget_grid_data = $widget.coords().grid;
+			var next_row = actual_row + y_units;
+			var $next_widgets = this.widgets_below($widget);
+
+			this.remove_from_gridmap(widget_grid_data);
+
+			$next_widgets.each($.proxy(function(i, widget)
+			{
+				var $w = $(widget);
+				var wd = $w.coords().grid;
+				var tmp_y = this.displacement_diff(wd, widget_grid_data, y_diff);
+
+				if(tmp_y > 0)
+				{
+					this.move_widget_down($w, tmp_y);
+				}
+			}, this));
+
+			widget_grid_data.row = next_row;
+			this.update_widget_position(widget_grid_data, $widget);
+			$widget.attr('data-row', widget_grid_data.row);
+			this.$changed = this.$changed.add($widget);
+
+			moved.push($widget);
+		}
+	};
+
+
+	/**
+	 * Check if the widget can move to the specified row, else returns the
+	 * upper row possible.
+	 *
+	 * @method can_go_up_to_row
+	 * @param {Number} widget_grid_data The current grid coords object of the
+	 *  widget.
+	 * @param {Number} col The target column.
+	 * @param {Number} row The target row.
+	 * @return {Boolean|Number} Returns the row number if the widget can move
+	 *  to the target position, else returns false.
+	 */
+	fn.can_go_up_to_row = function(widget_grid_data, col, row)
+	{
+		var ga = this.gridmap;
+		var result = true;
+		var urc = []; // upper_rows_in_columns
+		var actual_row = widget_grid_data.row;
+		var r;
+
+		/* generate an array with columns as index and array with
+		 * upper rows empty in the column */
+		this.for_each_column_occupied(widget_grid_data, function(tcol)
+		{
+			var grid_col = ga[tcol];
+			urc[tcol] = [];
+
+			r = actual_row;
+			while(r--)
+			{
+				if(this.is_empty(tcol, r) && !this.is_placeholder_in(tcol, r))
+				{
+					urc[tcol].push(r);
+				}
+				else
+				{
+					break;
+				}
+			}
+
+			if(!urc[tcol].length)
+			{
+				result = false;
+				return true;
+			}
+
+		});
+
+		if(!result)
+		{
+			return false;
+		}
+
+		/* get common rows starting from upper position in all the columns
+		 * that widget occupies */
+		r = row;
+		for(r = 1; r < actual_row; r++)
+		{
+			var common = true;
+
+			for(var uc = 0, ucl = urc.length; uc < ucl; uc++)
+			{
+				if(urc[uc] && $.inArray(r, urc[uc]) === -1)
+				{
+					common = false;
+				}
+			}
+
+			if(common === true)
+			{
+				result = r;
+				break;
+			}
+		}
+
+		return result;
+	};
+
+
+	fn.displacement_diff = function(widget_grid_data, parent_bgd, y_units)
+	{
+		var actual_row = widget_grid_data.row;
+		var diffs = [];
+		var parent_max_y = parent_bgd.row + parent_bgd.size_y;
+
+		this.for_each_column_occupied(widget_grid_data, function(col)
+		{
+			var temp_y_units = 0;
+
+			for(var r = parent_max_y; r < actual_row; r++)
+			{
+				if(this.is_empty(col, r))
+				{
+					temp_y_units = temp_y_units + 1;
+				}
+			}
+
+			diffs.push(temp_y_units);
+		});
+
+		var max_diff = Math.max.apply(Math, diffs);
+		y_units = (y_units - max_diff);
+
+		return y_units > 0 ? y_units : 0;
+	};
+
+
+	/**
+	 * Get panes below a widget.
+	 *
+	 * @method widgets_below
+	 * @param {HTMLElement} $el The jQuery wrapped HTMLElement.
+	 * @return {jQuery} A jQuery collection of HTMLElements.
+	 */
+	fn.widgets_below = function($el)
+	{
+		var el_grid_data = $.isPlainObject($el) ? $el : $el.coords().grid;
+		var self = this;
+		var ga = this.gridmap;
+		var next_row = el_grid_data.row + el_grid_data.size_y - 1;
+		var $nexts = $([]);
+
+		this.for_each_column_occupied(el_grid_data, function(col)
+		{
+			self.for_each_widget_below(col, next_row, function(tcol, trow)
+			{
+				if(!self.is_player(this) && $.inArray(this, $nexts) === -1)
+				{
+					$nexts = $nexts.add(this);
+					return true; // break
+				}
+			});
+		});
+
+		return this.sort_by_row_asc($nexts);
+	};
+
+
+	/**
+	 * Update the array of mapped positions with the new player position.
+	 *
+	 * @method set_cells_player_occupies
+	 * @param {Number} col The new player col.
+	 * @param {Number} col The new player row.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.set_cells_player_occupies = function(col, row)
+	{
+		this.remove_from_gridmap(this.placeholder_grid_data);
+		this.placeholder_grid_data.col = col;
+		this.placeholder_grid_data.row = row;
+		this.add_to_gridmap(this.placeholder_grid_data, this.$player);
+		return this;
+	};
+
+
+	/**
+	 * Remove from the array of mapped positions the reference to the player.
+	 *
+	 * @method empty_cells_player_occupies
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.empty_cells_player_occupies = function()
+	{
+		this.remove_from_gridmap(this.placeholder_grid_data);
+		return this;
+	};
+
+
+	fn.can_go_up = function($el)
+	{
+		var el_grid_data = $el.coords().grid;
+		var initial_row = el_grid_data.row;
+		var prev_row = initial_row - 1;
+		var ga = this.gridmap;
+		var upper_rows_by_column = [];
+
+		var result = true;
+		if(initial_row === 1)
+		{
+			return false;
+		}
+
+		this.for_each_column_occupied(el_grid_data, function(col)
+		{
+			var $w = this.is_widget(col, prev_row);
+
+			if(this.is_occupied(col, prev_row) || this.is_player(col, prev_row) || this.is_placeholder_in(col, prev_row) || this.is_player_in(col, prev_row))
+			{
+				result = false;
+				return true; //break
+			}
+		});
+
+		return result;
+	};
+
+
+	/**
+	 * Check if it's possible to move a widget to a specific col/row. It takes
+	 * into account the dimensions (`size_y` and `size_x` attrs. of the grid
+	 *  coords object) the widget occupies.
+	 *
+	 * @method can_move_to
+	 * @param {Object} widget_grid_data The grid coords object that represents
+	 *  the widget.
+	 * @param {Object} col The col to check.
+	 * @param {Object} row The row to check.
+	 * @param {Number} [max_row] The max row allowed.
+	 * @return {Boolean} Returns true if all cells are empty, else return false.
+	 */
+	fn.can_move_to = function(widget_grid_data, col, row, max_row)
+	{
+		var ga = this.gridmap;
+		var $w = widget_grid_data.el;
+		var future_wd = {
+			size_y: widget_grid_data.size_y,
+			size_x: widget_grid_data.size_x,
+			col   : col,
+			row   : row
+		};
+		var result = true;
+
+		//Prevents panes go out of the grid
+		var right_col = col + widget_grid_data.size_x - 1;
+		if(right_col > this.cols)
+		{
+			return false;
+		}
+
+		if(max_row && max_row < row + widget_grid_data.size_y - 1)
+		{
+			return false;
+		}
+
+		this.for_each_cell_occupied(future_wd, function(tcol, trow)
+		{
+			var $tw = this.is_widget(tcol, trow);
+			if($tw && (!widget_grid_data.el || $tw.is($w)))
+			{
+				result = false;
+			}
+		});
+
+		return result;
+	};
+
+
+	/**
+	 * Given the leftmost column returns all columns that are overlapping
+	 *  with the player.
+	 *
+	 * @method get_targeted_columns
+	 * @param {Number} [from_col] The leftmost column.
+	 * @return {Array} Returns an array with column numbers.
+	 */
+	fn.get_targeted_columns = function(from_col)
+	{
+		var max = (from_col || this.player_grid_data.col) + (this.player_grid_data.size_x - 1);
+		var cols = [];
+		for(var col = from_col; col <= max; col++)
+		{
+			cols.push(col);
+		}
+		return cols;
+	};
+
+
+	/**
+	 * Given the upper row returns all rows that are overlapping with the player.
+	 *
+	 * @method get_targeted_rows
+	 * @param {Number} [from_row] The upper row.
+	 * @return {Array} Returns an array with row numbers.
+	 */
+	fn.get_targeted_rows = function(from_row)
+	{
+		var max = (from_row || this.player_grid_data.row) + (this.player_grid_data.size_y - 1);
+		var rows = [];
+		for(var row = from_row; row <= max; row++)
+		{
+			rows.push(row);
+		}
+		return rows;
+	};
+
+	/**
+	 * Get all columns and rows that a widget occupies.
+	 *
+	 * @method get_cells_occupied
+	 * @param {Object} el_grid_data The grid coords object of the widget.
+	 * @return {Object} Returns an object like `{ cols: [], rows: []}`.
+	 */
+	fn.get_cells_occupied = function(el_grid_data)
+	{
+		var cells = { cols: [], rows: []};
+		var i;
+		if(arguments[1] instanceof jQuery)
+		{
+			el_grid_data = arguments[1].coords().grid;
+		}
+
+		for(i = 0; i < el_grid_data.size_x; i++)
+		{
+			var col = el_grid_data.col + i;
+			cells.cols.push(col);
+		}
+
+		for(i = 0; i < el_grid_data.size_y; i++)
+		{
+			var row = el_grid_data.row + i;
+			cells.rows.push(row);
+		}
+
+		return cells;
+	};
+
+
+	/**
+	 * Iterate over the cells occupied by a widget executing a function for
+	 * each one.
+	 *
+	 * @method for_each_cell_occupied
+	 * @param {Object} el_grid_data The grid coords object that represents the
+	 *  widget.
+	 * @param {Function} callback The function to execute on each column
+	 *  iteration. Column and row are passed as arguments.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_cell_occupied = function(grid_data, callback)
+	{
+		this.for_each_column_occupied(grid_data, function(col)
+		{
+			this.for_each_row_occupied(grid_data, function(row)
+			{
+				callback.call(this, col, row);
+			});
+		});
+		return this;
+	};
+
+
+	/**
+	 * Iterate over the columns occupied by a widget executing a function for
+	 * each one.
+	 *
+	 * @method for_each_column_occupied
+	 * @param {Object} el_grid_data The grid coords object that represents
+	 *  the widget.
+	 * @param {Function} callback The function to execute on each column
+	 *  iteration. The column number is passed as first argument.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_column_occupied = function(el_grid_data, callback)
+	{
+		for(var i = 0; i < el_grid_data.size_x; i++)
+		{
+			var col = el_grid_data.col + i;
+			callback.call(this, col, el_grid_data);
+		}
+	};
+
+
+	/**
+	 * Iterate over the rows occupied by a widget executing a function for
+	 * each one.
+	 *
+	 * @method for_each_row_occupied
+	 * @param {Object} el_grid_data The grid coords object that represents
+	 *  the widget.
+	 * @param {Function} callback The function to execute on each column
+	 *  iteration. The row number is passed as first argument.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_row_occupied = function(el_grid_data, callback)
+	{
+		for(var i = 0; i < el_grid_data.size_y; i++)
+		{
+			var row = el_grid_data.row + i;
+			callback.call(this, row, el_grid_data);
+		}
+	};
+
+
+	fn._traversing_widgets = function(type, direction, col, row, callback)
+	{
+		var ga = this.gridmap;
+		if(!ga[col])
+		{
+			return;
+		}
+
+		var cr, max;
+		var action = type + '/' + direction;
+		if(arguments[2] instanceof jQuery)
+		{
+			var el_grid_data = arguments[2].coords().grid;
+			col = el_grid_data.col;
+			row = el_grid_data.row;
+			callback = arguments[3];
+		}
+		var matched = [];
+		var trow = row;
+
+
+		var methods = {
+			'for_each/above': function()
+			{
+				while(trow--)
+				{
+					if(trow > 0 && this.is_widget(col, trow) && $.inArray(ga[col][trow], matched) === -1)
+					{
+						cr = callback.call(ga[col][trow], col, trow);
+						matched.push(ga[col][trow]);
+						if(cr)
+						{
+							break;
+						}
+					}
+				}
+			},
+			'for_each/below': function()
+			{
+				for(trow = row + 1, max = ga[col].length; trow < max; trow++)
+				{
+					if(this.is_widget(col, trow) && $.inArray(ga[col][trow], matched) === -1)
+					{
+						cr = callback.call(ga[col][trow], col, trow);
+						matched.push(ga[col][trow]);
+						if(cr)
+						{
+							break;
+						}
+					}
+				}
+			}
+		};
+
+		if(methods[action])
+		{
+			methods[action].call(this);
+		}
+	};
+
+
+	/**
+	 * Iterate over each widget above the column and row specified.
+	 *
+	 * @method for_each_widget_above
+	 * @param {Number} col The column to start iterating.
+	 * @param {Number} row The row to start iterating.
+	 * @param {Function} callback The function to execute on each widget
+	 *  iteration. The value of `this` inside the function is the jQuery
+	 *  wrapped HTMLElement.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_widget_above = function(col, row, callback)
+	{
+		this._traversing_widgets('for_each', 'above', col, row, callback);
+		return this;
+	};
+
+
+	/**
+	 * Iterate over each widget below the column and row specified.
+	 *
+	 * @method for_each_widget_below
+	 * @param {Number} col The column to start iterating.
+	 * @param {Number} row The row to start iterating.
+	 * @param {Function} callback The function to execute on each widget
+	 *  iteration. The value of `this` inside the function is the jQuery wrapped
+	 *  HTMLElement.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_widget_below = function(col, row, callback)
+	{
+		this._traversing_widgets('for_each', 'below', col, row, callback);
+		return this;
+	};
+
+
+	/**
+	 * Returns the highest occupied cell in the grid.
+	 *
+	 * @method get_highest_occupied_cell
+	 * @return {Object} Returns an object with `col` and `row` numbers.
+	 */
+	fn.get_highest_occupied_cell = function()
+	{
+		var r;
+		var gm = this.gridmap;
+		var rows = [];
+		var row_in_col = [];
+		for(var c = gm.length - 1; c >= 1; c--)
+		{
+			for(r = gm[c].length - 1; r >= 1; r--)
+			{
+				if(this.is_widget(c, r))
+				{
+					rows.push(r);
+					row_in_col[r] = c;
+					break;
+				}
+			}
+		}
+
+		var highest_row = Math.max.apply(Math, rows);
+
+		this.highest_occupied_cell = {
+			col: row_in_col[highest_row],
+			row: highest_row
+		};
+
+		return this.highest_occupied_cell;
+	};
+
+
+	fn.get_widgets_from = function(col, row)
+	{
+		var ga = this.gridmap;
+		var $widgets = $();
+
+		if(col)
+		{
+			$widgets = $widgets.add(this.$widgets.filter(function()
+			{
+				var tcol = $(this).attr('data-col');
+				return (tcol === col || tcol > col);
+			}));
+		}
+
+		if(row)
+		{
+			$widgets = $widgets.add(this.$widgets.filter(function()
+			{
+				var trow = $(this).attr('data-row');
+				return (trow === row || trow > row);
+			}));
+		}
+
+		return $widgets;
+	};
+
+
+	/**
+	 * Set the current height of the parent grid.
+	 *
+	 * @method set_dom_grid_height
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.set_dom_grid_height = function()
+	{
+		var r = this.get_highest_occupied_cell().row + 1;
+		this.$el.css('height', r * this.min_widget_height);
+		return this;
+	};
+
+
+	/**
+	 * It generates the neccessary styles to position the panes.
+	 *
+	 * @method generate_stylesheet
+	 * @param {Number} rows Number of columns.
+	 * @param {Number} cols Number of rows.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.generate_stylesheet = function(opts)
+	{
+		var styles = '';
+		var max_size_x = this.options.max_size_x;
+		var max_rows = 0;
+		var max_cols = 0;
+		var i;
+		var rules;
+
+		opts || (opts = {});
+		opts.cols || (opts.cols = this.cols);
+		opts.rows || (opts.rows = this.rows);
+		opts.namespace || (opts.namespace = this.options.namespace);
+		opts.widget_base_dimensions || (opts.widget_base_dimensions = this.options.widget_base_dimensions);
+		opts.widget_margins || (opts.widget_margins = this.options.widget_margins);
+		opts.min_widget_width = (opts.widget_margins[0] * 2) + opts.widget_base_dimensions[0];
+		opts.min_widget_height = (opts.widget_margins[1] * 2) + opts.widget_base_dimensions[1];
+
+		// don't duplicate stylesheets for the same configuration
+		var serialized_opts = $.param(opts);
+		if($.inArray(serialized_opts, Gridster.generated_stylesheets) >= 0)
+		{
+			return false;
+		}
+
+		Gridster.generated_stylesheets.push(serialized_opts);
+
+		/* generate CSS styles for cols */
+		for(i = opts.cols; i >= 0; i--)
+		{
+			styles += (opts.namespace + ' [data-col="' + (i + 1) + '"] { left:' + ((i * opts.widget_base_dimensions[0]) + (i * opts.widget_margins[0]) + ((i + 1) * opts.widget_margins[0])) + 'px;} ');
+		}
+
+		/* generate CSS styles for rows */
+		for(i = opts.rows; i >= 0; i--)
+		{
+			styles += (opts.namespace + ' [data-row="' + (i + 1) + '"] { top:' + ((i * opts.widget_base_dimensions[1]) + (i * opts.widget_margins[1]) + ((i + 1) * opts.widget_margins[1]) ) + 'px;} ');
+		}
+
+		for(var y = 1; y <= opts.rows; y++)
+		{
+			styles += (opts.namespace + ' [data-sizey="' + y + '"] { height:' + (y * opts.widget_base_dimensions[1] + (y - 1) * (opts.widget_margins[1] * 2)) + 'px;}');
+		}
+
+		for(var x = 1; x <= max_size_x; x++)
+		{
+			styles += (opts.namespace + ' [data-sizex="' + x + '"] { width:' + (x * opts.widget_base_dimensions[0] + (x - 1) * (opts.widget_margins[0] * 2)) + 'px;}');
+		}
+
+		return this.add_style_tag(styles);
+	};
+
+
+	/**
+	 * Injects the given CSS as string to the head of the document.
+	 *
+	 * @method add_style_tag
+	 * @param {String} css The styles to apply.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_style_tag = function(css)
+	{
+		var d = document;
+		var tag = d.createElement('style');
+
+		d.getElementsByTagName('head')[0].appendChild(tag);
+		tag.setAttribute('type', 'text/css');
+
+		if(tag.styleSheet)
+		{
+			tag.styleSheet.cssText = css;
+		}
+		else
+		{
+			tag.appendChild(document.createTextNode(css));
+		}
+
+		this.$style_tags = this.$style_tags.add(tag);
+
+		return this;
+	};
+
+
+	/**
+	 * Remove the style tag with the associated id from the head of the document
+	 *
+	 * @method  remove_style_tag
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.remove_style_tags = function()
+	{
+		this.$style_tags.remove();
+	};
+
+
+	/**
+	 * Generates a faux grid to collide with it when a widget is dragged and
+	 * detect row or column that we want to go.
+	 *
+	 * @method generate_faux_grid
+	 * @param {Number} rows Number of columns.
+	 * @param {Number} cols Number of rows.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.generate_faux_grid = function(rows, cols)
+	{
+		this.faux_grid = [];
+		this.gridmap = [];
+		var col;
+		var row;
+		for(col = cols; col > 0; col--)
+		{
+			this.gridmap[col] = [];
+			for(row = rows; row > 0; row--)
+			{
+				this.add_faux_cell(row, col);
+			}
+		}
+		return this;
+	};
+
+
+	/**
+	 * Add cell to the faux grid.
+	 *
+	 * @method add_faux_cell
+	 * @param {Number} row The row for the new faux cell.
+	 * @param {Number} col The col for the new faux cell.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_faux_cell = function(row, col)
+	{
+		var coords = $({
+			left        : this.baseX + ((col - 1) * this.min_widget_width),
+			top         : this.baseY + (row - 1) * this.min_widget_height,
+			width       : this.min_widget_width,
+			height      : this.min_widget_height,
+			col         : col,
+			row         : row,
+			original_col: col,
+			original_row: row
+		}).coords();
+
+		if(!$.isArray(this.gridmap[col]))
+		{
+			this.gridmap[col] = [];
+		}
+
+		this.gridmap[col][row] = false;
+		this.faux_grid.push(coords);
+
+		return this;
+	};
+
+
+	/**
+	 * Add rows to the faux grid.
+	 *
+	 * @method add_faux_rows
+	 * @param {Number} rows The number of rows you want to add to the faux grid.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_faux_rows = function(rows)
+	{
+		var actual_rows = this.rows;
+		var max_rows = actual_rows + (rows || 1);
+
+		for(var r = max_rows; r > actual_rows; r--)
+		{
+			for(var c = this.cols; c >= 1; c--)
+			{
+				this.add_faux_cell(r, c);
+			}
+		}
+
+		this.rows = max_rows;
+
+		if(this.options.autogenerate_stylesheet)
+		{
+			this.generate_stylesheet();
+		}
+
+		return this;
+	};
+
+	/**
+	 * Add cols to the faux grid.
+	 *
+	 * @method add_faux_cols
+	 * @param {Number} cols The number of cols you want to add to the faux grid.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_faux_cols = function(cols)
+	{
+		var actual_cols = this.cols;
+		var max_cols = actual_cols + (cols || 1);
+
+		for(var c = actual_cols; c < max_cols; c++)
+		{
+			for(var r = this.rows; r >= 1; r--)
+			{
+				this.add_faux_cell(r, c);
+			}
+		}
+
+		this.cols = max_cols;
+
+		if(this.options.autogenerate_stylesheet)
+		{
+			this.generate_stylesheet();
+		}
+
+		return this;
+	};
+
+
+	/**
+	 * Recalculates the offsets for the faux grid. You need to use it when
+	 * the browser is resized.
+	 *
+	 * @method recalculate_faux_grid
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.recalculate_faux_grid = function()
+	{
+		var aw = this.$wrapper.width();
+		this.baseX = ($(window).width() - aw) / 2;
+		this.baseY = this.$wrapper.offset().top;
+
+		$.each(this.faux_grid, $.proxy(function(i, coords)
+		{
+			this.faux_grid[i] = coords.update({
+				left: this.baseX + (coords.data.col - 1) * this.min_widget_width,
+				top : this.baseY + (coords.data.row - 1) * this.min_widget_height
+			});
+
+		}, this));
+
+		return this;
+	};
+
+
+	/**
+	 * Get all panes in the DOM and register them.
+	 *
+	 * @method get_widgets_from_DOM
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.get_widgets_from_DOM = function()
+	{
+		this.$widgets.each($.proxy(function(i, widget)
+		{
+			this.register_widget($(widget));
+		}, this));
+		return this;
+	};
+
+
+	/**
+	 * Calculate columns and rows to be set based on the configuration
+	 *  parameters, grid dimensions, etc ...
+	 *
+	 * @method generate_grid_and_stylesheet
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.generate_grid_and_stylesheet = function()
+	{
+		var aw = this.$wrapper.width();
+		var ah = this.$wrapper.height();
+		var max_cols = this.options.max_cols;
+
+		var cols = Math.floor(aw / this.min_widget_width) + this.options.extra_cols;
+
+		var actual_cols = this.$widgets.map(function()
+		{
+			return $(this).attr('data-col');
+		}).get();
+
+		//needed to pass tests with phantomjs
+		actual_cols.length || (actual_cols = [0]);
+
+		var min_cols = Math.max.apply(Math, actual_cols);
+
+		// get all rows that could be occupied by the current panes
+		var max_rows = this.options.extra_rows;
+		this.$widgets.each(function(i, w)
+		{
+			max_rows += (+$(w).attr('data-sizey'));
+		});
+
+		this.cols = cols;//Math.max(Math.min(min_cols, cols), 1, this.options.min_cols);
+
+		/*if(max_cols && max_cols >= min_cols && max_cols < this.cols)
+		{
+			this.cols = max_cols;
+		}*/
+
+		this.rows = Math.max(max_rows, this.options.min_rows);
+
+		this.baseX = ($(window).width() - aw) / 2;
+		this.baseY = this.$wrapper.offset().top;
+
+		// left and right gutters not included
+		this.container_width = (this.cols * this.options.widget_base_dimensions[0]) + ((this.cols - 1) * 2 * this.options.widget_margins[0]);
+
+		if(this.options.autogenerate_stylesheet)
+		{
+			this.generate_stylesheet();
+		}
+
+		return this.generate_faux_grid(this.rows, this.cols);
+	};
+
+	/**
+	 * Destroy this gridster by removing any sign of its presence, making it easy to avoid memory leaks
+	 *
+	 * @method destroy
+	 * @return {undefined}
+	 */
+	fn.destroy = function()
+	{
+		// remove bound callback on window resize
+		$(window).unbind('.gridster');
+
+		if(this.drag_api)
+		{
+			this.drag_api.destroy();
+		}
+
+		this.remove_style_tags();
+
+		// lastly, remove gridster element
+		// this will additionally cause any data associated to this element to be removed, including this
+		// very gridster instance
+		this.$el.remove();
+
+		return this;
+	};
+
+
+	//jQuery adapter
+	$.fn.gridster = function(options)
+	{
+		return this.each(function()
+		{
+			if(!$(this).data('gridster'))
+			{
+				$(this).data('gridster', new Gridster(this, options));
+			}
+		});
+	};
+
+	$.Gridster = fn;
+
+}(jQuery, window, document));
+
+;
+(function($, window, document, undefined)
+{
+
+	var fn = $.Gridster;
+
+	fn.widgets_in_col = function(col)
+	{
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+
+		for(var i = this.gridmap[col].length - 1; i >= 0; i--)
+		{
+			if(this.is_widget(col, i) !== false)
+			{
+				return true;
+			}
+		}
+
+		return false;
+	};
+
+	fn.widgets_in_row = function(row)
+	{
+		for(var i = this.gridmap.length; i >= 1; i--)
+		{
+			if(this.is_widget(i, row) !== false)
+			{
+				return true;
+			}
+		}
+
+		return false;
+	};
+
+
+	fn.widgets_in_range = function(col1, row1, col2, row2)
+	{
+		var valid_cols = [];
+		var valid_rows = [];
+		var $widgets = $([]);
+		var c, r, $w, wgd;
+
+		for(c = col2; c >= col1; c--)
+		{
+			for(r = row2; r >= row1; r--)
+			{
+				$w = this.is_widget(c, r);
+
+				if($w !== false)
+				{
+					wgd = $w.data('coords').grid;
+					if(wgd.col >= col1 && wgd.col <= col2 && wgd.row >= row1 && wgd.row <= row2)
+					{
+						$widgets = $widgets.add($w);
+					}
+				}
+			}
+		}
+
+		return $widgets;
+	};
+
+
+	fn.get_bottom_most_occupied_cell = function()
+	{
+		var row = 0;
+		var col = 0;
+		this.for_each_cell(function($el, c, r)
+		{
+			if($el && r > row)
+			{
+				row = r;
+				col = c;
+			}
+		});
+
+		return {col: col, row: row};
+	};
+
+
+	fn.get_right_most_occupied_cell = function()
+	{
+		var row = 0;
+		var col = 0;
+		this.for_each_cell(function($el, c, r)
+		{
+			if($el)
+			{
+				row = r;
+				col = c;
+				return false;
+			}
+		});
+
+		return {col: col, row: row};
+	};
+
+
+	fn.for_each_cell = function(callback, gridmap)
+	{
+		gridmap || (gridmap = this.gridmap);
+		var cols = gridmap.length;
+		var rows = gridmap[1].length;
+
+		cols_iter:
+			for(var c = cols - 1; c >= 1; c--)
+			{
+				for(var r = rows - 1; r >= 1; r--)
+				{
+					var $el = gridmap[c] && gridmap[c][r];
+					if(callback)
+					{
+						if(callback.call(this, $el, c, r) === false)
+						{
+							break cols_iter;
+						}
+						else
+						{
+							continue;
+						}
+					}
+				}
+			}
+	};
+
+
+	fn.next_position_in_range = function(size_x, size_y, max_rows)
+	{
+		size_x || (size_x = 1);
+		size_y || (size_y = 1);
+		var ga = this.gridmap;
+		var cols_l = ga.length;
+		var valid_pos = [];
+		var rows_l;
+
+		for(var c = 1; c < cols_l; c++)
+		{
+			rows_l = max_rows || ga[c].length;
+			for(var r = 1; r <= rows_l; r++)
+			{
+				var can_move_to = this.can_move_to({
+					size_x: size_x,
+					size_y: size_y
+				}, c, r, max_rows);
+
+				if(can_move_to)
+				{
+					valid_pos.push({
+						col   : c,
+						row   : r,
+						size_y: size_y,
+						size_x: size_x
+					});
+				}
+			}
+		}
+
+		if(valid_pos.length >= 1)
+		{
+			return this.sort_by_col_asc(valid_pos)[0];
+		}
+
+		return false;
+	};
+
+
+	fn.closest_to_right = function(col, row)
+	{
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+		var cols_l = this.gridmap.length - 1;
+
+		for(var c = col; c <= cols_l; c++)
+		{
+			if(this.gridmap[c][row])
+			{
+				return { col: c, row: row };
+			}
+		}
+
+		return false;
+	};
+
+
+	fn.closest_to_left = function(col, row)
+	{
+		var cols_l = this.gridmap.length - 1;
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+
+		for(var c = col; c >= 1; c--)
+		{
+			if(this.gridmap[c][row])
+			{
+				return { col: c, row: row };
+			}
+		}
+
+		return false;
+	};
+
+}(jQuery, window, document));
+
+(function($)
+{
+	$.fn.insertAtCaret = function(text, opts)
+	{
+		var element = $(this).get(0);
+
+		if(document.selection)
+		{
+			element.focus();
+			var orig = element.value.replace(/\r\n/g, "\n");
+			var range = document.selection.createRange();
+
+			if(range.parentElement() != element)
+			{
+				return false;
+			}
+
+			range.text = text;
+
+			var actual = tmp = element.value.replace(/\r\n/g, "\n");
+
+			for(var diff = 0; diff < orig.length; diff++)
+			{
+				if(orig.charAt(diff) != actual.charAt(diff)) break;
+			}
+
+			for(var index = 0, start = 0; tmp.match(text) && (tmp = tmp.replace(text, "")) && index <= diff; index = start + text.length)
+			{
+				start = actual.indexOf(text, index);
+			}
+		}
+		else if(element.selectionStart)
+		{
+			var start = element.selectionStart;
+			var end = element.selectionEnd;
+
+			element.value = element.value.substr(0, start) + text + element.value.substr(end, element.value.length);
+		}
+
+		if(start)
+		{
+			setCaretTo(element, start + text.length);
+		}
+		else
+		{
+			element.value = text + element.value;
+		}
+
+		$(this).change();
+
+		return this;
+	}
+
+	$.fn.replaceTextAt = function(start, end, replacementText)
+	{
+		var element = $(this).get(0);
+
+		var wholeString = $(this).val();
+		var prefix = wholeString.substr(0, start);
+		var suffix = wholeString.substr(end);
+
+		$(this).val(prefix + replacementText + suffix);
+
+		var newCursorPosition = prefix.length + replacementText.length;
+
+		setCaretTo(element, newCursorPosition);
+
+		$(this).change();
+
+		return this;
+	}
+
+	$.fn.setCaretPosition = function(start, end)
+	{
+		var element = $(this).get(0);
+		element.focus();
+		setCaretTo(element, start, end);
+		return this;
+	}
+
+
+	$.fn.getCaretPosition = function()
+	{
+		var element = $(this).get(0);
+		$(element).focus();
+		return getCaretPosition(element);
+	}
+
+	$.fn.getSelectedText = function()
+	{
+		var element = $(this).get(0);
+
+		// workaround for firefox because window.getSelection does not work inside inputs
+		if(typeof element.selectionStart == 'number')
+		{
+			return $(element).val().substr(element.selectionStart, element.selectionEnd - element.selectionStart);
+		}
+		else if(document.getSelection)
+		{
+			return document.getSelection();
+		}
+		else if(window.getSelection)
+		{
+			return window.getSelection();
+		}
+	}
+
+	// privates
+	function setCaretTo(element, start, end)
+	{
+		if(element.createTextRange)
+		{
+			var range = element.createTextRange();
+			range.moveStart('character', start);
+			range.moveEnd('character', (end || start));
+			range.select();
+		}
+		else if(element.selectionStart)
+		{
+			element.focus();
+			element.setSelectionRange(start, (end || start));
+		}
+	}
+
+	function getCaretPosition(element)
+	{
+		if(typeof element.selectionStart == 'number')
+		{
+			return element.selectionStart;
+		}
+		else if(document.selection)
+		{
+			var range = document.selection.createRange();
+			var rangeLength = range.text.length;
+			range.moveStart('character', -element.value.length);
+			return range.text.length - rangeLength;
+		}
+	}
+})(jQuery);
+/*!
+ * jQuery-ajaxTransport-XDomainRequest - v1.0.3 - 2014-06-06
+ * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
+ * Copyright (c) 2014 Jason Moon (@JSONMOON)
+ * Licensed MIT (/blob/master/LICENSE.txt)
+ */
+(function(a){if(typeof define==='function'&&define.amd){define(['jquery'],a)}else if(typeof exports==='object'){module.exports=a(require('jquery'))}else{a(jQuery)}}(function($){if($.support.cors||!$.ajaxTransport||!window.XDomainRequest){return}var n=/^https?:\/\//i;var o=/^get|post$/i;var p=new RegExp('^'+location.protocol,'i');$.ajaxTransport('* text html xml json',function(j,k,l){if(!j.crossDomain||!j.async||!o.test(j.type)||!n.test(j.url)||!p.test(j.url)){return}var m=null;return{send:function(f,g){var h='';var i=(k.dataType||'').toLowerCase();m=new XDomainRequest();if(/^\d+$/.test(k.timeout)){m.timeout=k.timeout}m.ontimeout=function(){g(500,'timeout')};m.onload=function(){var a='Content-Length: '+m.responseText.length+'\r\nContent-Type: '+m.contentType;var b={code:200,message:'success'};var c={text:m.responseText};try{if(i==='html'||/text\/html/i.test(m.contentType)){c.html=m.responseText}else if(i==='json'||(i!=='text'&&/\/json/i.test(m.contentType))){try{c.json=$.parseJSON(m.responseText)}catch(e){b.code=500;b.message='parseerror'}}else if(i==='xml'||(i!=='text'&&/\/xml/i.test(m.contentType))){var d=new ActiveXObject('Microsoft.XMLDOM');d.async=false;try{d.loadXML(m.responseText)}catch(e){d=undefined}if(!d||!d.documentElement||d.getElementsByTagName('parsererror').length){b.code=500;b.message='parseerror';throw'Invalid XML: '+m.responseText;}c.xml=d}}catch(parseMessage){throw parseMessage;}finally{g(b.code,b.message,c,a)}};m.onprogress=function(){};m.onerror=function(){g(500,'error',{text:m.responseText})};if(k.data){h=($.type(k.data)==='string')?k.data:$.param(k.data)}m.open(j.type,j.url);m.send(h)},abort:function(){if(m){m.abort()}}}})}));
+/* CodeMirror - Minified & Bundled
+   Generated on 4/30/2014 with http://codemirror.net/doc/compress.html
+   Version: HEAD
+
+   CodeMirror Library:
+   - codemirror.js
+   Modes:
+   - javascript.js
+   Add-ons:
+   - closebrackets.js
+   - continuecomment.js
+   - javascript-hint.js
+   - matchbrackets.js
+   - show-hint.js
+ */
+
+!function(a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else{if("function"==typeof define&&define.amd)return define([],a);this.CodeMirror=a()}}(function(){"use strict";function y(a,c){if(!(this instanceof y))return new y(a,c);this.options=c=c||{},Eg(Zd,c,!1),M(c);var d=c.value;"string"==typeof d&&(d=new yf(d,c.mode)),this.doc=d;var e=this.display=new z(a,d);e.wrapper.CodeMirror=this,I(this),G(this),c.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),c.autofocus&&!q&&Qc(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new ug},b&&setTimeout(Fg(Pc,this,!0),20),Tc(this),Xg();var f=this;zc(this,function(){f.curOp.forceUpdate=!0,Cf(f,d),c.autofocus&&!q||Qg()==e.input?setTimeout(Fg(vd,f),20):wd(f);for(var a in $d)$d.hasOwnProperty(a)&&$d[a](f,c[a],ae);for(var b=0;b<ee.length;++b)ee[b](f)})}function z(a,b){var d=this,e=d.input=Lg("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none");h?e.style.width="1000px":e.setAttribute("wrap","off"),p&&(e.style.border="1px solid black"),e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck","false"),d.inputDiv=Lg("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;"),d.scrollbarH=Lg("div",[Lg("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar"),d.scrollbarV=Lg("div",[Lg("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),d.scrollbarFiller=Lg("div",null,"CodeMirror-scrollbar-filler"),d.gutterFiller=Lg("div",null,"CodeMirror-gutter-filler"),d.lineDiv=Lg("div",null,"CodeMirror-code"),d.selectionDiv=Lg("div",null,null,"position: relative; z-index: 1"),d.cursorDiv=Lg("div",null,"CodeMirror-cursors"),d.measure=Lg("div",null,"CodeMirror-measure"),d.lineMeasure=Lg("div",null,"CodeMirror-measure"),d.lineSpace=Lg("div",[d.measure,d.lineMeasure,d.selectionDiv,d.cursorDiv,d.lineDiv],null,"position: relative; outline: none"),d.mover=Lg("div",[Lg("div",[d.lineSpace],"CodeMirror-lines")],null,"position: relative"),d.sizer=Lg("div",[d.mover],"CodeMirror-sizer"),d.heightForcer=Lg("div",null,null,"position: absolute; height: "+pg+"px; width: 1px;"),d.gutters=Lg("div",null,"CodeMirror-gutters"),d.lineGutter=null,d.scroller=Lg("div",[d.sizer,d.heightForcer,d.gutters],"CodeMirror-scroll"),d.scroller.setAttribute("tabIndex","-1"),d.wrapper=Lg("div",[d.inputDiv,d.scrollbarH,d.scrollbarV,d.scrollbarFiller,d.gutterFiller,d.scroller],"CodeMirror"),c&&(d.gutters.style.zIndex=-1,d.scroller.style.paddingRight=0),p&&(e.style.width="0px"),h||(d.scroller.draggable=!0),m&&(d.inputDiv.style.height="1px",d.inputDiv.style.position="absolute"),c&&(d.scrollbarH.style.minHeight=d.scrollbarV.style.minWidth="18px"),a.appendChild?a.appendChild(d.wrapper):a(d.wrapper),d.viewFrom=d.viewTo=b.first,d.view=[],d.externalMeasured=null,d.viewOffset=0,d.lastSizeC=0,d.updateLineNumbers=null,d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null,d.prevInput="",d.alignWidgets=!1,d.pollingFast=!1,d.poll=new ug,d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null,d.inaccurateSelection=!1,d.maxLine=null,d.maxLineLength=0,d.maxLineChanged=!1,d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null,d.shift=!1,d.selForContextMenu=null}function A(a){a.doc.mode=y.getMode(a.options,a.doc.modeOption),B(a)}function B(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)}),a.doc.frontier=a.doc.first,Sb(a,100),a.state.modeGen++,a.curOp&&Fc(a)}function C(a){a.options.lineWrapping?(Tg(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth=""):(Sg(a.display.wrapper,"CodeMirror-wrap"),L(a)),E(a),Fc(a),ic(a),setTimeout(function(){O(a)},100)}function D(a){var b=uc(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/vc(a.display)-3);return function(e){if(Ue(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;g<e.widgets.length;g++)e.widgets[g].height&&(f+=e.widgets[g].height);return c?f+(Math.ceil(e.text.length/d)||1)*b:f+b}}function E(a){var b=a.doc,c=D(a);b.iter(function(a){var b=c(a);b!=a.height&&Gf(a,b)})}function F(a){var b=je[a.options.keyMap],c=b.style;a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-keymap-\S+/g,"")+(c?" cm-keymap-"+c:"")}function G(a){a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+a.options.theme.replace(/(^|\s)\s*/g," cm-s-"),ic(a)}function H(a){I(a),Fc(a),setTimeout(function(){Q(a)},20)}function I(a){var b=a.display.gutters,c=a.options.gutters;Ng(b);for(var d=0;d<c.length;++d){var e=c[d],f=b.appendChild(Lg("div",null,"CodeMirror-gutter "+e));"CodeMirror-linenumbers"==e&&(a.display.lineGutter=f,f.style.width=(a.display.lineNumWidth||1)+"px")}b.style.display=d?"":"none",J(a)}function J(a){var b=a.display.gutters.offsetWidth;a.display.sizer.style.marginLeft=b+"px",a.display.scrollbarH.style.left=a.options.fixedGutter?b+"px":0}function K(a){if(0==a.height)return 0;for(var c,b=a.text.length,d=a;c=Ne(d);){var e=c.find(0,!0);d=e.from.line,b+=e.from.ch-e.to.ch}for(d=a;c=Oe(d);){var e=c.find(0,!0);b-=d.text.length-e.from.ch,d=e.to.line,b+=d.text.length-e.to.ch}return b}function L(a){var b=a.display,c=a.doc;b.maxLine=Df(c,c.first),b.maxLineLength=K(b.maxLine),b.maxLineChanged=!0,c.iter(function(a){var c=K(a);c>b.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function M(a){var b=Bg(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]):b>-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function N(a){var b=a.display.scroller;return{clientHeight:b.clientHeight,barHeight:a.display.scrollbarV.clientHeight,scrollWidth:b.scrollWidth,clientWidth:b.clientWidth,barWidth:a.display.scrollbarH.clientWidth,docHeight:Math.round(a.doc.height+Xb(a.display))}}function O(a,b){b||(b=N(a));var c=a.display,d=b.docHeight+pg,e=b.scrollWidth>b.clientWidth,f=d>b.clientHeight;if(f?(c.scrollbarV.style.display="block",c.scrollbarV.style.bottom=e?_g(c.measure)+"px":"0",c.scrollbarV.firstChild.style.height=Math.max(0,d-b.clientHeight+(b.barHeight||c.scrollbarV.clientHeight))+"px"):(c.scrollbarV.style.display="",c.scrollbarV.firstChild.style.height="0"),e?(c.scrollbarH.style.display="block",c.scrollbarH.style.right=f?_g(c.measure)+"px":"0",c.scrollbarH.firstChild.style.width=b.scrollWidth-b.clientWidth+(b.barWidth||c.scrollbarH.clientWidth)+"px"):(c.scrollbarH.style.display="",c.scrollbarH.firstChild.style.width="0"),e&&f?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=c.scrollbarFiller.style.width=_g(c.measure)+"px"):c.scrollbarFiller.style.display="",e&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=_g(c.measure)+"px",c.gutterFiller.style.width=c.gutters.offsetWidth+"px"):c.gutterFiller.style.display="",!a.state.checkedOverlayScrollbar&&b.clientHeight>0){if(0===_g(c.measure)){var g=r&&!n?"12px":"18px";c.scrollbarV.style.minWidth=c.scrollbarH.style.minHeight=g;var h=function(b){cg(b)!=c.scrollbarV&&cg(b)!=c.scrollbarH&&Ac(a,Xc)(b)};eg(c.scrollbarV,"mousedown",h),eg(c.scrollbarH,"mousedown",h)}a.state.checkedOverlayScrollbar=!0}}function P(a,b,c){var d=c&&null!=c.top?c.top:a.scroller.scrollTop;d=Math.floor(d-Wb(a));var e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=If(b,d),g=If(b,e);if(c&&c.ensure){var h=c.ensure.from.line,i=c.ensure.to.line;if(f>h)return{from:h,to:If(b,Jf(Df(b,h))+a.wrapper.clientHeight)};if(Math.min(i,b.lastLine())>=g)return{from:If(b,Jf(Df(b,i))-a.wrapper.clientHeight),to:i}}return{from:f,to:g}}function Q(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=T(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g<c.length;g++)if(!c[g].hidden){a.options.fixedGutter&&c[g].gutter&&(c[g].gutter.style.left=f);var h=c[g].alignable;if(h)for(var i=0;i<h.length;i++)h[i].style.left=f}a.options.fixedGutter&&(b.gutters.style.left=d+e+"px")}}function R(a){if(!a.options.lineNumbers)return!1;var b=a.doc,c=S(a.options,b.first+b.size-1),d=a.display;if(c.length!=d.lineNumChars){var e=d.measure.appendChild(Lg("div",[Lg("div",c)],"CodeMirror-linenumber CodeMirror-gutter-elt")),f=e.firstChild.offsetWidth,g=e.offsetWidth-f;return d.lineGutter.style.width="",d.lineNumInnerWidth=Math.max(f,d.lineGutter.offsetWidth-g),d.lineNumWidth=d.lineNumInnerWidth+g,d.lineNumChars=d.lineNumInnerWidth?c.length:-1,d.lineGutter.style.width=d.lineNumWidth+"px",J(a),!0}return!1}function S(a,b){return String(a.lineNumberFormatter(b+a.firstLineNumber))}function T(a){return a.scroller.getBoundingClientRect().left-a.sizer.getBoundingClientRect().left}function U(a,b,c){for(var f,d=a.display.viewFrom,e=a.display.viewTo,g=P(a.display,a.doc,b),i=!0;;i=!1){var j=a.display.scroller.clientWidth;if(!V(a,g,c))break;f=!0,a.display.maxLineChanged&&!a.options.lineWrapping&&W(a);var k=N(a);if(Ob(a),X(a,k),O(a,k),h&&a.options.lineWrapping&&Y(a,k),i&&a.options.lineWrapping&&j!=a.display.scroller.clientWidth)c=!0;else if(c=!1,b&&null!=b.top&&(b={top:Math.min(k.docHeight-pg-k.clientHeight,b.top)}),g=P(a.display,a.doc,b),g.from>=a.display.viewFrom&&g.to<=a.display.viewTo)break}return a.display.updateLineNumbers=null,f&&(jg(a,"update",a),(a.display.viewFrom!=d||a.display.viewTo!=e)&&jg(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo)),f}function V(a,b,c){var d=a.display,e=a.doc;if(!d.wrapper.offsetWidth)return Hc(a),void 0;if(!(!c&&b.from>=d.viewFrom&&b.to<=d.viewTo&&0==Lc(a))){R(a)&&Hc(a);var f=_(a),g=e.first+e.size,h=Math.max(b.from-a.options.viewportMargin,e.first),i=Math.min(g,b.to+a.options.viewportMargin);d.viewFrom<h&&h-d.viewFrom<20&&(h=Math.max(e.first,d.viewFrom)),d.viewTo>i&&d.viewTo-i<20&&(i=Math.min(g,d.viewTo)),x&&(h=Se(a.doc,h),i=Te(a.doc,i));var j=h!=d.viewFrom||i!=d.viewTo||d.lastSizeC!=d.wrapper.clientHeight;Kc(a,h,i),d.viewOffset=Jf(Df(a.doc,d.viewFrom)),a.display.mover.style.top=d.viewOffset+"px";var k=Lc(a);if(j||0!=k||c){var l=Qg();return k>4&&(d.lineDiv.style.display="none"),ab(a,d.updateLineNumbers,f),k>4&&(d.lineDiv.style.display=""),l&&Qg()!=l&&l.offsetHeight&&l.focus(),Ng(d.cursorDiv),Ng(d.selectionDiv),j&&(d.lastSizeC=d.wrapper.clientHeight,Sb(a,400)),Z(a),!0}}}function W(a){var b=a.display,c=ac(a,b.maxLine,b.maxLine.text.length).left;b.maxLineChanged=!1;var d=Math.max(0,c+3),e=Math.max(0,b.sizer.offsetLeft+d+pg-b.scroller.clientWidth);b.sizer.style.minWidth=d+"px",e<a.doc.scrollLeft&&hd(a,Math.min(b.scroller.scrollLeft,e),!0)}function X(a,b){a.display.sizer.style.minHeight=a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=Math.max(b.docHeight,b.clientHeight-pg)+"px"}function Y(a,b){a.display.sizer.offsetWidth+a.display.gutters.offsetWidth<a.display.scroller.clientWidth-1&&(a.display.sizer.style.minHeight=a.display.heightForcer.style.top="0px",a.display.gutters.style.height=b.docHeight+"px")}function Z(a){for(var b=a.display,d=b.lineDiv.offsetTop,e=0;e<b.view.length;e++){var g,f=b.view[e];if(!f.hidden){if(c){var h=f.node.offsetTop+f.node.offsetHeight;g=h-d,d=h}else{var i=f.node.getBoundingClientRect();g=i.bottom-i.top}var j=f.line.height-g;if(2>g&&(g=uc(b)),(j>.001||-.001>j)&&(Gf(f.line,g),$(f.line),f.rest))for(var k=0;k<f.rest.length;k++)$(f.rest[k])}}}function $(a){if(a.widgets)for(var b=0;b<a.widgets.length;++b)a.widgets[b].height=a.widgets[b].node.offsetHeight}function _(a){for(var b=a.display,c={},d={},e=b.gutters.firstChild,f=0;e;e=e.nextSibling,++f)c[a.options.gutters[f]]=e.offsetLeft,d[a.options.gutters[f]]=e.offsetWidth;return{fixedPos:T(b),gutterTotalWidth:b.gutters.offsetWidth,gutterLeft:c,gutterWidth:d,wrapperWidth:b.wrapper.clientWidth}}function ab(a,b,c){function i(b){var c=b.nextSibling;return h&&r&&a.display.currentWheelTarget==b?b.style.display="none":b.parentNode.removeChild(b),c}for(var d=a.display,e=a.options.lineNumbers,f=d.lineDiv,g=f.firstChild,j=d.view,k=d.viewFrom,l=0;l<j.length;l++){var m=j[l];if(m.hidden);else if(m.node){for(;g!=m.node;)g=i(g);var o=e&&null!=b&&k>=b&&m.lineNumber;m.changes&&(Bg(m.changes,"gutter")>-1&&(o=!1),bb(a,m,k,c)),o&&(Ng(m.lineNumber),m.lineNumber.appendChild(document.createTextNode(S(a.options,k)))),g=m.node.nextSibling}else{var n=jb(a,m,k,c);f.insertBefore(n,g)}k+=m.size}for(;g;)g=i(g)}function bb(a,b,c,d){for(var e=0;e<b.changes.length;e++){var f=b.changes[e];"text"==f?fb(a,b):"gutter"==f?hb(a,b,c,d):"class"==f?gb(b):"widget"==f&&ib(b,d)}b.changes=null}function cb(a){return a.node==a.text&&(a.node=Lg("div",null,null,"position: relative"),a.text.parentNode&&a.text.parentNode.replaceChild(a.node,a.text),a.node.appendChild(a.text),c&&(a.node.style.zIndex=2)),a.node}function db(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;if(b&&(b+=" CodeMirror-linebackground"),a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=cb(a);a.background=c.insertBefore(Lg("div",null,b),c.firstChild)}}function eb(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):mf(a,b)}function fb(a,b){var c=b.text.className,d=eb(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,gb(b)):c&&(b.text.className=c)}function gb(a){db(a),a.line.wrapClass?cb(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");var b=a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass;a.text.className=b||""}function hb(a,b,c,d){b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null);var e=b.line.gutterMarkers;if(a.options.lineNumbers||e){var f=cb(b),g=b.gutter=f.insertBefore(Lg("div",null,"CodeMirror-gutter-wrapper","position: absolute; left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px"),b.text);if(!a.options.lineNumbers||e&&e["CodeMirror-linenumbers"]||(b.lineNumber=g.appendChild(Lg("div",S(a.options,c),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+a.display.lineNumInnerWidth+"px"))),e)for(var h=0;h<a.options.gutters.length;++h){var i=a.options.gutters[h],j=e.hasOwnProperty(i)&&e[i];j&&g.appendChild(Lg("div",[j],"CodeMirror-gutter-elt","left: "+d.gutterLeft[i]+"px; width: "+d.gutterWidth[i]+"px"))}}}function ib(a,b){a.alignable&&(a.alignable=null);for(var d,c=a.node.firstChild;c;c=d){var d=c.nextSibling;"CodeMirror-linewidget"==c.className&&a.node.removeChild(c)}kb(a,b)}function jb(a,b,c,d){var e=eb(a,b);return b.text=b.node=e.pre,e.bgClass&&(b.bgClass=e.bgClass),e.textClass&&(b.textClass=e.textClass),gb(b),hb(a,b,c,d),kb(b,d),b.node}function kb(a,b){if(lb(a.line,a,b,!0),a.rest)for(var c=0;c<a.rest.length;c++)lb(a.rest[c],a,b,!1)}function lb(a,b,c,d){if(a.widgets)for(var e=cb(b),f=0,g=a.widgets;f<g.length;++f){var h=g[f],i=Lg("div",[h.node],"CodeMirror-linewidget");h.handleMouseEvents||(i.ignoreEvents=!0),mb(h,i,b,c),d&&h.above?e.insertBefore(i,b.gutter||b.text):e.appendChild(i),jg(h,"redraw")}}function mb(a,b,c,d){if(a.noHScroll){(c.alignable||(c.alignable=[])).push(b);var e=d.wrapperWidth;b.style.left=d.fixedPos+"px",a.coverGutter||(e-=d.gutterTotalWidth,b.style.paddingLeft=d.gutterTotalWidth+"px"),b.style.width=e+"px"}a.coverGutter&&(b.style.zIndex=5,b.style.position="relative",a.noHScroll||(b.style.marginLeft=-d.gutterTotalWidth+"px"))}function pb(a){return nb(a.line,a.ch)}function qb(a,b){return ob(a,b)<0?b:a}function rb(a,b){return ob(a,b)<0?a:b}function sb(a,b){this.ranges=a,this.primIndex=b}function tb(a,b){this.anchor=a,this.head=b}function ub(a,b){var c=a[b];a.sort(function(a,b){return ob(a.from(),b.from())}),b=Bg(a,c);for(var d=1;d<a.length;d++){var e=a[d],f=a[d-1];if(ob(f.to(),e.from())>=0){var g=rb(f.from(),e.from()),h=qb(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;b>=d&&--b,a.splice(--d,2,new tb(i?h:g,i?g:h))}}return new sb(a,b)}function vb(a,b){return new sb([new tb(a,b||a)],0)}function wb(a,b){return Math.max(a.first,Math.min(b,a.first+a.size-1))}function xb(a,b){if(b.line<a.first)return nb(a.first,0);var c=a.first+a.size-1;return b.line>c?nb(c,Df(a,c).text.length):yb(b,Df(a,b.line).text.length)}function yb(a,b){var c=a.ch;return null==c||c>b?nb(a.line,b):0>c?nb(a.line,0):a}function zb(a,b){return b>=a.first&&b<a.first+a.size}function Ab(a,b){for(var c=[],d=0;d<b.length;d++)c[d]=xb(a,b[d]);return c}function Bb(a,b,c,d){if(a.cm&&a.cm.display.shift||a.extend){var e=b.anchor;if(d){var f=ob(c,e)<0;f!=ob(d,e)<0?(e=c,c=d):f!=ob(c,d)<0&&(c=d)}return new tb(e,c)}return new tb(d||c,c)}function Cb(a,b,c,d){Ib(a,new sb([Bb(a,a.sel.primary(),b,c)],0),d)}function Db(a,b,c){for(var d=[],e=0;e<a.sel.ranges.length;e++)d[e]=Bb(a,a.sel.ranges[e],b[e],null);var f=ub(d,a.sel.primIndex);Ib(a,f,c)}function Eb(a,b,c,d){var e=a.sel.ranges.slice(0);e[b]=c,Ib(a,ub(e,a.sel.primIndex),d)}function Fb(a,b,c,d){Ib(a,vb(b,c),d)}function Gb(a,b){var c={ranges:b.ranges,update:function(b){this.ranges=[];for(var c=0;c<b.length;c++)this.ranges[c]=new tb(xb(a,b[c].anchor),xb(a,b[c].head))}};return gg(a,"beforeSelectionChange",a,c),a.cm&&gg(a.cm,"beforeSelectionChange",a.cm,c),c.ranges!=b.ranges?ub(c.ranges,c.ranges.length-1):b}function Hb(a,b,c){var d=a.history.done,e=zg(d);e&&e.ranges?(d[d.length-1]=b,Jb(a,b,c)):Ib(a,b,c)}function Ib(a,b,c){Jb(a,b,c),Rf(a,a.sel,a.cm?a.cm.curOp.id:0/0,c)}function Jb(a,b,c){(ng(a,"beforeSelectionChange")||a.cm&&ng(a.cm,"beforeSelectionChange"))&&(b=Gb(a,b));var d=ob(b.primary().head,a.sel.primary().head)<0?-1:1;Kb(a,Mb(a,b,d,!0)),c&&c.scroll===!1||!a.cm||Rd(a.cm)}function Kb(a,b){b.equals(a.sel)||(a.sel=b,a.cm&&(a.cm.curOp.updateInput=a.cm.curOp.selectionChanged=!0,mg(a.cm)),jg(a,"cursorActivity",a))}function Lb(a){Kb(a,Mb(a,a.sel,null,!1),rg)}function Mb(a,b,c,d){for(var e,f=0;f<b.ranges.length;f++){var g=b.ranges[f],h=Nb(a,g.anchor,c,d),i=Nb(a,g.head,c,d);(e||h!=g.anchor||i!=g.head)&&(e||(e=b.ranges.slice(0,f)),e[f]=new tb(h,i))}return e?ub(e,b.primIndex):b}function Nb(a,b,c,d){var e=!1,f=b,g=c||1;a.cantEdit=!1;a:for(;;){var h=Df(a,f.line);if(h.markedSpans)for(var i=0;i<h.markedSpans.length;++i){var j=h.markedSpans[i],k=j.marker;if((null==j.from||(k.inclusiveLeft?j.from<=f.ch:j.from<f.ch))&&(null==j.to||(k.inclusiveRight?j.to>=f.ch:j.to>f.ch))){if(d&&(gg(k,"beforeCursorEnter"),k.explicitlyCleared)){if(h.markedSpans){--i;continue}break}if(!k.atomic)continue;var l=k.find(0>g?-1:1);if(0==ob(l,f)&&(l.ch+=g,l.ch<0?l=l.line>a.first?xb(a,nb(l.line-1)):null:l.ch>h.text.length&&(l=l.line<a.first+a.size-1?nb(l.line+1,0):null),!l)){if(e)return d?(a.cantEdit=!0,nb(a.first,0)):Nb(a,b,c,!0);e=!0,l=b,g=-g}f=l;continue a}}return f}}function Ob(a){for(var b=a.display,c=a.doc,d=document.createDocumentFragment(),e=document.createDocumentFragment(),f=0;f<c.sel.ranges.length;f++){var g=c.sel.ranges[f],h=g.empty();(h||a.options.showCursorWhenSelecting)&&Pb(a,g,d),h||Qb(a,g,e)}if(a.options.moveInputWithCursor){var i=oc(a,c.sel.primary().head,"div"),j=b.wrapper.getBoundingClientRect(),k=b.lineDiv.getBoundingClientRect(),l=Math.max(0,Math.min(b.wrapper.clientHeight-10,i.top+k.top-j.top)),m=Math.max(0,Math.min(b.wrapper.clientWidth-10,i.left+k.left-j.left));b.inputDiv.style.top=l+"px",b.inputDiv.style.left=m+"px"}Og(b.cursorDiv,d),Og(b.selectionDiv,e)}function Pb(a,b,c){var d=oc(a,b.head,"div"),e=c.appendChild(Lg("div","\xa0","CodeMirror-cursor"));if(e.style.left=d.left+"px",e.style.top=d.top+"px",e.style.height=Math.max(0,d.bottom-d.top)*a.options.cursorHeight+"px",d.other){var f=c.appendChild(Lg("div","\xa0","CodeMirror-cursor CodeMirror-secondarycursor"));f.style.display="",f.style.left=d.other.left+"px",f.style.top=d.other.top+"px",f.style.height=.85*(d.other.bottom-d.other.top)+"px"}}function Qb(a,b,c){function j(a,b,c,d){0>b&&(b=0),b=Math.round(b),d=Math.round(d),f.appendChild(Lg("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?i-a:c)+"px; height: "+(d-b)+"px"))}function k(b,c,d){function m(c,d){return nc(a,nb(b,c),"div",f,d)}var k,l,f=Df(e,b),g=f.text.length;return ih(Kf(f),c||0,null==d?g:d,function(a,b,e){var n,o,p,f=m(a,"left");if(a==b)n=f,o=p=f.left;else{if(n=m(b-1,"right"),"rtl"==e){var q=f;f=n,n=q}o=f.left,p=n.right}null==c&&0==a&&(o=h),n.top-f.top>3&&(j(o,f.top,null,f.bottom),o=h,f.bottom<n.top&&j(o,f.bottom,null,n.top)),null==d&&b==g&&(p=i),(!k||f.top<k.top||f.top==k.top&&f.left<k.left)&&(k=f),(!l||n.bottom>l.bottom||n.bottom==l.bottom&&n.right>l.right)&&(l=n),h+1>o&&(o=h),j(o,n.top,p-o,n.bottom)}),{start:k,end:l}}var d=a.display,e=a.doc,f=document.createDocumentFragment(),g=Yb(a.display),h=g.left,i=d.lineSpace.offsetWidth-g.right,l=b.from(),m=b.to();if(l.line==m.line)k(l.line,l.ch,m.ch);else{var n=Df(e,l.line),o=Df(e,m.line),p=Qe(n)==Qe(o),q=k(l.line,l.ch,p?n.text.length+1:null).end,r=k(m.line,p?0:null,m.ch).start;p&&(q.top<r.top-2?(j(q.right,q.top,null,q.bottom),j(h,r.top,r.left,r.bottom)):j(q.right,q.top,r.left-q.right,q.bottom)),q.bottom<r.top&&j(h,q.bottom,null,r.top)}c.appendChild(f)}function Rb(a){if(a.state.focused){var b=a.display;clearInterval(b.blinker);var c=!0;b.cursorDiv.style.visibility="",a.options.cursorBlinkRate>0&&(b.blinker=setInterval(function(){b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate))}}function Sb(a,b){a.doc.mode.startState&&a.doc.frontier<a.display.viewTo&&a.state.highlight.set(b,Fg(Tb,a))}function Tb(a){var b=a.doc;if(b.frontier<b.first&&(b.frontier=b.first),!(b.frontier>=a.display.viewTo)){var c=+new Date+a.options.workTime,d=ge(b.mode,Vb(a,b.frontier));zc(a,function(){b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(e){if(b.frontier>=a.display.viewFrom){var f=e.styles,g=ff(a,e,d,!0);e.styles=g.styles,g.classes?e.styleClasses=g.classes:e.styleClasses&&(e.styleClasses=null);for(var h=!f||f.length!=e.styles.length,i=0;!h&&i<f.length;++i)h=f[i]!=e.styles[i];h&&Gc(a,b.frontier,"text"),e.stateAfter=ge(b.mode,d)}else hf(a,e.text,d),e.stateAfter=0==b.frontier%5?ge(b.mode,d):null;return++b.frontier,+new Date>c?(Sb(a,a.options.workDelay),!0):void 0})})}}function Ub(a,b,c){for(var d,e,f=a.doc,g=c?-1:b-(a.doc.mode.innerMode?1e3:100),h=b;h>g;--h){if(h<=f.first)return f.first;var i=Df(f,h-1);if(i.stateAfter&&(!c||h<=f.frontier))return h;var j=vg(i.text,null,a.options.tabSize);(null==e||d>j)&&(e=h-1,d=j)}return e}function Vb(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0;var f=Ub(a,b,c),g=f>d.first&&Df(d,f-1).stateAfter;return g=g?ge(d.mode,g):he(d.mode),d.iter(f,b,function(c){hf(a,c.text,g);var h=f==b-1||0==f%5||f>=e.viewFrom&&f<e.viewTo;c.stateAfter=h?ge(d.mode,g):null,++f}),c&&(d.frontier=f),g}function Wb(a){return a.lineSpace.offsetTop}function Xb(a){return a.mover.offsetHeight-a.lineSpace.offsetHeight}function Yb(a){if(a.cachedPaddingH)return a.cachedPaddingH;var b=Og(a.measure,Lg("pre","x")),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d={left:parseInt(c.paddingLeft),right:parseInt(c.paddingRight)};return isNaN(d.left)||isNaN(d.right)||(a.cachedPaddingH=d),d}function Zb(a,b,c){var d=a.options.lineWrapping,e=d&&a.display.scroller.clientWidth;if(!b.measure.heights||d&&b.measure.width!=e){var f=b.measure.heights=[];if(d){b.measure.width=e;for(var g=b.text.firstChild.getClientRects(),h=0;h<g.length-1;h++){var i=g[h],j=g[h+1];Math.abs(i.bottom-j.bottom)>2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function $b(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;d<a.rest.length;d++)if(a.rest[d]==b)return{map:a.measure.maps[d],cache:a.measure.caches[d]};for(var d=0;d<a.rest.length;d++)if(Hf(a.rest[d])>c)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}}function _b(a,b){b=Qe(b);var c=Hf(b),d=a.display.externalMeasured=new Dc(a.doc,b,c);d.lineN=c;var e=d.built=mf(a,d);return d.text=e.pre,Og(a.display.lineMeasure,e.pre),d}function ac(a,b,c,d){return dc(a,cc(a,b),c,d)}function bc(a,b){if(b>=a.display.viewFrom&&b<a.display.viewTo)return a.display.view[Ic(a,b)];var c=a.display.externalMeasured;return c&&b>=c.lineN&&b<c.lineN+c.size?c:void 0}function cc(a,b){var c=Hf(b),d=bc(a,c);d&&!d.text?d=null:d&&d.changes&&bb(a,d,c,_(a)),d||(d=_b(a,b));var e=$b(d,b,c);return{line:b,view:d,rect:null,map:e.map,cache:e.cache,before:e.before,hasHeights:!1}}function dc(a,b,c,d){b.before&&(c=-1);var f,e=c+(d||"");return b.cache.hasOwnProperty(e)?f=b.cache[e]:(b.rect||(b.rect=b.view.text.getBoundingClientRect()),b.hasHeights||(Zb(a,b.view,b.rect),b.hasHeights=!0),f=fc(a,b,c,d),f.bogus||(b.cache[e]=f)),{left:f.left,right:f.right,top:f.top,bottom:f.bottom}}function fc(a,b,c,e){for(var h,i,j,k,f=b.map,l=0;l<f.length;l+=3){var m=f[l],n=f[l+1];if(m>c?(i=0,j=1,k="left"):n>c?(i=c-m,j=i+1):(l==f.length-3||c==n&&f[l+3]>c)&&(j=n-m,i=j-1,c>=n&&(k="right")),null!=i){if(h=f[l+2],m==n&&e==(h.insertLeft?"left":"right")&&(k=e),"left"==e&&0==i)for(;l&&f[l-2]==f[l-3]&&f[l-1].insertLeft;)h=f[(l-=3)+2],k="left";if("right"==e&&i==n-m)for(;l<f.length-3&&f[l+3]==f[l+4]&&!f[l+5].insertLeft;)h=f[(l+=3)+2],k="right";break}}var o;if(3==h.nodeType){for(;i&&Kg(b.line.text.charAt(m+i));)--i;for(;n>m+j&&Kg(b.line.text.charAt(m+j));)++j;if(d&&0==i&&j==n-m)o=h.parentNode.getBoundingClientRect();else if(g&&a.options.lineWrapping){var p=Mg(h,i,j).getClientRects();o=p.length?p["right"==e?p.length-1:0]:ec}else o=Mg(h,i,j).getBoundingClientRect()||ec}else{i>0&&(k=e="right");var p;o=a.options.lineWrapping&&(p=h.getClientRects()).length>1?p["right"==e?p.length-1:0]:h.getBoundingClientRect()}if(d&&!i&&(!o||!o.left&&!o.right)){var q=h.parentNode.getClientRects()[0];o=q?{left:q.left,right:q.left+vc(a.display),top:q.top,bottom:q.bottom}:ec}for(var r,s=(o.bottom+o.top)/2-b.rect.top,t=b.view.measure.heights,l=0;l<t.length-1&&!(s<t[l]);l++);r=l?t[l-1]:0,s=t[l];var u={left:("right"==k?o.right:o.left)-b.rect.left,right:("left"==k?o.left:o.right)-b.rect.left,top:r,bottom:s};return o.left||o.right||(u.bogus=!0),u}function gc(a){if(a.measure&&(a.measure.cache={},a.measure.heights=null,a.rest))for(var b=0;b<a.rest.length;b++)a.measure.caches[b]={}}function hc(a){a.display.externalMeasure=null,Ng(a.display.lineMeasure);for(var b=0;b<a.display.view.length;b++)gc(a.display.view[b])}function ic(a){hc(a),a.display.cachedCharWidth=a.display.cachedTextHeight=a.display.cachedPaddingH=null,a.options.lineWrapping||(a.display.maxLineChanged=!0),a.display.lineNumChars=null}function jc(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function kc(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function lc(a,b,c,d){if(b.widgets)for(var e=0;e<b.widgets.length;++e)if(b.widgets[e].above){var f=Ye(b.widgets[e]);c.top+=f,c.bottom+=f}if("line"==d)return c;d||(d="local");var g=Jf(b);if("local"==d?g+=Wb(a.display):g-=a.display.viewOffset,"page"==d||"window"==d){var h=a.display.lineSpace.getBoundingClientRect();g+=h.top+("window"==d?0:kc());var i=h.left+("window"==d?0:jc());c.left+=i,c.right+=i}return c.top+=g,c.bottom+=g,c}function mc(a,b,c){if("div"==c)return b;var d=b.left,e=b.top;if("page"==c)d-=jc(),e-=kc();else if("local"==c||!c){var f=a.display.sizer.getBoundingClientRect();d+=f.left,e+=f.top}var g=a.display.lineSpace.getBoundingClientRect();return{left:d-g.left,top:e-g.top}}function nc(a,b,c,d,e){return d||(d=Df(a.doc,b.line)),lc(a,d,ac(a,d,b.ch,e),c)}function oc(a,b,c,d,e){function f(b,f){var g=dc(a,e,b,f?"right":"left");return f?g.left=g.right:g.right=g.left,lc(a,d,g,c)}function g(a,b){var c=h[b],d=c.level%2;return a==jh(c)&&b&&c.level<h[b-1].level?(c=h[--b],a=kh(c)-(c.level%2?0:1),d=!0):a==kh(c)&&b<h.length-1&&c.level<h[b+1].level&&(c=h[++b],a=jh(c)-c.level%2,d=!1),d&&a==c.to&&a>c.from?f(a-1):f(a,d)}d=d||Df(a.doc,b.line),e||(e=cc(a,d));var h=Kf(d),i=b.ch;if(!h)return f(i);var j=rh(h,i),k=g(i,j);return null!=qh&&(k.other=g(i,qh)),k}function pc(a,b){var c=0,b=xb(a.doc,b);a.options.lineWrapping||(c=vc(a.display)*b.ch);var d=Df(a.doc,b.line),e=Jf(d)+Wb(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function qc(a,b,c,d){var e=nb(a,b);return e.xRel=d,c&&(e.outside=!0),e}function rc(a,b,c){var d=a.doc;if(c+=a.display.viewOffset,0>c)return qc(d.first,0,!0,-1);var e=If(d,c),f=d.first+d.size-1;if(e>f)return qc(d.first+d.size-1,Df(d,f).text.length,!0,1);0>b&&(b=0);for(var g=Df(d,e);;){var h=sc(a,g,e,b,c),i=Oe(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=Hf(g=j.to.line)}}function sc(a,b,c,d,e){function j(d){var e=oc(a,nb(c,d),"line",b,i);return g=!0,f>e.bottom?e.left-h:f<e.top?e.left+h:(g=!1,e.left)}var f=e-Jf(b),g=!1,h=2*a.display.wrapper.clientWidth,i=cc(a,b),k=Kf(b),l=b.text.length,m=lh(b),n=mh(b),o=j(m),p=g,q=j(n),r=g;if(d>q)return qc(c,n,r,1);for(;;){if(k?n==m||n==th(b,m,1):1>=n-m){for(var s=o>d||q-d>=d-o?m:n,t=d-(s==m?o:q);Kg(b.text.charAt(s));)++s;var u=qc(c,s,s==m?p:r,-1>t?-1:t>1?1:0);return u}var v=Math.ceil(l/2),w=m+v;if(k){w=m;for(var x=0;v>x;++x)w=th(b,w,1)}var y=j(w);y>d?(n=w,q=y,(r=g)&&(q+=1e3),l=v):(m=w,o=y,p=g,l-=v)}}function uc(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==tc){tc=Lg("pre");for(var b=0;49>b;++b)tc.appendChild(document.createTextNode("x")),tc.appendChild(Lg("br"));tc.appendChild(document.createTextNode("x"))}Og(a.measure,tc);var c=tc.offsetHeight/50;return c>3&&(a.cachedTextHeight=c),Ng(a.measure),c||1}function vc(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=Lg("span","xxxxxxxxxx"),c=Lg("pre",[b]);Og(a.measure,c);var d=b.getBoundingClientRect(),e=(d.right-d.left)/10;return e>2&&(a.cachedCharWidth=e),e||10}function xc(a){a.curOp={viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++wc},ig++||(hg=[])}function yc(a){var b=a.curOp,c=a.doc,d=a.display;if(a.curOp=null,b.updateMaxLine&&L(a),b.viewChanged||b.forceUpdate||null!=b.scrollTop||b.scrollToPos&&(b.scrollToPos.from.line<d.viewFrom||b.scrollToPos.to.line>=d.viewTo)||d.maxLineChanged&&a.options.lineWrapping){var e=U(a,{top:b.scrollTop,ensure:b.scrollToPos},b.forceUpdate);a.display.scroller.offsetHeight&&(a.doc.scrollTop=a.display.scroller.scrollTop)}if(!e&&b.selectionChanged&&Ob(a),e||b.startHeight==a.doc.height||O(a),null!=b.scrollTop&&d.scroller.scrollTop!=b.scrollTop){var f=Math.max(0,Math.min(d.scroller.scrollHeight-d.scroller.clientHeight,b.scrollTop));d.scroller.scrollTop=d.scrollbarV.scrollTop=c.scrollTop=f}if(null!=b.scrollLeft&&d.scroller.scrollLeft!=b.scrollLeft){var g=Math.max(0,Math.min(d.scroller.scrollWidth-d.scroller.clientWidth,b.scrollLeft));d.scroller.scrollLeft=d.scrollbarH.scrollLeft=c.scrollLeft=g,Q(a)}if(b.scrollToPos){var h=Nd(a,xb(a.doc,b.scrollToPos.from),xb(a.doc,b.scrollToPos.to),b.scrollToPos.margin);b.scrollToPos.isCursor&&a.state.focused&&Md(a,h)}b.selectionChanged&&Rb(a),a.state.focused&&b.updateInput&&Pc(a,b.typing);var i=b.maybeHiddenMarkers,j=b.maybeUnhiddenMarkers;if(i)for(var k=0;k<i.length;++k)i[k].lines.length||gg(i[k],"hide");if(j)for(var k=0;k<j.length;++k)j[k].lines.length&&gg(j[k],"unhide");var l;if(--ig||(l=hg,hg=null),b.changeObjs&&gg(a,"changes",a,b.changeObjs),l)for(var k=0;k<l.length;++k)l[k]();if(b.cursorActivityHandlers)for(var k=0;k<b.cursorActivityHandlers.length;k++)b.cursorActivityHandlers[k](a)}function zc(a,b){if(a.curOp)return b();xc(a);try{return b()}finally{yc(a)}}function Ac(a,b){return function(){if(a.curOp)return b.apply(a,arguments);xc(a);try{return b.apply(a,arguments)}finally{yc(a)}}}function Bc(a){return function(){if(this.curOp)return a.apply(this,arguments);xc(this);try{return a.apply(this,arguments)}finally{yc(this)}}}function Cc(a){return function(){var b=this.cm;if(!b||b.curOp)return a.apply(this,arguments);xc(b);try{return a.apply(this,arguments)}finally{yc(b)
+}}}function Dc(a,b,c){this.line=b,this.rest=Re(b),this.size=this.rest?Hf(zg(this.rest))-c+1:1,this.node=this.text=null,this.hidden=Ue(a,b)}function Ec(a,b,c){for(var e,d=[],f=b;c>f;f=e){var g=new Dc(a.doc,Df(a.doc,f),f);e=f+g.size,d.push(g)}return d}function Fc(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var e=a.display;if(d&&c<e.viewTo&&(null==e.updateLineNumbers||e.updateLineNumbers>b)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)x&&Se(a.doc,b)<e.viewTo&&Hc(a);else if(c<=e.viewFrom)x&&Te(a.doc,c+d)>e.viewFrom?Hc(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)Hc(a);else if(b<=e.viewFrom){var f=Jc(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):Hc(a)}else if(c>=e.viewTo){var f=Jc(a,b,b,-1);f?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):Hc(a)}else{var g=Jc(a,b,b,-1),h=Jc(a,c,c+d,1);g&&h?(e.view=e.view.slice(0,g.index).concat(Ec(a,g.lineN,h.lineN)).concat(e.view.slice(h.index)),e.viewTo+=d):Hc(a)}var i=e.externalMeasured;i&&(c<i.lineN?i.lineN+=d:b<i.lineN+i.size&&(e.externalMeasured=null))}function Gc(a,b,c){a.curOp.viewChanged=!0;var d=a.display,e=a.display.externalMeasured;if(e&&b>=e.lineN&&b<e.lineN+e.size&&(d.externalMeasured=null),!(b<d.viewFrom||b>=d.viewTo)){var f=d.view[Ic(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);-1==Bg(g,c)&&g.push(c)}}}function Hc(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Ic(a,b){if(b>=a.display.viewTo)return null;if(b-=a.display.viewFrom,0>b)return null;for(var c=a.display.view,d=0;d<c.length;d++)if(b-=c[d].size,0>b)return d}function Jc(a,b,c,d){var f,e=Ic(a,b),g=a.display.view;if(!x)return{index:e,lineN:c};for(var h=0,i=a.display.viewFrom;e>h;h++)i+=g[h].size;if(i!=b){if(d>0){if(e==g.length-1)return null;f=i+g[e].size-b,e++}else f=i-b;b+=f,c+=f}for(;Se(a.doc,c)!=c;){if(e==(0>d?0:g.length-1))return null;c+=d*g[e-(0>d?1:0)].size,e+=d}return{index:e,lineN:c}}function Kc(a,b,c){var d=a.display,e=d.view;0==e.length||b>=d.viewTo||c<=d.viewFrom?(d.view=Ec(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=Ec(a,b,d.viewFrom).concat(d.view):d.viewFrom<b&&(d.view=d.view.slice(Ic(a,b))),d.viewFrom=b,d.viewTo<c?d.view=d.view.concat(Ec(a,d.viewTo,c)):d.viewTo>c&&(d.view=d.view.slice(0,Ic(a,c)))),d.viewTo=c}function Lc(a){for(var b=a.display.view,c=0,d=0;d<b.length;d++){var e=b[d];e.hidden||e.node&&!e.changes||++c}return c}function Mc(a){a.display.pollingFast||a.display.poll.set(a.options.pollInterval,function(){Oc(a),a.state.focused&&Mc(a)})}function Nc(a){function c(){var d=Oc(a);d||b?(a.display.pollingFast=!1,Mc(a)):(b=!0,a.display.poll.set(60,c))}var b=!1;a.display.pollingFast=!0,a.display.poll.set(20,c)}function Oc(a){var b=a.display.input,c=a.display.prevInput,e=a.doc;if(!a.state.focused||fh(b)&&!c||Sc(a)||a.options.disableInput)return!1;a.state.pasteIncoming&&a.state.fakedLastChar&&(b.value=b.value.substring(0,b.value.length-1),a.state.fakedLastChar=!1);var f=b.value;if(f==c&&!a.somethingSelected())return!1;if(g&&!d&&a.display.inputHasSelection===f)return Pc(a),!1;var h=!a.curOp;h&&xc(a),a.display.shift=!1,8203!=f.charCodeAt(0)||e.sel!=a.display.selForContextMenu||c||(c="\u200b");for(var i=0,j=Math.min(c.length,f.length);j>i&&c.charCodeAt(i)==f.charCodeAt(i);)++i;for(var k=f.slice(i),l=eh(k),m=a.state.pasteIncoming&&l.length>1&&e.sel.ranges.length==l.length,n=e.sel.ranges.length-1;n>=0;n--){var o=e.sel.ranges[n],p=o.from(),q=o.to();i<c.length?p=nb(p.line,p.ch-(c.length-i)):a.state.overwrite&&o.empty()&&!a.state.pasteIncoming&&(q=nb(q.line,Math.min(Df(e,q.line).text.length,q.ch+zg(l).length)));var r=a.curOp.updateInput,s={from:p,to:q,text:m?[l[n]]:l,origin:a.state.pasteIncoming?"paste":a.state.cutIncoming?"cut":"+input"};if(Fd(a.doc,s),jg(a,"inputRead",a,s),k&&!a.state.pasteIncoming&&a.options.electricChars&&a.options.smartIndent&&o.head.ch<100&&(!n||e.sel.ranges[n-1].head.line!=o.head.line)){var t=a.getModeAt(o.head);if(t.electricChars){for(var u=0;u<t.electricChars.length;u++)if(k.indexOf(t.electricChars.charAt(u))>-1){Td(a,o.head.line,"smart");break}}else if(t.electricInput){var v=zd(s);t.electricInput.test(Df(e,v.line).text.slice(0,v.ch))&&Td(a,o.head.line,"smart")}}}return Rd(a),a.curOp.updateInput=r,a.curOp.typing=!0,f.length>1e3||f.indexOf("\n")>-1?b.value=a.display.prevInput="":a.display.prevInput=f,h&&yc(a),a.state.pasteIncoming=a.state.cutIncoming=!1,!0}function Pc(a,b){var c,e,f=a.doc;if(a.somethingSelected()){a.display.prevInput="";var h=f.sel.primary();c=gh&&(h.to().line-h.from().line>100||(e=a.getSelection()).length>1e3);var i=c?"-":e||a.getSelection();a.display.input.value=i,a.state.focused&&Ag(a.display.input),g&&!d&&(a.display.inputHasSelection=i)}else b||(a.display.prevInput=a.display.input.value="",g&&!d&&(a.display.inputHasSelection=null));a.display.inaccurateSelection=c}function Qc(a){"nocursor"==a.options.readOnly||q&&Qg()==a.display.input||a.display.input.focus()}function Rc(a){a.state.focused||(Qc(a),vd(a))}function Sc(a){return a.options.readOnly||a.doc.cantEdit}function Tc(a){function e(){a.state.focused&&setTimeout(Fg(Qc,a),0)}function f(b){lg(a,b)||bg(b)}function i(b){if(a.somethingSelected())c.inaccurateSelection&&(c.prevInput="",c.inaccurateSelection=!1,c.input.value=a.getSelection(),Ag(c.input));else{for(var d="",e=[],f=0;f<a.doc.sel.ranges.length;f++){var g=a.doc.sel.ranges[f].head.line,h={anchor:nb(g,0),head:nb(g+1,0)};e.push(h),d+=a.getRange(h.anchor,h.head)}"cut"==b.type?a.setSelections(e,null,rg):(c.prevInput="",c.input.value=d,Ag(c.input))}"cut"==b.type&&(a.state.cutIncoming=!0)}var c=a.display;eg(c.scroller,"mousedown",Ac(a,Xc)),b?eg(c.scroller,"dblclick",Ac(a,function(b){if(!lg(a,b)){var c=Wc(a,b);if(c&&!cd(a,b)&&!Vc(a.display,b)){$f(b);var d=Yd(a.doc,c);Cb(a.doc,d.anchor,d.head)}}})):eg(c.scroller,"dblclick",function(b){lg(a,b)||$f(b)}),eg(c.lineSpace,"selectstart",function(a){Vc(c,a)||$f(a)}),v||eg(c.scroller,"contextmenu",function(b){xd(a,b)}),eg(c.scroller,"scroll",function(){c.scroller.clientHeight&&(gd(a,c.scroller.scrollTop),hd(a,c.scroller.scrollLeft,!0),gg(a,"scroll",a))}),eg(c.scrollbarV,"scroll",function(){c.scroller.clientHeight&&gd(a,c.scrollbarV.scrollTop)}),eg(c.scrollbarH,"scroll",function(){c.scroller.clientHeight&&hd(a,c.scrollbarH.scrollLeft)}),eg(c.scroller,"mousewheel",function(b){kd(a,b)}),eg(c.scroller,"DOMMouseScroll",function(b){kd(a,b)}),eg(c.scrollbarH,"mousedown",e),eg(c.scrollbarV,"mousedown",e),eg(c.wrapper,"scroll",function(){c.wrapper.scrollTop=c.wrapper.scrollLeft=0}),eg(c.input,"keyup",Ac(a,td)),eg(c.input,"input",function(){g&&!d&&a.display.inputHasSelection&&(a.display.inputHasSelection=null),Nc(a)}),eg(c.input,"keydown",Ac(a,rd)),eg(c.input,"keypress",Ac(a,ud)),eg(c.input,"focus",Fg(vd,a)),eg(c.input,"blur",Fg(wd,a)),a.options.dragDrop&&(eg(c.scroller,"dragstart",function(b){fd(a,b)}),eg(c.scroller,"dragenter",f),eg(c.scroller,"dragover",f),eg(c.scroller,"drop",Ac(a,ed))),eg(c.scroller,"paste",function(b){Vc(c,b)||(a.state.pasteIncoming=!0,Qc(a),Nc(a))}),eg(c.input,"paste",function(){if(h&&!a.state.fakedLastChar&&!(new Date-a.state.lastMiddleDown<200)){var b=c.input.selectionStart,d=c.input.selectionEnd;c.input.value+="$",c.input.selectionStart=b,c.input.selectionEnd=d,a.state.fakedLastChar=!0}a.state.pasteIncoming=!0,Nc(a)}),eg(c.input,"cut",i),eg(c.input,"copy",i),m&&eg(c.sizer,"mouseup",function(){Qg()==c.input&&c.input.blur(),Qc(a)})}function Uc(a){var b=a.display;b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,a.setSize()}function Vc(a,b){for(var c=cg(b);c!=a.wrapper;c=c.parentNode)if(!c||c.ignoreEvents||c.parentNode==a.sizer&&c!=a.mover)return!0}function Wc(a,b,c,d){var e=a.display;if(!c){var f=cg(b);if(f==e.scrollbarH||f==e.scrollbarV||f==e.scrollbarFiller||f==e.gutterFiller)return null}var g,h,i=e.lineSpace.getBoundingClientRect();try{g=b.clientX-i.left,h=b.clientY-i.top}catch(b){return null}var k,j=rc(a,g,h);if(d&&1==j.xRel&&(k=Df(a.doc,j.line).text).length==j.ch){var l=vg(k,k.length,a.options.tabSize)-k.length;j=nb(j.line,Math.max(0,Math.round((g-Yb(a.display).left)/vc(a.display))-l))}return j}function Xc(a){if(!lg(this,a)){var b=this,c=b.display;if(c.shift=a.shiftKey,Vc(c,a))return h||(c.scroller.draggable=!1,setTimeout(function(){c.scroller.draggable=!0},100)),void 0;if(!cd(b,a)){var d=Wc(b,a);switch(window.focus(),dg(a)){case 1:d?$c(b,a,d):cg(a)==c.scroller&&$f(a);break;case 2:h&&(b.state.lastMiddleDown=+new Date),d&&Cb(b.doc,d),setTimeout(Fg(Qc,b),20),$f(a);break;case 3:v&&xd(b,a)}}}}function $c(a,b,c){setTimeout(Fg(Rc,a),0);var e,d=+new Date;Zc&&Zc.time>d-400&&0==ob(Zc.pos,c)?e="triple":Yc&&Yc.time>d-400&&0==ob(Yc.pos,c)?(e="double",Zc={time:d,pos:c}):(e="single",Yc={time:d,pos:c});var f=a.doc.sel,g=r?b.metaKey:b.ctrlKey;a.options.dragDrop&&Zg&&!g&&!Sc(a)&&"single"==e&&f.contains(c)>-1&&f.somethingSelected()?_c(a,b,c):ad(a,b,c,e,g)}function _c(a,c,e){var f=a.display,g=Ac(a,function(i){h&&(f.scroller.draggable=!1),a.state.draggingText=!1,fg(document,"mouseup",g),fg(f.scroller,"drop",g),Math.abs(c.clientX-i.clientX)+Math.abs(c.clientY-i.clientY)<10&&($f(i),Cb(a.doc,e),Qc(a),b&&!d&&setTimeout(function(){document.body.focus(),Qc(a)},20))});h&&(f.scroller.draggable=!0),a.state.draggingText=g,f.scroller.dragDrop&&f.scroller.dragDrop(),eg(document,"mouseup",g),eg(f.scroller,"drop",g)}function ad(a,b,c,d,f){function p(b){if(0!=ob(o,b))if(o=b,"rect"==d){for(var e=[],f=a.options.tabSize,g=vg(Df(i,c.line).text,c.ch,f),h=vg(Df(i,b.line).text,b.ch,f),m=Math.min(g,h),n=Math.max(g,h),p=Math.min(c.line,b.line),q=Math.min(a.lastLine(),Math.max(c.line,b.line));q>=p;p++){var r=Df(i,p).text,s=wg(r,m,f);m==n?e.push(new tb(nb(p,s),nb(p,s))):r.length>s&&e.push(new tb(nb(p,s),nb(p,wg(r,n,f))))}e.length||e.push(new tb(c,c)),Ib(i,ub(l.ranges.slice(0,k).concat(e),k),sg)}else{var t=j,u=t.anchor,v=b;if("single"!=d){if("double"==d)var w=Yd(i,b);else var w=new tb(nb(b.line,0),xb(i,nb(b.line+1,0)));ob(w.anchor,u)>0?(v=w.head,u=rb(t.from(),w.anchor)):(v=w.anchor,u=qb(t.to(),w.head))}var e=l.ranges.slice(0);e[k]=new tb(xb(i,u),v),Ib(i,ub(e,k),sg)}}function s(b){var c=++r,e=Wc(a,b,!0,"rect"==d);if(e)if(0!=ob(e,o)){Rc(a),p(e);var f=P(h,i);(e.line>=f.to||e.line<f.from)&&setTimeout(Ac(a,function(){r==c&&s(b)}),150)}else{var g=b.clientY<q.top?-20:b.clientY>q.bottom?20:0;g&&setTimeout(Ac(a,function(){r==c&&(h.scroller.scrollTop+=g,s(b))}),50)}}function t(b){r=1/0,$f(b),Qc(a),fg(document,"mousemove",u),fg(document,"mouseup",v),i.history.lastSelOrigin=null}var h=a.display,i=a.doc;$f(b);var j,k,l=i.sel;if(f&&!b.shiftKey?(k=i.sel.contains(c),j=k>-1?i.sel.ranges[k]:new tb(c,c)):j=i.sel.primary(),b.altKey)d="rect",f||(j=new tb(c,c)),c=Wc(a,b,!0,!0),k=-1;else if("double"==d){var m=Yd(i,c);j=a.display.shift||i.extend?Bb(i,j,m.anchor,m.head):m}else if("triple"==d){var n=new tb(nb(c.line,0),xb(i,nb(c.line+1,0)));j=a.display.shift||i.extend?Bb(i,j,n.anchor,n.head):n}else j=Bb(i,j,c);f?k>-1?Eb(i,k,j,sg):(k=i.sel.ranges.length,Ib(i,ub(i.sel.ranges.concat([j]),k),{scroll:!1,origin:"*mouse"})):(k=0,Ib(i,new sb([j],0),sg),l=i.sel);var o=c,q=h.wrapper.getBoundingClientRect(),r=0,u=Ac(a,function(a){(g&&!e?a.buttons:dg(a))?s(a):t(a)}),v=Ac(a,t);eg(document,"mousemove",u),eg(document,"mouseup",v)}function bd(a,b,c,d,e){try{var f=b.clientX,g=b.clientY}catch(b){return!1}if(f>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&$f(b);var h=a.display,i=h.lineDiv.getBoundingClientRect();if(g>i.bottom||!ng(a,c))return ag(b);g-=i.top-h.viewOffset;for(var j=0;j<a.options.gutters.length;++j){var k=h.gutters.childNodes[j];if(k&&k.getBoundingClientRect().right>=f){var l=If(a.doc,g),m=a.options.gutters[j];return e(a,c,a,l,m,b),ag(b)}}}function cd(a,b){return bd(a,b,"gutterClick",!0,jg)}function ed(a){var b=this;if(!lg(b,a)&&!Vc(b.display,a)){$f(a),g&&(dd=+new Date);var c=Wc(b,a,!0),d=a.dataTransfer.files;if(c&&!Sc(b))if(d&&d.length&&window.FileReader&&window.File)for(var e=d.length,f=Array(e),h=0,i=function(a,d){var g=new FileReader;g.onload=Ac(b,function(){if(f[d]=g.result,++h==e){c=xb(b.doc,c);var a={from:c,to:c,text:eh(f.join("\n")),origin:"paste"};Fd(b.doc,a),Hb(b.doc,vb(c,zd(a)))}}),g.readAsText(a)},j=0;e>j;++j)i(d[j],j);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return b.state.draggingText(a),setTimeout(Fg(Qc,b),20),void 0;try{var f=a.dataTransfer.getData("Text");if(f){var k=b.state.draggingText&&b.listSelections();if(Jb(b.doc,vb(c,c)),k)for(var j=0;j<k.length;++j)Ld(b.doc,"",k[j].anchor,k[j].head,"drag");b.replaceSelection(f,"around","paste"),Qc(b)}}catch(a){}}}}function fd(a,b){if(g&&(!a.state.draggingText||+new Date-dd<100))return bg(b),void 0;if(!lg(a,b)&&!Vc(a.display,b)&&(b.dataTransfer.setData("Text",a.getSelection()),b.dataTransfer.setDragImage&&!l)){var c=Lg("img",null,null,"position: fixed; left: 0; top: 0;");c.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",k&&(c.width=c.height=1,a.display.wrapper.appendChild(c),c._top=c.offsetTop),b.dataTransfer.setDragImage(c,0,0),k&&c.parentNode.removeChild(c)}}function gd(b,c){Math.abs(b.doc.scrollTop-c)<2||(b.doc.scrollTop=c,a||U(b,{top:c}),b.display.scroller.scrollTop!=c&&(b.display.scroller.scrollTop=c),b.display.scrollbarV.scrollTop!=c&&(b.display.scrollbarV.scrollTop=c),a&&U(b),Sb(b,100))}function hd(a,b,c){(c?b==a.doc.scrollLeft:Math.abs(a.doc.scrollLeft-b)<2)||(b=Math.min(b,a.display.scroller.scrollWidth-a.display.scroller.clientWidth),a.doc.scrollLeft=b,Q(a),a.display.scroller.scrollLeft!=b&&(a.display.scroller.scrollLeft=b),a.display.scrollbarH.scrollLeft!=b&&(a.display.scrollbarH.scrollLeft=b))}function kd(b,c){var d=c.wheelDeltaX,e=c.wheelDeltaY;null==d&&c.detail&&c.axis==c.HORIZONTAL_AXIS&&(d=c.detail),null==e&&c.detail&&c.axis==c.VERTICAL_AXIS?e=c.detail:null==e&&(e=c.wheelDelta);var f=b.display,g=f.scroller;if(d&&g.scrollWidth>g.clientWidth||e&&g.scrollHeight>g.clientHeight){if(e&&r&&h)a:for(var i=c.target,j=f.view;i!=g;i=i.parentNode)for(var l=0;l<j.length;l++)if(j[l].node==i){b.display.currentWheelTarget=i;break a}if(d&&!a&&!k&&null!=jd)return e&&gd(b,Math.max(0,Math.min(g.scrollTop+e*jd,g.scrollHeight-g.clientHeight))),hd(b,Math.max(0,Math.min(g.scrollLeft+d*jd,g.scrollWidth-g.clientWidth))),$f(c),f.wheelStartX=null,void 0;if(e&&null!=jd){var m=e*jd,n=b.doc.scrollTop,o=n+f.wrapper.clientHeight;0>m?n=Math.max(0,n+m-50):o=Math.min(b.doc.height,o+m+50),U(b,{top:n,bottom:o})}20>id&&(null==f.wheelStartX?(f.wheelStartX=g.scrollLeft,f.wheelStartY=g.scrollTop,f.wheelDX=d,f.wheelDY=e,setTimeout(function(){if(null!=f.wheelStartX){var a=g.scrollLeft-f.wheelStartX,b=g.scrollTop-f.wheelStartY,c=b&&f.wheelDY&&b/f.wheelDY||a&&f.wheelDX&&a/f.wheelDX;f.wheelStartX=f.wheelStartY=null,c&&(jd=(jd*id+c)/(id+1),++id)}},200)):(f.wheelDX+=d,f.wheelDY+=e))}}function ld(a,b,c){if("string"==typeof b&&(b=ie[b],!b))return!1;a.display.pollingFast&&Oc(a)&&(a.display.pollingFast=!1);var d=a.display.shift,e=!1;try{Sc(a)&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=qg}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function md(a){var b=a.state.keyMaps.slice(0);return a.options.extraKeys&&b.push(a.options.extraKeys),b.push(a.options.keyMap),b}function od(a,b){var c=ke(a.options.keyMap),d=c.auto;clearTimeout(nd),d&&!me(b)&&(nd=setTimeout(function(){ke(a.options.keyMap)==c&&(a.options.keyMap=d.call?d.call(null,a):d,F(a))},50));var e=ne(b,!0),f=!1;if(!e)return!1;var g=md(a);return f=b.shiftKey?le("Shift-"+e,g,function(b){return ld(a,b,!0)})||le(e,g,function(b){return("string"==typeof b?/^go[A-Z]/.test(b):b.motion)?ld(a,b):void 0}):le(e,g,function(b){return ld(a,b)}),f&&($f(b),Rb(a),jg(a,"keyHandled",a,e,b)),f}function pd(a,b,c){var d=le("'"+c+"'",md(a),function(b){return ld(a,b,!0)});return d&&($f(b),Rb(a),jg(a,"keyHandled",a,"'"+c+"'",b)),d}function rd(a){var c=this;if(Rc(c),!lg(c,a)){b&&27==a.keyCode&&(a.returnValue=!1);var d=a.keyCode;c.display.shift=16==d||a.shiftKey;var e=od(c,a);k&&(qd=e?d:null,!e&&88==d&&!gh&&(r?a.metaKey:a.ctrlKey)&&c.replaceSelection("",null,"cut")),18!=d||/\bCodeMirror-crosshair\b/.test(c.display.lineDiv.className)||sd(c)}}function sd(a){function c(a){18!=a.keyCode&&a.altKey||(Sg(b,"CodeMirror-crosshair"),fg(document,"keyup",c),fg(document,"mouseover",c))}var b=a.display.lineDiv;Tg(b,"CodeMirror-crosshair"),eg(document,"keyup",c),eg(document,"mouseover",c)}function td(a){lg(this,a)||16==a.keyCode&&(this.doc.sel.shift=!1)}function ud(a){var b=this;if(!lg(b,a)){var c=a.keyCode,e=a.charCode;if(k&&c==qd)return qd=null,$f(a),void 0;if(!(k&&(!a.which||a.which<10)||m)||!od(b,a)){var f=String.fromCharCode(null==e?c:e);pd(b,a,f)||(g&&!d&&(b.display.inputHasSelection=null),Nc(b))}}}function vd(a){"nocursor"!=a.options.readOnly&&(a.state.focused||(gg(a,"focus",a),a.state.focused=!0,Tg(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(Pc(a),h&&setTimeout(Fg(Pc,a,!0),0))),Mc(a),Rb(a))}function wd(a){a.state.focused&&(gg(a,"blur",a),a.state.focused=!1,Sg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150)}function xd(a,b){function j(){if(null!=c.input.selectionStart){var b=a.somethingSelected(),d=c.input.value="\u200b"+(b?c.input.value:"");c.prevInput=b?"":"\u200b",c.input.selectionStart=1,c.input.selectionEnd=d.length}}function l(){if(c.inputDiv.style.position="relative",c.input.style.cssText=i,d&&(c.scrollbarV.scrollTop=c.scroller.scrollTop=f),Mc(a),null!=c.input.selectionStart){(!g||d)&&j();var b=0,e=function(){c.selForContextMenu==a.doc.sel&&0==c.input.selectionStart?Ac(a,ie.selectAll)(a):b++<10?c.detectingSelectAll=setTimeout(e,500):Pc(a)};c.detectingSelectAll=setTimeout(e,200)}}if(!lg(a,b,"contextmenu")){var c=a.display;if(!Vc(c,b)&&!yd(a,b)){var e=Wc(a,b),f=c.scroller.scrollTop;if(e&&!k){var h=a.options.resetSelectionOnContextMenu;h&&-1==a.doc.sel.contains(e)&&Ac(a,Ib)(a.doc,vb(e),rg);var i=c.input.style.cssText;if(c.inputDiv.style.position="absolute",c.input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(b.clientY-5)+"px; left: "+(b.clientX-5)+"px; z-index: 1000; background: "+(g?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",Qc(a),Pc(a),a.somethingSelected()||(c.input.value=c.prevInput=" "),c.selForContextMenu=a.doc.sel,clearTimeout(c.detectingSelectAll),g&&!d&&j(),v){bg(b);var m=function(){fg(window,"mouseup",m),setTimeout(l,20)};eg(window,"mouseup",m)}else setTimeout(l,50)}}}}function yd(a,b){return ng(a,"gutterContextMenu")?bd(a,b,"gutterContextMenu",!1,gg):!1}function Ad(a,b){if(ob(a,b.from)<0)return a;if(ob(a,b.to)<=0)return zd(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=zd(b).ch-b.to.ch),nb(c,d)}function Bd(a,b){for(var c=[],d=0;d<a.sel.ranges.length;d++){var e=a.sel.ranges[d];c.push(new tb(Ad(e.anchor,b),Ad(e.head,b)))}return ub(c,a.sel.primIndex)}function Cd(a,b,c){return a.line==b.line?nb(c.line,a.ch-b.ch+c.ch):nb(c.line+(a.line-b.line),a.ch)}function Dd(a,b,c){for(var d=[],e=nb(a.first,0),f=e,g=0;g<b.length;g++){var h=b[g],i=Cd(h.from,e,f),j=Cd(zd(h),e,f);if(e=h.to,f=j,"around"==c){var k=a.sel.ranges[g],l=ob(k.head,k.anchor)<0;d[g]=new tb(l?j:i,l?i:j)}else d[g]=new tb(i,i)}return new sb(d,a.sel.primIndex)}function Ed(a,b,c){var d={canceled:!1,from:b.from,to:b.to,text:b.text,origin:b.origin,cancel:function(){this.canceled=!0}};return c&&(d.update=function(b,c,d,e){b&&(this.from=xb(a,b)),c&&(this.to=xb(a,c)),d&&(this.text=d),void 0!==e&&(this.origin=e)}),gg(a,"beforeChange",a,d),a.cm&&gg(a.cm,"beforeChange",a.cm,d),d.canceled?null:{from:d.from,to:d.to,text:d.text,origin:d.origin}}function Fd(a,b,c){if(a.cm){if(!a.cm.curOp)return Ac(a.cm,Fd)(a,b,c);if(a.cm.state.suppressEdits)return}if(!(ng(a,"beforeChange")||a.cm&&ng(a.cm,"beforeChange"))||(b=Ed(a,b,!0))){var d=w&&!c&&Ge(a,b.from,b.to);if(d)for(var e=d.length-1;e>=0;--e)Gd(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text});else Gd(a,b)}}function Gd(a,b){if(1!=b.text.length||""!=b.text[0]||0!=ob(b.from,b.to)){var c=Bd(a,b);Pf(a,b,c,a.cm?a.cm.curOp.id:0/0),Jd(a,b,c,De(a,b));var d=[];Bf(a,function(a,c){c||-1!=Bg(d,a.history)||(Zf(a.history,b),d.push(a.history)),Jd(a,b,null,De(a,b))})}}function Hd(a,b,c){if(!a.cm||!a.cm.state.suppressEdits){for(var e,d=a.history,f=a.sel,g="undo"==b?d.done:d.undone,h="undo"==b?d.undone:d.done,i=0;i<g.length&&(e=g[i],c?!e.ranges||e.equals(a.sel):e.ranges);i++);if(i!=g.length){for(d.lastOrigin=d.lastSelOrigin=null;e=g.pop(),e.ranges;){if(Sf(e,h),c&&!e.equals(a.sel))return Ib(a,e,{clearRedo:!1}),void 0;f=e}var j=[];Sf(f,h),h.push({changes:j,generation:d.generation}),d.generation=e.generation||++d.maxGeneration;for(var k=ng(a,"beforeChange")||a.cm&&ng(a.cm,"beforeChange"),i=e.changes.length-1;i>=0;--i){var l=e.changes[i];if(l.origin=b,k&&!Ed(a,l,!1))return g.length=0,void 0;j.push(Mf(a,l));var m=i?Bd(a,l,null):zg(g);Jd(a,l,m,Fe(a,l)),!i&&a.cm&&a.cm.scrollIntoView(l);var n=[];Bf(a,function(a,b){b||-1!=Bg(n,a.history)||(Zf(a.history,l),n.push(a.history)),Jd(a,l,null,Fe(a,l))})}}}}function Id(a,b){if(0!=b&&(a.first+=b,a.sel=new sb(Cg(a.sel.ranges,function(a){return new tb(nb(a.anchor.line+b,a.anchor.ch),nb(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){Fc(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;d<c.viewTo;d++)Gc(a.cm,d,"gutter")}}function Jd(a,b,c,d){if(a.cm&&!a.cm.curOp)return Ac(a.cm,Jd)(a,b,c,d);if(b.to.line<a.first)return Id(a,b.text.length-1-(b.to.line-b.from.line)),void 0;if(!(b.from.line>a.lastLine())){if(b.from.line<a.first){var e=b.text.length-1-(a.first-b.from.line);Id(a,e),b={from:nb(a.first,0),to:nb(b.to.line+e,b.to.ch),text:[zg(b.text)],origin:b.origin}}var f=a.lastLine();b.to.line>f&&(b={from:b.from,to:nb(f,Df(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=Ef(a,b.from,b.to),c||(c=Bd(a,b,null)),a.cm?Kd(a.cm,b,d):uf(a,b,d),Jb(a,c,rg)}}function Kd(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping||(i=Hf(Qe(Df(d,f.line))),d.iter(i,g.line+1,function(a){return a==e.maxLine?(h=!0,!0):void 0})),d.sel.contains(b.from,b.to)>-1&&mg(a),uf(d,b,c,D(a)),a.options.lineWrapping||(d.iter(i,f.line+b.text.length,function(a){var b=K(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,h=!1)}),h&&(a.curOp.updateMaxLine=!0)),d.frontier=Math.min(d.frontier,f.line),Sb(a,400);var j=b.text.length-(g.line-f.line)-1;f.line!=g.line||1!=b.text.length||tf(a.doc,b)?Fc(a,f.line,g.line+1,j):Gc(a,f.line,"text");var k=ng(a,"changes"),l=ng(a,"change");if(l||k){var m={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin};l&&jg(a,"change",a,m),k&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(m)}a.display.selForContextMenu=null}function Ld(a,b,c,d,e){if(d||(d=c),ob(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=eh(b)),Fd(a,{from:c,to:d,text:b,origin:e})}function Md(a,b){var c=a.display,d=c.sizer.getBoundingClientRect(),e=null;if(b.top+d.top<0?e=!0:b.bottom+d.top>(window.innerHeight||document.documentElement.clientHeight)&&(e=!1),null!=e&&!o){var f=Lg("div","\u200b",null,"position: absolute; top: "+(b.top-c.viewOffset-Wb(a.display))+"px; height: "+(b.bottom-b.top+pg)+"px; left: "+b.left+"px; width: 2px;");a.display.lineSpace.appendChild(f),f.scrollIntoView(e),a.display.lineSpace.removeChild(f)}}function Nd(a,b,c,d){for(null==d&&(d=0);;){var e=!1,f=oc(a,b),g=c&&c!=b?oc(a,c):f,h=Pd(a,Math.min(f.left,g.left),Math.min(f.top,g.top)-d,Math.max(f.left,g.left),Math.max(f.bottom,g.bottom)+d),i=a.doc.scrollTop,j=a.doc.scrollLeft;if(null!=h.scrollTop&&(gd(a,h.scrollTop),Math.abs(a.doc.scrollTop-i)>1&&(e=!0)),null!=h.scrollLeft&&(hd(a,h.scrollLeft),Math.abs(a.doc.scrollLeft-j)>1&&(e=!0)),!e)return f}}function Od(a,b,c,d,e){var f=Pd(a,b,c,d,e);null!=f.scrollTop&&gd(a,f.scrollTop),null!=f.scrollLeft&&hd(a,f.scrollLeft)}function Pd(a,b,c,d,e){var f=a.display,g=uc(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=f.scroller.clientHeight-pg,j={},k=a.doc.height+Xb(f),l=g>c,m=e>k-g;if(h>c)j.scrollTop=l?0:c;else if(e>h+i){var n=Math.min(c,(m?k:e)-i);n!=h&&(j.scrollTop=n)}var o=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft,p=f.scroller.clientWidth-pg;b+=f.gutters.offsetWidth,d+=f.gutters.offsetWidth;var q=f.gutters.offsetWidth,r=q+10>b;return o+q>b||r?(r&&(b=0),j.scrollLeft=Math.max(0,b-10-q)):d>p+o-3&&(j.scrollLeft=d+10-p),j}function Qd(a,b,c){(null!=b||null!=c)&&Sd(a),null!=b&&(a.curOp.scrollLeft=(null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b),null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c)}function Rd(a){Sd(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?nb(b.line,b.ch-1):b,d=nb(b.line,b.ch+1)),a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function Sd(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=pc(a,b.from),d=pc(a,b.to),e=Pd(a,Math.min(c.left,d.left),Math.min(c.top,d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);a.scrollTo(e.scrollLeft,e.scrollTop)}}function Td(a,b,c,d){var f,e=a.doc;null==c&&(c="add"),"smart"==c&&(a.doc.mode.indent?f=Vb(a,b):c="prev");var g=a.options.tabSize,h=Df(e,b),i=vg(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var k,j=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(k=a.doc.mode.indent(f,h.text.slice(j.length),h.text),k==qg)){if(!d)return;c="prev"}}else k=0,c="not";"prev"==c?k=b>e.first?vg(Df(e,b-1).text,null,g):0:"add"==c?k=i+a.options.indentUnit:"subtract"==c?k=i-a.options.indentUnit:"number"==typeof c&&(k=i+c),k=Math.max(0,k);var l="",m=0;if(a.options.indentWithTabs)for(var n=Math.floor(k/g);n;--n)m+=g,l+="	";if(k>m&&(l+=yg(k-m)),l!=j)Ld(a.doc,l,nb(b,0),nb(b,j.length),"+input");else for(var n=0;n<e.sel.ranges.length;n++){var o=e.sel.ranges[n];if(o.head.line==b&&o.head.ch<j.length){var m=nb(b,j.length);Eb(e,n,new tb(m,m));break}}h.stateAfter=null}function Ud(a,b,c,d){var e=b,f=b,g=a.doc;return"number"==typeof b?f=Df(g,wb(g,b)):e=Hf(b),null==e?null:(d(f,e)&&Gc(a,e,c),f)}function Vd(a,b){for(var c=a.doc.sel.ranges,d=[],e=0;e<c.length;e++){for(var f=b(c[e]);d.length&&ob(f.from,zg(d).to)<=0;){var g=d.pop();if(ob(g.from,f.from)<0){f.from=g.from;break}}d.push(f)}zc(a,function(){for(var b=d.length-1;b>=0;b--)Ld(a.doc,"",d[b].from,d[b].to,"+delete");Rd(a)})}function Wd(a,b,c,d,e){function k(){var b=f+c;return b<a.first||b>=a.first+a.size?j=!1:(f=b,i=Df(a,b))}function l(a){var b=(e?th:uh)(i,g,c,!0);if(null==b){if(a||!k())return j=!1;g=e?(0>c?mh:lh)(i):0>c?i.text.length:0}else g=b;return!0}var f=b.line,g=b.ch,h=c,i=Df(a,f),j=!0;if("char"==d)l();else if("column"==d)l(!0);else if("word"==d||"group"==d)for(var m=null,n="group"==d,o=!0;!(0>c)||l(!o);o=!1){var p=i.text.charAt(g)||"\n",q=Hg(p)?"w":n&&"\n"==p?"n":!n||/\s/.test(p)?null:"p";if(!n||o||q||(q="s"),m&&m!=q){0>c&&(c=1,l());break}if(q&&(m=q),c>0&&!l(!o))break}var r=Nb(a,nb(f,g),h,!0);return j||(r.hitSide=!0),r}function Xd(a,b,c,d){var g,e=a.doc,f=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);g=b.top+c*(h-(0>c?1.5:.5)*uc(a.display))}else"line"==d&&(g=c>0?b.bottom+3:b.top-3);for(;;){var i=rc(a,f,g);if(!i.outside)break;if(0>c?0>=g:g>=e.height){i.hitSide=!0;break}g+=5*c}return i}function Yd(a,b){var c=Df(a,b.line).text,d=b.ch,e=b.ch;if(c){(b.xRel<0||e==c.length)&&d?--d:++e;for(var f=c.charAt(d),g=Hg(f)?Hg:/\s/.test(f)?function(a){return/\s/.test(a)}:function(a){return!/\s/.test(a)&&!Hg(a)};d>0&&g(c.charAt(d-1));)--d;for(;e<c.length&&g(c.charAt(e));)++e}return new tb(nb(b.line,d),nb(b.line,e))}function _d(a,b,c,d){y.defaults[a]=b,c&&($d[a]=d?function(a,b,d){d!=ae&&c(a,b,d)}:c)}function ke(a){return"string"==typeof a?je[a]:a}function re(a,b,c,d,e){if(d&&d.shared)return te(a,b,c,d,e);if(a.cm&&!a.cm.curOp)return Ac(a.cm,re)(a,b,c,d,e);var f=new pe(a,e),g=ob(b,c);if(d&&Eg(d,f,!1),g>0||0==g&&f.clearWhenEmpty!==!1)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=Lg("span",[f.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||(f.widgetNode.ignoreEvents=!0),d.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(Pe(a,b.line,b,c,f)||b.line!=c.line&&Pe(a,c.line,b,c,f))throw new Error("Inserting collapsed marker partially overlapping an existing one");x=!0}f.addToHistory&&Pf(a,{from:b,to:c,origin:"markText"},a.sel,0/0);var j,h=b.line,i=a.cm;if(a.iter(h,c.line+1,function(a){i&&f.collapsed&&!i.options.lineWrapping&&Qe(a)==i.display.maxLine&&(j=!0),f.collapsed&&h!=b.line&&Gf(a,0),Ae(a,new xe(f,h==b.line?b.ch:null,h==c.line?c.ch:null)),++h}),f.collapsed&&a.iter(b.line,c.line+1,function(b){Ue(a,b)&&Gf(b,0)}),f.clearOnEnter&&eg(f,"beforeCursorEnter",function(){f.clear()}),f.readOnly&&(w=!0,(a.history.done.length||a.history.undone.length)&&a.clearHistory()),f.collapsed&&(f.id=++qe,f.atomic=!0),i){if(j&&(i.curOp.updateMaxLine=!0),f.collapsed)Fc(i,b.line,c.line+1);else if(f.className||f.title||f.startStyle||f.endStyle)for(var k=b.line;k<=c.line;k++)Gc(i,k,"text");f.atomic&&Lb(i.doc),jg(i,"markerAdded",i,f)}return f}function te(a,b,c,d,e){d=Eg(d),d.shared=!1;var f=[re(a,b,c,d,e)],g=f[0],h=d.widgetNode;return Bf(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(re(a,xb(a,b),xb(a,c),d,e));for(var i=0;i<a.linked.length;++i)if(a.linked[i].isParent)return;g=zg(f)}),new se(f,g)}function ue(a){return a.findMarks(nb(a.first,0),a.clipPos(nb(a.lastLine())),function(a){return a.parent})}function ve(a,b){for(var c=0;c<b.length;c++){var d=b[c],e=d.find(),f=a.clipPos(e.from),g=a.clipPos(e.to);if(ob(f,g)){var h=re(a,f,g,d.primary,d.primary.type);d.markers.push(h),h.parent=d}}}function we(a){for(var b=0;b<a.length;b++){var c=a[b],d=[c.primary.doc];Bf(c.primary.doc,function(a){d.push(a)});for(var e=0;e<c.markers.length;e++){var f=c.markers[e];-1==Bg(d,f.doc)&&(f.parent=null,c.markers.splice(e--,1))}}}function xe(a,b,c){this.marker=a,this.from=b,this.to=c}function ye(a,b){if(a)for(var c=0;c<a.length;++c){var d=a[c];if(d.marker==b)return d}}function ze(a,b){for(var c,d=0;d<a.length;++d)a[d]!=b&&(c||(c=[])).push(a[d]);return c}function Ae(a,b){a.markedSpans=a.markedSpans?a.markedSpans.concat([b]):[b],b.marker.attachLine(a)}function Be(a,b,c){if(a)for(var e,d=0;d<a.length;++d){var f=a[d],g=f.marker,h=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);if(h||f.from==b&&"bookmark"==g.type&&(!c||!f.marker.insertLeft)){var i=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);(e||(e=[])).push(new xe(g,f.from,i?null:f.to))}}return e}function Ce(a,b,c){if(a)for(var e,d=0;d<a.length;++d){var f=a[d],g=f.marker,h=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);(e||(e=[])).push(new xe(g,i?null:f.from-b,null==f.to?null:f.to-b))}}return e}function De(a,b){var c=zb(a,b.from.line)&&Df(a,b.from.line).markedSpans,d=zb(a,b.to.line)&&Df(a,b.to.line).markedSpans;if(!c&&!d)return null;var e=b.from.ch,f=b.to.ch,g=0==ob(b.from,b.to),h=Be(c,e,g),i=Ce(d,f,g),j=1==b.text.length,k=zg(b.text).length+(j?e:0);if(h)for(var l=0;l<h.length;++l){var m=h[l];if(null==m.to){var n=ye(i,m.marker);n?j&&(m.to=null==n.to?null:n.to+k):m.to=e}}if(i)for(var l=0;l<i.length;++l){var m=i[l];if(null!=m.to&&(m.to+=k),null==m.from){var n=ye(h,m.marker);n||(m.from=k,j&&(h||(h=[])).push(m))}else m.from+=k,j&&(h||(h=[])).push(m)}h&&(h=Ee(h)),i&&i!=h&&(i=Ee(i));var o=[h];if(!j){var q,p=b.text.length-2;if(p>0&&h)for(var l=0;l<h.length;++l)null==h[l].to&&(q||(q=[])).push(new xe(h[l].marker,null,null));for(var l=0;p>l;++l)o.push(q);o.push(i)}return o}function Ee(a){for(var b=0;b<a.length;++b){var c=a[b];null!=c.from&&c.from==c.to&&c.marker.clearWhenEmpty!==!1&&a.splice(b--,1)}return a.length?a:null}function Fe(a,b){var c=Vf(a,b),d=De(a,b);if(!c)return d;if(!d)return c;for(var e=0;e<c.length;++e){var f=c[e],g=d[e];if(f&&g)a:for(var h=0;h<g.length;++h){for(var i=g[h],j=0;j<f.length;++j)if(f[j].marker==i.marker)continue a;
+f.push(i)}else g&&(c[e]=g)}return c}function Ge(a,b,c){var d=null;if(a.iter(b.line,c.line+1,function(a){if(a.markedSpans)for(var b=0;b<a.markedSpans.length;++b){var c=a.markedSpans[b].marker;!c.readOnly||d&&-1!=Bg(d,c)||(d||(d=[])).push(c)}}),!d)return null;for(var e=[{from:b,to:c}],f=0;f<d.length;++f)for(var g=d[f],h=g.find(0),i=0;i<e.length;++i){var j=e[i];if(!(ob(j.to,h.from)<0||ob(j.from,h.to)>0)){var k=[i,1],l=ob(j.from,h.from),m=ob(j.to,h.to);(0>l||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(m>0||!g.inclusiveRight&&!m)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-1}}return e}function He(a){var b=a.markedSpans;if(b){for(var c=0;c<b.length;++c)b[c].marker.detachLine(a);a.markedSpans=null}}function Ie(a,b){if(b){for(var c=0;c<b.length;++c)b[c].marker.attachLine(a);a.markedSpans=b}}function Je(a){return a.inclusiveLeft?-1:0}function Ke(a){return a.inclusiveRight?1:0}function Le(a,b){var c=a.lines.length-b.lines.length;if(0!=c)return c;var d=a.find(),e=b.find(),f=ob(d.from,e.from)||Je(a)-Je(b);if(f)return-f;var g=ob(d.to,e.to)||Ke(a)-Ke(b);return g?g:b.id-a.id}function Me(a,b){var d,c=x&&a.markedSpans;if(c)for(var e,f=0;f<c.length;++f)e=c[f],e.marker.collapsed&&null==(b?e.from:e.to)&&(!d||Le(d,e.marker)<0)&&(d=e.marker);return d}function Ne(a){return Me(a,!0)}function Oe(a){return Me(a,!1)}function Pe(a,b,c,d,e){var f=Df(a,b),g=x&&f.markedSpans;if(g)for(var h=0;h<g.length;++h){var i=g[h];if(i.marker.collapsed){var j=i.marker.find(0),k=ob(j.from,c)||Je(i.marker)-Je(e),l=ob(j.to,d)||Ke(i.marker)-Ke(e);if(!(k>=0&&0>=l||0>=k&&l>=0)&&(0>=k&&(ob(j.to,c)||Ke(i.marker)-Je(e))>0||k>=0&&(ob(j.from,d)||Je(i.marker)-Ke(e))<0))return!0}}}function Qe(a){for(var b;b=Ne(a);)a=b.find(-1,!0).line;return a}function Re(a){for(var b,c;b=Oe(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function Se(a,b){var c=Df(a,b),d=Qe(c);return c==d?b:Hf(d)}function Te(a,b){if(b>a.lastLine())return b;var d,c=Df(a,b);if(!Ue(a,c))return b;for(;d=Oe(c);)c=d.find(1,!0).line;return Hf(c)+1}function Ue(a,b){var c=x&&b.markedSpans;if(c)for(var d,e=0;e<c.length;++e)if(d=c[e],d.marker.collapsed){if(null==d.from)return!0;if(!d.marker.widgetNode&&0==d.from&&d.marker.inclusiveLeft&&Ve(a,b,d))return!0}}function Ve(a,b,c){if(null==c.to){var d=c.marker.find(1,!0);return Ve(a,d.line,ye(d.line.markedSpans,c.marker))}if(c.marker.inclusiveRight&&c.to==b.text.length)return!0;for(var e,f=0;f<b.markedSpans.length;++f)if(e=b.markedSpans[f],e.marker.collapsed&&!e.marker.widgetNode&&e.from==c.to&&(null==e.to||e.to!=c.from)&&(e.marker.inclusiveLeft||c.marker.inclusiveRight)&&Ve(a,b,e))return!0}function Xe(a,b,c){Jf(b)<(a.curOp&&a.curOp.scrollTop||a.doc.scrollTop)&&Qd(a,null,c)}function Ye(a){return null!=a.height?a.height:(Pg(document.body,a.node)||Og(a.cm.display.measure,Lg("div",[a.node],null,"position: relative")),a.height=a.node.offsetHeight)}function Ze(a,b,c,d){var e=new We(a,c,d);return e.noHScroll&&(a.display.alignWidgets=!0),Ud(a,b,"widget",function(b){var c=b.widgets||(b.widgets=[]);if(null==e.insertAt?c.push(e):c.splice(Math.min(c.length-1,Math.max(0,e.insertAt)),0,e),e.line=b,!Ue(a.doc,b)){var d=Jf(b)<a.doc.scrollTop;Gf(b,b.height+Ye(e)),d&&Qd(a,null,e.height),a.curOp.forceUpdate=!0}return!0}),e}function _e(a,b,c,d){a.text=b,a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null),null!=a.order&&(a.order=null),He(a),Ie(a,c);var e=d?d(a):1;e!=a.height&&Gf(a,e)}function af(a){a.parent=null,He(a)}function bf(a,b){if(a)for(;;){var c=a.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!c)break;a=a.slice(0,c.index)+a.slice(c.index+c[0].length);var d=c[1]?"bgClass":"textClass";null==b[d]?b[d]=c[2]:new RegExp("(?:^|s)"+c[2]+"(?:$|s)").test(b[d])||(b[d]+=" "+c[2])}return a}function cf(a,b){if(a.blankLine)return a.blankLine(b);if(a.innerMode){var c=y.innerMode(a,b);return c.mode.blankLine?c.mode.blankLine(c.state):void 0}}function df(a,b,c){for(var d=0;10>d;d++){var e=a.token(b,c);if(b.pos>b.start)return e}throw new Error("Mode "+a.name+" failed to advance stream.")}function ef(a,b,c,d,e,f,g){var h=c.flattenSpans;null==h&&(h=a.options.flattenSpans);var l,i=0,j=null,k=new oe(b,a.options.tabSize);for(""==b&&bf(cf(c,d),f);!k.eol();){if(k.pos>a.options.maxHighlightLength?(h=!1,g&&hf(a,b,d,k.pos),k.pos=b.length,l=null):l=bf(df(c,k,d),f),a.options.addModeClass){var m=y.innerMode(c,d).mode.name;m&&(l="m-"+(l?m+" "+l:m))}h&&j==l||(i<k.start&&e(k.start,j),i=k.start,j=l),k.start=k.pos}for(;i<k.pos;){var n=Math.min(k.pos,i+5e4);e(n,j),i=n}}function ff(a,b,c,d){var e=[a.state.modeGen],f={};ef(a,b.text,a.doc.mode,c,function(a,b){e.push(a,b)},f,d);for(var g=0;g<a.state.overlays.length;++g){var h=a.state.overlays[g],i=1,j=0;ef(a,b.text,h.mode,!0,function(a,b){for(var c=i;a>j;){var d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"cm-overlay "+b),i=c+2;else for(;i>c;c+=2){var f=e[c+1];e[c+1]=(f?f+" ":"")+"cm-overlay "+b}},f)}return{styles:e,classes:f.bgClass||f.textClass?f:null}}function gf(a,b){if(!b.styles||b.styles[0]!=a.state.modeGen){var c=ff(a,b,b.stateAfter=Vb(a,Hf(b)));b.styles=c.styles,c.classes?b.styleClasses=c.classes:b.styleClasses&&(b.styleClasses=null)}return b.styles}function hf(a,b,c,d){var e=a.doc.mode,f=new oe(b,a.options.tabSize);for(f.start=f.pos=d||0,""==b&&cf(e,c);!f.eol()&&f.pos<=a.options.maxHighlightLength;)df(e,f,c),f.start=f.pos}function lf(a,b){if(!a||/^\s*$/.test(a))return null;var c=b.addModeClass?kf:jf;return c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function mf(a,b){var c=Lg("span",null,null,h?"padding-right: .1px":null),d={pre:Lg("pre",[c]),content:c,col:0,pos:0,cm:a};b.measure={};for(var e=0;e<=(b.rest?b.rest.length:0);e++){var i,f=e?b.rest[e-1]:b.line;d.pos=0,d.addToken=of,(g||h)&&a.getOption("lineWrapping")&&(d.addToken=pf(d.addToken)),dh(a.display.measure)&&(i=Kf(f))&&(d.addToken=qf(d.addToken,i)),d.map=[],sf(f,d,gf(a,f)),f.styleClasses&&(f.styleClasses.bgClass&&(d.bgClass=Ug(f.styleClasses.bgClass,d.bgClass||"")),f.styleClasses.textClass&&(d.textClass=Ug(f.styleClasses.textClass,d.textClass||""))),0==d.map.length&&d.map.push(0,0,d.content.appendChild(bh(a.display.measure))),0==e?(b.measure.map=d.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(d.map),(b.measure.caches||(b.measure.caches=[])).push({}))}return gg(a,"renderLine",a,b.line,d.pre),d}function nf(a){var b=Lg("span","\u2022","cm-invalidchar");return b.title="\\u"+a.charCodeAt(0).toString(16),b}function of(a,b,c,e,f,g){if(b){var h=a.cm.options.specialChars,i=!1;if(h.test(b))for(var j=document.createDocumentFragment(),k=0;;){h.lastIndex=k;var l=h.exec(b),m=l?l.index-k:b.length-k;if(m){var n=document.createTextNode(b.slice(k,k+m));d?j.appendChild(Lg("span",[n])):j.appendChild(n),a.map.push(a.pos,a.pos+m,n),a.col+=m,a.pos+=m}if(!l)break;if(k+=m+1,"	"==l[0]){var o=a.cm.options.tabSize,p=o-a.col%o,n=j.appendChild(Lg("span",yg(p),"cm-tab"));a.col+=p}else{var n=a.cm.options.specialCharPlaceholder(l[0]);d?j.appendChild(Lg("span",[n])):j.appendChild(n),a.col+=1}a.map.push(a.pos,a.pos+1,n),a.pos++}else{a.col+=b.length;var j=document.createTextNode(b);a.map.push(a.pos,a.pos+b.length,j),d&&(i=!0),a.pos+=b.length}if(c||e||f||i){var q=c||"";e&&(q+=e),f&&(q+=f);var r=Lg("span",[j],q);return g&&(r.title=g),a.content.appendChild(r)}a.content.appendChild(j)}}function pf(a){function b(a){for(var b=" ",c=0;c<a.length-2;++c)b+=c%2?" ":"\xa0";return b+=" "}return function(c,d,e,f,g,h){a(c,d.replace(/ {3,}/g,b),e,f,g,h)}}function qf(a,b){return function(c,d,e,f,g,h){e=e?e+" cm-force-border":"cm-force-border";for(var i=c.pos,j=i+d.length;;){for(var k=0;k<b.length;k++){var l=b[k];if(l.to>i&&l.from<=i)break}if(l.to>=j)return a(c,d,e,f,g,h);a(c,d.slice(0,l.to-i),e,f,null,h),f=null,d=d.slice(l.to-i),i=l.to}}}function rf(a,b,c,d){var e=!d&&c.widgetNode;e&&(a.map.push(a.pos,a.pos+b,e),a.content.appendChild(e)),a.pos+=b}function sf(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var k,m,n,o,p,q,h=e.length,i=0,g=1,j="",l=0;;){if(l==i){m=n=o=p="",q=null,l=1/0;for(var r=[],s=0;s<d.length;++s){var t=d[s],u=t.marker;t.from<=i&&(null==t.to||t.to>i)?(null!=t.to&&l>t.to&&(l=t.to,n=""),u.className&&(m+=" "+u.className),u.startStyle&&t.from==i&&(o+=" "+u.startStyle),u.endStyle&&t.to==l&&(n+=" "+u.endStyle),u.title&&!p&&(p=u.title),u.collapsed&&(!q||Le(q.marker,u)<0)&&(q=t)):t.from>i&&l>t.from&&(l=t.from),"bookmark"==u.type&&t.from==i&&u.widgetNode&&r.push(u)}if(q&&(q.from||0)==i&&(rf(b,(null==q.to?h+1:q.to)-i,q.marker,null==q.from),null==q.to))return;if(!q&&r.length)for(var s=0;s<r.length;++s)rf(b,0,r[s])}if(i>=h)break;for(var v=Math.min(h,l);;){if(j){var w=i+j.length;if(!q){var x=w>v?j.slice(0,v-i):j;b.addToken(b,x,k?k+m:m,o,i+x.length==l?n:"",p)}if(w>=v){j=j.slice(v-i),i=v;break}i=w,o=""}j=e.slice(f,f=c[g++]),k=lf(c[g++],b.cm.options)}}else for(var g=1;g<c.length;g+=2)b.addToken(b,e.slice(f,f=c[g]),lf(c[g+1],b.cm.options))}function tf(a,b){return 0==b.from.ch&&0==b.to.ch&&""==zg(b.text)&&(!a.cm||a.cm.options.wholeLineUpdateBefore)}function uf(a,b,c,d){function e(a){return c?c[a]:null}function f(a,c,e){_e(a,c,e,d),jg(a,"change",a,b)}var g=b.from,h=b.to,i=b.text,j=Df(a,g.line),k=Df(a,h.line),l=zg(i),m=e(i.length-1),n=h.line-g.line;if(tf(a,b)){for(var o=0,p=[];o<i.length-1;++o)p.push(new $e(i[o],e(o),d));f(k,k.text,m),n&&a.remove(g.line,n),p.length&&a.insert(g.line,p)}else if(j==k)if(1==i.length)f(j,j.text.slice(0,g.ch)+l+j.text.slice(h.ch),m);else{for(var p=[],o=1;o<i.length-1;++o)p.push(new $e(i[o],e(o),d));p.push(new $e(l+j.text.slice(h.ch),m,d)),f(j,j.text.slice(0,g.ch)+i[0],e(0)),a.insert(g.line+1,p)}else if(1==i.length)f(j,j.text.slice(0,g.ch)+i[0]+k.text.slice(h.ch),e(0)),a.remove(g.line+1,n);else{f(j,j.text.slice(0,g.ch)+i[0],e(0)),f(k,l+k.text.slice(h.ch),m);for(var o=1,p=[];o<i.length-1;++o)p.push(new $e(i[o],e(o),d));n>1&&a.remove(g.line+1,n-1),a.insert(g.line+1,p)}jg(a,"change",a,b)}function vf(a){this.lines=a,this.parent=null;for(var b=0,c=0;b<a.length;++b)a[b].parent=this,c+=a[b].height;this.height=c}function wf(a){this.children=a;for(var b=0,c=0,d=0;d<a.length;++d){var e=a[d];b+=e.chunkSize(),c+=e.height,e.parent=this}this.size=b,this.height=c,this.parent=null}function Bf(a,b,c){function d(a,e,f){if(a.linked)for(var g=0;g<a.linked.length;++g){var h=a.linked[g];if(h.doc!=e){var i=f&&h.sharedHist;(!c||i)&&(b(h.doc,i),d(h.doc,a,i))}}}d(a,null,!0)}function Cf(a,b){if(b.cm)throw new Error("This document is already in use.");a.doc=b,b.cm=a,E(a),A(a),a.options.lineWrapping||L(a),a.options.mode=b.modeOption,Fc(a)}function Df(a,b){if(b-=a.first,0>b||b>=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(f>b){c=e;break}b-=f}return c.lines[b]}function Ef(a,b,c){var d=[],e=b.line;return a.iter(b.line,c.line+1,function(a){var f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e}),d}function Ff(a,b,c){var d=[];return a.iter(b,c,function(a){d.push(a.text)}),d}function Gf(a,b){var c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function Hf(a){if(null==a.parent)return null;for(var b=a.parent,c=Bg(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return c+b.first}function If(a,b){var c=a.first;a:do{for(var d=0;d<a.children.length;++d){var e=a.children[d],f=e.height;if(f>b){a=e;continue a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var d=0;d<a.lines.length;++d){var g=a.lines[d],h=g.height;if(h>b)break;b-=h}return c+d}function Jf(a){a=Qe(a);for(var b=0,c=a.parent,d=0;d<c.lines.length;++d){var e=c.lines[d];if(e==a)break;b+=e.height}for(var f=c.parent;f;c=f,f=c.parent)for(var d=0;d<f.children.length;++d){var g=f.children[d];if(g==c)break;b+=g.height}return b}function Kf(a){var b=a.order;return null==b&&(b=a.order=vh(a.text)),b}function Lf(a){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=a||1}function Mf(a,b){var c={from:pb(b.from),to:zd(b),text:Ef(a,b.from,b.to)};return Tf(a,c,b.from.line,b.to.line+1),Bf(a,function(a){Tf(a,c,b.from.line,b.to.line+1)},!0),c}function Nf(a){for(;a.length;){var b=zg(a);if(!b.ranges)break;a.pop()}}function Of(a,b){return b?(Nf(a.done),zg(a.done)):a.done.length&&!zg(a.done).ranges?zg(a.done):a.done.length>1&&!a.done[a.done.length-2].ranges?(a.done.pop(),zg(a.done)):void 0}function Pf(a,b,c,d){var e=a.history;e.undone.length=0;var g,f=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>f-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(g=Of(e,e.lastOp==d))){var h=zg(g.changes);0==ob(b.from,b.to)&&0==ob(b.from,h.to)?h.to=zd(b):g.changes.push(Mf(a,b))}else{var i=zg(e.done);for(i&&i.ranges||Sf(a.sel,e.done),g={changes:[Mf(a,b)],generation:e.generation},e.done.push(g);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=f,e.lastOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,h||gg(a,"historyAdded")}function Qf(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function Rf(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||Qf(a,f,zg(e.done),b))?e.done[e.done.length-1]=b:Sf(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastOp=c,d&&d.clearRedo!==!1&&Nf(e.undone)}function Sf(a,b){var c=zg(b);c&&c.ranges&&c.equals(a)||b.push(a)}function Tf(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function Uf(a){if(!a)return null;for(var c,b=0;b<a.length;++b)a[b].marker.explicitlyCleared?c||(c=a.slice(0,b)):c&&c.push(a[b]);return c?c.length?c:null:a}function Vf(a,b){var c=b["spans_"+a.id];if(!c)return null;for(var d=0,e=[];d<b.text.length;++d)e.push(Uf(c[d]));return e}function Wf(a,b,c){for(var d=0,e=[];d<a.length;++d){var f=a[d];if(f.ranges)e.push(c?sb.prototype.deepCopy.call(f):f);else{var g=f.changes,h=[];e.push({changes:h});for(var i=0;i<g.length;++i){var k,j=g[i];if(h.push({from:j.from,to:j.to,text:j.text}),b)for(var l in j)(k=l.match(/^spans_(\d+)$/))&&Bg(b,Number(k[1]))>-1&&(zg(h)[l]=j[l],delete j[l])}}}return e}function Xf(a,b,c,d){c<a.line?a.line+=d:b<a.line&&(a.line=b,a.ch=0)}function Yf(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e],g=!0;if(f.ranges){f.copied||(f=a[e]=f.deepCopy(),f.copied=!0);for(var h=0;h<f.ranges.length;h++)Xf(f.ranges[h].anchor,b,c,d),Xf(f.ranges[h].head,b,c,d)}else{for(var h=0;h<f.changes.length;++h){var i=f.changes[h];if(c<i.from.line)i.from=nb(i.from.line+d,i.from.ch),i.to=nb(i.to.line+d,i.to.ch);else if(b<=i.to.line){g=!1;break}}g||(a.splice(0,e+1),e=0)}}}function Zf(a,b){var c=b.from.line,d=b.to.line,e=b.text.length-(d-c)-1;Yf(a.done,c,d,e),Yf(a.undone,c,d,e)}function ag(a){return null!=a.defaultPrevented?a.defaultPrevented:0==a.returnValue}function cg(a){return a.target||a.srcElement}function dg(a){var b=a.which;return null==b&&(1&a.button?b=1:2&a.button?b=3:4&a.button&&(b=2)),r&&a.ctrlKey&&1==b&&(b=3),b}function jg(a,b){function e(a){return function(){a.apply(null,d)}}var c=a._handlers&&a._handlers[b];if(c){var d=Array.prototype.slice.call(arguments,2);hg||(++ig,hg=[],setTimeout(kg,0));for(var f=0;f<c.length;++f)hg.push(e(c[f]))}}function kg(){--ig;var a=hg;hg=null;for(var b=0;b<a.length;++b)a[b]()}function lg(a,b,c){return gg(a,c||b.type,a,b),ag(b)||b.codemirrorIgnore}function mg(a){var b=a._handlers&&a._handlers.cursorActivity;if(b)for(var c=a.curOp.cursorActivityHandlers||(a.curOp.cursorActivityHandlers=[]),d=0;d<b.length;++d)-1==Bg(c,b[d])&&c.push(b[d])}function ng(a,b){var c=a._handlers&&a._handlers[b];return c&&c.length>0}function og(a){a.prototype.on=function(a,b){eg(this,a,b)},a.prototype.off=function(a,b){fg(this,a,b)}}function ug(){this.id=null}function wg(a,b,c){for(var d=0,e=0;;){var f=a.indexOf("	",d);-1==f&&(f=a.length);var g=f-d;if(f==a.length||e+g>=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}}function yg(a){for(;xg.length<=a;)xg.push(zg(xg)+" ");return xg[a]}function zg(a){return a[a.length-1]}function Bg(a,b){for(var c=0;c<a.length;++c)if(a[c]==b)return c;return-1}function Cg(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=b(a[d],d);return c}function Dg(a,b){var c;if(Object.create)c=Object.create(a);else{var d=function(){};d.prototype=a,c=new d}return b&&Eg(b,c),c}function Eg(a,b,c){b||(b={});for(var d in a)!a.hasOwnProperty(d)||c===!1&&b.hasOwnProperty(d)||(b[d]=a[d]);return b}function Fg(a){var b=Array.prototype.slice.call(arguments,1);return function(){return a.apply(null,b)}}function Ig(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function Kg(a){return a.charCodeAt(0)>=768&&Jg.test(a)}function Lg(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f<b.length;++f)e.appendChild(b[f]);return e}function Ng(a){for(var b=a.childNodes.length;b>0;--b)a.removeChild(a.firstChild);return a}function Og(a,b){return Ng(a).appendChild(b)}function Pg(a,b){if(a.contains)return a.contains(b);for(;b=b.parentNode;)if(b==a)return!0}function Qg(){return document.activeElement}function Rg(a){return new RegExp("\\b"+a+"\\b\\s*")}function Sg(a,b){var c=Rg(b);c.test(a.className)&&(a.className=a.className.replace(c,""))}function Tg(a,b){Rg(b).test(a.className)||(a.className+=" "+b)}function Ug(a,b){for(var c=a.split(" "),d=0;d<c.length;d++)c[d]&&!Rg(c[d]).test(b)&&(b+=" "+c[d]);return b}function Vg(a){if(document.body.getElementsByClassName)for(var b=document.body.getElementsByClassName("CodeMirror"),c=0;c<b.length;c++){var d=b[c].CodeMirror;d&&a(d)}}function Xg(){Wg||(Yg(),Wg=!0)}function Yg(){var a;eg(window,"resize",function(){null==a&&(a=setTimeout(function(){a=null,$g=null,Vg(Uc)},100))}),eg(window,"blur",function(){Vg(wd)})}function _g(a){if(null!=$g)return $g;var b=Lg("div",null,null,"width: 50px; height: 50px; overflow-x: scroll");return Og(a,b),b.offsetWidth&&($g=b.offsetHeight-b.clientHeight),$g||0}function bh(a){if(null==ah){var b=Lg("span","\u200b");Og(a,Lg("span",[b,document.createTextNode("x")])),0!=a.firstChild.offsetHeight&&(ah=b.offsetWidth<=1&&b.offsetHeight>2&&!c)}return ah?Lg("span","\u200b"):Lg("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px")}function dh(a){if(null!=ch)return ch;var b=Og(a,document.createTextNode("A\u062eA")),c=Mg(b,0,1).getBoundingClientRect();if(c.left==c.right)return!1;var d=Mg(b,1,2).getBoundingClientRect();return ch=d.right-c.right<3}function ih(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;f<a.length;++f){var g=a[f];(g.from<c&&g.to>b||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function jh(a){return a.level%2?a.to:a.from}function kh(a){return a.level%2?a.from:a.to}function lh(a){var b=Kf(a);return b?jh(b[0]):0}function mh(a){var b=Kf(a);return b?kh(zg(b)):a.text.length}function nh(a,b){var c=Df(a.doc,b),d=Qe(c);d!=c&&(b=Hf(d));var e=Kf(d),f=e?e[0].level%2?mh(d):lh(d):0;return nb(b,f)}function oh(a,b){for(var c,d=Df(a.doc,b);c=Oe(d);)d=c.find(1,!0).line,b=null;var e=Kf(d),f=e?e[0].level%2?lh(d):mh(d):d.text.length;return nb(null==b?Hf(d):b,f)}function ph(a,b,c){var d=a[0].level;return b==d?!0:c==d?!1:c>b}function rh(a,b){qh=null;for(var d,c=0;c<a.length;++c){var e=a[c];if(e.from<b&&e.to>b)return c;if(e.from==b||e.to==b){if(null!=d)return ph(a,e.level,a[d].level)?(e.from!=e.to&&(qh=d),c):(e.from!=e.to&&(qh=c),d);d=c}}return d}function sh(a,b,c,d){if(!d)return b+c;do b+=c;while(b>0&&Kg(a.text.charAt(b)));return b}function th(a,b,c,d){var e=Kf(a);if(!e)return uh(a,b,c,d);for(var f=rh(e,b),g=e[f],h=sh(a,b,g.level%2?-c:c,d);;){if(h>g.from&&h<g.to)return h;if(h==g.from||h==g.to)return rh(e,h)==f?h:(g=e[f+=c],c>0==g.level%2?g.to:g.from);if(g=e[f+=c],!g)return null;h=c>0==g.level%2?sh(a,g.to,-1,d):sh(a,g.from,1,d)}}function uh(a,b,c,d){var e=b+c;if(d)for(;e>0&&Kg(a.text.charAt(e));)e+=c;return 0>e||e>a.text.length?null:e}var a=/gecko\/\d/i.test(navigator.userAgent),b=/MSIE \d/.test(navigator.userAgent),c=b&&(null==document.documentMode||document.documentMode<8),d=b&&(null==document.documentMode||document.documentMode<9),e=b&&(null==document.documentMode||document.documentMode<10),f=/Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent),g=b||f,h=/WebKit\//.test(navigator.userAgent),i=h&&/Qt\/\d+\.\d+/.test(navigator.userAgent),j=/Chrome\//.test(navigator.userAgent),k=/Opera\//.test(navigator.userAgent),l=/Apple Computer/.test(navigator.vendor),m=/KHTML\//.test(navigator.userAgent),n=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),o=/PhantomJS/.test(navigator.userAgent),p=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),q=p||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),r=p||/Mac/.test(navigator.platform),s=/win/i.test(navigator.platform),t=k&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);t&&(t=Number(t[1])),t&&t>=15&&(k=!1,h=!0);var u=r&&(i||k&&(null==t||12.11>t)),v=a||g&&!d,w=!1,x=!1,nb=y.Pos=function(a,b){return this instanceof nb?(this.line=a,this.ch=b,void 0):new nb(a,b)},ob=y.cmpPos=function(a,b){return a.line-b.line||a.ch-b.ch};sb.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var b=0;b<this.ranges.length;b++){var c=this.ranges[b],d=a.ranges[b];if(0!=ob(c.anchor,d.anchor)||0!=ob(c.head,d.head))return!1}return!0},deepCopy:function(){for(var a=[],b=0;b<this.ranges.length;b++)a[b]=new tb(pb(this.ranges[b].anchor),pb(this.ranges[b].head));return new sb(a,this.primIndex)},somethingSelected:function(){for(var a=0;a<this.ranges.length;a++)if(!this.ranges[a].empty())return!0;return!1},contains:function(a,b){b||(b=a);for(var c=0;c<this.ranges.length;c++){var d=this.ranges[c];if(ob(b,d.from())>=0&&ob(a,d.to())<=0)return c}return-1}},tb.prototype={from:function(){return rb(this.anchor,this.head)},to:function(){return qb(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var tc,Yc,Zc,ec={left:0,right:0,top:0,bottom:0},wc=0,dd=0,id=0,jd=null;g?jd=-.53:a?jd=15:j?jd=-.7:l&&(jd=-1/3);var nd,qd=null,zd=y.changeEnd=function(a){return a.text?nb(a.from.line+a.text.length-1,zg(a.text).length+(1==a.text.length?a.from.ch:0)):a.to};y.prototype={constructor:y,focus:function(){window.focus(),Qc(this),Nc(this)},setOption:function(a,b){var c=this.options,d=c[a];(c[a]!=b||"mode"==a)&&(c[a]=b,$d.hasOwnProperty(a)&&Ac(this,$d[a])(this,b,d))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](a)},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;c<b.length;++c)if(b[c]==a||"string"!=typeof b[c]&&b[c].name==a)return b.splice(c,1),!0},addOverlay:Bc(function(a,b){var c=a.token?a:y.getMode(this.options,a);if(c.startState)throw new Error("Overlays may not be stateful.");this.state.overlays.push({mode:c,modeSpec:a,opaque:b&&b.opaque}),this.state.modeGen++,Fc(this)}),removeOverlay:Bc(function(a){for(var b=this.state.overlays,c=0;c<b.length;++c){var d=b[c].modeSpec;if(d==a||"string"==typeof a&&d.name==a)return b.splice(c,1),this.state.modeGen++,Fc(this),void 0}}),indentLine:Bc(function(a,b,c){"string"!=typeof b&&"number"!=typeof b&&(b=null==b?this.options.smartIndent?"smart":"prev":b?"add":"subtract"),zb(this.doc,a)&&Td(this,a,b,c)}),indentSelection:Bc(function(a){for(var b=this.doc.sel.ranges,c=-1,d=0;d<b.length;d++){var e=b[d];if(e.empty())e.head.line>c&&(Td(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&Rd(this));else{var f=Math.max(c,e.from().line),g=e.to();c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var h=f;c>h;++h)Td(this,h,a)}}}),getTokenAt:function(a,b){var c=this.doc;a=xb(c,a);for(var d=Vb(this,a.line,b),e=this.doc.mode,f=Df(c,a.line),g=new oe(f.text,this.options.tabSize);g.pos<a.ch&&!g.eol();){g.start=g.pos;var h=df(e,g,d)}return{start:g.start,end:g.pos,string:g.current(),type:h||null,state:d}},getTokenTypeAt:function(a){a=xb(this.doc,a);var f,b=gf(this,Df(this.doc,a.line)),c=0,d=(b.length-1)/2,e=a.ch;if(0==e)f=b[2];else for(;;){var g=c+d>>1;if((g?b[2*g-1]:0)>=e)d=g;else{if(!(b[2*g+1]<e)){f=b[2*g+2];break}c=g+1}}var h=f?f.indexOf("cm-overlay "):-1;return 0>h?f:0==h?null:f.slice(0,h-1)},getModeAt:function(a){var b=this.doc.mode;return b.innerMode?y.innerMode(b,this.getTokenAt(a).state).mode:b},getHelper:function(a,b){return this.getHelpers(a,b)[0]},getHelpers:function(a,b){var c=[];if(!fe.hasOwnProperty(b))return fe;var d=fe[b],e=this.getModeAt(a);if("string"==typeof e[b])d[e[b]]&&c.push(d[e[b]]);else if(e[b])for(var f=0;f<e[b].length;f++){var g=d[e[b][f]];g&&c.push(g)}else e.helperType&&d[e.helperType]?c.push(d[e.helperType]):d[e.name]&&c.push(d[e.name]);for(var f=0;f<d._global.length;f++){var h=d._global[f];h.pred(e,this)&&-1==Bg(c,h.val)&&c.push(h.val)}return c},getStateAfter:function(a,b){var c=this.doc;return a=wb(c,null==a?c.first+c.size-1:a),Vb(this,a+1,b)},cursorCoords:function(a,b){var c,d=this.doc.sel.primary();return c=null==a?d.head:"object"==typeof a?xb(this.doc,a):a?d.from():d.to(),oc(this,c,b||"page")},charCoords:function(a,b){return nc(this,xb(this.doc,a),b||"page")},coordsChar:function(a,b){return a=mc(this,a,b||"page"),rc(this,a.left,a.top)},lineAtHeight:function(a,b){return a=mc(this,{top:a,left:0},b||"page").top,If(this.doc,a+this.display.viewOffset)},heightAtLine:function(a,b){var c=!1,d=this.doc.first+this.doc.size-1;a<this.doc.first?a=this.doc.first:a>d&&(a=d,c=!0);var e=Df(this.doc,a);return lc(this,e,{top:0,left:0},b||"page").top+(c?this.doc.height-Jf(e):0)},defaultTextHeight:function(){return uc(this.display)},defaultCharWidth:function(){return vc(this.display)},setGutterMarker:Bc(function(a,b,c){return Ud(this,a,"gutter",function(a){var d=a.gutterMarkers||(a.gutterMarkers={});return d[b]=c,!c&&Ig(d)&&(a.gutterMarkers=null),!0})}),clearGutter:Bc(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){c.gutterMarkers&&c.gutterMarkers[a]&&(c.gutterMarkers[a]=null,Gc(b,d,"gutter"),Ig(c.gutterMarkers)&&(c.gutterMarkers=null)),++d})}),addLineClass:Bc(function(a,b,c){return Ud(this,a,"class",function(a){var d="text"==b?"textClass":"background"==b?"bgClass":"wrapClass";if(a[d]){if(new RegExp("(?:^|\\s)"+c+"(?:$|\\s)").test(a[d]))return!1;a[d]+=" "+c}else a[d]=c;return!0})}),removeLineClass:Bc(function(a,b,c){return Ud(this,a,"class",function(a){var d="text"==b?"textClass":"background"==b?"bgClass":"wrapClass",e=a[d];if(!e)return!1;if(null==c)a[d]=null;else{var f=e.match(new RegExp("(?:^|\\s+)"+c+"(?:$|\\s+)"));if(!f)return!1;var g=f.index+f[0].length;a[d]=e.slice(0,f.index)+(f.index&&g!=e.length?" ":"")+e.slice(g)||null}return!0})}),addLineWidget:Bc(function(a,b,c){return Ze(this,a,b,c)}),removeLineWidget:function(a){a.clear()},lineInfo:function(a){if("number"==typeof a){if(!zb(this.doc,a))return null;var b=a;if(a=Df(this.doc,a),!a)return null}else{var b=Hf(a);if(null==b)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=oc(this,xb(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&Od(this,h,g,h+b.offsetWidth,g+b.offsetHeight)},triggerOnKeyDown:Bc(rd),triggerOnKeyPress:Bc(ud),triggerOnKeyUp:Bc(td),execCommand:function(a){return ie.hasOwnProperty(a)?ie[a](this):void 0},findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);for(var f=0,g=xb(this.doc,a);b>f&&(g=Wd(this.doc,g,e,c,d),!g.hitSide);++f);return g},moveH:Bc(function(a,b){var c=this;c.extendSelectionsBy(function(d){return c.display.shift||c.doc.extend||d.empty()?Wd(c.doc,d.head,a,b,c.options.rtlMoveVisually):0>a?d.from():d.to()},tg)}),deleteH:Bc(function(a,b){var c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):Vd(this,function(c){var e=Wd(d,c.head,a,b,!1);return 0>a?{from:e,to:c.head}:{from:c.head,to:e}})}),findPosV:function(a,b,c,d){var e=1,f=d;0>b&&(e=-1,b=-b);for(var g=0,h=xb(this.doc,a);b>g;++g){var i=oc(this,h,"div");if(null==f?f=i.left:i.left=f,h=Xd(this,i,e,c),h.hitSide)break}return h},moveV:Bc(function(a,b){var c=this,d=this.doc,e=[],f=!c.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy(function(g){if(f)return 0>a?g.from():g.to();var h=oc(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var i=Xd(c,h,a,b);return"page"==b&&g==d.sel.primary()&&Qd(c,null,nc(c,i,"div").top-h.top),i},tg),e.length)for(var g=0;g<d.sel.ranges.length;g++)d.sel.ranges[g].goalColumn=e[g]}),toggleOverwrite:function(a){(null==a||a!=this.state.overwrite)&&((this.state.overwrite=!this.state.overwrite)?Tg(this.display.cursorDiv,"CodeMirror-overwrite"):Sg(this.display.cursorDiv,"CodeMirror-overwrite"),gg(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return Qg()==this.display.input},scrollTo:Bc(function(a,b){(null!=a||null!=b)&&Sd(this),null!=a&&(this.curOp.scrollLeft=a),null!=b&&(this.curOp.scrollTop=b)}),getScrollInfo:function(){var a=this.display.scroller,b=pg;return{left:a.scrollLeft,top:a.scrollTop,height:a.scrollHeight-b,width:a.scrollWidth-b,clientHeight:a.clientHeight-b,clientWidth:a.clientWidth-b}},scrollIntoView:Bc(function(a,b){if(null==a?(a={from:this.doc.sel.primary().head,to:null},null==b&&(b=this.options.cursorScrollMargin)):"number"==typeof a?a={from:nb(a,0),to:null}:null==a.from&&(a={from:a,to:null}),a.to||(a.to=a.from),a.margin=b||0,null!=a.from.line)Sd(this),this.curOp.scrollToPos=a;else{var c=Pd(this,Math.min(a.from.left,a.to.left),Math.min(a.from.top,a.to.top)-a.margin,Math.max(a.from.right,a.to.right),Math.max(a.from.bottom,a.to.bottom)+a.margin);this.scrollTo(c.scrollLeft,c.scrollTop)}}),setSize:Bc(function(a,b){function c(a){return"number"==typeof a||/^\d+$/.test(String(a))?a+"px":a}null!=a&&(this.display.wrapper.style.width=c(a)),null!=b&&(this.display.wrapper.style.height=c(b)),this.options.lineWrapping&&hc(this),this.curOp.forceUpdate=!0,gg(this,"refresh",this)}),operation:function(a){return zc(this,a)},refresh:Bc(function(){var a=this.display.cachedTextHeight;Fc(this),this.curOp.forceUpdate=!0,ic(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),J(this),(null==a||Math.abs(a-uc(this.display))>.5)&&E(this),gg(this,"refresh",this)}),swapDoc:Bc(function(a){var b=this.doc;return b.cm=null,Cf(this,a),ic(this),Pc(this),this.scrollTo(a.scrollLeft,a.scrollTop),jg(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},og(y);var Zd=y.defaults={},$d=y.optionHandlers={},ae=y.Init={toString:function(){return"CodeMirror.Init"}};_d("value","",function(a,b){a.setValue(b)},!0),_d("mode",null,function(a,b){a.doc.modeOption=b,A(a)
+},!0),_d("indentUnit",2,A,!0),_d("indentWithTabs",!1),_d("smartIndent",!0),_d("tabSize",4,function(a){B(a),ic(a),Fc(a)},!0),_d("specialChars",/[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g,function(a,b){a.options.specialChars=new RegExp(b.source+(b.test("	")?"":"|	"),"g"),a.refresh()},!0),_d("specialCharPlaceholder",nf,function(a){a.refresh()},!0),_d("electricChars",!0),_d("rtlMoveVisually",!s),_d("wholeLineUpdateBefore",!0),_d("theme","default",function(a){G(a),H(a)},!0),_d("keyMap","default",F),_d("extraKeys",null),_d("lineWrapping",!1,C,!0),_d("gutters",[],function(a){M(a.options),H(a)},!0),_d("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?T(a.display)+"px":"0",a.refresh()},!0),_d("coverGutterNextToScrollbar",!1,O,!0),_d("lineNumbers",!1,function(a){M(a.options),H(a)},!0),_d("firstLineNumber",1,H,!0),_d("lineNumberFormatter",function(a){return a},H,!0),_d("showCursorWhenSelecting",!1,Ob,!0),_d("resetSelectionOnContextMenu",!0),_d("readOnly",!1,function(a,b){"nocursor"==b?(wd(a),a.display.input.blur(),a.display.disabled=!0):(a.display.disabled=!1,b||Pc(a))}),_d("disableInput",!1,function(a,b){b||Pc(a)},!0),_d("dragDrop",!0),_d("cursorBlinkRate",530),_d("cursorScrollMargin",0),_d("cursorHeight",1),_d("workTime",100),_d("workDelay",100),_d("flattenSpans",!0,B,!0),_d("addModeClass",!1,B,!0),_d("pollInterval",100),_d("undoDepth",200,function(a,b){a.doc.history.undoDepth=b}),_d("historyEventDelay",1250),_d("viewportMargin",10,function(a){a.refresh()},!0),_d("maxHighlightLength",1e4,B,!0),_d("moveInputWithCursor",!0,function(a,b){b||(a.display.inputDiv.style.top=a.display.inputDiv.style.left=0)}),_d("tabindex",null,function(a,b){a.display.input.tabIndex=b||""}),_d("autofocus",null);var be=y.modes={},ce=y.mimeModes={};y.defineMode=function(a,b){if(y.defaults.mode||"null"==a||(y.defaults.mode=a),arguments.length>2){b.dependencies=[];for(var c=2;c<arguments.length;++c)b.dependencies.push(arguments[c])}be[a]=b},y.defineMIME=function(a,b){ce[a]=b},y.resolveMode=function(a){if("string"==typeof a&&ce.hasOwnProperty(a))a=ce[a];else if(a&&"string"==typeof a.name&&ce.hasOwnProperty(a.name)){var b=ce[a.name];"string"==typeof b&&(b={name:b}),a=Dg(b,a),a.name=b.name}else if("string"==typeof a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return y.resolveMode("application/xml");return"string"==typeof a?{name:a}:a||{name:"null"}},y.getMode=function(a,b){var b=y.resolveMode(b),c=be[b.name];if(!c)return y.getMode(a,"text/plain");var d=c(a,b);if(de.hasOwnProperty(b.name)){var e=de[b.name];for(var f in e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var f in b.modeProps)d[f]=b.modeProps[f];return d},y.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}}),y.defineMIME("text/plain","null");var de=y.modeExtensions={};y.extendMode=function(a,b){var c=de.hasOwnProperty(a)?de[a]:de[a]={};Eg(b,c)},y.defineExtension=function(a,b){y.prototype[a]=b},y.defineDocExtension=function(a,b){yf.prototype[a]=b},y.defineOption=_d;var ee=[];y.defineInitHook=function(a){ee.push(a)};var fe=y.helpers={};y.registerHelper=function(a,b,c){fe.hasOwnProperty(a)||(fe[a]=y[a]={_global:[]}),fe[a][b]=c},y.registerGlobalHelper=function(a,b,c,d){y.registerHelper(a,b,d),fe[a]._global.push({pred:c,val:d})};var ge=y.copyState=function(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c},he=y.startState=function(a,b,c){return a.startState?a.startState(b,c):!0};y.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state,a=c.mode}return c||{mode:a,state:b}};var ie=y.commands={selectAll:function(a){a.setSelection(nb(a.firstLine(),0),nb(a.lastLine()),rg)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),rg)},killLine:function(a){Vd(a,function(b){if(b.empty()){var c=Df(a.doc,b.head.line).text.length;return b.head.ch==c&&b.head.line<a.lastLine()?{from:b.head,to:nb(b.head.line+1,0)}:{from:b.head,to:nb(b.head.line,c)}}return{from:b.from(),to:b.to()}})},deleteLine:function(a){Vd(a,function(b){return{from:nb(b.from().line,0),to:xb(a.doc,nb(b.to().line+1,0))}})},delLineLeft:function(a){Vd(a,function(a){return{from:nb(a.from().line,0),to:a.from()}})},undo:function(a){a.undo()},redo:function(a){a.redo()},undoSelection:function(a){a.undoSelection()},redoSelection:function(a){a.redoSelection()},goDocStart:function(a){a.extendSelection(nb(a.firstLine(),0))},goDocEnd:function(a){a.extendSelection(nb(a.lastLine()))},goLineStart:function(a){a.extendSelectionsBy(function(b){return nh(a,b.head.line)},tg)},goLineStartSmart:function(a){a.extendSelectionsBy(function(b){var c=nh(a,b.head.line),d=a.getLineHandle(c.line),e=Kf(d);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.head.line==c.line&&b.head.ch<=f&&b.head.ch;return nb(c.line,g?0:f)}return c},tg)},goLineEnd:function(a){a.extendSelectionsBy(function(b){return oh(a,b.head.line)},tg)},goLineRight:function(a){a.extendSelectionsBy(function(b){var c=a.charCoords(b.head,"div").top+5;return a.coordsChar({left:a.display.lineDiv.offsetWidth+100,top:c},"div")},tg)},goLineLeft:function(a){a.extendSelectionsBy(function(b){var c=a.charCoords(b.head,"div").top+5;return a.coordsChar({left:0,top:c},"div")},tg)},goLineUp:function(a){a.moveV(-1,"line")},goLineDown:function(a){a.moveV(1,"line")},goPageUp:function(a){a.moveV(-1,"page")},goPageDown:function(a){a.moveV(1,"page")},goCharLeft:function(a){a.moveH(-1,"char")},goCharRight:function(a){a.moveH(1,"char")},goColumnLeft:function(a){a.moveH(-1,"column")},goColumnRight:function(a){a.moveH(1,"column")},goWordLeft:function(a){a.moveH(-1,"word")},goGroupRight:function(a){a.moveH(1,"group")},goGroupLeft:function(a){a.moveH(-1,"group")},goWordRight:function(a){a.moveH(1,"word")},delCharBefore:function(a){a.deleteH(-1,"char")},delCharAfter:function(a){a.deleteH(1,"char")},delWordBefore:function(a){a.deleteH(-1,"word")},delWordAfter:function(a){a.deleteH(1,"word")},delGroupBefore:function(a){a.deleteH(-1,"group")},delGroupAfter:function(a){a.deleteH(1,"group")},indentAuto:function(a){a.indentSelection("smart")},indentMore:function(a){a.indentSelection("add")},indentLess:function(a){a.indentSelection("subtract")},insertTab:function(a){a.replaceSelection("	")},insertSoftTab:function(a){for(var b=[],c=a.listSelections(),d=a.options.tabSize,e=0;e<c.length;e++){var f=c[e].from(),g=vg(a.getLine(f.line),f.ch,d);b.push(new Array(d-g%d+1).join(" "))}a.replaceSelections(b)},defaultTab:function(a){a.somethingSelected()?a.indentSelection("add"):a.execCommand("insertTab")},transposeChars:function(a){zc(a,function(){for(var b=a.listSelections(),c=0;c<b.length;c++){var d=b[c].head,e=Df(a.doc,d.line).text;d.ch>0&&d.ch<e.length-1&&a.replaceRange(e.charAt(d.ch)+e.charAt(d.ch-1),nb(d.line,d.ch-1),nb(d.line,d.ch+1))}})},newlineAndIndent:function(a){zc(a,function(){for(var b=a.listSelections().length,c=0;b>c;c++){var d=a.listSelections()[c];a.replaceRange("\n",d.anchor,d.head,"+input"),a.indentLine(d.from().line+1,null,!0),Rd(a)}})},toggleOverwrite:function(a){a.toggleOverwrite()}},je=y.keyMap={};je.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},je.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-Up":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Down":"goDocEnd","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},je.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineStart","Cmd-Right":"goLineEnd","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delLineLeft","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection",fallthrough:["basic","emacsy"]},je.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},je["default"]=r?je.macDefault:je.pcDefault;var le=y.lookupKey=function(a,b,c){function d(b){b=ke(b);var e=b[a];if(e===!1)return"stop";if(null!=e&&c(e))return!0;if(b.nofallthrough)return"stop";var f=b.fallthrough;if(null==f)return!1;if("[object Array]"!=Object.prototype.toString.call(f))return d(f);for(var g=0;g<f.length;++g){var h=d(f[g]);if(h)return h}return!1}for(var e=0;e<b.length;++e){var f=d(b[e]);if(f)return"stop"!=f}},me=y.isModifierKey=function(a){var b=hh[a.keyCode];return"Ctrl"==b||"Alt"==b||"Shift"==b||"Mod"==b},ne=y.keyName=function(a,b){if(k&&34==a.keyCode&&a["char"])return!1;var c=hh[a.keyCode];return null==c||a.altGraphKey?!1:(a.altKey&&(c="Alt-"+c),(u?a.metaKey:a.ctrlKey)&&(c="Ctrl-"+c),(u?a.ctrlKey:a.metaKey)&&(c="Cmd-"+c),!b&&a.shiftKey&&(c="Shift-"+c),c)};y.fromTextArea=function(a,b){function d(){a.value=i.getValue()}if(b||(b={}),b.value=a.value,!b.tabindex&&a.tabindex&&(b.tabindex=a.tabindex),!b.placeholder&&a.placeholder&&(b.placeholder=a.placeholder),null==b.autofocus){var c=Qg();b.autofocus=c==a||null!=a.getAttribute("autofocus")&&c==document.body}if(a.form&&(eg(a.form,"submit",d),!b.leaveSubmitMethodAlone)){var e=a.form,f=e.submit;try{var g=e.submit=function(){d(),e.submit=f,e.submit(),e.submit=g}}catch(h){}}a.style.display="none";var i=y(function(b){a.parentNode.insertBefore(b,a.nextSibling)},b);return i.save=d,i.getTextArea=function(){return a},i.toTextArea=function(){d(),a.parentNode.removeChild(i.getWrapperElement()),a.style.display="",a.form&&(fg(a.form,"submit",d),"function"==typeof a.form.submit&&(a.form.submit=f))},i};var oe=y.StringStream=function(a,b){this.pos=this.start=0,this.string=a,this.tabSize=b||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};oe.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.pos<this.string.length?this.string.charAt(this.pos++):void 0},eat:function(a){var b=this.string.charAt(this.pos);if("string"==typeof a)var c=b==a;else var c=b&&(a.test?a.test(b):a(b));return c?(++this.pos,b):void 0},eatWhile:function(a){for(var b=this.pos;this.eat(a););return this.pos>b},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);return b>-1?(this.pos=b,!0):void 0},backUp:function(a){this.pos-=a},column:function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=vg(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?vg(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return vg(this.string,null,this.tabSize)-(this.lineStart?vg(this.string,this.lineStart,this.tabSize):0)},match:function(a,b,c){if("string"!=typeof a){var f=this.string.slice(this.pos).match(a);return f&&f.index>0?null:(f&&b!==!1&&(this.pos+=f[0].length),f)}var d=function(a){return c?a.toLowerCase():a},e=this.string.substr(this.pos,a.length);return d(e)==d(a)?(b!==!1&&(this.pos+=a.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}}};var pe=y.TextMarker=function(a,b){this.lines=[],this.type=b,this.doc=a};og(pe),pe.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b=a&&!a.curOp;if(b&&xc(a),ng(this,"clear")){var c=this.find();c&&jg(this,"clear",c.from,c.to)}for(var d=null,e=null,f=0;f<this.lines.length;++f){var g=this.lines[f],h=ye(g.markedSpans,this);a&&!this.collapsed?Gc(a,Hf(g),"text"):a&&(null!=h.to&&(e=Hf(g)),null!=h.from&&(d=Hf(g))),g.markedSpans=ze(g.markedSpans,h),null==h.from&&this.collapsed&&!Ue(this.doc,g)&&a&&Gf(g,uc(a.display))}if(a&&this.collapsed&&!a.options.lineWrapping)for(var f=0;f<this.lines.length;++f){var i=Qe(this.lines[f]),j=K(i);j>a.display.maxLineLength&&(a.display.maxLine=i,a.display.maxLineLength=j,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&Fc(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&Lb(a.doc)),a&&jg(a,"markerCleared",a,this),b&&yc(a),this.parent&&this.parent.clear()}},pe.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var c,d,e=0;e<this.lines.length;++e){var f=this.lines[e],g=ye(f.markedSpans,this);if(null!=g.from&&(c=nb(b?f:Hf(f),g.from),-1==a))return c;if(null!=g.to&&(d=nb(b?f:Hf(f),g.to),1==a))return d}return c&&{from:c,to:d}},pe.prototype.changed=function(){var a=this.find(-1,!0),b=this,c=this.doc.cm;a&&c&&zc(c,function(){var d=a.line,e=Hf(a.line),f=bc(c,e);if(f&&(gc(f),c.curOp.selectionChanged=c.curOp.forceUpdate=!0),c.curOp.updateMaxLine=!0,!Ue(b.doc,d)&&null!=b.height){var g=b.height;b.height=null;var h=Ye(b)-g;h&&Gf(d,d.height+h)}})},pe.prototype.attachLine=function(a){if(!this.lines.length&&this.doc.cm){var b=this.doc.cm.curOp;b.maybeHiddenMarkers&&-1!=Bg(b.maybeHiddenMarkers,this)||(b.maybeUnhiddenMarkers||(b.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(a)},pe.prototype.detachLine=function(a){if(this.lines.splice(Bg(this.lines,a),1),!this.lines.length&&this.doc.cm){var b=this.doc.cm.curOp;(b.maybeHiddenMarkers||(b.maybeHiddenMarkers=[])).push(this)}};var qe=0,se=y.SharedTextMarker=function(a,b){this.markers=a,this.primary=b;for(var c=0;c<a.length;++c)a[c].parent=this};og(se),se.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var a=0;a<this.markers.length;++a)this.markers[a].clear();jg(this,"clear")}},se.prototype.find=function(a,b){return this.primary.find(a,b)};var We=y.LineWidget=function(a,b,c){if(c)for(var d in c)c.hasOwnProperty(d)&&(this[d]=c[d]);this.cm=a,this.node=b};og(We),We.prototype.clear=function(){var a=this.cm,b=this.line.widgets,c=this.line,d=Hf(c);if(null!=d&&b){for(var e=0;e<b.length;++e)b[e]==this&&b.splice(e--,1);b.length||(c.widgets=null);var f=Ye(this);zc(a,function(){Xe(a,c,-f),Gc(a,d,"widget"),Gf(c,Math.max(0,c.height-f))})}},We.prototype.changed=function(){var a=this.height,b=this.cm,c=this.line;this.height=null;var d=Ye(this)-a;d&&zc(b,function(){b.curOp.forceUpdate=!0,Xe(b,c,d),Gf(c,c.height+d)})};var $e=y.Line=function(a,b,c){this.text=a,Ie(this,b),this.height=c?c(this):1};og($e),$e.prototype.lineNo=function(){return Hf(this)};var jf={},kf={};vf.prototype={chunkSize:function(){return this.lines.length},removeInner:function(a,b){for(var c=a,d=a+b;d>c;++c){var e=this.lines[c];this.height-=e.height,af(e),jg(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var d=0;d<b.length;++d)b[d].parent=this},iterN:function(a,b,c){for(var d=a+b;d>a;++a)if(c(this.lines[a]))return!0}},wf.prototype={chunkSize:function(){return this.size},removeInner:function(a,b){this.size-=b;for(var c=0;c<this.children.length;++c){var d=this.children[c],e=d.chunkSize();if(e>a){var f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof vf))){var h=[];this.collapse(h),this.children=[new vf(h)],this.children[0].parent=this}},collapse:function(a){for(var b=0;b<this.children.length;++b)this.children[b].collapse(a)},insertInner:function(a,b,c){this.size+=b.length,this.height+=c;for(var d=0;d<this.children.length;++d){var e=this.children[d],f=e.chunkSize();if(f>=a){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(;e.lines.length>50;){var g=e.lines.splice(e.lines.length-25,25),h=new vf(g);e.height-=h.height,this.children.splice(d+1,0,h),h.parent=this}this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),c=new wf(b);if(a.parent){a.size-=c.size,a.height-=c.height;var e=Bg(a.parent.children,a);a.parent.children.splice(e+1,0,c)}else{var d=new wf(a.children);d.parent=a,a.children=[d,c],a=d}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;d<this.children.length;++d){var e=this.children[d],f=e.chunkSize();if(f>a){var g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else a-=f}}};var xf=0,yf=y.Doc=function(a,b,c){if(!(this instanceof yf))return new yf(a,b,c);null==c&&(c=0),wf.call(this,[new vf([new $e("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=c;var d=nb(c,0);this.sel=vb(d),this.history=new Lf(null),this.id=++xf,this.modeOption=b,"string"==typeof a&&(a=eh(a)),uf(this,{from:d,to:d,text:a}),Ib(this,vb(d),rg)};yf.prototype=Dg(wf.prototype,{constructor:yf,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var c=0,d=0;d<b.length;++d)c+=b[d].height;this.insertInner(a-this.first,b,c)},remove:function(a,b){this.removeInner(a-this.first,b)},getValue:function(a){var b=Ff(this,this.first,this.first+this.size);return a===!1?b:b.join(a||"\n")},setValue:Cc(function(a){var b=nb(this.first,0),c=this.first+this.size-1;Fd(this,{from:b,to:nb(c,Df(this,c).text.length),text:eh(a),origin:"setValue"},!0),Ib(this,vb(b))}),replaceRange:function(a,b,c,d){b=xb(this,b),c=c?xb(this,c):b,Ld(this,a,b,c,d)},getRange:function(a,b,c){var d=Ef(this,xb(this,a),xb(this,b));return c===!1?d:d.join(c||"\n")},getLine:function(a){var b=this.getLineHandle(a);return b&&b.text},getLineHandle:function(a){return zb(this,a)?Df(this,a):void 0},getLineNumber:function(a){return Hf(a)},getLineHandleVisualStart:function(a){return"number"==typeof a&&(a=Df(this,a)),Qe(a)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(a){return xb(this,a)},getCursor:function(a){var c,b=this.sel.primary();return c=null==a||"head"==a?b.head:"anchor"==a?b.anchor:"end"==a||"to"==a||a===!1?b.to():b.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Cc(function(a,b,c){Fb(this,xb(this,"number"==typeof a?nb(a,b||0):a),null,c)}),setSelection:Cc(function(a,b,c){Fb(this,xb(this,a),xb(this,b||a),c)}),extendSelection:Cc(function(a,b,c){Cb(this,xb(this,a),b&&xb(this,b),c)}),extendSelections:Cc(function(a,b){Db(this,Ab(this,a,b))}),extendSelectionsBy:Cc(function(a,b){Db(this,Cg(this.sel.ranges,a),b)}),setSelections:Cc(function(a,b,c){if(a.length){for(var d=0,e=[];d<a.length;d++)e[d]=new tb(xb(this,a[d].anchor),xb(this,a[d].head));null==b&&(b=Math.min(a.length-1,this.sel.primIndex)),Ib(this,ub(e,b),c)}}),addSelection:Cc(function(a,b,c){var d=this.sel.ranges.slice(0);d.push(new tb(xb(this,a),xb(this,b||a))),Ib(this,ub(d,d.length-1),c)}),getSelection:function(a){for(var c,b=this.sel.ranges,d=0;d<b.length;d++){var e=Ef(this,b[d].from(),b[d].to());c=c?c.concat(e):e}return a===!1?c:c.join(a||"\n")},getSelections:function(a){for(var b=[],c=this.sel.ranges,d=0;d<c.length;d++){var e=Ef(this,c[d].from(),c[d].to());a!==!1&&(e=e.join(a||"\n")),b[d]=e}return b},replaceSelection:function(a,b,c){for(var d=[],e=0;e<this.sel.ranges.length;e++)d[e]=a;this.replaceSelections(d,b,c||"+input")},replaceSelections:Cc(function(a,b,c){for(var d=[],e=this.sel,f=0;f<e.ranges.length;f++){var g=e.ranges[f];d[f]={from:g.from(),to:g.to(),text:eh(a[f]),origin:c}}for(var h=b&&"end"!=b&&Dd(this,d,b),f=d.length-1;f>=0;f--)Fd(this,d[f]);h?Hb(this,h):this.cm&&Rd(this.cm)}),undo:Cc(function(){Hd(this,"undo")}),redo:Cc(function(){Hd(this,"redo")}),undoSelection:Cc(function(){Hd(this,"undo",!0)}),redoSelection:Cc(function(){Hd(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d<a.done.length;d++)a.done[d].ranges||++b;for(var d=0;d<a.undone.length;d++)a.undone[d].ranges||++c;return{undo:b,redo:c}},clearHistory:function(){this.history=new Lf(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(a){return a&&(this.history.lastOp=this.history.lastOrigin=null),this.history.generation},isClean:function(a){return this.history.generation==(a||this.cleanGeneration)},getHistory:function(){return{done:Wf(this.history.done),undone:Wf(this.history.undone)}},setHistory:function(a){var b=this.history=new Lf(this.history.maxGeneration);b.done=Wf(a.done.slice(0),null,!0),b.undone=Wf(a.undone.slice(0),null,!0)},markText:function(a,b,c){return re(this,xb(this,a),xb(this,b),c,"range")},setBookmark:function(a,b){var c={replacedWith:b&&(null==b.nodeType?b.widget:b),insertLeft:b&&b.insertLeft,clearWhenEmpty:!1,shared:b&&b.shared};return a=xb(this,a),re(this,a,a,c,"bookmark")},findMarksAt:function(a){a=xb(this,a);var b=[],c=Df(this,a.line).markedSpans;if(c)for(var d=0;d<c.length;++d){var e=c[d];(null==e.from||e.from<=a.ch)&&(null==e.to||e.to>=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=xb(this,a),b=xb(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;h<g.length;h++){var i=g[h];e==a.line&&a.ch>i.to||null==i.from&&e!=a.line||e==b.line&&i.from>b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;d<c.length;++d)null!=c[d].from&&a.push(c[d].marker)}),a},posFromIndex:function(a){var b,c=this.first;return this.iter(function(d){var e=d.text.length+1;return e>a?(b=a,!0):(a-=e,++c,void 0)}),xb(this,nb(c,b))},indexFromPos:function(a){a=xb(this,a);var b=a.ch;return a.line<this.first||a.ch<0?0:(this.iter(this.first,a.line,function(a){b+=a.text.length+1}),b)},copy:function(a){var b=new yf(Ff(this,this.first,this.first+this.size),this.modeOption,this.first);return b.scrollTop=this.scrollTop,b.scrollLeft=this.scrollLeft,b.sel=this.sel,b.extend=!1,a&&(b.history.undoDepth=this.history.undoDepth,b.setHistory(this.getHistory())),b},linkedDoc:function(a){a||(a={});var b=this.first,c=this.first+this.size;null!=a.from&&a.from>b&&(b=a.from),null!=a.to&&a.to<c&&(c=a.to);var d=new yf(Ff(this,b,c),a.mode||this.modeOption,b);return a.sharedHist&&(d.history=this.history),(this.linked||(this.linked=[])).push({doc:d,sharedHist:a.sharedHist}),d.linked=[{doc:this,isParent:!0,sharedHist:a.sharedHist}],ve(d,ue(this)),d},unlinkDoc:function(a){if(a instanceof y&&(a=a.doc),this.linked)for(var b=0;b<this.linked.length;++b){var c=this.linked[b];if(c.doc==a){this.linked.splice(b,1),a.unlinkDoc(this),we(ue(this));break}}if(a.history==this.history){var d=[a.id];Bf(a,function(a){d.push(a.id)},!0),a.history=new Lf(null),a.history.done=Wf(this.history.done,d),a.history.undone=Wf(this.history.undone,d)}},iterLinkedDocs:function(a){Bf(this,a)},getMode:function(){return this.mode},getEditor:function(){return this.cm}}),yf.prototype.eachLine=yf.prototype.iter;var zf="iter insert remove copy getEditor".split(" ");for(var Af in yf.prototype)yf.prototype.hasOwnProperty(Af)&&Bg(zf,Af)<0&&(y.prototype[Af]=function(a){return function(){return a.apply(this.doc,arguments)}}(yf.prototype[Af]));og(yf);var hg,$f=y.e_preventDefault=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},_f=y.e_stopPropagation=function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},bg=y.e_stop=function(a){$f(a),_f(a)},eg=y.on=function(a,b,c){if(a.addEventListener)a.addEventListener(b,c,!1);else if(a.attachEvent)a.attachEvent("on"+b,c);else{var d=a._handlers||(a._handlers={}),e=d[b]||(d[b]=[]);e.push(c)}},fg=y.off=function(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,!1);else if(a.detachEvent)a.detachEvent("on"+b,c);else{var d=a._handlers&&a._handlers[b];if(!d)return;for(var e=0;e<d.length;++e)if(d[e]==c){d.splice(e,1);break}}},gg=y.signal=function(a,b){var c=a._handlers&&a._handlers[b];if(c)for(var d=Array.prototype.slice.call(arguments,2),e=0;e<c.length;++e)c[e].apply(null,d)},ig=0,pg=30,qg=y.Pass={toString:function(){return"CodeMirror.Pass"}},rg={scroll:!1},sg={origin:"*mouse"},tg={origin:"+move"};ug.prototype.set=function(a,b){clearTimeout(this.id),this.id=setTimeout(b,a)};var vg=y.countColumn=function(a,b,c,d,e){null==b&&(b=a.search(/[^\s\u00a0]/),-1==b&&(b=a.length));for(var f=d||0,g=e||0;;){var h=a.indexOf("	",f);if(0>h||h>=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}},xg=[""],Ag=function(a){a.select()};p?Ag=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:g&&(Ag=function(a){try{a.select()}catch(b){}}),[].indexOf&&(Bg=function(a,b){return a.indexOf(b)}),[].map&&(Cg=function(a,b){return a.map(b)});var Mg,Gg=/[\u00df\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Hg=y.isWordChar=function(a){return/\w/.test(a)||a>"\x80"&&(a.toUpperCase()!=a.toLowerCase()||Gg.test(a))},Jg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;Mg=document.createRange?function(a,b,c){var d=document.createRange();return d.setEnd(a,c),d.setStart(a,b),d}:function(a,b,c){var d=document.body.createTextRange();return d.moveToElementText(a.parentNode),d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d},b&&(Qg=function(){try{return document.activeElement}catch(a){return document.body}});var $g,ah,ch,Wg=!1,Zg=function(){if(d)return!1;var a=Lg("div");return"draggable"in a||"dragDrop"in a}(),eh=y.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;d>=b;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)},fh=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return b&&b.parentElement()==a?0!=b.compareEndPoints("StartToEnd",b):!1},gh=function(){var a=Lg("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),"function"==typeof a.oncopy)}(),hh={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};y.keyNames=hh,function(){for(var a=0;10>a;a++)hh[a+48]=hh[a+96]=String(a);for(var a=65;90>=a;a++)hh[a]=String.fromCharCode(a);for(var a=1;12>=a;a++)hh[a+111]=hh[a+63235]="F"+a}();var qh,vh=function(){function c(c){return 247>=c?a.charAt(c):c>=1424&&1524>=c?"R":c>=1536&&1773>=c?b.charAt(c-1536):c>=1774&&2220>=c?"r":c>=8192&&8203>=c?"w":8204==c?"b":"L"}function j(a,b,c){this.level=a,this.from=b,this.to=c}var a="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",b="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",d=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,e=/[stwN]/,f=/[LRr]/,g=/[Lb1n]/,h=/[1n]/,i="L";return function(a){if(!d.test(a))return!1;for(var m,b=a.length,k=[],l=0;b>l;++l)k.push(m=c(a.charCodeAt(l)));for(var l=0,n=i;b>l;++l){var m=k[l];"m"==m?k[l]=n:n=m}for(var l=0,o=i;b>l;++l){var m=k[l];"1"==m&&"r"==o?k[l]="n":f.test(m)&&(o=m,"r"==m&&(k[l]="R"))}for(var l=1,n=k[0];b-1>l;++l){var m=k[l];"+"==m&&"1"==n&&"1"==k[l+1]?k[l]="1":","!=m||n!=k[l+1]||"1"!=n&&"n"!=n||(k[l]=n),n=m}for(var l=0;b>l;++l){var m=k[l];if(","==m)k[l]="N";else if("%"==m){for(var p=l+1;b>p&&"%"==k[p];++p);for(var q=l&&"!"==k[l-1]||b>p&&"1"==k[p]?"1":"N",r=l;p>r;++r)k[r]=q;l=p-1}}for(var l=0,o=i;b>l;++l){var m=k[l];"L"==o&&"1"==m?k[l]="L":f.test(m)&&(o=m)}for(var l=0;b>l;++l)if(e.test(k[l])){for(var p=l+1;b>p&&e.test(k[p]);++p);for(var s="L"==(l?k[l-1]:i),t="L"==(b>p?k[p]:i),q=s||t?"L":"R",r=l;p>r;++r)k[r]=q;l=p-1}for(var v,u=[],l=0;b>l;)if(g.test(k[l])){var w=l;for(++l;b>l&&g.test(k[l]);++l);u.push(new j(0,w,l))}else{var x=l,y=u.length;for(++l;b>l&&"L"!=k[l];++l);for(var r=x;l>r;)if(h.test(k[r])){r>x&&u.splice(y,0,new j(1,x,r));var z=r;for(++r;l>r&&h.test(k[r]);++r);u.splice(y,0,new j(2,z,r)),x=r
+}else++r;l>x&&u.splice(y,0,new j(1,x,l))}return 1==u[0].level&&(v=a.match(/^\s+/))&&(u[0].from=v[0].length,u.unshift(new j(0,0,v[0].length))),1==zg(u).level&&(v=a.match(/\s+$/))&&(zg(u).to-=v[0].length,u.push(new j(0,b-v[0].length,b))),u[0].level!=zg(u).level&&u.push(new j(u[0].level,b,b)),u}}();return y.version="4.1.1",y}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("javascript",function(b,c){function l(a){for(var c,b=!1,d=!1;null!=(c=a.next());){if(!b){if("/"==c&&!d)return;"["==c?d=!0:d&&"]"==c&&(d=!1)}b=!b&&"\\"==c}}function o(a,b,c){return m=a,n=c,b}function p(a,b){var c=a.next();if('"'==c||"'"==c)return b.tokenize=q(c),b.tokenize(a,b);if("."==c&&a.match(/^\d+(?:[eE][+\-]?\d+)?/))return o("number","number");if("."==c&&a.match(".."))return o("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(c))return o(c);if("="==c&&a.eat(">"))return o("=>","operator");if("0"==c&&a.eat(/x/i))return a.eatWhile(/[\da-f]/i),o("number","number");if(/\d/.test(c))return a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),o("number","number");if("/"==c)return a.eat("*")?(b.tokenize=r,r(a,b)):a.eat("/")?(a.skipToEnd(),o("comment","comment")):"operator"==b.lastType||"keyword c"==b.lastType||"sof"==b.lastType||/^[\[{}\(,;:]$/.test(b.lastType)?(l(a),a.eatWhile(/[gimy]/),o("regexp","string-2")):(a.eatWhile(j),o("operator","operator",a.current()));if("`"==c)return b.tokenize=s,s(a,b);if("#"==c)return a.skipToEnd(),o("error","error");if(j.test(c))return a.eatWhile(j),o("operator","operator",a.current());a.eatWhile(/[\w\$_]/);var d=a.current(),e=i.propertyIsEnumerable(d)&&i[d];return e&&"."!=b.lastType?o(e.type,e.style,d):o("variable","variable",d)}function q(a){return function(b,c){var e,d=!1;if(f&&"@"==b.peek()&&b.match(k))return c.tokenize=p,o("jsonld-keyword","meta");for(;null!=(e=b.next())&&(e!=a||d);)d=!d&&"\\"==e;return d||(c.tokenize=p),o("string","string")}}function r(a,b){for(var d,c=!1;d=a.next();){if("/"==d&&c){b.tokenize=p;break}c="*"==d}return o("comment","comment")}function s(a,b){for(var d,c=!1;null!=(d=a.next());){if(!c&&("`"==d||"$"==d&&a.eat("{"))){b.tokenize=p;break}c=!c&&"\\"==d}return o("quasi","string-2",a.current())}function u(a,b){b.fatArrowAt&&(b.fatArrowAt=null);var c=a.string.indexOf("=>",a.start);if(!(0>c)){for(var d=0,e=!1,f=c-1;f>=0;--f){var g=a.string.charAt(f),h=t.indexOf(g);if(h>=0&&3>h){if(!d){++f;break}if(0==--d)break}else if(h>=3&&6>h)++d;else if(/[$\w]/.test(g))e=!0;else if(e&&!d){++f;break}}e&&!d&&(b.fatArrowAt=f)}}function w(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,null!=d&&(this.align=d)}function x(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0;for(var d=a.context;d;d=d.prev)for(var c=d.vars;c;c=c.next)if(c.name==b)return!0}function y(a,b,c,d,e){var f=a.cc;for(z.state=a,z.stream=e,z.marked=null,z.cc=f,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);;){var h=f.length?f.pop():g?K:J;if(h(c,d)){for(;f.length&&f[f.length-1].lex;)f.pop()();return z.marked?z.marked:"variable"==c&&x(a,d)?"variable-2":b}}}function A(){for(var a=arguments.length-1;a>=0;a--)z.cc.push(arguments[a])}function B(){return A.apply(null,arguments),!0}function C(a){function b(b){for(var c=b;c;c=c.next)if(c.name==a)return!0;return!1}var d=z.state;if(d.context){if(z.marked="def",b(d.localVars))return;d.localVars={name:a,next:d.localVars}}else{if(b(d.globalVars))return;c.globalVars&&(d.globalVars={name:a,next:d.globalVars})}}function E(){z.state.context={prev:z.state.context,vars:z.state.localVars},z.state.localVars=D}function F(){z.state.localVars=z.state.context.vars,z.state.context=z.state.context.prev}function G(a,b){var c=function(){var c=z.state,d=c.indented;"stat"==c.lexical.type&&(d=c.lexical.indented),c.lexical=new w(d,z.stream.column(),a,null,c.lexical,b)};return c.lex=!0,c}function H(){var a=z.state;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function I(a){function b(c){return c==a?B():";"==a?A():B(b)}return b}function J(a,b){return"var"==a?B(G("vardef",b.length),db,I(";"),H):"keyword a"==a?B(G("form"),K,J,H):"keyword b"==a?B(G("form"),J,H):"{"==a?B(G("}"),ab,H):";"==a?B():"if"==a?("else"==z.state.lexical.info&&z.state.cc[z.state.cc.length-1]==H&&z.state.cc.pop()(),B(G("form"),K,J,H,ib)):"function"==a?B(ob):"for"==a?B(G("form"),jb,J,H):"variable"==a?B(G("stat"),V):"switch"==a?B(G("form"),K,G("}","switch"),I("{"),ab,H,H):"case"==a?B(K,I(":")):"default"==a?B(I(":")):"catch"==a?B(G("form"),E,I("("),pb,I(")"),J,H,F):"module"==a?B(G("form"),E,tb,F,H):"class"==a?B(G("form"),qb,sb,H):"export"==a?B(G("form"),ub,H):"import"==a?B(G("form"),vb,H):A(G("stat"),K,I(";"),H)}function K(a){return M(a,!1)}function L(a){return M(a,!0)}function M(a,b){if(z.state.fatArrowAt==z.stream.start){var c=b?U:T;if("("==a)return B(E,G(")"),$(eb,")"),H,I("=>"),c,F);if("variable"==a)return A(E,eb,I("=>"),c,F)}var d=b?Q:P;return v.hasOwnProperty(a)?B(d):"function"==a?B(ob,d):"keyword c"==a?B(b?O:N):"("==a?B(G(")"),N,Ab,I(")"),H,d):"operator"==a||"spread"==a?B(b?L:K):"["==a?B(G("]"),yb,H,d):"{"==a?_(X,"}",null,d):"quasi"==a?A(R,d):B()}function N(a){return a.match(/[;\}\)\],]/)?A():A(K)}function O(a){return a.match(/[;\}\)\],]/)?A():A(L)}function P(a,b){return","==a?B(K):Q(a,b,!1)}function Q(a,b,c){var d=0==c?P:Q,e=0==c?K:L;return"=>"==b?B(E,c?U:T,F):"operator"==a?/\+\+|--/.test(b)?B(d):"?"==b?B(K,I(":"),e):B(e):"quasi"==a?A(R,d):";"!=a?"("==a?_(L,")","call",d):"."==a?B(W,d):"["==a?B(G("]"),N,I("]"),H,d):void 0:void 0}function R(a,b){return"quasi"!=a?A():"${"!=b.slice(b.length-2)?B(R):B(K,S)}function S(a){return"}"==a?(z.marked="string-2",z.state.tokenize=s,B(R)):void 0}function T(a){return u(z.stream,z.state),"{"==a?A(J):A(K)}function U(a){return u(z.stream,z.state),"{"==a?A(J):A(L)}function V(a){return":"==a?B(H,J):A(P,I(";"),H)}function W(a){return"variable"==a?(z.marked="property",B()):void 0}function X(a,b){if("variable"==a){if(z.marked="property","get"==b||"set"==b)return B(Y)}else if("number"==a||"string"==a)z.marked=f?"property":a+" property";else if("["==a)return B(K,I("]"),Z);return v.hasOwnProperty(a)?B(Z):void 0}function Y(a){return"variable"!=a?A(Z):(z.marked="property",B(ob))}function Z(a){return":"==a?B(L):"("==a?A(ob):void 0}function $(a,b){function c(d){if(","==d){var e=z.state.lexical;return"call"==e.info&&(e.pos=(e.pos||0)+1),B(a,c)}return d==b?B():B(I(b))}return function(d){return d==b?B():A(a,c)}}function _(a,b,c){for(var d=3;d<arguments.length;d++)z.cc.push(arguments[d]);return B(G(b,c),$(a,b),H)}function ab(a){return"}"==a?B():A(J,ab)}function bb(a){return h&&":"==a?B(cb):void 0}function cb(a){return"variable"==a?(z.marked="variable-3",B()):void 0}function db(){return A(eb,bb,gb,hb)}function eb(a,b){return"variable"==a?(C(b),B()):"["==a?_(eb,"]"):"{"==a?_(fb,"}"):void 0}function fb(a,b){return"variable"!=a||z.stream.match(/^\s*:/,!1)?("variable"==a&&(z.marked="property"),B(I(":"),eb,gb)):(C(b),B(gb))}function gb(a,b){return"="==b?B(L):void 0}function hb(a){return","==a?B(db):void 0}function ib(a,b){return"keyword b"==a&&"else"==b?B(G("form","else"),J,H):void 0}function jb(a){return"("==a?B(G(")"),kb,I(")"),H):void 0}function kb(a){return"var"==a?B(db,I(";"),mb):";"==a?B(mb):"variable"==a?B(lb):A(K,I(";"),mb)}function lb(a,b){return"in"==b||"of"==b?(z.marked="keyword",B(K)):B(P,mb)}function mb(a,b){return";"==a?B(nb):"in"==b||"of"==b?(z.marked="keyword",B(K)):A(K,I(";"),nb)}function nb(a){")"!=a&&B(K)}function ob(a,b){return"*"==b?(z.marked="keyword",B(ob)):"variable"==a?(C(b),B(ob)):"("==a?B(E,G(")"),$(pb,")"),H,J,F):void 0}function pb(a){return"spread"==a?B(pb):A(eb,bb)}function qb(a,b){return"variable"==a?(C(b),B(rb)):void 0}function rb(a,b){return"extends"==b?B(K):void 0}function sb(a){return"{"==a?_(X,"}"):void 0}function tb(a,b){return"string"==a?B(J):"variable"==a?(C(b),B(xb)):void 0}function ub(a,b){return"*"==b?(z.marked="keyword",B(xb,I(";"))):"default"==b?(z.marked="keyword",B(K,I(";"))):A(J)}function vb(a){return"string"==a?B():A(wb,xb)}function wb(a,b){return"{"==a?_(wb,"}"):("variable"==a&&C(b),B())}function xb(a,b){return"from"==b?(z.marked="keyword",B(K)):void 0}function yb(a){return"]"==a?B():A(L,zb)}function zb(a){return"for"==a?A(Ab,I("]")):","==a?B($(L,"]")):A($(L,"]"))}function Ab(a){return"for"==a?B(jb,Ab):"if"==a?B(K,Ab):void 0}var m,n,d=b.indentUnit,e=c.statementIndent,f=c.jsonld,g=c.json||f,h=c.typescript,i=function(){function a(a){return{type:a,style:"keyword"}}var b=a("keyword a"),c=a("keyword b"),d=a("keyword c"),e=a("operator"),f={type:"atom",style:"atom"},g={"if":a("if"),"while":b,"with":b,"else":c,"do":c,"try":c,"finally":c,"return":d,"break":d,"continue":d,"new":d,"delete":d,"throw":d,"debugger":d,"var":a("var"),"const":a("var"),let:a("var"),"function":a("function"),"catch":a("catch"),"for":a("for"),"switch":a("switch"),"case":a("case"),"default":a("default"),"in":e,"typeof":e,"instanceof":e,"true":f,"false":f,"null":f,undefined:f,NaN:f,Infinity:f,"this":a("this"),module:a("module"),"class":a("class"),"super":a("atom"),yield:d,"export":a("export"),"import":a("import"),"extends":d};if(h){var i={type:"variable",style:"variable-3"},j={"interface":a("interface"),"extends":a("extends"),constructor:a("constructor"),"public":a("public"),"private":a("private"),"protected":a("protected"),"static":a("static"),string:i,number:i,bool:i,any:i};for(var k in j)g[k]=j[k]}return g}(),j=/[+\-*&%=<>!?|~^]/,k=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,t="([{}])",v={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0},z={state:null,column:null,marked:null,cc:null},D={name:"this",next:{name:"arguments"}};return H.lex=!0,{startState:function(a){var b={tokenize:p,lastType:"sof",cc:[],lexical:new w((a||0)-d,0,"block",!1),localVars:c.localVars,context:c.localVars&&{vars:c.localVars},indented:0};return c.globalVars&&"object"==typeof c.globalVars&&(b.globalVars=c.globalVars),b},token:function(a,b){if(a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation(),u(a,b)),b.tokenize!=r&&a.eatSpace())return null;var c=b.tokenize(a,b);return"comment"==m?c:(b.lastType="operator"!=m||"++"!=n&&"--"!=n?m:"incdec",y(b,c,m,n,a))},indent:function(b,f){if(b.tokenize==r)return a.Pass;if(b.tokenize!=p)return 0;var g=f&&f.charAt(0),h=b.lexical;if(!/^\s*else\b/.test(f))for(var i=b.cc.length-1;i>=0;--i){var j=b.cc[i];if(j==H)h=h.prev;else if(j!=ib)break}"stat"==h.type&&"}"==g&&(h=h.prev),e&&")"==h.type&&"stat"==h.prev.type&&(h=h.prev);var k=h.type,l=g==k;return"vardef"==k?h.indented+("operator"==b.lastType||","==b.lastType?h.info+1:0):"form"==k&&"{"==g?h.indented:"form"==k?h.indented+d:"stat"==k?h.indented+("operator"==b.lastType||","==b.lastType?e||d:0):"switch"!=h.info||l||0==c.doubleIndentSwitch?h.align?h.column+(l?0:1):h.indented+(l?0:d):h.indented+(/^(?:case|default)\b/.test(f)?d:2*d)},electricChars:":{}",blockCommentStart:g?null:"/*",blockCommentEnd:g?null:"*/",lineComment:g?null:"//",fold:"brace",helperType:g?"json":"javascript",jsonldMode:f,jsonMode:g}}),a.defineMIME("text/javascript","javascript"),a.defineMIME("text/ecmascript","javascript"),a.defineMIME("application/javascript","javascript"),a.defineMIME("application/ecmascript","javascript"),a.defineMIME("application/json",{name:"javascript",json:!0}),a.defineMIME("application/x-json",{name:"javascript",json:!0}),a.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),a.defineMIME("text/typescript",{name:"javascript",typescript:!0}),a.defineMIME("application/typescript",{name:"javascript",typescript:!0})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function f(a,b){var c=a.getRange(e(b.line,b.ch-1),e(b.line,b.ch+1));return 2==c.length?c:null}function g(b){for(var c={name:"autoCloseBrackets",Backspace:function(c){if(c.getOption("disableInput"))return a.Pass;for(var d=c.listSelections(),g=0;g<d.length;g++){if(!d[g].empty())return a.Pass;var h=f(c,d[g].head);if(!h||0!=b.indexOf(h)%2)return a.Pass}for(var g=d.length-1;g>=0;g--){var i=d[g].head;c.replaceRange("",e(i.line,i.ch-1),e(i.line,i.ch+1))}}},g="",h=0;h<b.length;h+=2)!function(b,f){b!=f&&(g+=f),c["'"+b+"'"]=function(c){if(c.getOption("disableInput"))return a.Pass;for(var i,j,h=c.listSelections(),k=0;k<h.length;k++){var n,l=h[k],m=l.head;if("'"==b&&"comment"==c.getTokenTypeAt(m))return a.Pass;var j=c.getRange(m,e(m.line,m.ch+1));if(l.empty())if(b==f&&j==f)n=c.getRange(m,e(m.line,m.ch+3))==b+b+b?"skipThree":"skip";else if(b==f&&m.ch>1&&c.getRange(e(m.line,m.ch-2),m)==b+b&&(m.ch<=2||c.getRange(e(m.line,m.ch-3),e(m.line,m.ch-2))!=b))n="addFour";else{if(b==f&&a.isWordChar(j))return a.Pass;if(!(c.getLine(m.line).length==m.ch||g.indexOf(j)>=0||d.test(j)))return a.Pass;n="both"}else n="surround";if(i){if(i!=n)return a.Pass}else i=n}c.operation(function(){if("skip"==i)c.execCommand("goCharRight");else if("skipThree"==i)for(var a=0;3>a;a++)c.execCommand("goCharRight");else if("surround"==i){for(var d=c.getSelections(),a=0;a<d.length;a++)d[a]=b+d[a]+f;c.replaceSelections(d,"around")}else"both"==i?(c.replaceSelection(b+f,null),c.execCommand("goCharLeft")):"addFour"==i&&(c.replaceSelection(b+b+b+b,"before"),c.execCommand("goCharRight"))})},b!=f&&(c["'"+f+"'"]=function(b){for(var c=b.listSelections(),d=0;d<c.length;d++){var g=c[d];if(!g.empty()||b.getRange(g.head,e(g.head.line,g.head.ch+1))!=f)return a.Pass}b.execCommand("goCharRight")})}(b.charAt(h),b.charAt(h+1));return c}function h(b){return function(c){if(c.getOption("disableInput"))return a.Pass;for(var d=c.listSelections(),e=0;e<d.length;e++){if(!d[e].empty())return a.Pass;var g=f(c,d[e].head);if(!g||0!=b.indexOf(g)%2)return a.Pass}c.operation(function(){c.replaceSelection("\n\n",null),c.execCommand("goCharLeft"),d=c.listSelections();for(var a=0;a<d.length;a++){var b=d[a].head.line;c.indentLine(b,null,!0),c.indentLine(b+1,null,!0)}})}}var b="()[]{}''\"\"",c="[]{}",d=/\s/,e=a.Pos;a.defineOption("autoCloseBrackets",!1,function(d,e,f){if(f!=a.Init&&f&&d.removeKeyMap("autoCloseBrackets"),e){var i=b,j=c;"string"==typeof e?i=e:"object"==typeof e&&(null!=e.pairs&&(i=e.pairs),null!=e.explode&&(j=e.explode));var k=g(i);j&&(k.Enter=h(j)),d.addKeyMap(k)}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function d(b){if(b.getOption("disableInput"))return a.Pass;for(var d,c=b.listSelections(),f=[],g=0;g<c.length;g++){var h=c[g].head,i=b.getTokenAt(h);if("comment"!=i.type)return a.Pass;var j=a.innerMode(b.getMode(),i.state).mode;if(d){if(d!=j)return a.Pass}else d=j;var k=null;if(d.blockCommentStart&&d.blockCommentContinue){var n,l=i.string.indexOf(d.blockCommentEnd),m=b.getRange(a.Pos(h.line,0),a.Pos(h.line,i.end));if(-1!=l&&l==i.string.length-d.blockCommentEnd.length&&h.ch>=l);else if(0==i.string.indexOf(d.blockCommentStart)){if(k=m.slice(0,i.start),!/^\s*$/.test(k)){k="";for(var o=0;o<i.start;++o)k+=" "}}else-1!=(n=m.indexOf(d.blockCommentContinue))&&n+d.blockCommentContinue.length>i.start&&/^\s*$/.test(m.slice(0,n))&&(k=m.slice(0,n));null!=k&&(k+=d.blockCommentContinue)}if(null==k&&d.lineComment&&e(b)){var p=b.getLine(h.line),n=p.indexOf(d.lineComment);n>-1&&(k=p.slice(0,n),/\S/.test(k)?k=null:k+=d.lineComment+p.slice(n+d.lineComment.length).match(/^\s*/)[0])}if(null==k)return a.Pass;f[g]="\n"+k}b.operation(function(){for(var a=c.length-1;a>=0;a--)b.replaceRange(f[a],c[a].from(),c[a].to(),"+insert")})}function e(a){var b=a.getOption("continueComments");return b&&"object"==typeof b?b.continueLineComment!==!1:!0}for(var b=["clike","css","javascript"],c=0;c<b.length;++c)a.extendMode(b[c],{blockCommentContinue:" * "});a.defineOption("continueComments",null,function(b,c,e){if(e&&e!=a.Init&&b.removeKeyMap("continueComment"),c){var f="Enter";"string"==typeof c?f=c:"object"==typeof c&&c.key&&(f=c.key);var g={name:"continueComment"};g[f]=d,b.addKeyMap(g)}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function c(a,b){for(var c=0,d=a.length;d>c;++c)b(a[c])}function d(a,b){if(!Array.prototype.indexOf){for(var c=a.length;c--;)if(a[c]===b)return!0;return!1}return-1!=a.indexOf(b)}function e(c,d,e,f){var g=c.getCursor(),h=e(c,g),i=h;if(!/\b(?:string|comment)\b/.test(h.type)){for(h.state=a.innerMode(c.getMode(),h.state).state,/^[\w$_]*$/.test(h.string)||(h=i={start:g.ch,end:g.ch,string:"",state:h.state,type:"."==h.string?"property":null});"property"==i.type;){if(i=e(c,b(g.line,i.start)),"."!=i.string)return;if(i=e(c,b(g.line,i.start)),!j)var j=[];j.push(i)}return{list:n(h,j,d,f),from:b(g.line,h.start),to:b(g.line,h.end)}}}function f(a,b){return e(a,l,function(a,b){return a.getTokenAt(b)},b)}function g(a,b){var c=a.getTokenAt(b);return b.ch==c.start+1&&"."==c.string.charAt(0)?(c.end=c.start,c.string=".",c.type="property"):/^\.[\w$_]*$/.test(c.string)&&(c.type="property",c.start++,c.string=c.string.replace(/\./,"")),c}function h(a,b){return e(a,m,g,b)}function n(a,b,e,f){function l(a){0!=a.lastIndexOf(h,0)||d(g,a)||g.push(a)}function m(a){"string"==typeof a?c(i,l):a instanceof Array?c(j,l):a instanceof Function&&c(k,l);for(var b in a)l(b)}var g=[],h=a.string;if(b&&b.length){var o,n=b.pop();for(n.type&&0===n.type.indexOf("variable")?(f&&f.additionalContext&&(o=f.additionalContext[n.string]),o=o||window[n.string]):"string"==n.type?o="":"atom"==n.type?o=1:"function"==n.type&&(null==window.jQuery||"$"!=n.string&&"jQuery"!=n.string||"function"!=typeof window.jQuery?null!=window._&&"_"==n.string&&"function"==typeof window._&&(o=window._()):o=window.jQuery());null!=o&&b.length;)o=o[b.pop().string];null!=o&&m(o)}else{for(var p=a.state.localVars;p;p=p.next)l(p.name);for(var p=a.state.globalVars;p;p=p.next)l(p.name);m(window),c(e,l)}return g}var b=a.Pos;a.registerHelper("hint","javascript",f),a.registerHelper("hint","coffeescript",h);var i="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),j="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),k="prototype apply call bind".split(" "),l="break case catch continue debugger default delete do else false finally for function if in instanceof new null return switch throw true try typeof var void while with".split(" "),m="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ")}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function e(a,b,e,g){var h=a.getLineHandle(b.line),i=b.ch-1,j=i>=0&&d[h.text.charAt(i)]||d[h.text.charAt(++i)];if(!j)return null;var k=">"==j.charAt(1)?1:-1;if(e&&k>0!=(i==b.ch))return null;var l=a.getTokenTypeAt(c(b.line,i+1)),m=f(a,c(b.line,i+(k>0?1:0)),k,l||null,g);return null==m?null:{from:c(b.line,i),to:m&&m.pos,match:m&&m.ch==j.charAt(0),forward:k>0}}function f(a,b,e,f,g){for(var h=g&&g.maxScanLineLength||1e4,i=g&&g.maxScanLines||1e3,j=[],k=g&&g.bracketRegex?g.bracketRegex:/[(){}[\]]/,l=e>0?Math.min(b.line+i,a.lastLine()+1):Math.max(a.firstLine()-1,b.line-i),m=b.line;m!=l;m+=e){var n=a.getLine(m);if(n){var o=e>0?0:n.length-1,p=e>0?n.length:-1;if(!(n.length>h))for(m==b.line&&(o=b.ch-(0>e?1:0));o!=p;o+=e){var q=n.charAt(o);if(k.test(q)&&(void 0===f||a.getTokenTypeAt(c(m,o+1))==f)){var r=d[q];if(">"==r.charAt(1)==e>0)j.push(q);else{if(!j.length)return{pos:c(m,o),ch:q};j.pop()}}}}}return m-e==(e>0?a.lastLine():a.firstLine())?!1:null}function g(a,d,f){for(var g=a.state.matchBrackets.maxHighlightLineLength||1e3,h=[],i=a.listSelections(),j=0;j<i.length;j++){var k=i[j].empty()&&e(a,i[j].head,!1,f);if(k&&a.getLine(k.from.line).length<=g){var l=k.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";h.push(a.markText(k.from,c(k.from.line,k.from.ch+1),{className:l})),k.to&&a.getLine(k.to.line).length<=g&&h.push(a.markText(k.to,c(k.to.line,k.to.ch+1),{className:l}))}}if(h.length){b&&a.state.focused&&a.display.input.focus();var m=function(){a.operation(function(){for(var a=0;a<h.length;a++)h[a].clear()})};if(!d)return m;setTimeout(m,800)}}function i(a){a.operation(function(){h&&(h(),h=null),h=g(a,!1,a.state.matchBrackets)})}var b=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),c=a.Pos,d={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},h=null;a.defineOption("matchBrackets",!1,function(b,c,d){d&&d!=a.Init&&b.off("cursorActivity",i),c&&(b.state.matchBrackets="object"==typeof c?c:{},b.on("cursorActivity",i))}),a.defineExtension("matchBrackets",function(){g(this,!0)}),a.defineExtension("findMatchingBracket",function(a,b,c){return e(this,a,b,c)}),a.defineExtension("scanForBracket",function(a,b,c,d){return f(this,a,b,c,d)})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function d(a,b,c){this.cm=a,this.getHints=b,this.options=c,this.widget=this.onClose=null}function e(a){return"string"==typeof a?a:a.text}function f(a,b){function e(a,e){var f;f="string"!=typeof e?function(a){return e(a,b)}:c.hasOwnProperty(e)?c[e]:e,d[a]=f}var c={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(-b.menuSize()+1,!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},d=a.customKeys?{}:c;if(a.customKeys)for(var f in a.customKeys)a.customKeys.hasOwnProperty(f)&&e(f,a.customKeys[f]);if(a.extraKeys)for(var f in a.extraKeys)a.extraKeys.hasOwnProperty(f)&&e(f,a.extraKeys[f]);return d}function g(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function h(d,h){this.completion=d,this.data=h;var i=this,j=d.cm,k=d.options,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=k.getDefaultSelection?k.getDefaultSelection(j,k,h):0;for(var m=h.list,n=0;n<m.length;++n){var o=l.appendChild(document.createElement("li")),p=m[n],q=b+(n!=this.selectedHint?"":" "+c);null!=p.className&&(q=p.className+" "+q),o.className=q,p.render?p.render(o,h,p):o.appendChild(document.createTextNode(p.displayText||e(p))),o.hintId=n}var r=j.cursorCoords(k.alignWithWord!==!1?h.from:null),s=r.left,t=r.bottom,u=!0;l.style.left=s+"px",l.style.top=t+"px";var v=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),w=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(k.container||document.body).appendChild(l);var x=l.getBoundingClientRect(),y=x.bottom-w;if(y>0){var z=x.bottom-x.top,A=x.top-(r.bottom-r.top);if(A-z>0)l.style.top=(t=A-z)+"px",u=!1;else if(z>w){l.style.height=w-5+"px",l.style.top=(t=r.bottom-x.top)+"px";var B=j.getCursor();h.from.ch!=B.ch&&(r=j.cursorCoords(B),l.style.left=(s=r.left)+"px",x=l.getBoundingClientRect())}}var C=x.left-v;if(C>0&&(x.right-x.left>v&&(l.style.width=v-5+"px",C-=x.right-x.left-v),l.style.left=(s=r.left-C)+"px"),j.addKeyMap(this.keyMap=f(k,{moveFocus:function(a,b){i.changeActive(i.selectedHint+a,b)},setFocus:function(a){i.changeActive(a)},menuSize:function(){return i.screenAmount()},length:m.length,close:function(){d.close()},pick:function(){i.pick()},data:h})),k.closeOnUnfocus!==!1){var D;j.on("blur",this.onBlur=function(){D=setTimeout(function(){d.close()},100)}),j.on("focus",this.onFocus=function(){clearTimeout(D)})}var E=j.getScrollInfo();return j.on("scroll",this.onScroll=function(){var a=j.getScrollInfo(),b=j.getWrapperElement().getBoundingClientRect(),c=t+E.top-a.top,e=c-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return u||(e+=l.offsetHeight),e<=b.top||e>=b.bottom?d.close():(l.style.top=c+"px",l.style.left=s+E.left-a.left+"px",void 0)}),a.on(l,"dblclick",function(a){var b=g(l,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),i.pick())}),a.on(l,"click",function(a){var b=g(l,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),k.completeOnSingleClick&&i.pick())}),a.on(l,"mousedown",function(){setTimeout(function(){j.focus()},20)}),a.signal(h,"select",m[0],l.firstChild),!0}var b="CodeMirror-hint",c="CodeMirror-hint-active";a.showHint=function(b,c,e){if(!(b.listSelections().length>1||b.somethingSelected())){if(null==c){if(e&&e.async)return;c=a.hint.auto}b.state.completionActive&&b.state.completionActive.close();var f=b.state.completionActive=new d(b,c,e||{});return a.signal(b,"startCompletion",b),f.options.async?(c(b,function(a){f.showHints(a)},f.options),void 0):f.showHints(c(b,f.options))}},d.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.widget&&this.widget.close(),this.onClose&&this.onClose(),a.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(b,c){var d=b.list[c];d.hint?d.hint(this.cm,b,d):this.cm.replaceRange(e(d),d.from||b.from,d.to||b.to,"complete"),a.signal(b,"pick",d),this.close()},showHints:function(a){return a&&a.list.length&&this.active()?(0!=this.options.completeSingle&&1==a.list.length?this.pick(a,0):this.showWidget(a),void 0):this.close()},showWidget:function(b){function l(){e||(e=!0,d.close(),d.cm.off("cursorActivity",p),b&&a.signal(b,"close"))}function m(){e||(a.signal(b,"update"),d.options.async?d.getHints(d.cm,n,d.options):n(d.getHints(d.cm,d.options)))}function n(a){if(b=a,!e){if(!b||!b.list.length)return l();d.widget&&d.widget.close(),d.widget=new h(d,b)}}function o(){c&&(k(c),c=0)}function p(){o();var a=d.cm.getCursor(),b=d.cm.getLine(a.line);a.line!=g.line||b.length-a.ch!=i-g.ch||a.ch<g.ch||d.cm.somethingSelected()||a.ch&&f.test(b.charAt(a.ch-1))?d.close():(c=j(m),d.widget&&d.widget.close())}this.widget=new h(this,b),a.signal(b,"shown");var e,c=0,d=this,f=this.options.closeCharacters||/[\s()\[\]{};:>,]/,g=this.cm.getCursor(),i=this.cm.getLine(g.line).length,j=window.requestAnimationFrame||function(a){return setTimeout(a,1e3/60)},k=window.cancelAnimationFrame||clearTimeout;this.cm.on("cursorActivity",p),this.onClose=l}},h.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var a=this.completion.cm;this.completion.options.closeOnUnfocus!==!1&&(a.off("blur",this.onBlur),a.off("focus",this.onFocus)),a.off("scroll",this.onScroll)}},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(b,d){if(b>=this.data.list.length?b=d?this.data.list.length-1:0:0>b&&(b=d?0:this.data.list.length-1),this.selectedHint!=b){var e=this.hints.childNodes[this.selectedHint];e.className=e.className.replace(" "+c,""),e=this.hints.childNodes[this.selectedHint=b],e.className+=" "+c,e.offsetTop<this.hints.scrollTop?this.hints.scrollTop=e.offsetTop-3:e.offsetTop+e.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=e.offsetTop+e.offsetHeight-this.hints.clientHeight+3),a.signal(this.data,"select",this.data.list[this.selectedHint],e)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},a.registerHelper("hint","auto",function(b,c){var e,d=b.getHelpers(b.getCursor(),"hint");if(d.length)for(var f=0;f<d.length;f++){var g=d[f](b,c);if(g&&g.list.length)return g}else if(e=b.getHelper(b.getCursor(),"hintWords")){if(e)return a.hint.fromList(b,{words:e})}else if(a.hint.anyword)return a.hint.anyword(b,c)}),a.registerHelper("hint","fromList",function(b,c){for(var d=b.getCursor(),e=b.getTokenAt(d),f=[],g=0;g<c.words.length;g++){var h=c.words[g];h.slice(0,e.string.length)==e.string&&f.push(h)}return f.length?{list:f,from:a.Pos(d.line,e.start),to:a.Pos(d.line,e.end)}:void 0}),a.commands.autocomplete=a.showHint});
\ No newline at end of file
diff --git a/WebSites/errors/403/js/freeboard.thirdparty.min.js b/WebSites/errors/403/js/freeboard.thirdparty.min.js
new file mode 100644
index 0000000..8a6f1fc
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard.thirdparty.min.js
@@ -0,0 +1,20 @@
+!function(n,t){"use strict";function r(n){a[a.length]=n}function k(n){var t=new RegExp(" ?\\b"+n+"\\b");c.className=c.className.replace(t,"")}function p(n,t){for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}function tt(){var t,e,f,o;c.className=c.className.replace(/ (w-|eq-|gt-|gte-|lt-|lte-|portrait|no-portrait|landscape|no-landscape)\d+/g,""),t=n.innerWidth||c.clientWidth,e=n.outerWidth||n.screen.width,u.screen.innerWidth=t,u.screen.outerWidth=e,r("w-"+t),p(i.screens,function(n){t>n?(i.screensCss.gt&&r("gt-"+n),i.screensCss.gte&&r("gte-"+n)):t<n?(i.screensCss.lt&&r("lt-"+n),i.screensCss.lte&&r("lte-"+n)):t===n&&(i.screensCss.lte&&r("lte-"+n),i.screensCss.eq&&r("e-q"+n),i.screensCss.gte&&r("gte-"+n))}),f=n.innerHeight||c.clientHeight,o=n.outerHeight||n.screen.height,u.screen.innerHeight=f,u.screen.outerHeight=o,u.feature("portrait",f>t),u.feature("landscape",f<t)}function it(){n.clearTimeout(b),b=n.setTimeout(tt,50)}var v,u,s,w,o,h,l,d,f,g,nt,e,b,y=n.document,rt=n.navigator,ut=n.location,c=y.documentElement,a=[],i={screens:[240,320,480,640,768,800,1024,1280,1440,1680,1920],screensCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!1},browsers:[{ie:{min:6,max:11}}],browserCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!0},html5:!0,page:"-page",section:"-section",head:"head"};if(n.head_conf)for(v in n.head_conf)n.head_conf[v]!==t&&(i[v]=n.head_conf[v]);switch(u=n[i.head]=function(){u.ready.apply(null,arguments)},u.feature=function(n,t,i){return n?("[object Function]"===Object.prototype.toString.call(t)&&(t=t.call()),r((t?"":"no-")+n),u[n]=!!t,i||(k("no-"+n),k(n),u.feature()),u):(c.className+=" "+a.join(" "),a=[],u)},u.feature("js",!0),s=rt.userAgent.toLowerCase(),w=/mobile|android|kindle|silk|midp|phone|(windows .+arm|touch)/.test(s),u.feature("mobile",w,!0),u.feature("desktop",!w,!0),s=/(chrome|firefox)[ \/]([\w.]+)/.exec(s)||/(iphone|ipad|ipod)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(android)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(webkit|opera)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(msie) ([\w.]+)/.exec(s)||/(trident).+rv:(\w.)+/.exec(s)||[],o=s[1],h=parseFloat(s[2]),o){case"msie":case"trident":o="ie",h=y.documentMode||h;break;case"firefox":o="ff";break;case"ipod":case"ipad":case"iphone":o="ios";break;case"webkit":o="safari"}for(u.browser={name:o,version:h},u.browser[o]=!0,l=0,d=i.browsers.length;l<d;l++)for(f in i.browsers[l])if(o===f)for(r(f),g=i.browsers[l][f].min,nt=i.browsers[l][f].max,e=g;e<=nt;e++)h>e?(i.browserCss.gt&&r("gt-"+f+e),i.browserCss.gte&&r("gte-"+f+e)):h<e?(i.browserCss.lt&&r("lt-"+f+e),i.browserCss.lte&&r("lte-"+f+e)):h===e&&(i.browserCss.lte&&r("lte-"+f+e),i.browserCss.eq&&r("eq-"+f+e),i.browserCss.gte&&r("gte-"+f+e));else r("no-"+f);r(o),r(o+parseInt(h,10)),i.html5&&"ie"===o&&h<9&&p("abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|progress|section|summary|time|video".split("|"),function(n){y.createElement(n)}),p(ut.pathname.split("/"),function(n,u){if(this.length>2&&this[u+1]!==t)u&&r(this.slice(u,u+1).join("-").toLowerCase()+i.section);else{var f=n||"index",e=f.indexOf(".");e>0&&(f=f.substring(0,e)),c.id=f.toLowerCase()+i.page,u||r("root"+i.section)}}),u.screen={height:n.screen.height,width:n.screen.width},tt(),b=0,n.addEventListener?n.addEventListener("resize",it,!1):n.attachEvent("onresize",it)}(window),function(n,t){"use strict";function a(n){for(var r in n)if(i[n[r]]!==t)return!0;return!1}function r(n){var t=n.charAt(0).toUpperCase()+n.substr(1);return!!a((n+" "+c.join(t+" ")+t).split(" "))}var h=n.document,o=h.createElement("i"),i=o.style,s=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),c="Webkit Moz O ms Khtml".split(" "),l=n.head_conf&&n.head_conf.head||"head",u=n[l],f={gradient:function(){var n="background-image:";return i.cssText=(n+s.join("gradient(linear,left top,right bottom,from(#9f9),to(#fff));"+n)+s.join("linear-gradient(left top,#eee,#fff);"+n)).slice(0,-n.length),!!i.backgroundImage},rgba:function(){return i.cssText="background-color:rgba(0,0,0,0.5)",!!i.backgroundColor},opacity:function(){return""===o.style.opacity},textshadow:function(){return""===i.textShadow},multiplebgs:function(){i.cssText="background:url(https://),url(https://),red url(https://)";var n=(i.background||"").match(/url/g);return"[object Array]"===Object.prototype.toString.call(n)&&3===n.length},boxshadow:function(){return r("boxShadow")},borderimage:function(){return r("borderImage")},borderradius:function(){return r("borderRadius")},cssreflections:function(){return r("boxReflect")},csstransforms:function(){return r("transform")},csstransitions:function(){return r("transition")},touch:function(){return"ontouchstart"in n},retina:function(){return n.devicePixelRatio>1},fontface:function(){var t=u.browser.name,n=u.browser.version;switch(t){case"ie":return n>=9;case"chrome":return n>=13;case"ff":return n>=6;case"ios":return n>=5;case"android":return!1;case"webkit":return n>=5.1;case"opera":return n>=10;default:return!1}}};for(var e in f)f[e]&&u.feature(e,f[e].call(),!0);u.feature()}(window),function(n,t){"use strict";function w(){}function u(n,t){if(n){"object"==typeof n&&(n=[].slice.call(n));for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}}function it(n,i){var r=Object.prototype.toString.call(i).slice(8,-1);return i!==t&&null!==i&&r===n}function s(n){return it("Function",n)}function a(n){return it("Array",n)}function et(n){var i=n.split("/"),t=i[i.length-1],r=t.indexOf("?");return-1!==r?t.substring(0,r):t}function f(n){n=n||w,n._done||(n(),n._done=1)}function ot(n,t,r,u){var f="object"==typeof n?n:{test:n,success:!!t&&(a(t)?t:[t]),failure:!!r&&(a(r)?r:[r]),callback:u||w},e=!!f.test;return e&&f.success?(f.success.push(f.callback),i.load.apply(null,f.success)):e||!f.failure?u():(f.failure.push(f.callback),i.load.apply(null,f.failure)),i}function v(n){var i,r,t={};if("object"==typeof n)for(i in n)!n[i]||(t={name:i,url:n[i]});else t={name:et(n),url:n};return(r=c[t.name])&&r.url===t.url?r:(c[t.name]=t,t)}function y(n){n=n||c;for(var t in n)if(n.hasOwnProperty(t)&&n[t].state!==l)return!1;return!0}function st(n){n.state=ft,u(n.onpreload,function(n){n.call()})}function ht(n){n.state===t&&(n.state=nt,n.onpreload=[],rt({url:n.url,type:"cache"},function(){st(n)}))}function ct(){var n=arguments,t=n[n.length-1],r=[].slice.call(n,1),f=r[0];return s(t)||(t=null),a(n[0])?(n[0].push(t),i.load.apply(null,n[0]),i):(f?(u(r,function(n){s(n)||!n||ht(v(n))}),b(v(n[0]),s(f)?f:function(){i.load.apply(null,r)})):b(v(n[0])),i)}function lt(){var n=arguments,t=n[n.length-1],r={};return s(t)||(t=null),a(n[0])?(n[0].push(t),i.load.apply(null,n[0]),i):(u(n,function(n){n!==t&&(n=v(n),r[n.name]=n)}),u(n,function(n){n!==t&&(n=v(n),b(n,function(){y(r)&&f(t)}))}),i)}function b(n,t){return t=t||w,n.state===l?void t():n.state===tt?void i.ready(n.name,t):n.state===nt?void n.onpreload.push(function(){b(n,t)}):(n.state=tt,void rt(n,function(){n.state=l,t(),u(h[n.name],function(n){f(n)}),o&&y()&&u(h.ALL,function(n){f(n)})}))}function at(n){n=n||"";var t=n.split("?")[0].split(".");return t[t.length-1].toLowerCase()}function rt(t,i){function e(t){t=t||n.event,u.onload=u.onreadystatechange=u.onerror=null,i()}function o(f){f=f||n.event,("load"===f.type||/loaded|complete/.test(u.readyState)&&(!r.documentMode||r.documentMode<9))&&(n.clearTimeout(t.errorTimeout),n.clearTimeout(t.cssTimeout),u.onload=u.onreadystatechange=u.onerror=null,i())}function s(){if(t.state!==l&&t.cssRetries<=20){for(var i=0,f=r.styleSheets.length;i<f;i++)if(r.styleSheets[i].href===u.href)return void o({type:"load"});t.cssRetries++,t.cssTimeout=n.setTimeout(s,250)}}var u,h,f;i=i||w,h=at(t.url),"css"===h?(u=r.createElement("link"),u.type="text/"+(t.type||"css"),u.rel="stylesheet",u.href=t.url,t.cssRetries=0,t.cssTimeout=n.setTimeout(s,500)):(u=r.createElement("script"),u.type="text/"+(t.type||"javascript"),u.src=t.url),u.onload=u.onreadystatechange=o,u.onerror=e,u.async=!1,u.defer=!1,t.errorTimeout=n.setTimeout(function(){e({type:"timeout"})},7e3),f=r.head||r.getElementsByTagName("head")[0],f.insertBefore(u,f.lastChild)}function vt(){for(var t,u=r.getElementsByTagName("script"),n=0,f=u.length;n<f;n++)if(!!(t=u[n].getAttribute("data-headjs-load")))return void i.load(t)}function yt(n,t){var v,p,e;return n===r?(o?f(t):d.push(t),i):(s(n)&&(t=n,n="ALL"),a(n)?(v={},u(n,function(n){v[n]=c[n],i.ready(n,function(){y(v)&&f(t)})}),i):"string"==typeof n&&s(t)?(p=c[n])&&p.state===l||"ALL"===n&&y()&&o?(f(t),i):(e=h[n],e?e.push(t):e=h[n]=[t],i):i)}function e(){if(!r.body)return n.clearTimeout(i.readyTimeout),void(i.readyTimeout=n.setTimeout(e,50));o||(o=!0,vt(),u(d,function(n){f(n)}))}function k(){r.addEventListener?(r.removeEventListener("DOMContentLoaded",k,!1),e()):"complete"===r.readyState&&(r.detachEvent("onreadystatechange",k),e())}var o,p,r=n.document,d=[],h={},c={},ut="async"in r.createElement("script")||"MozAppearance"in r.documentElement.style||n.opera,g=n.head_conf&&n.head_conf.head||"head",i=n[g]=n[g]||function(){i.ready.apply(null,arguments)},nt=1,ft=2,tt=3,l=4;if("complete"===r.readyState)e();else if(r.addEventListener)r.addEventListener("DOMContentLoaded",k,!1),n.addEventListener("load",e,!1);else{r.attachEvent("onreadystatechange",k),n.attachEvent("onload",e),p=!1;try{p=!n.frameElement&&r.documentElement}catch(wt){}p&&p.doScroll&&function pt(){if(!o){try{p.doScroll("left")}catch(t){return n.clearTimeout(i.readyTimeout),void(i.readyTimeout=n.setTimeout(pt,50))}e()}}()}i.load=i.js=ut?lt:ct,i.test=ot,i.ready=yt,i.ready(r,function(){y()&&u(h.ALL,function(n){f(n)}),i.feature&&i.feature("domloaded",!0)})}(window),function(e,undefined){function j(e){var t=e.length,n=x.type(e);return!x.isWindow(e)&&(!(1!==e.nodeType||!t)||("array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)))}function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n)}catch(i){}L.set(e,t,n)}else n=undefined;return n}function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}function Z(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){for(var n=e.length,r=0;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}function At(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;i--;)if((t=Dt[i]+n)in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){for(var n,r,i,o=[],s=0,a=e.length;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}var i={},o=e===on;return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}function pn(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(s=l[u+" "+o]||l["* "+o]))for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){!0===s?s=l[i]:!0!==l[i]&&(o=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){for(var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(s=x.cssHooks[r])&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=q.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=q.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;q.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}function qn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function Hn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(!0===e?--x.readyWait:x.isReady)||(x.isReady=!0,!0!==e&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;(e=x.trim(e))&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var i=0,o=e.length,s=j(e);if(n){if(s)for(;o>i&&!1!==t.apply(e[i],n);i++);else for(i in e)if(!1===t.apply(e[i],n))break}else if(s)for(;o>i&&!1!==t.call(e[i],i,e[i]);i++);else for(i in e)if(!1===t.call(e[i],i,e[i]))break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else for(;t[i]!==undefined;)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)null!=(r=t(e[i],i,n))&&(a[a.length]=r);else for(i in e)null!=(r=t(e[i],i,n))&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()}),t=x(o),function(e,undefined){function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(!(s=t.getElementById(a))||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;l--;)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}var e=[];return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){for(var n=e.split("|"),r=e.length;r--;)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}function dt(){}function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],l=i.preFilter;a;){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){for(;t=t[i];)if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){for(;t=t[i];)if((1===t.nodeType||o)&&e(t,n,a))return!0}else for(;t=t[i];)if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if(!0===(u=l[1])||u===r)return!0===u}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,!0===l[1])return!0}}function vt(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,l=null!=t;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r)for(l=xt(y,h),r(l,[],a,u),c=l.length;c--;)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p));if(o){if(i||e){if(i){for(l=[],c=y.length;c--;)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}for(c=y.length;c--;)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){for(var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r&&!i.relative[e[r].type];r++);return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){for(g=0;m=e[g++];)if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){for(g=0;m=t[g++];)m(b,y,l,c);if(a){if(v>0)for(;x--;)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}function Ct(e,t,n){for(var r=0,i=t.length;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(!(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0]))return r;e=e.slice(u.shift().value.length)}for(s=J.needsContext.test(e)?0:u.length;s--&&(l=u[s],!i.relative[c=l.type]);)if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),!(e=o.length&&mt(u)))return O.apply(r,o),r;break}}return a(e,f)(o,t,!h,r,U.test(e)),r}var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){
+H.apply(e,F.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);for(r=e;r=r.parentNode;)a.unshift(r);for(r=n;r=r.parentNode;)u.unshift(r);for(;a[i]===u[i];)i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){for(c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(f=h=0)||d.pop();)if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else for(;(p=++h&&p&&p[g]||(f=h=0)||d.pop())&&((a?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++f||(x&&((p[v]||(p[v]={}))[e]=[w,f]),p!==t)););return(f-=i)===r||0==f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){for(var i,o=r(e,t),s=o.length;s--;)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){for(var o,s=r(e,null,i,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do{if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);dt.prototype=i.filters=i.pseudos,i.setFilters=new dt,a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){for(t||(t=gt(e)),n=t.length;n--;)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o},n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:!0===e[t]?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(!1===a[s].apply(p[0],p[1])&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){for(var n;(n=x.inArray(t,a,n))>-1;)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var a,u,l,t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}};if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;F.uid=1,F.accepts=function(e){return!e.nodeType||(1===e.nodeType||9===e.nodeType)},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;for(;n--;)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if((n=L.get(i,e))!==undefined)return n;if((n=L.get(i,r))!==undefined)return n;if((n=P(i,r,undefined))!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}}),x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=undefined),e=e||"fx";s--;)(n=q.get(o[s],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){for(o=0;i=t[o++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){for(o=0;i=t[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n)for(var t,i=0,o=x(this),s=e.match(w)||[];t=s[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||!1===e?"":q.get(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];return arguments.length?(r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),(t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))})):i?(t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)):void 0}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){for(var n,r,i=e.options,o=x.makeArray(t),s=i.length;s--;)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)for(;n=o[i++];)r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{for:"htmlFor",class:"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return!1===t?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){for(n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;c--;)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&!1!==f.setup.call(e,i,g,a)||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){for(t=(t||"").match(w)||[""],l=t.length;l--;)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;o--;)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&!1!==p.teardown.call(e,d,m.handle)||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||!1!==f.trigger.apply(r,n))){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}for(s=0;(a=h[s++])&&!t.isPropagationStopped();)t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),(p=c&&a[c])&&x.acceptData(a)&&p.apply&&!1===p.apply(a,n)&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(h.pop(),n)||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||!1!==l.preDispatch.call(this,e)){for(s=x.event.handlers.call(this,e,u),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,(r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a))!==undefined&&!1===(e.result=r)&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(!0!==u.disabled||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;t--;)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0==n++&&o.addEventListener(e,r,!0)},teardown:function(){0==--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),!1===r)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i
+;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(!1===t||"function"==typeof t)&&(n=t,t=undefined),!1===n&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){for(var e=0;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){for(var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){for(var r=[],i=n!==undefined;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){pt(this,e).appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=e?x.filter(e,this):this,i=0;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){for(var n,r=[],i=x(e),o=i.length-1,s=0;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){for(var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];p>c;c++)if((i=e[c])||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){for(o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];l--;)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));for(f.textContent="",c=0;i=h[c++];)if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n))for(l=0;i=o[l++];)at.test(i.type||"")&&n.push(i);return f},cleanData:function(e){for(var t,n,r,i,o,s,a=x.event.special,u=0;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando])&&(t=q.cache[o])){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})}}),x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),!0===n||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a},x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&qt(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")},x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[],x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),(w=T.getResponseHeader("etag"))&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o)for(o={};t=Qt.exec(i);)o[t[1].toLowerCase()]=t[2];t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0==x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),!1===c.cache&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&!1!==c.contentType||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(!1===c.beforeSend.call(p,T,c)||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}}),x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=!1!==t.jsonp&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):!1!==t.jsonp&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do{a=a||".5",s/=a,x.style(n.elem,e,s+o)}while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}}),x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(qn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||!1===o.queue?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),x.each({slideDown:qn("show"),slideUp:qn("hide"),slideToggle:qn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||!0===r.queue)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)(e=t[n])()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;return s?(t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=Hn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o):void 0},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||s;e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position");)e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=Hn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}}),x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===i?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)}(window),function($,undefined){function focusable(element,isTabIndexNotNaN){var map,mapName,img,nodeName=element.nodeName.toLowerCase();return"area"===nodeName?(map=element.parentNode,mapName=map.name,!(!element.href||!mapName||"map"!==map.nodeName.toLowerCase())&&(!!(img=$("img[usemap=#"+mapName+"]")[0])&&visible(img))):(/input|select|textarea|button|object/.test(nodeName)?!element.disabled:"a"===nodeName?element.href||isTabIndexNotNaN:isTabIndexNotNaN)&&visible(element)}function visible(element){return $.expr.filters.visible(element)&&!$(element).parents().addBack().filter(function(){return"hidden"===$.css(this,"visibility")}).length}var uuid=0,runiqueId=/^ui-id-\d+$/;$.ui=$.ui||{},$.extend($.ui,{version:"1.10.3",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),$.fn.extend({focus:function(orig){return function(delay,fn){return"number"==typeof delay?this.each(function(){var elem=this;setTimeout(function(){$(elem).focus(),fn&&fn.call(elem)},delay)}):orig.apply(this,arguments)}}($.fn.focus),scrollParent:function(){var scrollParent;return scrollParent=$.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test($.css(this,"position"))&&/(auto|scroll)/.test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!scrollParent.length?$(document):scrollParent},zIndex:function(zIndex){if(zIndex!==undefined)return this.css("zIndex",zIndex);if(this.length)for(var position,value,elem=$(this[0]);elem.length&&elem[0]!==document;){if(("absolute"===(position=elem.css("position"))||"relative"===position||"fixed"===position)&&(value=parseInt(elem.css("zIndex"),10),!isNaN(value)&&0!==value))return value;elem=elem.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++uuid)})},removeUniqueId:function(){return this.each(function(){runiqueId.test(this.id)&&$(this).removeAttr("id")})}}),$.extend($.expr[":"],{data:$.expr.createPseudo?$.expr.createPseudo(function(dataName){return function(elem){return!!$.data(elem,dataName)}}):function(elem,i,match){return!!$.data(elem,match[3])},focusable:function(element){return focusable(element,!isNaN($.attr(element,"tabindex")))},tabbable:function(element){var tabIndex=$.attr(element,"tabindex"),isTabIndexNaN=isNaN(tabIndex);return(isTabIndexNaN||tabIndex>=0)&&focusable(element,!isTabIndexNaN)}}),$("<a>").outerWidth(1).jquery||$.each(["Width","Height"],function(i,name){function reduce(elem,size,border,margin){return $.each(side,function(){size-=parseFloat($.css(elem,"padding"+this))||0,border&&(size-=parseFloat($.css(elem,"border"+this+"Width"))||0),
+margin&&(size-=parseFloat($.css(elem,"margin"+this))||0)}),size}var side="Width"===name?["Left","Right"]:["Top","Bottom"],type=name.toLowerCase(),orig={innerWidth:$.fn.innerWidth,innerHeight:$.fn.innerHeight,outerWidth:$.fn.outerWidth,outerHeight:$.fn.outerHeight};$.fn["inner"+name]=function(size){return size===undefined?orig["inner"+name].call(this):this.each(function(){$(this).css(type,reduce(this,size)+"px")})},$.fn["outer"+name]=function(size,margin){return"number"!=typeof size?orig["outer"+name].call(this,size):this.each(function(){$(this).css(type,reduce(this,size,!0,margin)+"px")})}}),$.fn.addBack||($.fn.addBack=function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}),$("<a>").data("a-b","a").removeData("a-b").data("a-b")&&($.fn.removeData=function(removeData){return function(key){return arguments.length?removeData.call(this,$.camelCase(key)):removeData.call(this)}}($.fn.removeData)),$.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),$.support.selectstart="onselectstart"in document.createElement("div"),$.fn.extend({disableSelection:function(){return this.bind(($.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(event){event.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),$.extend($.ui,{plugin:{add:function(module,option,set){var i,proto=$.ui[module].prototype;for(i in set)proto.plugins[i]=proto.plugins[i]||[],proto.plugins[i].push([option,set[i]])},call:function(instance,name,args){var i,set=instance.plugins[name];if(set&&instance.element[0].parentNode&&11!==instance.element[0].parentNode.nodeType)for(i=0;i<set.length;i++)instance.options[set[i][0]]&&set[i][1].apply(instance.element,args)}},hasScroll:function(el,a){if("hidden"===$(el).css("overflow"))return!1;var scroll=a&&"left"===a?"scrollLeft":"scrollTop",has=!1;return el[scroll]>0||(el[scroll]=1,has=el[scroll]>0,el[scroll]=0,has)}})}(jQuery),function($,undefined){var uuid=0,slice=Array.prototype.slice,_cleanData=$.cleanData;$.cleanData=function(elems){for(var elem,i=0;null!=(elem=elems[i]);i++)try{$(elem).triggerHandler("remove")}catch(e){}_cleanData(elems)},$.widget=function(name,base,prototype){var fullName,existingConstructor,constructor,basePrototype,proxiedPrototype={},namespace=name.split(".")[0];name=name.split(".")[1],fullName=namespace+"-"+name,prototype||(prototype=base,base=$.Widget),$.expr[":"][fullName.toLowerCase()]=function(elem){return!!$.data(elem,fullName)},$[namespace]=$[namespace]||{},existingConstructor=$[namespace][name],constructor=$[namespace][name]=function(options,element){if(!this._createWidget)return new constructor(options,element);arguments.length&&this._createWidget(options,element)},$.extend(constructor,existingConstructor,{version:prototype.version,_proto:$.extend({},prototype),_childConstructors:[]}),basePrototype=new base,basePrototype.options=$.widget.extend({},basePrototype.options),$.each(prototype,function(prop,value){if(!$.isFunction(value))return void(proxiedPrototype[prop]=value);proxiedPrototype[prop]=function(){var _super=function(){return base.prototype[prop].apply(this,arguments)},_superApply=function(args){return base.prototype[prop].apply(this,args)};return function(){var returnValue,__super=this._super,__superApply=this._superApply;return this._super=_super,this._superApply=_superApply,returnValue=value.apply(this,arguments),this._super=__super,this._superApply=__superApply,returnValue}}()}),constructor.prototype=$.widget.extend(basePrototype,{widgetEventPrefix:existingConstructor?basePrototype.widgetEventPrefix:name},proxiedPrototype,{constructor:constructor,namespace:namespace,widgetName:name,widgetFullName:fullName}),existingConstructor?($.each(existingConstructor._childConstructors,function(i,child){var childPrototype=child.prototype;$.widget(childPrototype.namespace+"."+childPrototype.widgetName,constructor,child._proto)}),delete existingConstructor._childConstructors):base._childConstructors.push(constructor),$.widget.bridge(name,constructor)},$.widget.extend=function(target){for(var key,value,input=slice.call(arguments,1),inputIndex=0,inputLength=input.length;inputIndex<inputLength;inputIndex++)for(key in input[inputIndex])value=input[inputIndex][key],input[inputIndex].hasOwnProperty(key)&&value!==undefined&&($.isPlainObject(value)?target[key]=$.isPlainObject(target[key])?$.widget.extend({},target[key],value):$.widget.extend({},value):target[key]=value);return target},$.widget.bridge=function(name,object){var fullName=object.prototype.widgetFullName||name;$.fn[name]=function(options){var isMethodCall="string"==typeof options,args=slice.call(arguments,1),returnValue=this;return options=!isMethodCall&&args.length?$.widget.extend.apply(null,[options].concat(args)):options,isMethodCall?this.each(function(){var methodValue,instance=$.data(this,fullName);return instance?$.isFunction(instance[options])&&"_"!==options.charAt(0)?(methodValue=instance[options].apply(instance,args),methodValue!==instance&&methodValue!==undefined?(returnValue=methodValue&&methodValue.jquery?returnValue.pushStack(methodValue.get()):methodValue,!1):void 0):$.error("no such method '"+options+"' for "+name+" widget instance"):$.error("cannot call methods on "+name+" prior to initialization; attempted to call method '"+options+"'")}):this.each(function(){var instance=$.data(this,fullName);instance?instance.option(options||{})._init():$.data(this,fullName,new object(options,this))}),returnValue}},$.Widget=function(){},$.Widget._childConstructors=[],$.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(options,element){element=$(element||this.defaultElement||this)[0],this.element=$(element),this.uuid=uuid++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=$.widget.extend({},this.options,this._getCreateOptions(),options),this.bindings=$(),this.hoverable=$(),this.focusable=$(),element!==this&&($.data(element,this.widgetFullName,this),this._on(!0,this.element,{remove:function(event){event.target===element&&this.destroy()}}),this.document=$(element.style?element.ownerDocument:element.document||element),this.window=$(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:$.noop,_getCreateEventData:$.noop,_create:$.noop,_init:$.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData($.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:$.noop,widget:function(){return this.element},option:function(key,value){var parts,curOption,i,options=key;if(0===arguments.length)return $.widget.extend({},this.options);if("string"==typeof key)if(options={},parts=key.split("."),key=parts.shift(),parts.length){for(curOption=options[key]=$.widget.extend({},this.options[key]),i=0;i<parts.length-1;i++)curOption[parts[i]]=curOption[parts[i]]||{},curOption=curOption[parts[i]];if(key=parts.pop(),value===undefined)return curOption[key]===undefined?null:curOption[key];curOption[key]=value}else{if(value===undefined)return this.options[key]===undefined?null:this.options[key];options[key]=value}return this._setOptions(options),this},_setOptions:function(options){var key;for(key in options)this._setOption(key,options[key]);return this},_setOption:function(key,value){return this.options[key]=value,"disabled"===key&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!value).attr("aria-disabled",value),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(suppressDisabledCheck,element,handlers){var delegateElement,instance=this;"boolean"!=typeof suppressDisabledCheck&&(handlers=element,element=suppressDisabledCheck,suppressDisabledCheck=!1),handlers?(element=delegateElement=$(element),this.bindings=this.bindings.add(element)):(handlers=element,element=this.element,delegateElement=this.widget()),$.each(handlers,function(event,handler){function handlerProxy(){if(suppressDisabledCheck||!0!==instance.options.disabled&&!$(this).hasClass("ui-state-disabled"))return("string"==typeof handler?instance[handler]:handler).apply(instance,arguments)}"string"!=typeof handler&&(handlerProxy.guid=handler.guid=handler.guid||handlerProxy.guid||$.guid++);var match=event.match(/^(\w+)\s*(.*)$/),eventName=match[1]+instance.eventNamespace,selector=match[2];selector?delegateElement.delegate(selector,eventName,handlerProxy):element.bind(eventName,handlerProxy)})},_off:function(element,eventName){eventName=(eventName||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,element.unbind(eventName).undelegate(eventName)},_delay:function(handler,delay){function handlerProxy(){return("string"==typeof handler?instance[handler]:handler).apply(instance,arguments)}var instance=this;return setTimeout(handlerProxy,delay||0)},_hoverable:function(element){this.hoverable=this.hoverable.add(element),this._on(element,{mouseenter:function(event){$(event.currentTarget).addClass("ui-state-hover")},mouseleave:function(event){$(event.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(element){this.focusable=this.focusable.add(element),this._on(element,{focusin:function(event){$(event.currentTarget).addClass("ui-state-focus")},focusout:function(event){$(event.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(type,event,data){var prop,orig,callback=this.options[type];if(data=data||{},event=$.Event(event),event.type=(type===this.widgetEventPrefix?type:this.widgetEventPrefix+type).toLowerCase(),event.target=this.element[0],orig=event.originalEvent)for(prop in orig)prop in event||(event[prop]=orig[prop]);return this.element.trigger(event,data),!($.isFunction(callback)&&!1===callback.apply(this.element[0],[event].concat(data))||event.isDefaultPrevented())}},$.each({show:"fadeIn",hide:"fadeOut"},function(method,defaultEffect){$.Widget.prototype["_"+method]=function(element,options,callback){"string"==typeof options&&(options={effect:options});var hasOptions,effectName=options?!0===options||"number"==typeof options?defaultEffect:options.effect||defaultEffect:method;options=options||{},"number"==typeof options&&(options={duration:options}),hasOptions=!$.isEmptyObject(options),options.complete=callback,options.delay&&element.delay(options.delay),hasOptions&&$.effects&&$.effects.effect[effectName]?element[method](options):effectName!==method&&element[effectName]?element[effectName](options.duration,options.easing,callback):element.queue(function(next){$(this)[method](),callback&&callback.call(element[0]),next()})}})}(jQuery),function($,undefined){var mouseHandled=!1;$(document).mouseup(function(){mouseHandled=!1}),$.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var that=this;this.element.bind("mousedown."+this.widgetName,function(event){return that._mouseDown(event)}).bind("click."+this.widgetName,function(event){if(!0===$.data(event.target,that.widgetName+".preventClickEvent"))return $.removeData(event.target,that.widgetName+".preventClickEvent"),event.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&$(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(event){if(!mouseHandled){this._mouseStarted&&this._mouseUp(event),this._mouseDownEvent=event;var that=this,btnIsLeft=1===event.which,elIsCancel=!("string"!=typeof this.options.cancel||!event.target.nodeName)&&$(event.target).closest(this.options.cancel).length;return!(btnIsLeft&&!elIsCancel&&this._mouseCapture(event))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){that.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(event)&&this._mouseDelayMet(event)&&(this._mouseStarted=!1!==this._mouseStart(event),!this._mouseStarted)?(event.preventDefault(),!0):(!0===$.data(event.target,this.widgetName+".preventClickEvent")&&$.removeData(event.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(event){return that._mouseMove(event)},this._mouseUpDelegate=function(event){return that._mouseUp(event)},$(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),event.preventDefault(),mouseHandled=!0,!0))}},_mouseMove:function(event){return $.ui.ie&&(!document.documentMode||document.documentMode<9)&&!event.button?this._mouseUp(event):this._mouseStarted?(this._mouseDrag(event),event.preventDefault()):(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,event),this._mouseStarted?this._mouseDrag(event):this._mouseUp(event)),!this._mouseStarted)},_mouseUp:function(event){return $(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,event.target===this._mouseDownEvent.target&&$.data(event.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(event)),!1},_mouseDistanceMet:function(event){return Math.max(Math.abs(this._mouseDownEvent.pageX-event.pageX),Math.abs(this._mouseDownEvent.pageY-event.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}(jQuery),function($,undefined){$.widget("ui.draggable",$.ui.mouse,{version:"1.10.3",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(event){var o=this.options;return!(this.helper||o.disabled||$(event.target).closest(".ui-resizable-handle").length>0)&&(this.handle=this._getHandle(event),!!this.handle&&($(!0===o.iframeFix?"iframe":o.iframeFix).each(function(){$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css($(this).offset()).appendTo("body")}),!0))},_mouseStart:function(event){var o=this.options;return this.helper=this._createHelper(event),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),$.ui.ddmanager&&($.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,$.extend(this.offset,{click:{left:event.pageX-this.offset.left,top:event.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(event),this.originalPageX=event.pageX,this.originalPageY=event.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this._setContainment(),!1===this._trigger("start",event)?(this._clear(),!1):(this._cacheHelperProportions(),$.ui.ddmanager&&!o.dropBehaviour&&$.ui.ddmanager.prepareOffsets(this,event),this._mouseDrag(event,!0),$.ui.ddmanager&&$.ui.ddmanager.dragStart(this,event),!0)},_mouseDrag:function(event,noPropagation){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(event),this.positionAbs=this._convertPositionTo("absolute"),!noPropagation){var ui=this._uiHash();if(!1===this._trigger("drag",event,ui))return this._mouseUp({}),!1;this.position=ui.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),$.ui.ddmanager&&$.ui.ddmanager.drag(this,event),!1},_mouseStop:function(event){var that=this,dropped=!1;return $.ui.ddmanager&&!this.options.dropBehaviour&&(dropped=$.ui.ddmanager.drop(this,event)),this.dropped&&(dropped=this.dropped,this.dropped=!1),!("original"===this.options.helper&&!$.contains(this.element[0].ownerDocument,this.element[0]))&&("invalid"===this.options.revert&&!dropped||"valid"===this.options.revert&&dropped||!0===this.options.revert||$.isFunction(this.options.revert)&&this.options.revert.call(this.element,dropped)?$(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==that._trigger("stop",event)&&that._clear()}):!1!==this._trigger("stop",event)&&this._clear(),!1)},_mouseUp:function(event){return $("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),$.ui.ddmanager&&$.ui.ddmanager.dragStop(this,event),$.ui.mouse.prototype._mouseUp.call(this,event)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(event){return!this.options.handle||!!$(event.target).closest(this.element.find(this.options.handle)).length},_createHelper:function(event){var o=this.options,helper=$.isFunction(o.helper)?$(o.helper.apply(this.element[0],[event])):"clone"===o.helper?this.element.clone().removeAttr("id"):this.element;return helper.parents("body").length||helper.appendTo("parent"===o.appendTo?this.element[0].parentNode:o.appendTo),helper[0]===this.element[0]||/(fixed|absolute)/.test(helper.css("position"))||helper.css("position","absolute"),helper},_adjustOffsetFromHelper:function(obj){"string"==typeof obj&&(obj=obj.split(" ")),$.isArray(obj)&&(obj={left:+obj[0],top:+obj[1]||0}),"left"in obj&&(this.offset.click.left=obj.left+this.margins.left),"right"in obj&&(this.offset.click.left=this.helperProportions.width-obj.right+this.margins.left),"top"in obj&&(this.offset.click.top=obj.top+this.margins.top),"bottom"in obj&&(this.offset.click.top=this.helperProportions.height-obj.bottom+this.margins.top)},_getParentOffset:function(){var po=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])&&(po.left+=this.scrollParent.scrollLeft(),po.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&$.ui.ie)&&(po={top:0,left:0}),{top:po.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:po.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var p=this.element.position();return{top:p.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:p.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var over,c,ce,o=this.options;return o.containment?"window"===o.containment?void(this.containment=[$(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,$(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,$(window).scrollLeft()+$(window).width()-this.helperProportions.width-this.margins.left,$(window).scrollTop()+($(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):"document"===o.containment?void(this.containment=[0,0,$(document).width()-this.helperProportions.width-this.margins.left,($(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):o.containment.constructor===Array?void(this.containment=o.containment):("parent"===o.containment&&(o.containment=this.helper[0].parentNode),c=$(o.containment),void((ce=c[0])&&(over="hidden"!==c.css("overflow"),this.containment=[(parseInt(c.css("borderLeftWidth"),10)||0)+(parseInt(c.css("paddingLeft"),10)||0),(parseInt(c.css("borderTopWidth"),10)||0)+(parseInt(c.css("paddingTop"),10)||0),(over?Math.max(ce.scrollWidth,ce.offsetWidth):ce.offsetWidth)-(parseInt(c.css("borderRightWidth"),10)||0)-(parseInt(c.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(over?Math.max(ce.scrollHeight,ce.offsetHeight):ce.offsetHeight)-(parseInt(c.css("borderBottomWidth"),10)||0)-(parseInt(c.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c))):void(this.containment=null)},_convertPositionTo:function(d,pos){pos||(pos=this.position);var mod="absolute"===d?1:-1,scroll="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:scroll.scrollTop(),left:scroll.scrollLeft()}),{top:pos.top+this.offset.relative.top*mod+this.offset.parent.top*mod-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*mod,left:pos.left+this.offset.relative.left*mod+this.offset.parent.left*mod-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*mod}},_generatePosition:function(event){var containment,co,top,left,o=this.options,scroll="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,pageX=event.pageX,pageY=event.pageY;return this.offset.scroll||(this.offset.scroll={top:scroll.scrollTop(),left:scroll.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(co=this.relative_container.offset(),containment=[this.containment[0]+co.left,this.containment[1]+co.top,this.containment[2]+co.left,this.containment[3]+co.top]):containment=this.containment,event.pageX-this.offset.click.left<containment[0]&&(pageX=containment[0]+this.offset.click.left),event.pageY-this.offset.click.top<containment[1]&&(pageY=containment[1]+this.offset.click.top),event.pageX-this.offset.click.left>containment[2]&&(pageX=containment[2]+this.offset.click.left),event.pageY-this.offset.click.top>containment[3]&&(pageY=containment[3]+this.offset.click.top)),o.grid&&(top=o.grid[1]?this.originalPageY+Math.round((pageY-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,pageY=containment?top-this.offset.click.top>=containment[1]||top-this.offset.click.top>containment[3]?top:top-this.offset.click.top>=containment[1]?top-o.grid[1]:top+o.grid[1]:top,left=o.grid[0]?this.originalPageX+Math.round((pageX-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,pageX=containment?left-this.offset.click.left>=containment[0]||left-this.offset.click.left>containment[2]?left:left-this.offset.click.left>=containment[0]?left-o.grid[0]:left+o.grid[0]:left)),{top:pageY-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:pageX-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(type,event,ui){return ui=ui||this._uiHash(),$.ui.plugin.call(this,type,[event,ui]),"drag"===type&&(this.positionAbs=this._convertPositionTo("absolute")),$.Widget.prototype._trigger.call(this,type,event,ui)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),$.ui.plugin.add("draggable","connectToSortable",{start:function(event,ui){var inst=$(this).data("ui-draggable"),o=inst.options,uiSortable=$.extend({},ui,{item:inst.element});inst.sortables=[],$(o.connectToSortable).each(function(){var sortable=$.data(this,"ui-sortable");sortable&&!sortable.options.disabled&&(inst.sortables.push({instance:sortable,shouldRevert:sortable.options.revert}),sortable.refreshPositions(),sortable._trigger("activate",event,uiSortable))})},stop:function(event,ui){var inst=$(this).data("ui-draggable"),uiSortable=$.extend({},ui,{item:inst.element});$.each(inst.sortables,function(){this.instance.isOver?(this.instance.isOver=0,inst.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(event),this.instance.options.helper=this.instance.options._helper,"original"===inst.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",event,uiSortable))})},drag:function(event,ui){var inst=$(this).data("ui-draggable"),that=this;$.each(inst.sortables,function(){var innermostIntersecting=!1,thisSortable=this;this.instance.positionAbs=inst.positionAbs,this.instance.helperProportions=inst.helperProportions,this.instance.offset.click=inst.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(innermostIntersecting=!0,$.each(inst.sortables,function(){return this.instance.positionAbs=inst.positionAbs,this.instance.helperProportions=inst.helperProportions,this.instance.offset.click=inst.offset.click,this!==thisSortable&&this.instance._intersectsWith(this.instance.containerCache)&&$.contains(thisSortable.instance.element[0],this.instance.element[0])&&(innermostIntersecting=!1),innermostIntersecting})),innermostIntersecting?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=$(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return ui.helper[0]},event.target=this.instance.currentItem[0],this.instance._mouseCapture(event,!0),this.instance._mouseStart(event,!0,!0),this.instance.offset.click.top=inst.offset.click.top,this.instance.offset.click.left=inst.offset.click.left,this.instance.offset.parent.left-=inst.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=inst.offset.parent.top-this.instance.offset.parent.top,inst._trigger("toSortable",event),inst.dropped=this.instance.element,inst.currentItem=inst.element,this.instance.fromOutside=inst),this.instance.currentItem&&this.instance._mouseDrag(event)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",event,this.instance._uiHash(this.instance)),this.instance._mouseStop(event,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),inst._trigger("fromSortable",event),inst.dropped=!1)})}}),$.ui.plugin.add("draggable","cursor",{start:function(){var t=$("body"),o=$(this).data("ui-draggable").options;t.css("cursor")&&(o._cursor=t.css("cursor")),t.css("cursor",o.cursor)},stop:function(){var o=$(this).data("ui-draggable").options;o._cursor&&$("body").css("cursor",o._cursor)}}),$.ui.plugin.add("draggable","opacity",{start:function(event,ui){var t=$(ui.helper),o=$(this).data("ui-draggable").options;t.css("opacity")&&(o._opacity=t.css("opacity")),t.css("opacity",o.opacity)},stop:function(event,ui){var o=$(this).data("ui-draggable").options;o._opacity&&$(ui.helper).css("opacity",o._opacity)}}),$.ui.plugin.add("draggable","scroll",{start:function(){var i=$(this).data("ui-draggable");i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName&&(i.overflowOffset=i.scrollParent.offset())},drag:function(event){var i=$(this).data("ui-draggable"),o=i.options,scrolled=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(o.axis&&"x"===o.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-event.pageY<o.scrollSensitivity?i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop+o.scrollSpeed:event.pageY-i.overflowOffset.top<o.scrollSensitivity&&(i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop-o.scrollSpeed)),o.axis&&"y"===o.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-event.pageX<o.scrollSensitivity?i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft+o.scrollSpeed:event.pageX-i.overflowOffset.left<o.scrollSensitivity&&(i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft-o.scrollSpeed))):(o.axis&&"x"===o.axis||(event.pageY-$(document).scrollTop()<o.scrollSensitivity?scrolled=$(document).scrollTop($(document).scrollTop()-o.scrollSpeed):$(window).height()-(event.pageY-$(document).scrollTop())<o.scrollSensitivity&&(scrolled=$(document).scrollTop($(document).scrollTop()+o.scrollSpeed))),o.axis&&"y"===o.axis||(event.pageX-$(document).scrollLeft()<o.scrollSensitivity?scrolled=$(document).scrollLeft($(document).scrollLeft()-o.scrollSpeed):$(window).width()-(event.pageX-$(document).scrollLeft())<o.scrollSensitivity&&(scrolled=$(document).scrollLeft($(document).scrollLeft()+o.scrollSpeed)))),!1!==scrolled&&$.ui.ddmanager&&!o.dropBehaviour&&$.ui.ddmanager.prepareOffsets(i,event)}}),$.ui.plugin.add("draggable","snap",{start:function(){var i=$(this).data("ui-draggable"),o=i.options;i.snapElements=[],$(o.snap.constructor!==String?o.snap.items||":data(ui-draggable)":o.snap).each(function(){var $t=$(this),$o=$t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:$t.outerWidth(),height:$t.outerHeight(),top:$o.top,left:$o.left})})},drag:function(event,ui){var ts,bs,ls,rs,l,r,t,b,i,first,inst=$(this).data("ui-draggable"),o=inst.options,d=o.snapTolerance,x1=ui.offset.left,x2=x1+inst.helperProportions.width,y1=ui.offset.top,y2=y1+inst.helperProportions.height;for(i=inst.snapElements.length-1;i>=0;i--)l=inst.snapElements[i].left,r=l+inst.snapElements[i].width,t=inst.snapElements[i].top,b=t+inst.snapElements[i].height,x2<l-d||x1>r+d||y2<t-d||y1>b+d||!$.contains(inst.snapElements[i].item.ownerDocument,inst.snapElements[i].item)?(inst.snapElements[i].snapping&&inst.options.snap.release&&inst.options.snap.release.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})),inst.snapElements[i].snapping=!1):("inner"!==o.snapMode&&(ts=Math.abs(t-y2)<=d,bs=Math.abs(b-y1)<=d,ls=Math.abs(l-x2)<=d,
+rs=Math.abs(r-x1)<=d,ts&&(ui.position.top=inst._convertPositionTo("relative",{top:t-inst.helperProportions.height,left:0}).top-inst.margins.top),bs&&(ui.position.top=inst._convertPositionTo("relative",{top:b,left:0}).top-inst.margins.top),ls&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:l-inst.helperProportions.width}).left-inst.margins.left),rs&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:r}).left-inst.margins.left)),first=ts||bs||ls||rs,"outer"!==o.snapMode&&(ts=Math.abs(t-y1)<=d,bs=Math.abs(b-y2)<=d,ls=Math.abs(l-x1)<=d,rs=Math.abs(r-x2)<=d,ts&&(ui.position.top=inst._convertPositionTo("relative",{top:t,left:0}).top-inst.margins.top),bs&&(ui.position.top=inst._convertPositionTo("relative",{top:b-inst.helperProportions.height,left:0}).top-inst.margins.top),ls&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:l}).left-inst.margins.left),rs&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:r-inst.helperProportions.width}).left-inst.margins.left)),!inst.snapElements[i].snapping&&(ts||bs||ls||rs||first)&&inst.options.snap.snap&&inst.options.snap.snap.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})),inst.snapElements[i].snapping=ts||bs||ls||rs||first)}}),$.ui.plugin.add("draggable","stack",{start:function(){var min,o=this.data("ui-draggable").options,group=$.makeArray($(o.stack)).sort(function(a,b){return(parseInt($(a).css("zIndex"),10)||0)-(parseInt($(b).css("zIndex"),10)||0)});group.length&&(min=parseInt($(group[0]).css("zIndex"),10)||0,$(group).each(function(i){$(this).css("zIndex",min+i)}),this.css("zIndex",min+group.length))}}),$.ui.plugin.add("draggable","zIndex",{start:function(event,ui){var t=$(ui.helper),o=$(this).data("ui-draggable").options;t.css("zIndex")&&(o._zIndex=t.css("zIndex")),t.css("zIndex",o.zIndex)},stop:function(event,ui){var o=$(this).data("ui-draggable").options;o._zIndex&&$(ui.helper).css("zIndex",o._zIndex)}})}(jQuery),function($,undefined){function isOverAxis(x,reference,size){return x>reference&&x<reference+size}$.widget("ui.droppable",{version:"1.10.3",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var o=this.options,accept=o.accept;this.isover=!1,this.isout=!0,this.accept=$.isFunction(accept)?accept:function(d){return d.is(accept)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},$.ui.ddmanager.droppables[o.scope]=$.ui.ddmanager.droppables[o.scope]||[],$.ui.ddmanager.droppables[o.scope].push(this),o.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var i=0,drop=$.ui.ddmanager.droppables[this.options.scope];i<drop.length;i++)drop[i]===this&&drop.splice(i,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(key,value){"accept"===key&&(this.accept=$.isFunction(value)?value:function(d){return d.is(value)}),$.Widget.prototype._setOption.apply(this,arguments)},_activate:function(event){var draggable=$.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),draggable&&this._trigger("activate",event,this.ui(draggable))},_deactivate:function(event){var draggable=$.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),draggable&&this._trigger("deactivate",event,this.ui(draggable))},_over:function(event){var draggable=$.ui.ddmanager.current;draggable&&(draggable.currentItem||draggable.element)[0]!==this.element[0]&&this.accept.call(this.element[0],draggable.currentItem||draggable.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",event,this.ui(draggable)))},_out:function(event){var draggable=$.ui.ddmanager.current;draggable&&(draggable.currentItem||draggable.element)[0]!==this.element[0]&&this.accept.call(this.element[0],draggable.currentItem||draggable.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",event,this.ui(draggable)))},_drop:function(event,custom){var draggable=custom||$.ui.ddmanager.current,childrenIntersection=!1;return!(!draggable||(draggable.currentItem||draggable.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var inst=$.data(this,"ui-droppable");if(inst.options.greedy&&!inst.options.disabled&&inst.options.scope===draggable.options.scope&&inst.accept.call(inst.element[0],draggable.currentItem||draggable.element)&&$.ui.intersect(draggable,$.extend(inst,{offset:inst.element.offset()}),inst.options.tolerance))return childrenIntersection=!0,!1}),!childrenIntersection&&(!!this.accept.call(this.element[0],draggable.currentItem||draggable.element)&&(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",event,this.ui(draggable)),this.element)))},ui:function(c){return{draggable:c.currentItem||c.element,helper:c.helper,position:c.position,offset:c.positionAbs}}}),$.ui.intersect=function(draggable,droppable,toleranceMode){if(!droppable.offset)return!1;var draggableLeft,draggableTop,x1=(draggable.positionAbs||draggable.position.absolute).left,x2=x1+draggable.helperProportions.width,y1=(draggable.positionAbs||draggable.position.absolute).top,y2=y1+draggable.helperProportions.height,l=droppable.offset.left,r=l+droppable.proportions.width,t=droppable.offset.top,b=t+droppable.proportions.height;switch(toleranceMode){case"fit":return l<=x1&&x2<=r&&t<=y1&&y2<=b;case"intersect":return l<x1+draggable.helperProportions.width/2&&x2-draggable.helperProportions.width/2<r&&t<y1+draggable.helperProportions.height/2&&y2-draggable.helperProportions.height/2<b;case"pointer":return draggableLeft=(draggable.positionAbs||draggable.position.absolute).left+(draggable.clickOffset||draggable.offset.click).left,draggableTop=(draggable.positionAbs||draggable.position.absolute).top+(draggable.clickOffset||draggable.offset.click).top,isOverAxis(draggableTop,t,droppable.proportions.height)&&isOverAxis(draggableLeft,l,droppable.proportions.width);case"touch":return(y1>=t&&y1<=b||y2>=t&&y2<=b||y1<t&&y2>b)&&(x1>=l&&x1<=r||x2>=l&&x2<=r||x1<l&&x2>r);default:return!1}},$.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,event){var i,j,m=$.ui.ddmanager.droppables[t.options.scope]||[],type=event?event.type:null,list=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();droppablesLoop:for(i=0;i<m.length;i++)if(!(m[i].options.disabled||t&&!m[i].accept.call(m[i].element[0],t.currentItem||t.element))){for(j=0;j<list.length;j++)if(list[j]===m[i].element[0]){m[i].proportions.height=0;continue droppablesLoop}m[i].visible="none"!==m[i].element.css("display"),m[i].visible&&("mousedown"===type&&m[i]._activate.call(m[i],event),m[i].offset=m[i].element.offset(),m[i].proportions={width:m[i].element[0].offsetWidth,height:m[i].element[0].offsetHeight})}},drop:function(draggable,event){var dropped=!1;return $.each(($.ui.ddmanager.droppables[draggable.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&$.ui.intersect(draggable,this,this.options.tolerance)&&(dropped=this._drop.call(this,event)||dropped),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],draggable.currentItem||draggable.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,event)))}),dropped},dragStart:function(draggable,event){draggable.element.parentsUntil("body").bind("scroll.droppable",function(){draggable.options.refreshPositions||$.ui.ddmanager.prepareOffsets(draggable,event)})},drag:function(draggable,event){draggable.options.refreshPositions&&$.ui.ddmanager.prepareOffsets(draggable,event),$.each($.ui.ddmanager.droppables[draggable.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var parentInstance,scope,parent,intersects=$.ui.intersect(draggable,this,this.options.tolerance),c=!intersects&&this.isover?"isout":intersects&&!this.isover?"isover":null;c&&(this.options.greedy&&(scope=this.options.scope,parent=this.element.parents(":data(ui-droppable)").filter(function(){return $.data(this,"ui-droppable").options.scope===scope}),parent.length&&(parentInstance=$.data(parent[0],"ui-droppable"),parentInstance.greedyChild="isover"===c)),parentInstance&&"isover"===c&&(parentInstance.isover=!1,parentInstance.isout=!0,parentInstance._out.call(parentInstance,event)),this[c]=!0,this["isout"===c?"isover":"isout"]=!1,this["isover"===c?"_over":"_out"].call(this,event),parentInstance&&"isout"===c&&(parentInstance.isout=!1,parentInstance.isover=!0,parentInstance._over.call(parentInstance,event)))}})},dragStop:function(draggable,event){draggable.element.parentsUntil("body").unbind("scroll.droppable"),draggable.options.refreshPositions||$.ui.ddmanager.prepareOffsets(draggable,event)}}}(jQuery),function($,undefined){function num(v){return parseInt(v,10)||0}function isNumber(value){return!isNaN(parseInt(value,10))}$.widget("ui.resizable",$.ui.mouse,{version:"1.10.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var n,i,handle,axis,hname,that=this,o=this.options;if(this.element.addClass("ui-resizable"),$.extend(this,{_aspectRatio:!!o.aspectRatio,aspectRatio:o.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:o.helper||o.ghost||o.animate?o.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap($("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=o.handles||($(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),n=this.handles.split(","),this.handles={},i=0;i<n.length;i++)handle=$.trim(n[i]),hname="ui-resizable-"+handle,axis=$("<div class='ui-resizable-handle "+hname+"'></div>"),axis.css({zIndex:o.zIndex}),"se"===handle&&axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[handle]=".ui-resizable-"+handle,this.element.append(axis);this._renderAxis=function(target){var i,axis,padPos,padWrapper;target=target||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=$(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(axis=$(this.handles[i],this.element),padWrapper=/sw|ne|nw|se|n|s/.test(i)?axis.outerHeight():axis.outerWidth(),padPos=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),target.css(padPos,padWrapper),this._proportionallyResize()),$(this.handles[i]).length},this._renderAxis(this.element),this._handles=$(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){that.resizing||(this.className&&(axis=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),that.axis=axis&&axis[1]?axis[1]:"se")}),o.autoHide&&(this._handles.hide(),$(this.element).addClass("ui-resizable-autohide").mouseenter(function(){o.disabled||($(this).removeClass("ui-resizable-autohide"),that._handles.show())}).mouseleave(function(){o.disabled||that.resizing||($(this).addClass("ui-resizable-autohide"),that._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var wrapper,_destroy=function(exp){$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(_destroy(this.element),wrapper=this.element,this.originalElement.css({position:wrapper.css("position"),width:wrapper.outerWidth(),height:wrapper.outerHeight(),top:wrapper.css("top"),left:wrapper.css("left")}).insertAfter(wrapper),wrapper.remove()),this.originalElement.css("resize",this.originalResizeStyle),_destroy(this.originalElement),this},_mouseCapture:function(event){var i,handle,capture=!1;for(i in this.handles)((handle=$(this.handles[i])[0])===event.target||$.contains(handle,event.target))&&(capture=!0);return!this.options.disabled&&capture},_mouseStart:function(event){var curleft,curtop,cursor,o=this.options,iniPos=this.element.position(),el=this.element;return this.resizing=!0,/absolute/.test(el.css("position"))?el.css({position:"absolute",top:el.css("top"),left:el.css("left")}):el.is(".ui-draggable")&&el.css({position:"absolute",top:iniPos.top,left:iniPos.left}),this._renderProxy(),curleft=num(this.helper.css("left")),curtop=num(this.helper.css("top")),o.containment&&(curleft+=$(o.containment).scrollLeft()||0,curtop+=$(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:curleft,top:curtop},this.size=this._helper?{width:el.outerWidth(),height:el.outerHeight()}:{width:el.width(),height:el.height()},this.originalSize=this._helper?{width:el.outerWidth(),height:el.outerHeight()}:{width:el.width(),height:el.height()},this.originalPosition={left:curleft,top:curtop},this.sizeDiff={width:el.outerWidth()-el.width(),height:el.outerHeight()-el.height()},this.originalMousePosition={left:event.pageX,top:event.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,cursor=$(".ui-resizable-"+this.axis).css("cursor"),$("body").css("cursor","auto"===cursor?this.axis+"-resize":cursor),el.addClass("ui-resizable-resizing"),this._propagate("start",event),!0},_mouseDrag:function(event){var data,el=this.helper,props={},smp=this.originalMousePosition,a=this.axis,prevTop=this.position.top,prevLeft=this.position.left,prevWidth=this.size.width,prevHeight=this.size.height,dx=event.pageX-smp.left||0,dy=event.pageY-smp.top||0,trigger=this._change[a];return!!trigger&&(data=trigger.apply(this,[event,dx,dy]),this._updateVirtualBoundaries(event.shiftKey),(this._aspectRatio||event.shiftKey)&&(data=this._updateRatio(data,event)),data=this._respectSize(data,event),this._updateCache(data),this._propagate("resize",event),this.position.top!==prevTop&&(props.top=this.position.top+"px"),this.position.left!==prevLeft&&(props.left=this.position.left+"px"),this.size.width!==prevWidth&&(props.width=this.size.width+"px"),this.size.height!==prevHeight&&(props.height=this.size.height+"px"),el.css(props),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),$.isEmptyObject(props)||this._trigger("resize",event,this.ui()),!1)},_mouseStop:function(event){this.resizing=!1;var pr,ista,soffseth,soffsetw,s,left,top,o=this.options,that=this;return this._helper&&(pr=this._proportionallyResizeElements,ista=pr.length&&/textarea/i.test(pr[0].nodeName),soffseth=ista&&$.ui.hasScroll(pr[0],"left")?0:that.sizeDiff.height,soffsetw=ista?0:that.sizeDiff.width,s={width:that.helper.width()-soffsetw,height:that.helper.height()-soffseth},left=parseInt(that.element.css("left"),10)+(that.position.left-that.originalPosition.left)||null,top=parseInt(that.element.css("top"),10)+(that.position.top-that.originalPosition.top)||null,o.animate||this.element.css($.extend(s,{top:top,left:left})),that.helper.height(that.size.height),that.helper.width(that.size.width),this._helper&&!o.animate&&this._proportionallyResize()),$("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",event),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(forceAspectRatio){var pMinWidth,pMaxWidth,pMinHeight,pMaxHeight,b,o=this.options;b={minWidth:isNumber(o.minWidth)?o.minWidth:0,maxWidth:isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:isNumber(o.minHeight)?o.minHeight:0,maxHeight:isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||forceAspectRatio)&&(pMinWidth=b.minHeight*this.aspectRatio,pMinHeight=b.minWidth/this.aspectRatio,pMaxWidth=b.maxHeight*this.aspectRatio,pMaxHeight=b.maxWidth/this.aspectRatio,pMinWidth>b.minWidth&&(b.minWidth=pMinWidth),pMinHeight>b.minHeight&&(b.minHeight=pMinHeight),pMaxWidth<b.maxWidth&&(b.maxWidth=pMaxWidth),pMaxHeight<b.maxHeight&&(b.maxHeight=pMaxHeight)),this._vBoundaries=b},_updateCache:function(data){this.offset=this.helper.offset(),isNumber(data.left)&&(this.position.left=data.left),isNumber(data.top)&&(this.position.top=data.top),isNumber(data.height)&&(this.size.height=data.height),isNumber(data.width)&&(this.size.width=data.width)},_updateRatio:function(data){var cpos=this.position,csize=this.size,a=this.axis;return isNumber(data.height)?data.width=data.height*this.aspectRatio:isNumber(data.width)&&(data.height=data.width/this.aspectRatio),"sw"===a&&(data.left=cpos.left+(csize.width-data.width),data.top=null),"nw"===a&&(data.top=cpos.top+(csize.height-data.height),data.left=cpos.left+(csize.width-data.width)),data},_respectSize:function(data){var o=this._vBoundaries,a=this.axis,ismaxw=isNumber(data.width)&&o.maxWidth&&o.maxWidth<data.width,ismaxh=isNumber(data.height)&&o.maxHeight&&o.maxHeight<data.height,isminw=isNumber(data.width)&&o.minWidth&&o.minWidth>data.width,isminh=isNumber(data.height)&&o.minHeight&&o.minHeight>data.height,dw=this.originalPosition.left+this.originalSize.width,dh=this.position.top+this.size.height,cw=/sw|nw|w/.test(a),ch=/nw|ne|n/.test(a);return isminw&&(data.width=o.minWidth),isminh&&(data.height=o.minHeight),ismaxw&&(data.width=o.maxWidth),ismaxh&&(data.height=o.maxHeight),isminw&&cw&&(data.left=dw-o.minWidth),ismaxw&&cw&&(data.left=dw-o.maxWidth),isminh&&ch&&(data.top=dh-o.minHeight),ismaxh&&ch&&(data.top=dh-o.maxHeight),data.width||data.height||data.left||!data.top?data.width||data.height||data.top||!data.left||(data.left=null):data.top=null,data},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var i,j,borders,paddings,prel,element=this.helper||this.element;for(i=0;i<this._proportionallyResizeElements.length;i++){if(prel=this._proportionallyResizeElements[i],!this.borderDif)for(this.borderDif=[],borders=[prel.css("borderTopWidth"),prel.css("borderRightWidth"),prel.css("borderBottomWidth"),prel.css("borderLeftWidth")],paddings=[prel.css("paddingTop"),prel.css("paddingRight"),prel.css("paddingBottom"),prel.css("paddingLeft")],j=0;j<borders.length;j++)this.borderDif[j]=(parseInt(borders[j],10)||0)+(parseInt(paddings[j],10)||0);prel.css({height:element.height()-this.borderDif[0]-this.borderDif[2]||0,width:element.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var el=this.element,o=this.options;this.elementOffset=el.offset(),this._helper?(this.helper=this.helper||$("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++o.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(event,dx){return{width:this.originalSize.width+dx}},w:function(event,dx){var cs=this.originalSize;return{left:this.originalPosition.left+dx,width:cs.width-dx}},n:function(event,dx,dy){var cs=this.originalSize;return{top:this.originalPosition.top+dy,height:cs.height-dy}},s:function(event,dx,dy){return{height:this.originalSize.height+dy}},se:function(event,dx,dy){return $.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[event,dx,dy]))},sw:function(event,dx,dy){return $.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[event,dx,dy]))},ne:function(event,dx,dy){return $.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[event,dx,dy]))},nw:function(event,dx,dy){return $.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[event,dx,dy]))}},_propagate:function(n,event){$.ui.plugin.call(this,n,[event,this.ui()]),"resize"!==n&&this._trigger(n,event,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),$.ui.plugin.add("resizable","animate",{stop:function(event){var that=$(this).data("ui-resizable"),o=that.options,pr=that._proportionallyResizeElements,ista=pr.length&&/textarea/i.test(pr[0].nodeName),soffseth=ista&&$.ui.hasScroll(pr[0],"left")?0:that.sizeDiff.height,soffsetw=ista?0:that.sizeDiff.width,style={width:that.size.width-soffsetw,height:that.size.height-soffseth},left=parseInt(that.element.css("left"),10)+(that.position.left-that.originalPosition.left)||null,top=parseInt(that.element.css("top"),10)+(that.position.top-that.originalPosition.top)||null;that.element.animate($.extend(style,top&&left?{top:top,left:left}:{}),{duration:o.animateDuration,easing:o.animateEasing,step:function(){var data={width:parseInt(that.element.css("width"),10),height:parseInt(that.element.css("height"),10),top:parseInt(that.element.css("top"),10),left:parseInt(that.element.css("left"),10)};pr&&pr.length&&$(pr[0]).css({width:data.width,height:data.height}),that._updateCache(data),that._propagate("resize",event)}})}}),$.ui.plugin.add("resizable","containment",{start:function(){var element,p,co,ch,cw,width,height,that=$(this).data("ui-resizable"),o=that.options,el=that.element,oc=o.containment,ce=oc instanceof $?oc.get(0):/parent/.test(oc)?el.parent().get(0):oc;ce&&(that.containerElement=$(ce),/document/.test(oc)||oc===document?(that.containerOffset={left:0,top:0},that.containerPosition={left:0,top:0},that.parentData={element:$(document),left:0,top:0,width:$(document).width(),height:$(document).height()||document.body.parentNode.scrollHeight}):(element=$(ce),p=[],$(["Top","Right","Left","Bottom"]).each(function(i,name){p[i]=num(element.css("padding"+name))}),that.containerOffset=element.offset(),that.containerPosition=element.position(),that.containerSize={height:element.innerHeight()-p[3],width:element.innerWidth()-p[1]},co=that.containerOffset,ch=that.containerSize.height,cw=that.containerSize.width,width=$.ui.hasScroll(ce,"left")?ce.scrollWidth:cw,height=$.ui.hasScroll(ce)?ce.scrollHeight:ch,that.parentData={element:ce,left:co.left,top:co.top,width:width,height:height}))},resize:function(event){var woset,hoset,isParent,isOffsetRelative,that=$(this).data("ui-resizable"),o=that.options,co=that.containerOffset,cp=that.position,pRatio=that._aspectRatio||event.shiftKey,cop={top:0,left:0},ce=that.containerElement;ce[0]!==document&&/static/.test(ce.css("position"))&&(cop=co),cp.left<(that._helper?co.left:0)&&(that.size.width=that.size.width+(that._helper?that.position.left-co.left:that.position.left-cop.left),pRatio&&(that.size.height=that.size.width/that.aspectRatio),that.position.left=o.helper?co.left:0),cp.top<(that._helper?co.top:0)&&(that.size.height=that.size.height+(that._helper?that.position.top-co.top:that.position.top),pRatio&&(that.size.width=that.size.height*that.aspectRatio),that.position.top=that._helper?co.top:0),that.offset.left=that.parentData.left+that.position.left,that.offset.top=that.parentData.top+that.position.top,woset=Math.abs((that._helper,that.offset.left-cop.left+that.sizeDiff.width)),hoset=Math.abs((that._helper?that.offset.top-cop.top:that.offset.top-co.top)+that.sizeDiff.height),isParent=that.containerElement.get(0)===that.element.parent().get(0),isOffsetRelative=/relative|absolute/.test(that.containerElement.css("position")),isParent&&isOffsetRelative&&(woset-=that.parentData.left),woset+that.size.width>=that.parentData.width&&(that.size.width=that.parentData.width-woset,pRatio&&(that.size.height=that.size.width/that.aspectRatio)),hoset+that.size.height>=that.parentData.height&&(that.size.height=that.parentData.height-hoset,pRatio&&(that.size.width=that.size.height*that.aspectRatio))},stop:function(){var that=$(this).data("ui-resizable"),o=that.options,co=that.containerOffset,cop=that.containerPosition,ce=that.containerElement,helper=$(that.helper),ho=helper.offset(),w=helper.outerWidth()-that.sizeDiff.width,h=helper.outerHeight()-that.sizeDiff.height;that._helper&&!o.animate&&/relative/.test(ce.css("position"))&&$(this).css({left:ho.left-cop.left-co.left,width:w,height:h}),that._helper&&!o.animate&&/static/.test(ce.css("position"))&&$(this).css({left:ho.left-cop.left-co.left,width:w,height:h})}}),$.ui.plugin.add("resizable","alsoResize",{start:function(){var that=$(this).data("ui-resizable"),o=that.options,_store=function(exp){$(exp).each(function(){var el=$(this);el.data("ui-resizable-alsoresize",{width:parseInt(el.width(),10),height:parseInt(el.height(),10),left:parseInt(el.css("left"),10),top:parseInt(el.css("top"),10)})})};"object"!=typeof o.alsoResize||o.alsoResize.parentNode?_store(o.alsoResize):o.alsoResize.length?(o.alsoResize=o.alsoResize[0],_store(o.alsoResize)):$.each(o.alsoResize,function(exp){_store(exp)})},resize:function(event,ui){var that=$(this).data("ui-resizable"),o=that.options,os=that.originalSize,op=that.originalPosition,delta={height:that.size.height-os.height||0,width:that.size.width-os.width||0,top:that.position.top-op.top||0,left:that.position.left-op.left||0},_alsoResize=function(exp,c){$(exp).each(function(){var el=$(this),start=$(this).data("ui-resizable-alsoresize"),style={},css=c&&c.length?c:el.parents(ui.originalElement[0]).length?["width","height"]:["width","height","top","left"];$.each(css,function(i,prop){var sum=(start[prop]||0)+(delta[prop]||0);sum&&sum>=0&&(style[prop]=sum||null)}),el.css(style)})};"object"!=typeof o.alsoResize||o.alsoResize.nodeType?_alsoResize(o.alsoResize):$.each(o.alsoResize,function(exp,c){_alsoResize(exp,c)})},stop:function(){$(this).removeData("resizable-alsoresize")}}),$.ui.plugin.add("resizable","ghost",{start:function(){var that=$(this).data("ui-resizable"),o=that.options,cs=that.size;that.ghost=that.originalElement.clone(),that.ghost.css({opacity:.25,display:"block",position:"relative",height:cs.height,width:cs.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof o.ghost?o.ghost:""),that.ghost.appendTo(that.helper)},resize:function(){var that=$(this).data("ui-resizable");that.ghost&&that.ghost.css({position:"relative",height:that.size.height,width:that.size.width})},stop:function(){var that=$(this).data("ui-resizable");that.ghost&&that.helper&&that.helper.get(0).removeChild(that.ghost.get(0))}}),$.ui.plugin.add("resizable","grid",{resize:function(){var that=$(this).data("ui-resizable"),o=that.options,cs=that.size,os=that.originalSize,op=that.originalPosition,a=that.axis,grid="number"==typeof o.grid?[o.grid,o.grid]:o.grid,gridX=grid[0]||1,gridY=grid[1]||1,ox=Math.round((cs.width-os.width)/gridX)*gridX,oy=Math.round((cs.height-os.height)/gridY)*gridY,newWidth=os.width+ox,newHeight=os.height+oy,isMaxWidth=o.maxWidth&&o.maxWidth<newWidth,isMaxHeight=o.maxHeight&&o.maxHeight<newHeight,isMinWidth=o.minWidth&&o.minWidth>newWidth,isMinHeight=o.minHeight&&o.minHeight>newHeight;o.grid=grid,isMinWidth&&(newWidth+=gridX),isMinHeight&&(newHeight+=gridY),isMaxWidth&&(newWidth-=gridX),isMaxHeight&&(newHeight-=gridY),/^(se|s|e)$/.test(a)?(that.size.width=newWidth,that.size.height=newHeight):/^(ne)$/.test(a)?(that.size.width=newWidth,that.size.height=newHeight,that.position.top=op.top-oy):/^(sw)$/.test(a)?(that.size.width=newWidth,that.size.height=newHeight,that.position.left=op.left-ox):(that.size.width=newWidth,that.size.height=newHeight,that.position.top=op.top-oy,that.position.left=op.left-ox)}})}(jQuery),function($,undefined){$.widget("ui.selectable",$.ui.mouse,{version:"1.10.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var selectees,that=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){selectees=$(that.options.filter,that.element[0]),selectees.addClass("ui-selectee"),selectees.each(function(){var $this=$(this),pos=$this.offset();$.data(this,"selectable-item",{element:this,$element:$this,left:pos.left,top:pos.top,right:pos.left+$this.outerWidth(),bottom:pos.top+$this.outerHeight(),startselected:!1,selected:$this.hasClass("ui-selected"),selecting:$this.hasClass("ui-selecting"),unselecting:$this.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=selectees.addClass("ui-selectee"),this._mouseInit(),this.helper=$("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(event){var that=this,options=this.options;this.opos=[event.pageX,event.pageY],this.options.disabled||(this.selectees=$(options.filter,this.element[0]),this._trigger("start",event),$(options.appendTo).append(this.helper),this.helper.css({left:event.pageX,top:event.pageY,width:0,height:0}),options.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var selectee=$.data(this,"selectable-item");selectee.startselected=!0,event.metaKey||event.ctrlKey||(selectee.$element.removeClass("ui-selected"),selectee.selected=!1,selectee.$element.addClass("ui-unselecting"),selectee.unselecting=!0,that._trigger("unselecting",event,{unselecting:selectee.element}))}),$(event.target).parents().addBack().each(function(){var doSelect,selectee=$.data(this,"selectable-item");if(selectee)return doSelect=!event.metaKey&&!event.ctrlKey||!selectee.$element.hasClass("ui-selected"),selectee.$element.removeClass(doSelect?"ui-unselecting":"ui-selected").addClass(doSelect?"ui-selecting":"ui-unselecting"),selectee.unselecting=!doSelect,selectee.selecting=doSelect,selectee.selected=doSelect,doSelect?that._trigger("selecting",event,{selecting:selectee.element}):that._trigger("unselecting",event,{unselecting:selectee.element}),!1}))},_mouseDrag:function(event){if(this.dragged=!0,!this.options.disabled){var tmp,that=this,options=this.options,x1=this.opos[0],y1=this.opos[1],x2=event.pageX,y2=event.pageY;return x1>x2&&(tmp=x2,x2=x1,x1=tmp),y1>y2&&(tmp=y2,y2=y1,y1=tmp),this.helper.css({left:x1,top:y1,width:x2-x1,height:y2-y1}),this.selectees.each(function(){var selectee=$.data(this,"selectable-item"),hit=!1;selectee&&selectee.element!==that.element[0]&&("touch"===options.tolerance?hit=!(selectee.left>x2||selectee.right<x1||selectee.top>y2||selectee.bottom<y1):"fit"===options.tolerance&&(hit=selectee.left>x1&&selectee.right<x2&&selectee.top>y1&&selectee.bottom<y2),
+hit?(selectee.selected&&(selectee.$element.removeClass("ui-selected"),selectee.selected=!1),selectee.unselecting&&(selectee.$element.removeClass("ui-unselecting"),selectee.unselecting=!1),selectee.selecting||(selectee.$element.addClass("ui-selecting"),selectee.selecting=!0,that._trigger("selecting",event,{selecting:selectee.element}))):(selectee.selecting&&((event.metaKey||event.ctrlKey)&&selectee.startselected?(selectee.$element.removeClass("ui-selecting"),selectee.selecting=!1,selectee.$element.addClass("ui-selected"),selectee.selected=!0):(selectee.$element.removeClass("ui-selecting"),selectee.selecting=!1,selectee.startselected&&(selectee.$element.addClass("ui-unselecting"),selectee.unselecting=!0),that._trigger("unselecting",event,{unselecting:selectee.element}))),selectee.selected&&(event.metaKey||event.ctrlKey||selectee.startselected||(selectee.$element.removeClass("ui-selected"),selectee.selected=!1,selectee.$element.addClass("ui-unselecting"),selectee.unselecting=!0,that._trigger("unselecting",event,{unselecting:selectee.element})))))}),!1}},_mouseStop:function(event){var that=this;return this.dragged=!1,$(".ui-unselecting",this.element[0]).each(function(){var selectee=$.data(this,"selectable-item");selectee.$element.removeClass("ui-unselecting"),selectee.unselecting=!1,selectee.startselected=!1,that._trigger("unselected",event,{unselected:selectee.element})}),$(".ui-selecting",this.element[0]).each(function(){var selectee=$.data(this,"selectable-item");selectee.$element.removeClass("ui-selecting").addClass("ui-selected"),selectee.selecting=!1,selectee.selected=!0,selectee.startselected=!0,that._trigger("selected",event,{selected:selectee.element})}),this._trigger("stop",event),this.helper.remove(),!1}})}(jQuery),function($,undefined){function isOverAxis(x,reference,size){return x>reference&&x<reference+size}function isFloating(item){return/left|right/.test(item.css("float"))||/inline|table-cell/.test(item.css("display"))}$.widget("ui.sortable",$.ui.mouse,{version:"1.10.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var o=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=!!this.items.length&&("x"===o.axis||isFloating(this.items[0].item)),this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var i=this.items.length-1;i>=0;i--)this.items[i].item.removeData(this.widgetName+"-item");return this},_setOption:function(key,value){"disabled"===key?(this.options[key]=value,this.widget().toggleClass("ui-sortable-disabled",!!value)):$.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(event,overrideHandle){var currentItem=null,validHandle=!1,that=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(event),$(event.target).parents().each(function(){if($.data(this,that.widgetName+"-item")===that)return currentItem=$(this),!1}),$.data(event.target,that.widgetName+"-item")===that&&(currentItem=$(event.target)),!!currentItem&&(!(this.options.handle&&!overrideHandle&&($(this.options.handle,currentItem).find("*").addBack().each(function(){this===event.target&&(validHandle=!0)}),!validHandle))&&(this.currentItem=currentItem,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(event,overrideHandle,noActivation){var i,body,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(event),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},$.extend(this.offset,{click:{left:event.pageX-this.offset.left,top:event.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(event),this.originalPageX=event.pageX,this.originalPageY=event.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(body=this.document.find("body"),this.storedCursor=body.css("cursor"),body.css("cursor",o.cursor),this.storedStylesheet=$("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(body)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",event,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!noActivation)for(i=this.containers.length-1;i>=0;i--)this.containers[i]._trigger("activate",event,this._uiHash(this));return $.ui.ddmanager&&($.ui.ddmanager.current=this),$.ui.ddmanager&&!o.dropBehaviour&&$.ui.ddmanager.prepareOffsets(this,event),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(event),!0},_mouseDrag:function(event){var i,item,itemElement,intersection,o=this.options,scrolled=!1;for(this.position=this._generatePosition(event),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-event.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=scrolled=this.scrollParent[0].scrollTop+o.scrollSpeed:event.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=scrolled=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-event.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=scrolled=this.scrollParent[0].scrollLeft+o.scrollSpeed:event.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=scrolled=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(event.pageY-$(document).scrollTop()<o.scrollSensitivity?scrolled=$(document).scrollTop($(document).scrollTop()-o.scrollSpeed):$(window).height()-(event.pageY-$(document).scrollTop())<o.scrollSensitivity&&(scrolled=$(document).scrollTop($(document).scrollTop()+o.scrollSpeed)),event.pageX-$(document).scrollLeft()<o.scrollSensitivity?scrolled=$(document).scrollLeft($(document).scrollLeft()-o.scrollSpeed):$(window).width()-(event.pageX-$(document).scrollLeft())<o.scrollSensitivity&&(scrolled=$(document).scrollLeft($(document).scrollLeft()+o.scrollSpeed))),!1!==scrolled&&$.ui.ddmanager&&!o.dropBehaviour&&$.ui.ddmanager.prepareOffsets(this,event)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(item=this.items[i],itemElement=item.item[0],(intersection=this._intersectsWithPointer(item))&&item.instance===this.currentContainer&&!(itemElement===this.currentItem[0]||this.placeholder[1===intersection?"next":"prev"]()[0]===itemElement||$.contains(this.placeholder[0],itemElement)||"semi-dynamic"===this.options.type&&$.contains(this.element[0],itemElement))){if(this.direction=1===intersection?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(item))break;this._rearrange(event,item),this._trigger("change",event,this._uiHash());break}return this._contactContainers(event),$.ui.ddmanager&&$.ui.ddmanager.drag(this,event),this._trigger("sort",event,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(event,noPropagation){if(event){if($.ui.ddmanager&&!this.options.dropBehaviour&&$.ui.ddmanager.drop(this,event),this.options.revert){var that=this,cur=this.placeholder.offset(),axis=this.options.axis,animation={};axis&&"x"!==axis||(animation.left=cur.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),axis&&"y"!==axis||(animation.top=cur.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,$(this.helper).animate(animation,parseInt(this.options.revert,10)||500,function(){that._clear(event)})}else this._clear(event,noPropagation);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var i=this.containers.length-1;i>=0;i--)this.containers[i]._trigger("deactivate",null,this._uiHash(this)),this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",null,this._uiHash(this)),this.containers[i].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),$.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?$(this.domPosition.prev).after(this.currentItem):$(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(o){var items=this._getItemsAsjQuery(o&&o.connected),str=[];return o=o||{},$(items).each(function(){var res=($(o.item||this).attr(o.attribute||"id")||"").match(o.expression||/(.+)[\-=_](.+)/);res&&str.push((o.key||res[1]+"[]")+"="+(o.key&&o.expression?res[1]:res[2]))}),!str.length&&o.key&&str.push(o.key+"="),str.join("&")},toArray:function(o){var items=this._getItemsAsjQuery(o&&o.connected),ret=[];return o=o||{},items.each(function(){ret.push($(o.item||this).attr(o.attribute||"id")||"")}),ret},_intersectsWith:function(item){var x1=this.positionAbs.left,x2=x1+this.helperProportions.width,y1=this.positionAbs.top,y2=y1+this.helperProportions.height,l=item.left,r=l+item.width,t=item.top,b=t+item.height,dyClick=this.offset.click.top,dxClick=this.offset.click.left,isOverElementHeight="x"===this.options.axis||y1+dyClick>t&&y1+dyClick<b,isOverElementWidth="y"===this.options.axis||x1+dxClick>l&&x1+dxClick<r,isOverElement=isOverElementHeight&&isOverElementWidth;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>item[this.floating?"width":"height"]?isOverElement:l<x1+this.helperProportions.width/2&&x2-this.helperProportions.width/2<r&&t<y1+this.helperProportions.height/2&&y2-this.helperProportions.height/2<b},_intersectsWithPointer:function(item){var isOverElementHeight="x"===this.options.axis||isOverAxis(this.positionAbs.top+this.offset.click.top,item.top,item.height),isOverElementWidth="y"===this.options.axis||isOverAxis(this.positionAbs.left+this.offset.click.left,item.left,item.width),isOverElement=isOverElementHeight&&isOverElementWidth,verticalDirection=this._getDragVerticalDirection(),horizontalDirection=this._getDragHorizontalDirection();return!!isOverElement&&(this.floating?horizontalDirection&&"right"===horizontalDirection||"down"===verticalDirection?2:1:verticalDirection&&("down"===verticalDirection?2:1))},_intersectsWithSides:function(item){var isOverBottomHalf=isOverAxis(this.positionAbs.top+this.offset.click.top,item.top+item.height/2,item.height),isOverRightHalf=isOverAxis(this.positionAbs.left+this.offset.click.left,item.left+item.width/2,item.width),verticalDirection=this._getDragVerticalDirection(),horizontalDirection=this._getDragHorizontalDirection();return this.floating&&horizontalDirection?"right"===horizontalDirection&&isOverRightHalf||"left"===horizontalDirection&&!isOverRightHalf:verticalDirection&&("down"===verticalDirection&&isOverBottomHalf||"up"===verticalDirection&&!isOverBottomHalf)},_getDragVerticalDirection:function(){var delta=this.positionAbs.top-this.lastPositionAbs.top;return 0!==delta&&(delta>0?"down":"up")},_getDragHorizontalDirection:function(){var delta=this.positionAbs.left-this.lastPositionAbs.left;return 0!==delta&&(delta>0?"right":"left")},refresh:function(event){return this._refreshItems(event),this.refreshPositions(),this},_connectWith:function(){var options=this.options;return options.connectWith.constructor===String?[options.connectWith]:options.connectWith},_getItemsAsjQuery:function(connected){var i,j,cur,inst,items=[],queries=[],connectWith=this._connectWith();if(connectWith&&connected)for(i=connectWith.length-1;i>=0;i--)for(cur=$(connectWith[i]),j=cur.length-1;j>=0;j--)(inst=$.data(cur[j],this.widgetFullName))&&inst!==this&&!inst.options.disabled&&queries.push([$.isFunction(inst.options.items)?inst.options.items.call(inst.element):$(inst.options.items,inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),inst]);for(queries.push([$.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):$(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=queries.length-1;i>=0;i--)queries[i][0].each(function(){items.push(this)});return $(items)},_removeCurrentsFromItems:function(){var list=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=$.grep(this.items,function(item){for(var j=0;j<list.length;j++)if(list[j]===item.item[0])return!1;return!0})},_refreshItems:function(event){this.items=[],this.containers=[this];var i,j,cur,inst,targetData,_queries,item,queriesLength,items=this.items,queries=[[$.isFunction(this.options.items)?this.options.items.call(this.element[0],event,{item:this.currentItem}):$(this.options.items,this.element),this]],connectWith=this._connectWith();if(connectWith&&this.ready)for(i=connectWith.length-1;i>=0;i--)for(cur=$(connectWith[i]),j=cur.length-1;j>=0;j--)(inst=$.data(cur[j],this.widgetFullName))&&inst!==this&&!inst.options.disabled&&(queries.push([$.isFunction(inst.options.items)?inst.options.items.call(inst.element[0],event,{item:this.currentItem}):$(inst.options.items,inst.element),inst]),this.containers.push(inst));for(i=queries.length-1;i>=0;i--)for(targetData=queries[i][1],_queries=queries[i][0],j=0,queriesLength=_queries.length;j<queriesLength;j++)item=$(_queries[j]),item.data(this.widgetName+"-item",targetData),items.push({item:item,instance:targetData,width:0,height:0,left:0,top:0})},refreshPositions:function(fast){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,item,t,p;for(i=this.items.length-1;i>=0;i--)item=this.items[i],item.instance!==this.currentContainer&&this.currentContainer&&item.item[0]!==this.currentItem[0]||(t=this.options.toleranceElement?$(this.options.toleranceElement,item.item):item.item,fast||(item.width=t.outerWidth(),item.height=t.outerHeight()),p=t.offset(),item.left=p.left,item.top=p.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)p=this.containers[i].element.offset(),this.containers[i].containerCache.left=p.left,this.containers[i].containerCache.top=p.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(that){that=that||this;var className,o=that.options;o.placeholder&&o.placeholder.constructor!==String||(className=o.placeholder,o.placeholder={element:function(){var nodeName=that.currentItem[0].nodeName.toLowerCase(),element=$("<"+nodeName+">",that.document[0]).addClass(className||that.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===nodeName?that.currentItem.children().each(function(){$("<td>&#160;</td>",that.document[0]).attr("colspan",$(this).attr("colspan")||1).appendTo(element)}):"img"===nodeName&&element.attr("src",that.currentItem.attr("src")),className||element.css("visibility","hidden"),element},update:function(container,p){className&&!o.forcePlaceholderSize||(p.height()||p.height(that.currentItem.innerHeight()-parseInt(that.currentItem.css("paddingTop")||0,10)-parseInt(that.currentItem.css("paddingBottom")||0,10)),p.width()||p.width(that.currentItem.innerWidth()-parseInt(that.currentItem.css("paddingLeft")||0,10)-parseInt(that.currentItem.css("paddingRight")||0,10)))}}),that.placeholder=$(o.placeholder.element.call(that.element,that.currentItem)),that.currentItem.after(that.placeholder),o.placeholder.update(that,that.placeholder)},_contactContainers:function(event){var i,j,dist,itemWithLeastDistance,posProperty,sizeProperty,base,cur,nearBottom,floating,innermostContainer=null,innermostIndex=null;for(i=this.containers.length-1;i>=0;i--)if(!$.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(innermostContainer&&$.contains(this.containers[i].element[0],innermostContainer.element[0]))continue;innermostContainer=this.containers[i],innermostIndex=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",event,this._uiHash(this)),this.containers[i].containerCache.over=0);if(innermostContainer)if(1===this.containers.length)this.containers[innermostIndex].containerCache.over||(this.containers[innermostIndex]._trigger("over",event,this._uiHash(this)),this.containers[innermostIndex].containerCache.over=1);else{for(dist=1e4,itemWithLeastDistance=null,floating=innermostContainer.floating||isFloating(this.currentItem),posProperty=floating?"left":"top",sizeProperty=floating?"width":"height",base=this.positionAbs[posProperty]+this.offset.click[posProperty],j=this.items.length-1;j>=0;j--)$.contains(this.containers[innermostIndex].element[0],this.items[j].item[0])&&this.items[j].item[0]!==this.currentItem[0]&&(floating&&!isOverAxis(this.positionAbs.top+this.offset.click.top,this.items[j].top,this.items[j].height)||(cur=this.items[j].item.offset()[posProperty],nearBottom=!1,Math.abs(cur-base)>Math.abs(cur+this.items[j][sizeProperty]-base)&&(nearBottom=!0,cur+=this.items[j][sizeProperty]),Math.abs(cur-base)<dist&&(dist=Math.abs(cur-base),itemWithLeastDistance=this.items[j],this.direction=nearBottom?"up":"down")));if(!itemWithLeastDistance&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[innermostIndex])return;itemWithLeastDistance?this._rearrange(event,itemWithLeastDistance,null,!0):this._rearrange(event,null,this.containers[innermostIndex].element,!0),this._trigger("change",event,this._uiHash()),this.containers[innermostIndex]._trigger("change",event,this._uiHash(this)),this.currentContainer=this.containers[innermostIndex],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[innermostIndex]._trigger("over",event,this._uiHash(this)),this.containers[innermostIndex].containerCache.over=1}},_createHelper:function(event){var o=this.options,helper=$.isFunction(o.helper)?$(o.helper.apply(this.element[0],[event,this.currentItem])):"clone"===o.helper?this.currentItem.clone():this.currentItem;return helper.parents("body").length||$("parent"!==o.appendTo?o.appendTo:this.currentItem[0].parentNode)[0].appendChild(helper[0]),helper[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),helper[0].style.width&&!o.forceHelperSize||helper.width(this.currentItem.width()),helper[0].style.height&&!o.forceHelperSize||helper.height(this.currentItem.height()),helper},_adjustOffsetFromHelper:function(obj){"string"==typeof obj&&(obj=obj.split(" ")),$.isArray(obj)&&(obj={left:+obj[0],top:+obj[1]||0}),"left"in obj&&(this.offset.click.left=obj.left+this.margins.left),"right"in obj&&(this.offset.click.left=this.helperProportions.width-obj.right+this.margins.left),"top"in obj&&(this.offset.click.top=obj.top+this.margins.top),"bottom"in obj&&(this.offset.click.top=this.helperProportions.height-obj.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var po=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])&&(po.left+=this.scrollParent.scrollLeft(),po.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&$.ui.ie)&&(po={top:0,left:0}),{top:po.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:po.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var p=this.currentItem.position();return{top:p.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:p.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var ce,co,over,o=this.options;"parent"===o.containment&&(o.containment=this.helper[0].parentNode),"document"!==o.containment&&"window"!==o.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,$("document"===o.containment?document:window).width()-this.helperProportions.width-this.margins.left,($("document"===o.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(o.containment)||(ce=$(o.containment)[0],co=$(o.containment).offset(),over="hidden"!==$(ce).css("overflow"),this.containment=[co.left+(parseInt($(ce).css("borderLeftWidth"),10)||0)+(parseInt($(ce).css("paddingLeft"),10)||0)-this.margins.left,co.top+(parseInt($(ce).css("borderTopWidth"),10)||0)+(parseInt($(ce).css("paddingTop"),10)||0)-this.margins.top,co.left+(over?Math.max(ce.scrollWidth,ce.offsetWidth):ce.offsetWidth)-(parseInt($(ce).css("borderLeftWidth"),10)||0)-(parseInt($(ce).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,co.top+(over?Math.max(ce.scrollHeight,ce.offsetHeight):ce.offsetHeight)-(parseInt($(ce).css("borderTopWidth"),10)||0)-(parseInt($(ce).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(d,pos){pos||(pos=this.position);var mod="absolute"===d?1:-1,scroll="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,scrollIsRootNode=/(html|body)/i.test(scroll[0].tagName);return{top:pos.top+this.offset.relative.top*mod+this.offset.parent.top*mod-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():scrollIsRootNode?0:scroll.scrollTop())*mod,left:pos.left+this.offset.relative.left*mod+this.offset.parent.left*mod-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():scrollIsRootNode?0:scroll.scrollLeft())*mod}},_generatePosition:function(event){var top,left,o=this.options,pageX=event.pageX,pageY=event.pageY,scroll="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,scrollIsRootNode=/(html|body)/i.test(scroll[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(event.pageX-this.offset.click.left<this.containment[0]&&(pageX=this.containment[0]+this.offset.click.left),event.pageY-this.offset.click.top<this.containment[1]&&(pageY=this.containment[1]+this.offset.click.top),event.pageX-this.offset.click.left>this.containment[2]&&(pageX=this.containment[2]+this.offset.click.left),event.pageY-this.offset.click.top>this.containment[3]&&(pageY=this.containment[3]+this.offset.click.top)),o.grid&&(top=this.originalPageY+Math.round((pageY-this.originalPageY)/o.grid[1])*o.grid[1],pageY=this.containment?top-this.offset.click.top>=this.containment[1]&&top-this.offset.click.top<=this.containment[3]?top:top-this.offset.click.top>=this.containment[1]?top-o.grid[1]:top+o.grid[1]:top,left=this.originalPageX+Math.round((pageX-this.originalPageX)/o.grid[0])*o.grid[0],pageX=this.containment?left-this.offset.click.left>=this.containment[0]&&left-this.offset.click.left<=this.containment[2]?left:left-this.offset.click.left>=this.containment[0]?left-o.grid[0]:left+o.grid[0]:left)),{top:pageY-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():scrollIsRootNode?0:scroll.scrollTop()),left:pageX-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():scrollIsRootNode?0:scroll.scrollLeft())}},_rearrange:function(event,i,a,hardRefresh){a?a[0].appendChild(this.placeholder[0]):i.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?i.item[0]:i.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var counter=this.counter;this._delay(function(){counter===this.counter&&this.refreshPositions(!hardRefresh)})},_clear:function(event,noPropagation){this.reverting=!1;var i,delayedTriggers=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!noPropagation&&delayedTriggers.push(function(event){this._trigger("receive",event,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||noPropagation||delayedTriggers.push(function(event){this._trigger("update",event,this._uiHash())}),this!==this.currentContainer&&(noPropagation||(delayedTriggers.push(function(event){this._trigger("remove",event,this._uiHash())}),delayedTriggers.push(function(c){return function(event){c._trigger("receive",event,this._uiHash(this))}}.call(this,this.currentContainer)),delayedTriggers.push(function(c){return function(event){c._trigger("update",event,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)noPropagation||delayedTriggers.push(function(c){return function(event){c._trigger("deactivate",event,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(delayedTriggers.push(function(c){return function(event){c._trigger("out",event,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!noPropagation){for(this._trigger("beforeStop",event,this._uiHash()),i=0;i<delayedTriggers.length;i++)delayedTriggers[i].call(this,event);this._trigger("stop",event,this._uiHash())}return this.fromOutside=!1,!1}if(noPropagation||this._trigger("beforeStop",event,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!noPropagation){for(i=0;i<delayedTriggers.length;i++)delayedTriggers[i].call(this,event);this._trigger("stop",event,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){!1===$.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(_inst){var inst=_inst||this;return{helper:inst.helper,placeholder:inst.placeholder||$([]),position:inst.position,originalPosition:inst.originalPosition,offset:inst.positionAbs,item:inst.currentItem,sender:_inst?_inst.element:null}}})}(jQuery),function($,undefined){var dataSpace="ui-effects-";$.effects={effect:{}},function(jQuery,undefined){function clamp(value,prop,allowEmpty){var type=propTypes[prop.type]||{};return null==value?allowEmpty||!prop.def?null:prop.def:(value=type.floor?~~value:parseFloat(value),isNaN(value)?prop.def:type.mod?(value+type.mod)%type.mod:0>value?0:type.max<value?type.max:value)}function stringParse(string){var inst=color(),rgba=inst._rgba=[];return string=string.toLowerCase(),each(stringParsers,function(i,parser){var parsed,match=parser.re.exec(string),values=match&&parser.parse(match),spaceName=parser.space||"rgba";if(values)return parsed=inst[spaceName](values),inst[spaces[spaceName].cache]=parsed[spaces[spaceName].cache],rgba=inst._rgba=parsed._rgba,!1}),rgba.length?("0,0,0,0"===rgba.join()&&jQuery.extend(rgba,colors.transparent),inst):colors[string]}function hue2rgb(p,q,h){return h=(h+1)%1,6*h<1?p+(q-p)*h*6:2*h<1?q:3*h<2?p+(q-p)*(2/3-h)*6:p}var colors,stepHooks="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",rplusequals=/^([\-+])=\s*(\d+\.?\d*)/,stringParsers=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(execResult){return[execResult[1],execResult[2],execResult[3],execResult[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(execResult){return[2.55*execResult[1],2.55*execResult[2],2.55*execResult[3],execResult[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(execResult){return[parseInt(execResult[1],16),parseInt(execResult[2],16),parseInt(execResult[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(execResult){return[parseInt(execResult[1]+execResult[1],16),parseInt(execResult[2]+execResult[2],16),parseInt(execResult[3]+execResult[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(execResult){return[execResult[1],execResult[2]/100,execResult[3]/100,execResult[4]]}}],color=jQuery.Color=function(color,green,blue,alpha){return new jQuery.Color.fn.parse(color,green,blue,alpha)},spaces={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},propTypes={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},support=color.support={},supportElem=jQuery("<p>")[0],each=jQuery.each
+;supportElem.style.cssText="background-color:rgba(1,1,1,.5)",support.rgba=supportElem.style.backgroundColor.indexOf("rgba")>-1,each(spaces,function(spaceName,space){space.cache="_"+spaceName,space.props.alpha={idx:3,type:"percent",def:1}}),color.fn=jQuery.extend(color.prototype,{parse:function(red,green,blue,alpha){if(red===undefined)return this._rgba=[null,null,null,null],this;(red.jquery||red.nodeType)&&(red=jQuery(red).css(green),green=undefined);var inst=this,type=jQuery.type(red),rgba=this._rgba=[];return green!==undefined&&(red=[red,green,blue,alpha],type="array"),"string"===type?this.parse(stringParse(red)||colors._default):"array"===type?(each(spaces.rgba.props,function(key,prop){rgba[prop.idx]=clamp(red[prop.idx],prop)}),this):"object"===type?(red instanceof color?each(spaces,function(spaceName,space){red[space.cache]&&(inst[space.cache]=red[space.cache].slice())}):each(spaces,function(spaceName,space){var cache=space.cache;each(space.props,function(key,prop){if(!inst[cache]&&space.to){if("alpha"===key||null==red[key])return;inst[cache]=space.to(inst._rgba)}inst[cache][prop.idx]=clamp(red[key],prop,!0)}),inst[cache]&&jQuery.inArray(null,inst[cache].slice(0,3))<0&&(inst[cache][3]=1,space.from&&(inst._rgba=space.from(inst[cache])))}),this):void 0},is:function(compare){var is=color(compare),same=!0,inst=this;return each(spaces,function(_,space){var localCache,isCache=is[space.cache];return isCache&&(localCache=inst[space.cache]||space.to&&space.to(inst._rgba)||[],each(space.props,function(_,prop){if(null!=isCache[prop.idx])return same=isCache[prop.idx]===localCache[prop.idx]})),same}),same},_space:function(){var used=[],inst=this;return each(spaces,function(spaceName,space){inst[space.cache]&&used.push(spaceName)}),used.pop()},transition:function(other,distance){var end=color(other),spaceName=end._space(),space=spaces[spaceName],startColor=0===this.alpha()?color("transparent"):this,start=startColor[space.cache]||space.to(startColor._rgba),result=start.slice();return end=end[space.cache],each(space.props,function(key,prop){var index=prop.idx,startValue=start[index],endValue=end[index],type=propTypes[prop.type]||{};null!==endValue&&(null===startValue?result[index]=endValue:(type.mod&&(endValue-startValue>type.mod/2?startValue+=type.mod:startValue-endValue>type.mod/2&&(startValue-=type.mod)),result[index]=clamp((endValue-startValue)*distance+startValue,prop)))}),this[spaceName](result)},blend:function(opaque){if(1===this._rgba[3])return this;var rgb=this._rgba.slice(),a=rgb.pop(),blend=color(opaque)._rgba;return color(jQuery.map(rgb,function(v,i){return(1-a)*blend[i]+a*v}))},toRgbaString:function(){var prefix="rgba(",rgba=jQuery.map(this._rgba,function(v,i){return null==v?i>2?1:0:v});return 1===rgba[3]&&(rgba.pop(),prefix="rgb("),prefix+rgba.join()+")"},toHslaString:function(){var prefix="hsla(",hsla=jQuery.map(this.hsla(),function(v,i){return null==v&&(v=i>2?1:0),i&&i<3&&(v=Math.round(100*v)+"%"),v});return 1===hsla[3]&&(hsla.pop(),prefix="hsl("),prefix+hsla.join()+")"},toHexString:function(includeAlpha){var rgba=this._rgba.slice(),alpha=rgba.pop();return includeAlpha&&rgba.push(~~(255*alpha)),"#"+jQuery.map(rgba,function(v){return v=(v||0).toString(16),1===v.length?"0"+v:v}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),color.fn.parse.prototype=color.fn,spaces.hsla.to=function(rgba){if(null==rgba[0]||null==rgba[1]||null==rgba[2])return[null,null,null,rgba[3]];var h,s,r=rgba[0]/255,g=rgba[1]/255,b=rgba[2]/255,a=rgba[3],max=Math.max(r,g,b),min=Math.min(r,g,b),diff=max-min,add=max+min,l=.5*add;return h=min===max?0:r===max?60*(g-b)/diff+360:g===max?60*(b-r)/diff+120:60*(r-g)/diff+240,s=0===diff?0:l<=.5?diff/add:diff/(2-add),[Math.round(h)%360,s,l,null==a?1:a]},spaces.hsla.from=function(hsla){if(null==hsla[0]||null==hsla[1]||null==hsla[2])return[null,null,null,hsla[3]];var h=hsla[0]/360,s=hsla[1],l=hsla[2],a=hsla[3],q=l<=.5?l*(1+s):l+s-l*s,p=2*l-q;return[Math.round(255*hue2rgb(p,q,h+1/3)),Math.round(255*hue2rgb(p,q,h)),Math.round(255*hue2rgb(p,q,h-1/3)),a]},each(spaces,function(spaceName,space){var props=space.props,cache=space.cache,to=space.to,from=space.from;color.fn[spaceName]=function(value){if(to&&!this[cache]&&(this[cache]=to(this._rgba)),value===undefined)return this[cache].slice();var ret,type=jQuery.type(value),arr="array"===type||"object"===type?value:arguments,local=this[cache].slice();return each(props,function(key,prop){var val=arr["object"===type?key:prop.idx];null==val&&(val=local[prop.idx]),local[prop.idx]=clamp(val,prop)}),from?(ret=color(from(local)),ret[cache]=local,ret):color(local)},each(props,function(key,prop){color.fn[key]||(color.fn[key]=function(value){var match,vtype=jQuery.type(value),fn="alpha"===key?this._hsla?"hsla":"rgba":spaceName,local=this[fn](),cur=local[prop.idx];return"undefined"===vtype?cur:("function"===vtype&&(value=value.call(this,cur),vtype=jQuery.type(value)),null==value&&prop.empty?this:("string"===vtype&&(match=rplusequals.exec(value))&&(value=cur+parseFloat(match[2])*("+"===match[1]?1:-1)),local[prop.idx]=value,this[fn](local)))})})}),color.hook=function(hook){var hooks=hook.split(" ");each(hooks,function(i,hook){jQuery.cssHooks[hook]={set:function(elem,value){var parsed,curElem,backgroundColor="";if("transparent"!==value&&("string"!==jQuery.type(value)||(parsed=stringParse(value)))){if(value=color(parsed||value),!support.rgba&&1!==value._rgba[3]){for(curElem="backgroundColor"===hook?elem.parentNode:elem;(""===backgroundColor||"transparent"===backgroundColor)&&curElem&&curElem.style;)try{backgroundColor=jQuery.css(curElem,"backgroundColor"),curElem=curElem.parentNode}catch(e){}value=value.blend(backgroundColor&&"transparent"!==backgroundColor?backgroundColor:"_default")}value=value.toRgbaString()}try{elem.style[hook]=value}catch(e){}}},jQuery.fx.step[hook]=function(fx){fx.colorInit||(fx.start=color(fx.elem,hook),fx.end=color(fx.end),fx.colorInit=!0),jQuery.cssHooks[hook].set(fx.elem,fx.start.transition(fx.end,fx.pos))}})},color.hook(stepHooks),jQuery.cssHooks.borderColor={expand:function(value){var expanded={};return each(["Top","Right","Bottom","Left"],function(i,part){expanded["border"+part+"Color"]=value}),expanded}},colors=jQuery.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function getElementStyles(elem){var key,len,style=elem.ownerDocument.defaultView?elem.ownerDocument.defaultView.getComputedStyle(elem,null):elem.currentStyle,styles={};if(style&&style.length&&style[0]&&style[style[0]])for(len=style.length;len--;)key=style[len],"string"==typeof style[key]&&(styles[$.camelCase(key)]=style[key]);else for(key in style)"string"==typeof style[key]&&(styles[key]=style[key]);return styles}function styleDifference(oldStyle,newStyle){var name,value,diff={};for(name in newStyle)value=newStyle[name],oldStyle[name]!==value&&(shorthandStyles[name]||!$.fx.step[name]&&isNaN(parseFloat(value))||(diff[name]=value));return diff}var classAnimationActions=["add","remove","toggle"],shorthandStyles={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};$.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(_,prop){$.fx.step[prop]=function(fx){("none"!==fx.end&&!fx.setAttr||1===fx.pos&&!fx.setAttr)&&(jQuery.style(fx.elem,prop,fx.end),fx.setAttr=!0)}}),$.fn.addBack||($.fn.addBack=function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}),$.effects.animateClass=function(value,duration,easing,callback){var o=$.speed(duration,easing,callback);return this.queue(function(){var applyClassChange,animated=$(this),baseClass=animated.attr("class")||"",allAnimations=o.children?animated.find("*").addBack():animated;allAnimations=allAnimations.map(function(){return{el:$(this),start:getElementStyles(this)}}),applyClassChange=function(){$.each(classAnimationActions,function(i,action){value[action]&&animated[action+"Class"](value[action])})},applyClassChange(),allAnimations=allAnimations.map(function(){return this.end=getElementStyles(this.el[0]),this.diff=styleDifference(this.start,this.end),this}),animated.attr("class",baseClass),allAnimations=allAnimations.map(function(){var styleInfo=this,dfd=$.Deferred(),opts=$.extend({},o,{queue:!1,complete:function(){dfd.resolve(styleInfo)}});return this.el.animate(this.diff,opts),dfd.promise()}),$.when.apply($,allAnimations.get()).done(function(){applyClassChange(),$.each(arguments,function(){var el=this.el;$.each(this.diff,function(key){el.css(key,"")})}),o.complete.call(animated[0])})})},$.fn.extend({addClass:function(orig){return function(classNames,speed,easing,callback){return speed?$.effects.animateClass.call(this,{add:classNames},speed,easing,callback):orig.apply(this,arguments)}}($.fn.addClass),removeClass:function(orig){return function(classNames,speed,easing,callback){return arguments.length>1?$.effects.animateClass.call(this,{remove:classNames},speed,easing,callback):orig.apply(this,arguments)}}($.fn.removeClass),toggleClass:function(orig){return function(classNames,force,speed,easing,callback){return"boolean"==typeof force||force===undefined?speed?$.effects.animateClass.call(this,force?{add:classNames}:{remove:classNames},speed,easing,callback):orig.apply(this,arguments):$.effects.animateClass.call(this,{toggle:classNames},force,speed,easing)}}($.fn.toggleClass),switchClass:function(remove,add,speed,easing,callback){return $.effects.animateClass.call(this,{add:add,remove:remove},speed,easing,callback)}})}(),function(){function _normalizeArguments(effect,options,speed,callback){return $.isPlainObject(effect)&&(options=effect,effect=effect.effect),effect={effect:effect},null==options&&(options={}),$.isFunction(options)&&(callback=options,speed=null,options={}),("number"==typeof options||$.fx.speeds[options])&&(callback=speed,speed=options,options={}),$.isFunction(speed)&&(callback=speed,speed=null),options&&$.extend(effect,options),speed=speed||options.duration,effect.duration=$.fx.off?0:"number"==typeof speed?speed:speed in $.fx.speeds?$.fx.speeds[speed]:$.fx.speeds._default,effect.complete=callback||options.complete,effect}function standardAnimationOption(option){return!(option&&"number"!=typeof option&&!$.fx.speeds[option])||("string"==typeof option&&!$.effects.effect[option]||(!!$.isFunction(option)||"object"==typeof option&&!option.effect))}$.extend($.effects,{version:"1.10.3",save:function(element,set){for(var i=0;i<set.length;i++)null!==set[i]&&element.data(dataSpace+set[i],element[0].style[set[i]])},restore:function(element,set){var val,i;for(i=0;i<set.length;i++)null!==set[i]&&(val=element.data(dataSpace+set[i]),val===undefined&&(val=""),element.css(set[i],val))},setMode:function(el,mode){return"toggle"===mode&&(mode=el.is(":hidden")?"show":"hide"),mode},getBaseline:function(origin,original){var y,x;switch(origin[0]){case"top":y=0;break;case"middle":y=.5;break;case"bottom":y=1;break;default:y=origin[0]/original.height}switch(origin[1]){case"left":x=0;break;case"center":x=.5;break;case"right":x=1;break;default:x=origin[1]/original.width}return{x:x,y:y}},createWrapper:function(element){if(element.parent().is(".ui-effects-wrapper"))return element.parent();var props={width:element.outerWidth(!0),height:element.outerHeight(!0),float:element.css("float")},wrapper=$("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),size={width:element.width(),height:element.height()},active=document.activeElement;try{active.id}catch(e){active=document.body}return element.wrap(wrapper),(element[0]===active||$.contains(element[0],active))&&$(active).focus(),wrapper=element.parent(),"static"===element.css("position")?(wrapper.css({position:"relative"}),element.css({position:"relative"})):($.extend(props,{position:element.css("position"),zIndex:element.css("z-index")}),$.each(["top","left","bottom","right"],function(i,pos){props[pos]=element.css(pos),isNaN(parseInt(props[pos],10))&&(props[pos]="auto")}),element.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),element.css(size),wrapper.css(props).show()},removeWrapper:function(element){var active=document.activeElement;return element.parent().is(".ui-effects-wrapper")&&(element.parent().replaceWith(element),(element[0]===active||$.contains(element[0],active))&&$(active).focus()),element},setTransition:function(element,list,factor,value){return value=value||{},$.each(list,function(i,x){var unit=element.cssUnit(x);unit[0]>0&&(value[x]=unit[0]*factor+unit[1])}),value}}),$.fn.extend({effect:function(){function run(next){function done(){$.isFunction(complete)&&complete.call(elem[0]),$.isFunction(next)&&next()}var elem=$(this),complete=args.complete,mode=args.mode;(elem.is(":hidden")?"hide"===mode:"show"===mode)?(elem[mode](),done()):effectMethod.call(elem[0],args,done)}var args=_normalizeArguments.apply(this,arguments),mode=args.mode,queue=args.queue,effectMethod=$.effects.effect[args.effect];return $.fx.off||!effectMethod?mode?this[mode](args.duration,args.complete):this.each(function(){args.complete&&args.complete.call(this)}):!1===queue?this.each(run):this.queue(queue||"fx",run)},show:function(orig){return function(option){if(standardAnimationOption(option))return orig.apply(this,arguments);var args=_normalizeArguments.apply(this,arguments);return args.mode="show",this.effect.call(this,args)}}($.fn.show),hide:function(orig){return function(option){if(standardAnimationOption(option))return orig.apply(this,arguments);var args=_normalizeArguments.apply(this,arguments);return args.mode="hide",this.effect.call(this,args)}}($.fn.hide),toggle:function(orig){return function(option){if(standardAnimationOption(option)||"boolean"==typeof option)return orig.apply(this,arguments);var args=_normalizeArguments.apply(this,arguments);return args.mode="toggle",this.effect.call(this,args)}}($.fn.toggle),cssUnit:function(key){var style=this.css(key),val=[];return $.each(["em","px","%","pt"],function(i,unit){style.indexOf(unit)>0&&(val=[parseFloat(style),unit])}),val}})}(),function(){var baseEasings={};$.each(["Quad","Cubic","Quart","Quint","Expo"],function(i,name){baseEasings[name]=function(p){return Math.pow(p,i+2)}}),$.extend(baseEasings,{Sine:function(p){return 1-Math.cos(p*Math.PI/2)},Circ:function(p){return 1-Math.sqrt(1-p*p)},Elastic:function(p){return 0===p||1===p?p:-Math.pow(2,8*(p-1))*Math.sin((80*(p-1)-7.5)*Math.PI/15)},Back:function(p){return p*p*(3*p-2)},Bounce:function(p){for(var pow2,bounce=4;p<((pow2=Math.pow(2,--bounce))-1)/11;);return 1/Math.pow(4,3-bounce)-7.5625*Math.pow((3*pow2-2)/22-p,2)}}),$.each(baseEasings,function(name,easeIn){$.easing["easeIn"+name]=easeIn,$.easing["easeOut"+name]=function(p){return 1-easeIn(1-p)},$.easing["easeInOut"+name]=function(p){return p<.5?easeIn(2*p)/2:1-easeIn(-2*p+2)/2}})}()}(jQuery),function($,undefined){var uid=0,hideProps={},showProps={};hideProps.height=hideProps.paddingTop=hideProps.paddingBottom=hideProps.borderTopWidth=hideProps.borderBottomWidth="hide",showProps.height=showProps.paddingTop=showProps.paddingBottom=showProps.borderTopWidth=showProps.borderBottomWidth="show",$.widget("ui.accordion",{version:"1.10.3",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var options=this.options;this.prevShow=this.prevHide=$(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),options.collapsible||!1!==options.active&&null!=options.active||(options.active=0),this._processPanels(),options.active<0&&(options.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():$(),content:this.active.length?this.active.next():$()}},_createIcons:function(){var icons=this.options.icons;icons&&($("<span>").addClass("ui-accordion-header-icon ui-icon "+icons.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(icons.header).addClass(icons.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var contents;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),contents=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&contents.css("height","")},_setOption:function(key,value){if("active"===key)return void this._activate(value);"event"===key&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(value)),this._super(key,value),"collapsible"!==key||value||!1!==this.options.active||this._activate(0),"icons"===key&&(this._destroyIcons(),value&&this._createIcons()),"disabled"===key&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!value)},_keydown:function(event){if(!event.altKey&&!event.ctrlKey){var keyCode=$.ui.keyCode,length=this.headers.length,currentIndex=this.headers.index(event.target),toFocus=!1;switch(event.keyCode){case keyCode.RIGHT:case keyCode.DOWN:toFocus=this.headers[(currentIndex+1)%length];break;case keyCode.LEFT:case keyCode.UP:toFocus=this.headers[(currentIndex-1+length)%length];break;case keyCode.SPACE:case keyCode.ENTER:this._eventHandler(event);break;case keyCode.HOME:toFocus=this.headers[0];break;case keyCode.END:toFocus=this.headers[length-1]}toFocus&&($(event.target).attr("tabIndex",-1),$(toFocus).attr("tabIndex",0),toFocus.focus(),event.preventDefault())}},_panelKeyDown:function(event){event.keyCode===$.ui.keyCode.UP&&event.ctrlKey&&$(event.currentTarget).prev().focus()},refresh:function(){var options=this.options;this._processPanels(),!1===options.active&&!0===options.collapsible||!this.headers.length?(options.active=!1,this.active=$()):!1===options.active?this._activate(0):this.active.length&&!$.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(options.active=!1,this.active=$()):this._activate(Math.max(0,options.active-1)):options.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var maxHeight,options=this.options,heightStyle=options.heightStyle,parent=this.element.parent(),accordionId=this.accordionId="ui-accordion-"+(this.element.attr("id")||++uid);this.active=this._findActive(options.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(i){var header=$(this),headerId=header.attr("id"),panel=header.next(),panelId=panel.attr("id");headerId||(headerId=accordionId+"-header-"+i,header.attr("id",headerId)),panelId||(panelId=accordionId+"-panel-"+i,panel.attr("id",panelId)),header.attr("aria-controls",panelId),panel.attr("aria-labelledby",headerId)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(options.event),"fill"===heightStyle?(maxHeight=parent.height(),this.element.siblings(":visible").each(function(){var elem=$(this),position=elem.css("position");"absolute"!==position&&"fixed"!==position&&(maxHeight-=elem.outerHeight(!0))}),this.headers.each(function(){maxHeight-=$(this).outerHeight(!0)}),this.headers.next().each(function(){$(this).height(Math.max(0,maxHeight-$(this).innerHeight()+$(this).height()))}).css("overflow","auto")):"auto"===heightStyle&&(maxHeight=0,this.headers.next().each(function(){maxHeight=Math.max(maxHeight,$(this).css("height","").height())}).height(maxHeight))},_activate:function(index){var active=this._findActive(index)[0];active!==this.active[0]&&(active=active||this.active[0],this._eventHandler({target:active,currentTarget:active,preventDefault:$.noop}))},_findActive:function(selector){return"number"==typeof selector?this.headers.eq(selector):$()},_setupEvents:function(event){var events={keydown:"_keydown"};event&&$.each(event.split(" "),function(index,eventName){events[eventName]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,events),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(event){var options=this.options,active=this.active,clicked=$(event.currentTarget),clickedIsActive=clicked[0]===active[0],collapsing=clickedIsActive&&options.collapsible,toShow=collapsing?$():clicked.next(),toHide=active.next(),eventData={oldHeader:active,oldPanel:toHide,newHeader:collapsing?$():clicked,newPanel:toShow};event.preventDefault(),clickedIsActive&&!options.collapsible||!1===this._trigger("beforeActivate",event,eventData)||(options.active=!collapsing&&this.headers.index(clicked),this.active=clickedIsActive?$():clicked,this._toggle(eventData),active.removeClass("ui-accordion-header-active ui-state-active"),options.icons&&active.children(".ui-accordion-header-icon").removeClass(options.icons.activeHeader).addClass(options.icons.header),clickedIsActive||(clicked.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),options.icons&&clicked.children(".ui-accordion-header-icon").removeClass(options.icons.header).addClass(options.icons.activeHeader),clicked.next().addClass("ui-accordion-content-active")))},_toggle:function(data){var toShow=data.newPanel,toHide=this.prevShow.length?this.prevShow:data.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=toShow,this.prevHide=toHide,this.options.animate?this._animate(toShow,toHide,data):(toHide.hide(),toShow.show(),this._toggleComplete(data)),toHide.attr({"aria-expanded":"false","aria-hidden":"true"}),toHide.prev().attr("aria-selected","false"),toShow.length&&toHide.length?toHide.prev().attr("tabIndex",-1):toShow.length&&this.headers.filter(function(){return 0===$(this).attr("tabIndex")}).attr("tabIndex",-1),toShow.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(toShow,toHide,data){var total,easing,duration,that=this,adjust=0,down=toShow.length&&(!toHide.length||toShow.index()<toHide.index()),animate=this.options.animate||{},options=down&&animate.down||animate,complete=function(){that._toggleComplete(data)};return"number"==typeof options&&(duration=options),"string"==typeof options&&(easing=options),easing=easing||options.easing||animate.easing,duration=duration||options.duration||animate.duration,toHide.length?toShow.length?(total=toShow.show().outerHeight(),toHide.animate(hideProps,{duration:duration,easing:easing,step:function(now,fx){fx.now=Math.round(now)}}),void toShow.hide().animate(showProps,{duration:duration,easing:easing,complete:complete,step:function(now,fx){fx.now=Math.round(now),"height"!==fx.prop?adjust+=fx.now:"content"!==that.options.heightStyle&&(fx.now=Math.round(total-toHide.outerHeight()-adjust),adjust=0)}})):toHide.animate(hideProps,duration,easing,complete):toShow.animate(showProps,duration,easing,complete)},_toggleComplete:function(data){var toHide=data.oldPanel;toHide.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),toHide.length&&(toHide.parent()[0].className=toHide.parent()[0].className),this._trigger("activate",null,data)}})}(jQuery),function($,undefined){var requestIndex=0;$.widget("ui.autocomplete",{version:"1.10.3",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var suppressKeyPress,suppressKeyPressRepeat,suppressInput,nodeName=this.element[0].nodeName.toLowerCase(),isTextarea="textarea"===nodeName,isInput="input"===nodeName;this.isMultiLine=!!isTextarea||!isInput&&this.element.prop("isContentEditable"),this.valueMethod=this.element[isTextarea||isInput?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(event){if(this.element.prop("readOnly"))return suppressKeyPress=!0,suppressInput=!0,void(suppressKeyPressRepeat=!0);suppressKeyPress=!1,suppressInput=!1,suppressKeyPressRepeat=!1;var keyCode=$.ui.keyCode;switch(event.keyCode){case keyCode.PAGE_UP:suppressKeyPress=!0,this._move("previousPage",event);break;case keyCode.PAGE_DOWN:suppressKeyPress=!0,this._move("nextPage",event);break;case keyCode.UP:suppressKeyPress=!0,this._keyEvent("previous",event);break;case keyCode.DOWN:suppressKeyPress=!0,this._keyEvent("next",event);break;case keyCode.ENTER:case keyCode.NUMPAD_ENTER:this.menu.active&&(suppressKeyPress=!0,event.preventDefault(),this.menu.select(event));break;case keyCode.TAB:this.menu.active&&this.menu.select(event);break;case keyCode.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(event),event.preventDefault());break;default:suppressKeyPressRepeat=!0,this._searchTimeout(event)}},keypress:function(event){if(suppressKeyPress)return suppressKeyPress=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||event.preventDefault());if(!suppressKeyPressRepeat){var keyCode=$.ui.keyCode;switch(event.keyCode){case keyCode.PAGE_UP:this._move("previousPage",event);break;case keyCode.PAGE_DOWN:this._move("nextPage",event);break;case keyCode.UP:this._keyEvent("previous",event);break;case keyCode.DOWN:this._keyEvent("next",event)}}},input:function(event){if(suppressInput)return suppressInput=!1,void event.preventDefault();this._searchTimeout(event)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(event){if(this.cancelBlur)return void delete this.cancelBlur;clearTimeout(this.searching),this.close(event),this._change(event)}}),this._initSource(),this.menu=$("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(event){event.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var menuElement=this.menu.element[0];$(event.target).closest(".ui-menu-item").length||this._delay(function(){var that=this;this.document.one("mousedown",function(event){event.target===that.element[0]||event.target===menuElement||$.contains(menuElement,event.target)||that.close()})})},menufocus:function(event,ui){if(this.isNewMenu&&(this.isNewMenu=!1,event.originalEvent&&/^mouse/.test(event.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){$(event.target).trigger(event.originalEvent)});var item=ui.item.data("ui-autocomplete-item");!1!==this._trigger("focus",event,{item:item})?event.originalEvent&&/^key/.test(event.originalEvent.type)&&this._value(item.value):this.liveRegion.text(item.value)},menuselect:function(event,ui){var item=ui.item.data("ui-autocomplete-item"),previous=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=previous,this._delay(function(){this.previous=previous,this.selectedItem=item})),!1!==this._trigger("select",event,{item:item})&&this._value(item.value),this.term=this._value(),this.close(event),this.selectedItem=item}}),this.liveRegion=$("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(key,value){this._super(key,value),"source"===key&&this._initSource(),"appendTo"===key&&this.menu.element.appendTo(this._appendTo()),"disabled"===key&&value&&this.xhr&&this.xhr.abort()},_appendTo:function(){var element=this.options.appendTo;return element&&(element=element.jquery||element.nodeType?$(element):this.document.find(element).eq(0)),element||(element=this.element.closest(".ui-front")),element.length||(element=this.document[0].body),element},_initSource:function(){var array,url,that=this;$.isArray(this.options.source)?(array=this.options.source,this.source=function(request,response){response($.ui.autocomplete.filter(array,request.term))}):"string"==typeof this.options.source?(url=this.options.source,this.source=function(request,response){that.xhr&&that.xhr.abort(),that.xhr=$.ajax({url:url,data:request,dataType:"json",success:function(data){response(data)},error:function(){response([])}})}):this.source=this.options.source},_searchTimeout:function(event){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,event))},this.options.delay)},search:function(value,event){return value=null!=value?value:this._value(),this.term=this._value(),value.length<this.options.minLength?this.close(event):!1!==this._trigger("search",event)?this._search(value):void 0},_search:function(value){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:value},this._response())},_response:function(){var that=this,index=++requestIndex;return function(content){index===requestIndex&&that.__response(content),--that.pending||that.element.removeClass("ui-autocomplete-loading")}},__response:function(content){content&&(content=this._normalize(content)),this._trigger("response",null,{content:content}),!this.options.disabled&&content&&content.length&&!this.cancelSearch?(this._suggest(content),this._trigger("open")):this._close()},close:function(event){this.cancelSearch=!0,this._close(event)},_close:function(event){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",event))},_change:function(event){this.previous!==this._value()&&this._trigger("change",event,{item:this.selectedItem})},_normalize:function(items){return items.length&&items[0].label&&items[0].value?items:$.map(items,function(item){return"string"==typeof item?{label:item,value:item}:$.extend({label:item.label||item.value,value:item.value||item.label},item)})},_suggest:function(items){
+var ul=this.menu.element.empty();this._renderMenu(ul,items),this.isNewMenu=!0,this.menu.refresh(),ul.show(),this._resizeMenu(),ul.position($.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var ul=this.menu.element;ul.outerWidth(Math.max(ul.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(ul,items){var that=this;$.each(items,function(index,item){that._renderItemData(ul,item)})},_renderItemData:function(ul,item){return this._renderItem(ul,item).data("ui-autocomplete-item",item)},_renderItem:function(ul,item){return $("<li>").append($("<a>").text(item.label)).appendTo(ul)},_move:function(direction,event){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(direction)||this.menu.isLastItem()&&/^next/.test(direction)?(this._value(this.term),void this.menu.blur()):void this.menu[direction](event):void this.search(null,event)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(keyEvent,event){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(keyEvent,event),event.preventDefault())}}),$.extend($.ui.autocomplete,{escapeRegex:function(value){return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(array,term){var matcher=new RegExp($.ui.autocomplete.escapeRegex(term),"i");return $.grep(array,function(value){return matcher.test(value.label||value.value||value)})}}),$.widget("ui.autocomplete",$.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(amount){return amount+(amount>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(content){var message;this._superApply(arguments),this.options.disabled||this.cancelSearch||(message=content&&content.length?this.options.messages.results(content.length):this.options.messages.noResults,this.liveRegion.text(message))}})}(jQuery),function($,undefined){var lastActive,startXPos,startYPos,clickDragged,baseClasses="ui-button ui-widget ui-state-default ui-corner-all",typeClasses="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",formResetHandler=function(){var form=$(this);setTimeout(function(){form.find(":ui-button").button("refresh")},1)},radioGroup=function(radio){var name=radio.name,form=radio.form,radios=$([]);return name&&(name=name.replace(/'/g,"\\'"),radios=form?$(form).find("[name='"+name+"']"):$("[name='"+name+"']",radio.ownerDocument).filter(function(){return!this.form})),radios};$.widget("ui.button",{version:"1.10.3",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,formResetHandler),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var that=this,options=this.options,toggleButton="checkbox"===this.type||"radio"===this.type,activeClass=toggleButton?"":"ui-state-active",focusClass="ui-state-focus";null===options.label&&(options.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(baseClasses).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){options.disabled||this===lastActive&&$(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){options.disabled||$(this).removeClass(activeClass)}).bind("click"+this.eventNamespace,function(event){options.disabled&&(event.preventDefault(),event.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){that.buttonElement.addClass(focusClass)}).bind("blur"+this.eventNamespace,function(){that.buttonElement.removeClass(focusClass)}),toggleButton&&(this.element.bind("change"+this.eventNamespace,function(){clickDragged||that.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(event){options.disabled||(clickDragged=!1,startXPos=event.pageX,startYPos=event.pageY)}).bind("mouseup"+this.eventNamespace,function(event){options.disabled||startXPos===event.pageX&&startYPos===event.pageY||(clickDragged=!0)})),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(options.disabled||clickDragged)return!1}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(options.disabled||clickDragged)return!1;$(this).addClass("ui-state-active"),that.buttonElement.attr("aria-pressed","true");var radio=that.element[0];radioGroup(radio).not(radio).map(function(){return $(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(options.disabled)return!1;$(this).addClass("ui-state-active"),lastActive=this,that.document.one("mouseup",function(){lastActive=null})}).bind("mouseup"+this.eventNamespace,function(){if(options.disabled)return!1;$(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(event){if(options.disabled)return!1;event.keyCode!==$.ui.keyCode.SPACE&&event.keyCode!==$.ui.keyCode.ENTER||$(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){$(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(event){event.keyCode===$.ui.keyCode.SPACE&&$(this).click()})),this._setOption("disabled",options.disabled),this._resetButton()},_determineButtonType:function(){var ancestor,labelSelector,checked;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button","checkbox"===this.type||"radio"===this.type?(ancestor=this.element.parents().last(),labelSelector="label[for='"+this.element.attr("id")+"']",this.buttonElement=ancestor.find(labelSelector),this.buttonElement.length||(ancestor=ancestor.length?ancestor.siblings():this.element.siblings(),this.buttonElement=ancestor.filter(labelSelector),this.buttonElement.length||(this.buttonElement=ancestor.find(labelSelector))),this.element.addClass("ui-helper-hidden-accessible"),checked=this.element.is(":checked"),checked&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",checked)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(baseClasses+" ui-state-hover ui-state-active  "+typeClasses).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(key,value){if(this._super(key,value),"disabled"===key)return void(value?this.element.prop("disabled",!0):this.element.prop("disabled",!1));this._resetButton()},refresh:function(){var isDisabled=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");isDisabled!==this.options.disabled&&this._setOption("disabled",isDisabled),"radio"===this.type?radioGroup(this.element[0]).each(function(){$(this).is(":checked")?$(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):$(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return void(this.options.label&&this.element.val(this.options.label));var buttonElement=this.buttonElement.removeClass(typeClasses),buttonText=$("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(buttonElement.empty()).text(),icons=this.options.icons,multipleIcons=icons.primary&&icons.secondary,buttonClasses=[];icons.primary||icons.secondary?(this.options.text&&buttonClasses.push("ui-button-text-icon"+(multipleIcons?"s":icons.primary?"-primary":"-secondary")),icons.primary&&buttonElement.prepend("<span class='ui-button-icon-primary ui-icon "+icons.primary+"'></span>"),icons.secondary&&buttonElement.append("<span class='ui-button-icon-secondary ui-icon "+icons.secondary+"'></span>"),this.options.text||(buttonClasses.push(multipleIcons?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||buttonElement.attr("title",$.trim(buttonText)))):buttonClasses.push("ui-button-text-only"),buttonElement.addClass(buttonClasses.join(" "))}}),$.widget("ui.buttonset",{version:"1.10.3",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(key,value){"disabled"===key&&this.buttons.button("option",key,value),this._super(key,value)},refresh:function(){var rtl="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return $(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(rtl?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(rtl?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return $(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})}(jQuery),function($,undefined){function Datepicker(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function bindHover(dpDiv){var selector="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return dpDiv.delegate(selector,"mouseout",function(){$(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&$(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(selector,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?dpDiv.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&$(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(target,props){$.extend(target,props);for(var name in props)null==props[name]&&(target[name]=props[name]);return target}$.extend($.ui,{datepicker:{version:"1.10.3"}});var instActive,PROP_NAME="datepicker";$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(settings){return extendRemove(this._defaults,settings||{}),this},_attachDatepicker:function(target,settings){var nodeName,inline,inst;nodeName=target.nodeName.toLowerCase(),inline="div"===nodeName||"span"===nodeName,target.id||(this.uuid+=1,target.id="dp"+this.uuid),inst=this._newInst($(target),inline),inst.settings=$.extend({},settings||{}),"input"===nodeName?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(target,inline){return{id:target[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:inline?bindHover($("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(target,inst){var input=$(target);inst.append=$([]),inst.trigger=$([]),input.hasClass(this.markerClassName)||(this._attachments(input,inst),input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(inst),$.data(target,PROP_NAME,inst),inst.settings.disabled&&this._disableDatepicker(target))},_attachments:function(input,inst){var showOn,buttonText,buttonImage,appendText=this._get(inst,"appendText"),isRTL=this._get(inst,"isRTL");inst.append&&inst.append.remove(),appendText&&(inst.append=$("<span class='"+this._appendClass+"'>"+appendText+"</span>"),input[isRTL?"before":"after"](inst.append)),input.unbind("focus",this._showDatepicker),inst.trigger&&inst.trigger.remove(),showOn=this._get(inst,"showOn"),"focus"!==showOn&&"both"!==showOn||input.focus(this._showDatepicker),"button"!==showOn&&"both"!==showOn||(buttonText=this._get(inst,"buttonText"),buttonImage=this._get(inst,"buttonImage"),inst.trigger=$(this._get(inst,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$("<button type='button'></button>").addClass(this._triggerClass).html(buttonImage?$("<img/>").attr({src:buttonImage,alt:buttonText,title:buttonText}):buttonText)),input[isRTL?"before":"after"](inst.trigger),inst.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput===input[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!==input[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(input[0])):$.datepicker._showDatepicker(input[0]),!1}))},_autoSize:function(inst){if(this._get(inst,"autoSize")&&!inst.inline){var findMax,max,maxI,i,date=new Date(2009,11,20),dateFormat=this._get(inst,"dateFormat");dateFormat.match(/[DM]/)&&(findMax=function(names){for(max=0,maxI=0,i=0;i<names.length;i++)names[i].length>max&&(max=names[i].length,maxI=i);return maxI},date.setMonth(findMax(this._get(inst,dateFormat.match(/MM/)?"monthNames":"monthNamesShort"))),date.setDate(findMax(this._get(inst,dateFormat.match(/DD/)?"dayNames":"dayNamesShort"))+20-date.getDay())),inst.input.attr("size",this._formatDate(inst,date).length)}},_inlineDatepicker:function(target,inst){var divSpan=$(target);divSpan.hasClass(this.markerClassName)||(divSpan.addClass(this.markerClassName).append(inst.dpDiv),$.data(target,PROP_NAME,inst),this._setDate(inst,this._getDefaultDate(inst),!0),this._updateDatepicker(inst),this._updateAlternate(inst),inst.settings.disabled&&this._disableDatepicker(target),inst.dpDiv.css("display","block"))},_dialogDatepicker:function(input,date,onSelect,settings,pos){var id,browserWidth,browserHeight,scrollX,scrollY,inst=this._dialogInst;return inst||(this.uuid+=1,id="dp"+this.uuid,this._dialogInput=$("<input type='text' id='"+id+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),inst=this._dialogInst=this._newInst(this._dialogInput,!1),inst.settings={},$.data(this._dialogInput[0],PROP_NAME,inst)),extendRemove(inst.settings,settings||{}),date=date&&date.constructor===Date?this._formatDate(inst,date):date,this._dialogInput.val(date),this._pos=pos?pos.length?pos:[pos.pageX,pos.pageY]:null,this._pos||(browserWidth=document.documentElement.clientWidth,browserHeight=document.documentElement.clientHeight,scrollX=document.documentElement.scrollLeft||document.body.scrollLeft,scrollY=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[browserWidth/2-100+scrollX,browserHeight/2-150+scrollY]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),inst.settings.onSelect=onSelect,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,inst),this},_destroyDatepicker:function(target){var nodeName,$target=$(target),inst=$.data(target,PROP_NAME);$target.hasClass(this.markerClassName)&&(nodeName=target.nodeName.toLowerCase(),$.removeData(target,PROP_NAME),"input"===nodeName?(inst.append.remove(),inst.trigger.remove(),$target.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):"div"!==nodeName&&"span"!==nodeName||$target.removeClass(this.markerClassName).empty())},_enableDatepicker:function(target){var nodeName,inline,$target=$(target),inst=$.data(target,PROP_NAME);$target.hasClass(this.markerClassName)&&(nodeName=target.nodeName.toLowerCase(),"input"===nodeName?(target.disabled=!1,inst.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==nodeName&&"span"!==nodeName||(inline=$target.children("."+this._inlineClass),inline.children().removeClass("ui-state-disabled"),inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=$.map(this._disabledInputs,function(value){return value===target?null:value}))},_disableDatepicker:function(target){var nodeName,inline,$target=$(target),inst=$.data(target,PROP_NAME);$target.hasClass(this.markerClassName)&&(nodeName=target.nodeName.toLowerCase(),"input"===nodeName?(target.disabled=!0,inst.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==nodeName&&"span"!==nodeName||(inline=$target.children("."+this._inlineClass),inline.children().addClass("ui-state-disabled"),inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=$.map(this._disabledInputs,function(value){return value===target?null:value}),this._disabledInputs[this._disabledInputs.length]=target)},_isDisabledDatepicker:function(target){if(!target)return!1;for(var i=0;i<this._disabledInputs.length;i++)if(this._disabledInputs[i]===target)return!0;return!1},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(target,name,value){var settings,date,minDate,maxDate,inst=this._getInst(target);if(2===arguments.length&&"string"==typeof name)return"defaults"===name?$.extend({},$.datepicker._defaults):inst?"all"===name?$.extend({},inst.settings):this._get(inst,name):null;settings=name||{},"string"==typeof name&&(settings={},settings[name]=value),inst&&(this._curInst===inst&&this._hideDatepicker(),date=this._getDateDatepicker(target,!0),minDate=this._getMinMaxDate(inst,"min"),maxDate=this._getMinMaxDate(inst,"max"),extendRemove(inst.settings,settings),null!==minDate&&settings.dateFormat!==undefined&&settings.minDate===undefined&&(inst.settings.minDate=this._formatDate(inst,minDate)),null!==maxDate&&settings.dateFormat!==undefined&&settings.maxDate===undefined&&(inst.settings.maxDate=this._formatDate(inst,maxDate)),"disabled"in settings&&(settings.disabled?this._disableDatepicker(target):this._enableDatepicker(target)),this._attachments($(target),inst),this._autoSize(inst),this._setDate(inst,date),this._updateAlternate(inst),this._updateDatepicker(inst))},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value)},_refreshDatepicker:function(target){var inst=this._getInst(target);inst&&this._updateDatepicker(inst)},_setDateDatepicker:function(target,date){var inst=this._getInst(target);inst&&(this._setDate(inst,date),this._updateDatepicker(inst),this._updateAlternate(inst))},_getDateDatepicker:function(target,noDefault){var inst=this._getInst(target);return inst&&!inst.inline&&this._setDateFromField(inst,noDefault),inst?this._getDate(inst):null},_doKeyDown:function(event){var onSelect,dateStr,sel,inst=$.datepicker._getInst(event.target),handled=!0,isRTL=inst.dpDiv.is(".ui-datepicker-rtl");if(inst._keyEvent=!0,$.datepicker._datepickerShowing)switch(event.keyCode){case 9:$.datepicker._hideDatepicker(),handled=!1;break;case 13:return sel=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",inst.dpDiv),sel[0]&&$.datepicker._selectDay(event.target,inst.selectedMonth,inst.selectedYear,sel[0]),onSelect=$.datepicker._get(inst,"onSelect"),onSelect?(dateStr=$.datepicker._formatDate(inst),onSelect.apply(inst.input?inst.input[0]:null,[dateStr,inst])):$.datepicker._hideDatepicker(),!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(event.target,event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(event.target,event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths"),"M");break;case 35:(event.ctrlKey||event.metaKey)&&$.datepicker._clearDate(event.target),handled=event.ctrlKey||event.metaKey;break;case 36:(event.ctrlKey||event.metaKey)&&$.datepicker._gotoToday(event.target),handled=event.ctrlKey||event.metaKey;break;case 37:(event.ctrlKey||event.metaKey)&&$.datepicker._adjustDate(event.target,isRTL?1:-1,"D"),handled=event.ctrlKey||event.metaKey,event.originalEvent.altKey&&$.datepicker._adjustDate(event.target,event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths"),"M");break;case 38:(event.ctrlKey||event.metaKey)&&$.datepicker._adjustDate(event.target,-7,"D"),handled=event.ctrlKey||event.metaKey;break;case 39:(event.ctrlKey||event.metaKey)&&$.datepicker._adjustDate(event.target,isRTL?-1:1,"D"),handled=event.ctrlKey||event.metaKey,event.originalEvent.altKey&&$.datepicker._adjustDate(event.target,event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths"),"M");break;case 40:(event.ctrlKey||event.metaKey)&&$.datepicker._adjustDate(event.target,7,"D"),handled=event.ctrlKey||event.metaKey;break;default:handled=!1}else 36===event.keyCode&&event.ctrlKey?$.datepicker._showDatepicker(this):handled=!1;handled&&(event.preventDefault(),event.stopPropagation())},_doKeyPress:function(event){var chars,chr,inst=$.datepicker._getInst(event.target);if($.datepicker._get(inst,"constrainInput"))return chars=$.datepicker._possibleChars($.datepicker._get(inst,"dateFormat")),chr=String.fromCharCode(null==event.charCode?event.keyCode:event.charCode),event.ctrlKey||event.metaKey||chr<" "||!chars||chars.indexOf(chr)>-1},_doKeyUp:function(event){var date,inst=$.datepicker._getInst(event.target);if(inst.input.val()!==inst.lastVal)try{date=$.datepicker.parseDate($.datepicker._get(inst,"dateFormat"),inst.input?inst.input.val():null,$.datepicker._getFormatConfig(inst)),date&&($.datepicker._setDateFromField(inst),$.datepicker._updateAlternate(inst),$.datepicker._updateDatepicker(inst))}catch(err){}return!0},_showDatepicker:function(input){if(input=input.target||input,"input"!==input.nodeName.toLowerCase()&&(input=$("input",input.parentNode)[0]),!$.datepicker._isDisabledDatepicker(input)&&$.datepicker._lastInput!==input){var inst,beforeShow,beforeShowSettings,isFixed,offset,showAnim,duration;inst=$.datepicker._getInst(input),$.datepicker._curInst&&$.datepicker._curInst!==inst&&($.datepicker._curInst.dpDiv.stop(!0,!0),inst&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0])),beforeShow=$.datepicker._get(inst,"beforeShow"),beforeShowSettings=beforeShow?beforeShow.apply(input,[input,inst]):{},!1!==beforeShowSettings&&(extendRemove(inst.settings,beforeShowSettings),inst.lastVal=null,$.datepicker._lastInput=input,$.datepicker._setDateFromField(inst),$.datepicker._inDialog&&(input.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(input),$.datepicker._pos[1]+=input.offsetHeight),isFixed=!1,$(input).parents().each(function(){return!(isFixed|="fixed"===$(this).css("position"))}),offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]},$.datepicker._pos=null,inst.dpDiv.empty(),inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(inst),offset=$.datepicker._checkOffset(inst,offset,isFixed),inst.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":isFixed?"fixed":"absolute",display:"none",left:offset.left+"px",top:offset.top+"px"}),inst.inline||(showAnim=$.datepicker._get(inst,"showAnim"),duration=$.datepicker._get(inst,"duration"),inst.dpDiv.zIndex($(input).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects.effect[showAnim]?inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration):inst.dpDiv[showAnim||"show"](showAnim?duration:null),$.datepicker._shouldFocusInput(inst)&&inst.input.focus(),$.datepicker._curInst=inst))}},_updateDatepicker:function(inst){this.maxRows=4,instActive=inst,inst.dpDiv.empty().append(this._generateHTML(inst)),this._attachHandlers(inst),inst.dpDiv.find("."+this._dayOverClass+" a").mouseover();var origyearshtml,numMonths=this._getNumberOfMonths(inst),cols=numMonths[1];inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),cols>1&&inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",17*cols+"em"),inst.dpDiv[(1!==numMonths[0]||1!==numMonths[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),inst===$.datepicker._curInst&&$.datepicker._datepickerShowing&&$.datepicker._shouldFocusInput(inst)&&inst.input.focus(),inst.yearshtml&&(origyearshtml=inst.yearshtml,setTimeout(function(){origyearshtml===inst.yearshtml&&inst.yearshtml&&inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml),origyearshtml=inst.yearshtml=null},0))},_shouldFocusInput:function(inst){return inst.input&&inst.input.is(":visible")&&!inst.input.is(":disabled")&&!inst.input.is(":focus")},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth(),dpHeight=inst.dpDiv.outerHeight(),inputWidth=inst.input?inst.input.outerWidth():0,inputHeight=inst.input?inst.input.outerHeight():0,viewWidth=document.documentElement.clientWidth+(isFixed?0:$(document).scrollLeft()),viewHeight=document.documentElement.clientHeight+(isFixed?0:$(document).scrollTop());return offset.left-=this._get(inst,"isRTL")?dpWidth-inputWidth:0,offset.left-=isFixed&&offset.left===inst.input.offset().left?$(document).scrollLeft():0,offset.top-=isFixed&&offset.top===inst.input.offset().top+inputHeight?$(document).scrollTop():0,offset.left-=Math.min(offset.left,offset.left+dpWidth>viewWidth&&viewWidth>dpWidth?Math.abs(offset.left+dpWidth-viewWidth):0),offset.top-=Math.min(offset.top,offset.top+dpHeight>viewHeight&&viewHeight>dpHeight?Math.abs(dpHeight+inputHeight):0),offset},_findPos:function(obj){for(var position,inst=this._getInst(obj),isRTL=this._get(inst,"isRTL");obj&&("hidden"===obj.type||1!==obj.nodeType||$.expr.filters.hidden(obj));)obj=obj[isRTL?"previousSibling":"nextSibling"];return position=$(obj).offset(),[position.left,position.top]},_hideDatepicker:function(input){var showAnim,duration,postProcess,onClose,inst=this._curInst;!inst||input&&inst!==$.data(input,PROP_NAME)||this._datepickerShowing&&(showAnim=this._get(inst,"showAnim"),duration=this._get(inst,"duration"),postProcess=function(){$.datepicker._tidyDialog(inst)},$.effects&&($.effects.effect[showAnim]||$.effects[showAnim])?inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess):inst.dpDiv["slideDown"===showAnim?"slideUp":"fadeIn"===showAnim?"fadeOut":"hide"](showAnim?duration:null,postProcess),showAnim||postProcess(),this._datepickerShowing=!1,onClose=this._get(inst,"onClose"),onClose&&onClose.apply(inst.input?inst.input[0]:null,[inst.input?inst.input.val():"",inst]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if($.datepicker._curInst){var $target=$(event.target),inst=$.datepicker._getInst($target[0]);($target[0].id===$.datepicker._mainDivId||0!==$target.parents("#"+$.datepicker._mainDivId).length||$target.hasClass($.datepicker.markerClassName)||$target.closest("."+$.datepicker._triggerClass).length||!$.datepicker._datepickerShowing||$.datepicker._inDialog&&$.blockUI)&&(!$target.hasClass($.datepicker.markerClassName)||$.datepicker._curInst===inst)||$.datepicker._hideDatepicker()}},_adjustDate:function(id,offset,period){var target=$(id),inst=this._getInst(target[0]);this._isDisabledDatepicker(target[0])||(this._adjustInstDate(inst,offset+("M"===period?this._get(inst,"showCurrentAtPos"):0),period),this._updateDatepicker(inst))},_gotoToday:function(id){var date,target=$(id),inst=this._getInst(target[0]);this._get(inst,"gotoCurrent")&&inst.currentDay?(inst.selectedDay=inst.currentDay,inst.drawMonth=inst.selectedMonth=inst.currentMonth,inst.drawYear=inst.selectedYear=inst.currentYear):(date=new Date,inst.selectedDay=date.getDate(),inst.drawMonth=inst.selectedMonth=date.getMonth(),inst.drawYear=inst.selectedYear=date.getFullYear()),this._notifyChange(inst),this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id),inst=this._getInst(target[0]);inst["selected"+("M"===period?"Month":"Year")]=inst["draw"+("M"===period?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10),this._notifyChange(inst),this._adjustDate(target)},_selectDay:function(id,month,year,td){var inst,target=$(id);$(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])||(inst=this._getInst(target[0]),inst.selectedDay=inst.currentDay=$("a",td).html(),inst.selectedMonth=inst.currentMonth=month,inst.selectedYear=inst.currentYear=year,this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear)))},_clearDate:function(id){var target=$(id);this._selectDate(target,"")},_selectDate:function(id,dateStr){
+var onSelect,target=$(id),inst=this._getInst(target[0]);dateStr=null!=dateStr?dateStr:this._formatDate(inst),inst.input&&inst.input.val(dateStr),this._updateAlternate(inst),onSelect=this._get(inst,"onSelect"),onSelect?onSelect.apply(inst.input?inst.input[0]:null,[dateStr,inst]):inst.input&&inst.input.trigger("change"),inst.inline?this._updateDatepicker(inst):(this._hideDatepicker(),this._lastInput=inst.input[0],"object"!=typeof inst.input[0]&&inst.input.focus(),this._lastInput=null)},_updateAlternate:function(inst){var altFormat,date,dateStr,altField=this._get(inst,"altField");altField&&(altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat"),date=this._getDate(inst),dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst)),$(altField).each(function(){$(this).val(dateStr)}))},noWeekends:function(date){var day=date.getDay();return[day>0&&day<6,""]},iso8601Week:function(date){var time,checkDate=new Date(date.getTime());return checkDate.setDate(checkDate.getDate()+4-(checkDate.getDay()||7)),time=checkDate.getTime(),checkDate.setMonth(0),checkDate.setDate(1),Math.floor(Math.round((time-checkDate)/864e5)/7)+1},parseDate:function(format,value,settings){if(null==format||null==value)throw"Invalid arguments";if(""===(value="object"==typeof value?value.toString():value+""))return null;var iFormat,dim,extra,date,iValue=0,shortYearCutoffTemp=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff,shortYearCutoff="string"!=typeof shortYearCutoffTemp?shortYearCutoffTemp:(new Date).getFullYear()%100+parseInt(shortYearCutoffTemp,10),dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort,dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames,monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort,monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames,year=-1,month=-1,day=-1,doy=-1,literal=!1,lookAhead=function(match){var matches=iFormat+1<format.length&&format.charAt(iFormat+1)===match;return matches&&iFormat++,matches},getNumber=function(match){var isDoubled=lookAhead(match),size="@"===match?14:"!"===match?20:"y"===match&&isDoubled?4:"o"===match?3:2,digits=new RegExp("^\\d{1,"+size+"}"),num=value.substring(iValue).match(digits);if(!num)throw"Missing number at position "+iValue;return iValue+=num[0].length,parseInt(num[0],10)},getName=function(match,shortNames,longNames){var index=-1,names=$.map(lookAhead(match)?longNames:shortNames,function(v,k){return[[k,v]]}).sort(function(a,b){return-(a[1].length-b[1].length)});if($.each(names,function(i,pair){var name=pair[1];if(value.substr(iValue,name.length).toLowerCase()===name.toLowerCase())return index=pair[0],iValue+=name.length,!1}),-1!==index)return index+1;throw"Unknown name at position "+iValue},checkLiteral=function(){if(value.charAt(iValue)!==format.charAt(iFormat))throw"Unexpected literal at position "+iValue;iValue++};for(iFormat=0;iFormat<format.length;iFormat++)if(literal)"'"!==format.charAt(iFormat)||lookAhead("'")?checkLiteral():literal=!1;else switch(format.charAt(iFormat)){case"d":day=getNumber("d");break;case"D":getName("D",dayNamesShort,dayNames);break;case"o":doy=getNumber("o");break;case"m":month=getNumber("m");break;case"M":month=getName("M",monthNamesShort,monthNames);break;case"y":year=getNumber("y");break;case"@":date=new Date(getNumber("@")),year=date.getFullYear(),month=date.getMonth()+1,day=date.getDate();break;case"!":date=new Date((getNumber("!")-this._ticksTo1970)/1e4),year=date.getFullYear(),month=date.getMonth()+1,day=date.getDate();break;case"'":lookAhead("'")?checkLiteral():literal=!0;break;default:checkLiteral()}if(iValue<value.length&&(extra=value.substr(iValue),!/^\s+/.test(extra)))throw"Extra/unparsed characters found in date: "+extra;if(-1===year?year=(new Date).getFullYear():year<100&&(year+=(new Date).getFullYear()-(new Date).getFullYear()%100+(year<=shortYearCutoff?0:-100)),doy>-1)for(month=1,day=doy;;){if(dim=this._getDaysInMonth(year,month-1),day<=dim)break;month++,day-=dim}if(date=this._daylightSavingAdjust(new Date(year,month-1,day)),date.getFullYear()!==year||date.getMonth()+1!==month||date.getDate()!==day)throw"Invalid date";return date},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(format,date,settings){if(!date)return"";var iFormat,dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort,dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames,monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort,monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames,lookAhead=function(match){var matches=iFormat+1<format.length&&format.charAt(iFormat+1)===match;return matches&&iFormat++,matches},formatNumber=function(match,value,len){var num=""+value;if(lookAhead(match))for(;num.length<len;)num="0"+num;return num},formatName=function(match,value,shortNames,longNames){return lookAhead(match)?longNames[value]:shortNames[value]},output="",literal=!1;if(date)for(iFormat=0;iFormat<format.length;iFormat++)if(literal)"'"!==format.charAt(iFormat)||lookAhead("'")?output+=format.charAt(iFormat):literal=!1;else switch(format.charAt(iFormat)){case"d":output+=formatNumber("d",date.getDate(),2);break;case"D":output+=formatName("D",date.getDay(),dayNamesShort,dayNames);break;case"o":output+=formatNumber("o",Math.round((new Date(date.getFullYear(),date.getMonth(),date.getDate()).getTime()-new Date(date.getFullYear(),0,0).getTime())/864e5),3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100;break;case"@":output+=date.getTime();break;case"!":output+=1e4*date.getTime()+this._ticksTo1970;break;case"'":lookAhead("'")?output+="'":literal=!0;break;default:output+=format.charAt(iFormat)}return output},_possibleChars:function(format){var iFormat,chars="",literal=!1,lookAhead=function(match){var matches=iFormat+1<format.length&&format.charAt(iFormat+1)===match;return matches&&iFormat++,matches};for(iFormat=0;iFormat<format.length;iFormat++)if(literal)"'"!==format.charAt(iFormat)||lookAhead("'")?chars+=format.charAt(iFormat):literal=!1;else switch(format.charAt(iFormat)){case"d":case"m":case"y":case"@":chars+="0123456789";break;case"D":case"M":return null;case"'":lookAhead("'")?chars+="'":literal=!0;break;default:chars+=format.charAt(iFormat)}return chars},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]},_setDateFromField:function(inst,noDefault){if(inst.input.val()!==inst.lastVal){var dateFormat=this._get(inst,"dateFormat"),dates=inst.lastVal=inst.input?inst.input.val():null,defaultDate=this._getDefaultDate(inst),date=defaultDate,settings=this._getFormatConfig(inst);try{date=this.parseDate(dateFormat,dates,settings)||defaultDate}catch(event){dates=noDefault?"":dates}inst.selectedDay=date.getDate(),inst.drawMonth=inst.selectedMonth=date.getMonth(),inst.drawYear=inst.selectedYear=date.getFullYear(),inst.currentDay=dates?date.getDate():0,inst.currentMonth=dates?date.getMonth():0,inst.currentYear=dates?date.getFullYear():0,this._adjustInstDate(inst)}},_getDefaultDate:function(inst){return this._restrictMinMax(inst,this._determineDate(inst,this._get(inst,"defaultDate"),new Date))},_determineDate:function(inst,date,defaultDate){var offsetNumeric=function(offset){var date=new Date;return date.setDate(date.getDate()+offset),date},offsetString=function(offset){try{return $.datepicker.parseDate($.datepicker._get(inst,"dateFormat"),offset,$.datepicker._getFormatConfig(inst))}catch(e){}for(var date=(offset.toLowerCase().match(/^c/)?$.datepicker._getDate(inst):null)||new Date,year=date.getFullYear(),month=date.getMonth(),day=date.getDate(),pattern=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,matches=pattern.exec(offset);matches;){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=7*parseInt(matches[1],10);break;case"m":case"M":month+=parseInt(matches[1],10),day=Math.min(day,$.datepicker._getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10),day=Math.min(day,$.datepicker._getDaysInMonth(year,month))}matches=pattern.exec(offset)}return new Date(year,month,day)},newDate=null==date||""===date?defaultDate:"string"==typeof date?offsetString(date):"number"==typeof date?isNaN(date)?defaultDate:offsetNumeric(date):new Date(date.getTime());return newDate=newDate&&"Invalid Date"===newDate.toString()?defaultDate:newDate,newDate&&(newDate.setHours(0),newDate.setMinutes(0),newDate.setSeconds(0),newDate.setMilliseconds(0)),this._daylightSavingAdjust(newDate)},_daylightSavingAdjust:function(date){return date?(date.setHours(date.getHours()>12?date.getHours()+2:0),date):null},_setDate:function(inst,date,noChange){var clear=!date,origMonth=inst.selectedMonth,origYear=inst.selectedYear,newDate=this._restrictMinMax(inst,this._determineDate(inst,date,new Date));inst.selectedDay=inst.currentDay=newDate.getDate(),inst.drawMonth=inst.selectedMonth=inst.currentMonth=newDate.getMonth(),inst.drawYear=inst.selectedYear=inst.currentYear=newDate.getFullYear(),origMonth===inst.selectedMonth&&origYear===inst.selectedYear||noChange||this._notifyChange(inst),this._adjustInstDate(inst),inst.input&&inst.input.val(clear?"":this._formatDate(inst))},_getDate:function(inst){return!inst.currentYear||inst.input&&""===inst.input.val()?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay))},_attachHandlers:function(inst){var stepMonths=this._get(inst,"stepMonths"),id="#"+inst.id.replace(/\\\\/g,"\\");inst.dpDiv.find("[data-handler]").map(function(){var handler={prev:function(){$.datepicker._adjustDate(id,-stepMonths,"M")},next:function(){$.datepicker._adjustDate(id,+stepMonths,"M")},hide:function(){$.datepicker._hideDatepicker()},today:function(){$.datepicker._gotoToday(id)},selectDay:function(){return $.datepicker._selectDay(id,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return $.datepicker._selectMonthYear(id,this,"M"),!1},selectYear:function(){return $.datepicker._selectMonthYear(id,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),handler[this.getAttribute("data-handler")])})},_generateHTML:function(inst){var maxDraw,prevText,prev,nextText,next,currentText,gotoDate,controls,buttonPanel,firstDay,showWeek,dayNames,dayNamesMin,monthNames,monthNamesShort,beforeShowDay,showOtherMonths,selectOtherMonths,defaultDate,html,dow,row,group,col,selectedDate,cornerClass,calender,thead,day,daysInMonth,leadDays,curRows,numRows,printDate,dRow,tbody,daySettings,otherMonth,unselectable,tempDate=new Date,today=this._daylightSavingAdjust(new Date(tempDate.getFullYear(),tempDate.getMonth(),tempDate.getDate())),isRTL=this._get(inst,"isRTL"),showButtonPanel=this._get(inst,"showButtonPanel"),hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext"),navigationAsDateFormat=this._get(inst,"navigationAsDateFormat"),numMonths=this._getNumberOfMonths(inst),showCurrentAtPos=this._get(inst,"showCurrentAtPos"),stepMonths=this._get(inst,"stepMonths"),isMultiMonth=1!==numMonths[0]||1!==numMonths[1],currentDate=this._daylightSavingAdjust(inst.currentDay?new Date(inst.currentYear,inst.currentMonth,inst.currentDay):new Date(9999,9,9)),minDate=this._getMinMaxDate(inst,"min"),maxDate=this._getMinMaxDate(inst,"max"),drawMonth=inst.drawMonth-showCurrentAtPos,drawYear=inst.drawYear;if(drawMonth<0&&(drawMonth+=12,drawYear--),maxDate)for(maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[0]*numMonths[1]+1,maxDate.getDate())),maxDraw=minDate&&maxDraw<minDate?minDate:maxDraw;this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw;)--drawMonth<0&&(drawMonth=11,drawYear--);for(inst.drawMonth=drawMonth,inst.drawYear=drawYear,prevText=this._get(inst,"prevText"),prevText=navigationAsDateFormat?this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)):prevText,prev=this._canAdjustMonth(inst,-1,drawYear,drawMonth)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+prevText+"'><span class='ui-icon ui-icon-circle-triangle-"+(isRTL?"e":"w")+"'>"+prevText+"</span></a>":hideIfNoPrevNext?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+prevText+"'><span class='ui-icon ui-icon-circle-triangle-"+(isRTL?"e":"w")+"'>"+prevText+"</span></a>",nextText=this._get(inst,"nextText"),nextText=navigationAsDateFormat?this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)):nextText,next=this._canAdjustMonth(inst,1,drawYear,drawMonth)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+nextText+"'><span class='ui-icon ui-icon-circle-triangle-"+(isRTL?"w":"e")+"'>"+nextText+"</span></a>":hideIfNoPrevNext?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+nextText+"'><span class='ui-icon ui-icon-circle-triangle-"+(isRTL?"w":"e")+"'>"+nextText+"</span></a>",currentText=this._get(inst,"currentText"),gotoDate=this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today,currentText=navigationAsDateFormat?this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)):currentText,controls=inst.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(inst,"closeText")+"</button>",buttonPanel=showButtonPanel?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+currentText+"</button>":"")+(isRTL?"":controls)+"</div>":"",firstDay=parseInt(this._get(inst,"firstDay"),10),firstDay=isNaN(firstDay)?0:firstDay,showWeek=this._get(inst,"showWeek"),dayNames=this._get(inst,"dayNames"),dayNamesMin=this._get(inst,"dayNamesMin"),monthNames=this._get(inst,"monthNames"),monthNamesShort=this._get(inst,"monthNamesShort"),beforeShowDay=this._get(inst,"beforeShowDay"),showOtherMonths=this._get(inst,"showOtherMonths"),selectOtherMonths=this._get(inst,"selectOtherMonths"),defaultDate=this._getDefaultDate(inst),html="",row=0;row<numMonths[0];row++){for(group="",this.maxRows=4,col=0;col<numMonths[1];col++){if(selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay)),cornerClass=" ui-corner-all",calender="",isMultiMonth){if(calender+="<div class='ui-datepicker-group",numMonths[1]>1)switch(col){case 0:calender+=" ui-datepicker-group-first",cornerClass=" ui-corner-"+(isRTL?"right":"left");break;case numMonths[1]-1:calender+=" ui-datepicker-group-last",cornerClass=" ui-corner-"+(isRTL?"left":"right");break;default:calender+=" ui-datepicker-group-middle",cornerClass=""}calender+="'>"}for(calender+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+cornerClass+"'>"+(/all|left/.test(cornerClass)&&0===row?isRTL?next:prev:"")+(/all|right/.test(cornerClass)&&0===row?isRTL?prev:next:"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,row>0||col>0,monthNames,monthNamesShort)+"</div><table class='ui-datepicker-calendar'><thead><tr>",thead=showWeek?"<th class='ui-datepicker-week-col'>"+this._get(inst,"weekHeader")+"</th>":"",dow=0;dow<7;dow++)day=(dow+firstDay)%7,thead+="<th"+((dow+firstDay+6)%7>=5?" class='ui-datepicker-week-end'":"")+"><span title='"+dayNames[day]+"'>"+dayNamesMin[day]+"</span></th>";for(calender+=thead+"</tr></thead><tbody>",daysInMonth=this._getDaysInMonth(drawYear,drawMonth),drawYear===inst.selectedYear&&drawMonth===inst.selectedMonth&&(inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)),leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7,curRows=Math.ceil((leadDays+daysInMonth)/7),numRows=isMultiMonth&&this.maxRows>curRows?this.maxRows:curRows,this.maxRows=numRows,printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays)),dRow=0;dRow<numRows;dRow++){for(calender+="<tr>",tbody=showWeek?"<td class='ui-datepicker-week-col'>"+this._get(inst,"calculateWeek")(printDate)+"</td>":"",dow=0;dow<7;dow++)daySettings=beforeShowDay?beforeShowDay.apply(inst.input?inst.input[0]:null,[printDate]):[!0,""],otherMonth=printDate.getMonth()!==drawMonth,unselectable=otherMonth&&!selectOtherMonths||!daySettings[0]||minDate&&printDate<minDate||maxDate&&printDate>maxDate,tbody+="<td class='"+((dow+firstDay+6)%7>=5?" ui-datepicker-week-end":"")+(otherMonth?" ui-datepicker-other-month":"")+(printDate.getTime()===selectedDate.getTime()&&drawMonth===inst.selectedMonth&&inst._keyEvent||defaultDate.getTime()===printDate.getTime()&&defaultDate.getTime()===selectedDate.getTime()?" "+this._dayOverClass:"")+(unselectable?" "+this._unselectableClass+" ui-state-disabled":"")+(otherMonth&&!showOtherMonths?"":" "+daySettings[1]+(printDate.getTime()===currentDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()===today.getTime()?" ui-datepicker-today":""))+"'"+(otherMonth&&!showOtherMonths||!daySettings[2]?"":" title='"+daySettings[2].replace(/'/g,"&#39;")+"'")+(unselectable?"":" data-handler='selectDay' data-event='click' data-month='"+printDate.getMonth()+"' data-year='"+printDate.getFullYear()+"'")+">"+(otherMonth&&!showOtherMonths?"&#xa0;":unselectable?"<span class='ui-state-default'>"+printDate.getDate()+"</span>":"<a class='ui-state-default"+(printDate.getTime()===today.getTime()?" ui-state-highlight":"")+(printDate.getTime()===currentDate.getTime()?" ui-state-active":"")+(otherMonth?" ui-priority-secondary":"")+"' href='#'>"+printDate.getDate()+"</a>")+"</td>",printDate.setDate(printDate.getDate()+1),printDate=this._daylightSavingAdjust(printDate);calender+=tbody+"</tr>"}drawMonth++,drawMonth>11&&(drawMonth=0,drawYear++),calender+="</tbody></table>"+(isMultiMonth?"</div>"+(numMonths[0]>0&&col===numMonths[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),group+=calender}html+=group}return html+=buttonPanel,inst._keyEvent=!1,html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,secondary,monthNames,monthNamesShort){var inMinYear,inMaxYear,month,years,thisYear,determineYear,year,endYear,changeMonth=this._get(inst,"changeMonth"),changeYear=this._get(inst,"changeYear"),showMonthAfterYear=this._get(inst,"showMonthAfterYear"),html="<div class='ui-datepicker-title'>",monthHtml="";if(secondary||!changeMonth)monthHtml+="<span class='ui-datepicker-month'>"+monthNames[drawMonth]+"</span>";else{for(inMinYear=minDate&&minDate.getFullYear()===drawYear,inMaxYear=maxDate&&maxDate.getFullYear()===drawYear,monthHtml+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",month=0;month<12;month++)(!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())&&(monthHtml+="<option value='"+month+"'"+(month===drawMonth?" selected='selected'":"")+">"+monthNamesShort[month]+"</option>");monthHtml+="</select>"}if(showMonthAfterYear||(html+=monthHtml+(!secondary&&changeMonth&&changeYear?"":"&#xa0;")),!inst.yearshtml)if(inst.yearshtml="",secondary||!changeYear)html+="<span class='ui-datepicker-year'>"+drawYear+"</span>";else{for(years=this._get(inst,"yearRange").split(":"),thisYear=(new Date).getFullYear(),determineYear=function(value){var year=value.match(/c[+\-].*/)?drawYear+parseInt(value.substring(1),10):value.match(/[+\-].*/)?thisYear+parseInt(value,10):parseInt(value,10);return isNaN(year)?thisYear:year},year=determineYear(years[0]),endYear=Math.max(year,determineYear(years[1]||"")),year=minDate?Math.max(year,minDate.getFullYear()):year,endYear=maxDate?Math.min(endYear,maxDate.getFullYear()):endYear,inst.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";year<=endYear;year++)inst.yearshtml+="<option value='"+year+"'"+(year===drawYear?" selected='selected'":"")+">"+year+"</option>";inst.yearshtml+="</select>",html+=inst.yearshtml,inst.yearshtml=null}return html+=this._get(inst,"yearSuffix"),showMonthAfterYear&&(html+=(!secondary&&changeMonth&&changeYear?"":"&#xa0;")+monthHtml),html+="</div>"},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+("Y"===period?offset:0),month=inst.drawMonth+("M"===period?offset:0),day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+("D"===period?offset:0),date=this._restrictMinMax(inst,this._daylightSavingAdjust(new Date(year,month,day)));inst.selectedDay=date.getDate(),inst.drawMonth=inst.selectedMonth=date.getMonth(),inst.drawYear=inst.selectedYear=date.getFullYear(),"M"!==period&&"Y"!==period||this._notifyChange(inst)},_restrictMinMax:function(inst,date){var minDate=this._getMinMaxDate(inst,"min"),maxDate=this._getMinMaxDate(inst,"max"),newDate=minDate&&date<minDate?minDate:date;return maxDate&&newDate>maxDate?maxDate:newDate},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");onChange&&onChange.apply(inst.input?inst.input[0]:null,[inst.selectedYear,inst.selectedMonth+1,inst])},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return null==numMonths?[1,1]:"number"==typeof numMonths?[1,numMonths]:numMonths},_getMinMaxDate:function(inst,minMax){return this._determineDate(inst,this._get(inst,minMax+"Date"),null)},_getDaysInMonth:function(year,month){return 32-this._daylightSavingAdjust(new Date(year,month,32)).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst),date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[0]*numMonths[1]),1));return offset<0&&date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth())),this._isInRange(inst,date)},_isInRange:function(inst,date){var yearSplit,currentYear,minDate=this._getMinMaxDate(inst,"min"),maxDate=this._getMinMaxDate(inst,"max"),minYear=null,maxYear=null,years=this._get(inst,"yearRange");return years&&(yearSplit=years.split(":"),currentYear=(new Date).getFullYear(),minYear=parseInt(yearSplit[0],10),maxYear=parseInt(yearSplit[1],10),yearSplit[0].match(/[+\-].*/)&&(minYear+=currentYear),yearSplit[1].match(/[+\-].*/)&&(maxYear+=currentYear)),(!minDate||date.getTime()>=minDate.getTime())&&(!maxDate||date.getTime()<=maxDate.getTime())&&(!minYear||date.getFullYear()>=minYear)&&(!maxYear||date.getFullYear()<=maxYear)},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");return shortYearCutoff="string"!=typeof shortYearCutoff?shortYearCutoff:(new Date).getFullYear()%100+parseInt(shortYearCutoff,10),{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){day||(inst.currentDay=inst.selectedDay,inst.currentMonth=inst.selectedMonth,inst.currentYear=inst.selectedYear);var date=day?"object"==typeof day?day:this._daylightSavingAdjust(new Date(year,month,day)):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}}),$.fn.datepicker=function(options){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick),$.datepicker.initialized=!0),0===$("#"+$.datepicker._mainDivId).length&&$("body").append($.datepicker.dpDiv);var otherArgs=Array.prototype.slice.call(arguments,1);return"string"!=typeof options||"isDisabled"!==options&&"getDate"!==options&&"widget"!==options?"option"===options&&2===arguments.length&&"string"==typeof arguments[1]?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs)):this.each(function(){"string"==typeof options?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)}):$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.10.3"}(jQuery),function($,undefined){var sizeRelatedOptions={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};$.widget("ui.dialog",{version:"1.10.3",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(pos){var topOffset=$(this).css(pos).offset().top;topOffset<0&&$(this).css("top",pos.top-topOffset)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&$.fn.draggable&&this._makeDraggable(),this.options.resizable&&$.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var element=this.options.appendTo;return element&&(element.jquery||element.nodeType)?$(element):this.document.find(element||"body").eq(0)},_destroy:function(){var next,originalPosition=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),next=originalPosition.parent.children().eq(originalPosition.index),next.length&&next[0]!==this.element[0]?next.before(this.element):originalPosition.parent.append(this.element)},widget:function(){return this.uiDialog},disable:$.noop,enable:$.noop,close:function(event){var that=this;this._isOpen&&!1!==this._trigger("beforeClose",event)&&(this._isOpen=!1,this._destroyOverlay(),this.opener.filter(":focusable").focus().length||$(this.document[0].activeElement).blur(),this._hide(this.uiDialog,this.options.hide,function(){that._trigger("close",event)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(event,silent){var moved=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return moved&&!silent&&this._trigger("focus",event),moved},open:function(){var that=this;if(this._isOpen)return void(this._moveToTop()&&this._focusTabbable());this._isOpen=!0,this.opener=$(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){that._focusTabbable(),that._trigger("focus")}),this._trigger("open")},_focusTabbable:function(){var hasFocus=this.element.find("[autofocus]");hasFocus.length||(hasFocus=this.element.find(":tabbable")),hasFocus.length||(hasFocus=this.uiDialogButtonPane.find(":tabbable")),hasFocus.length||(hasFocus=this.uiDialogTitlebarClose.filter(":tabbable")),hasFocus.length||(hasFocus=this.uiDialog),hasFocus.eq(0).focus()},_keepFocus:function(event){function checkFocus(){var activeElement=this.document[0].activeElement;this.uiDialog[0]===activeElement||$.contains(this.uiDialog[0],activeElement)||this._focusTabbable()}event.preventDefault(),checkFocus.call(this),this._delay(checkFocus)},_createWrapper:function(){this.uiDialog=$("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(event){if(this.options.closeOnEscape&&!event.isDefaultPrevented()&&event.keyCode&&event.keyCode===$.ui.keyCode.ESCAPE)return event.preventDefault(),void this.close(event);if(event.keyCode===$.ui.keyCode.TAB){var tabbables=this.uiDialog.find(":tabbable"),first=tabbables.filter(":first"),last=tabbables.filter(":last");event.target!==last[0]&&event.target!==this.uiDialog[0]||event.shiftKey?event.target!==first[0]&&event.target!==this.uiDialog[0]||!event.shiftKey||(last.focus(1),event.preventDefault()):(first.focus(1),event.preventDefault())}},mousedown:function(event){this._moveToTop(event)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var uiDialogTitle;this.uiDialogTitlebar=$("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(event){$(event.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=$("<button></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(event){event.preventDefault(),this.close(event)}}),uiDialogTitle=$("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(uiDialogTitle),this.uiDialog.attr({"aria-labelledby":uiDialogTitle.attr("id")})},_title:function(title){this.options.title||title.html("&#160;"),title.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=$("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=$("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var that=this,buttons=this.options.buttons;if(this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),$.isEmptyObject(buttons)||$.isArray(buttons)&&!buttons.length)return void this.uiDialog.removeClass("ui-dialog-buttons");$.each(buttons,function(name,props){var click,buttonOptions;props=$.isFunction(props)?{click:props,text:name}:props,props=$.extend({type:"button"},props),click=props.click,props.click=function(){click.apply(that.element[0],arguments)},buttonOptions={icons:props.icons,text:props.showText},delete props.icons,delete props.showText,$("<button></button>",props).button(buttonOptions).appendTo(that.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)},_makeDraggable:function(){function filteredUi(ui){return{position:ui.position,offset:ui.offset}}var that=this,options=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(event,ui){$(this).addClass("ui-dialog-dragging"),that._blockFrames(),that._trigger("dragStart",event,filteredUi(ui))},
+drag:function(event,ui){that._trigger("drag",event,filteredUi(ui))},stop:function(event,ui){options.position=[ui.position.left-that.document.scrollLeft(),ui.position.top-that.document.scrollTop()],$(this).removeClass("ui-dialog-dragging"),that._unblockFrames(),that._trigger("dragStop",event,filteredUi(ui))}})},_makeResizable:function(){function filteredUi(ui){return{originalPosition:ui.originalPosition,originalSize:ui.originalSize,position:ui.position,size:ui.size}}var that=this,options=this.options,handles=options.resizable,position=this.uiDialog.css("position"),resizeHandles="string"==typeof handles?handles:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:options.maxWidth,maxHeight:options.maxHeight,minWidth:options.minWidth,minHeight:this._minHeight(),handles:resizeHandles,start:function(event,ui){$(this).addClass("ui-dialog-resizing"),that._blockFrames(),that._trigger("resizeStart",event,filteredUi(ui))},resize:function(event,ui){that._trigger("resize",event,filteredUi(ui))},stop:function(event,ui){options.height=$(this).height(),options.width=$(this).width(),$(this).removeClass("ui-dialog-resizing"),that._unblockFrames(),that._trigger("resizeStop",event,filteredUi(ui))}}).css("position",position)},_minHeight:function(){var options=this.options;return"auto"===options.height?options.minHeight:Math.min(options.minHeight,options.height)},_position:function(){var isVisible=this.uiDialog.is(":visible");isVisible||this.uiDialog.show(),this.uiDialog.position(this.options.position),isVisible||this.uiDialog.hide()},_setOptions:function(options){var that=this,resize=!1,resizableOptions={};$.each(options,function(key,value){that._setOption(key,value),key in sizeRelatedOptions&&(resize=!0),key in resizableRelatedOptions&&(resizableOptions[key]=value)}),resize&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",resizableOptions)},_setOption:function(key,value){var isDraggable,isResizable,uiDialog=this.uiDialog;"dialogClass"===key&&uiDialog.removeClass(this.options.dialogClass).addClass(value),"disabled"!==key&&(this._super(key,value),"appendTo"===key&&this.uiDialog.appendTo(this._appendTo()),"buttons"===key&&this._createButtons(),"closeText"===key&&this.uiDialogTitlebarClose.button({label:""+value}),"draggable"===key&&(isDraggable=uiDialog.is(":data(ui-draggable)"),isDraggable&&!value&&uiDialog.draggable("destroy"),!isDraggable&&value&&this._makeDraggable()),"position"===key&&this._position(),"resizable"===key&&(isResizable=uiDialog.is(":data(ui-resizable)"),isResizable&&!value&&uiDialog.resizable("destroy"),isResizable&&"string"==typeof value&&uiDialog.resizable("option","handles",value),isResizable||!1===value||this._makeResizable()),"title"===key&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var nonContentHeight,minContentHeight,maxContentHeight,options=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),options.minWidth>options.width&&(options.width=options.minWidth),nonContentHeight=this.uiDialog.css({height:"auto",width:options.width}).outerHeight(),minContentHeight=Math.max(0,options.minHeight-nonContentHeight),maxContentHeight="number"==typeof options.maxHeight?Math.max(0,options.maxHeight-nonContentHeight):"none","auto"===options.height?this.element.css({minHeight:minContentHeight,maxHeight:maxContentHeight,height:"auto"}):this.element.height(Math.max(0,options.height-nonContentHeight)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var iframe=$(this);return $("<div>").css({position:"absolute",width:iframe.outerWidth(),height:iframe.outerHeight()}).appendTo(iframe.parent()).offset(iframe.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(event){return!!$(event.target).closest(".ui-dialog").length||!!$(event.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var that=this,widgetFullName=this.widgetFullName;$.ui.dialog.overlayInstances||this._delay(function(){$.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(event){that._allowInteraction(event)||(event.preventDefault(),$(".ui-dialog:visible:last .ui-dialog-content").data(widgetFullName)._focusTabbable())})}),this.overlay=$("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),$.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&($.ui.dialog.overlayInstances--,$.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),$.ui.dialog.overlayInstances=0,!1!==$.uiBackCompat&&$.widget("ui.dialog",$.ui.dialog,{_position:function(){var isVisible,position=this.options.position,myAt=[],offset=[0,0];position?(("string"==typeof position||"object"==typeof position&&"0"in position)&&(myAt=position.split?position.split(" "):[position[0],position[1]],1===myAt.length&&(myAt[1]=myAt[0]),$.each(["left","top"],function(i,offsetPosition){+myAt[i]===myAt[i]&&(offset[i]=myAt[i],myAt[i]=offsetPosition)}),position={my:myAt[0]+(offset[0]<0?offset[0]:"+"+offset[0])+" "+myAt[1]+(offset[1]<0?offset[1]:"+"+offset[1]),at:myAt.join(" ")}),position=$.extend({},$.ui.dialog.prototype.options.position,position)):position=$.ui.dialog.prototype.options.position,isVisible=this.uiDialog.is(":visible"),isVisible||this.uiDialog.show(),this.uiDialog.position(position),isVisible||this.uiDialog.hide()}})}(jQuery),function($,undefined){var rvertical=/up|down|vertical/,rpositivemotion=/up|left|vertical|horizontal/;$.effects.effect.blind=function(o,done){var wrapper,distance,margin,el=$(this),props=["position","top","bottom","left","right","height","width"],mode=$.effects.setMode(el,o.mode||"hide"),direction=o.direction||"up",vertical=rvertical.test(direction),ref=vertical?"height":"width",ref2=vertical?"top":"left",motion=rpositivemotion.test(direction),animation={},show="show"===mode;el.parent().is(".ui-effects-wrapper")?$.effects.save(el.parent(),props):$.effects.save(el,props),el.show(),wrapper=$.effects.createWrapper(el).css({overflow:"hidden"}),distance=wrapper[ref](),margin=parseFloat(wrapper.css(ref2))||0,animation[ref]=show?distance:0,motion||(el.css(vertical?"bottom":"right",0).css(vertical?"top":"left","auto").css({position:"absolute"}),animation[ref2]=show?margin:distance+margin),show&&(wrapper.css(ref,0),motion||wrapper.css(ref2,margin+distance)),wrapper.animate(animation,{duration:o.duration,easing:o.easing,queue:!1,complete:function(){"hide"===mode&&el.hide(),$.effects.restore(el,props),$.effects.removeWrapper(el),done()}})}}(jQuery),function($,undefined){$.effects.effect.bounce=function(o,done){var i,upAnim,downAnim,el=$(this),props=["position","top","bottom","left","right","height","width"],mode=$.effects.setMode(el,o.mode||"effect"),hide="hide"===mode,show="show"===mode,direction=o.direction||"up",distance=o.distance,times=o.times||5,anims=2*times+(show||hide?1:0),speed=o.duration/anims,easing=o.easing,ref="up"===direction||"down"===direction?"top":"left",motion="up"===direction||"left"===direction,queue=el.queue(),queuelen=queue.length;for((show||hide)&&props.push("opacity"),$.effects.save(el,props),el.show(),$.effects.createWrapper(el),distance||(distance=el["top"===ref?"outerHeight":"outerWidth"]()/3),show&&(downAnim={opacity:1},downAnim[ref]=0,el.css("opacity",0).css(ref,motion?2*-distance:2*distance).animate(downAnim,speed,easing)),hide&&(distance/=Math.pow(2,times-1)),downAnim={},downAnim[ref]=0,i=0;i<times;i++)upAnim={},upAnim[ref]=(motion?"-=":"+=")+distance,el.animate(upAnim,speed,easing).animate(downAnim,speed,easing),distance=hide?2*distance:distance/2;hide&&(upAnim={opacity:0},upAnim[ref]=(motion?"-=":"+=")+distance,el.animate(upAnim,speed,easing)),el.queue(function(){hide&&el.hide(),$.effects.restore(el,props),$.effects.removeWrapper(el),done()}),queuelen>1&&queue.splice.apply(queue,[1,0].concat(queue.splice(queuelen,anims+1))),el.dequeue()}}(jQuery),function($,undefined){$.effects.effect.clip=function(o,done){var wrapper,animate,distance,el=$(this),props=["position","top","bottom","left","right","height","width"],mode=$.effects.setMode(el,o.mode||"hide"),show="show"===mode,direction=o.direction||"vertical",vert="vertical"===direction,size=vert?"height":"width",position=vert?"top":"left",animation={};$.effects.save(el,props),el.show(),wrapper=$.effects.createWrapper(el).css({overflow:"hidden"}),animate="IMG"===el[0].tagName?wrapper:el,distance=animate[size](),show&&(animate.css(size,0),animate.css(position,distance/2)),animation[size]=show?distance:0,animation[position]=show?0:distance/2,animate.animate(animation,{queue:!1,duration:o.duration,easing:o.easing,complete:function(){show||el.hide(),$.effects.restore(el,props),$.effects.removeWrapper(el),done()}})}}(jQuery),function($,undefined){$.effects.effect.drop=function(o,done){var distance,el=$(this),props=["position","top","bottom","left","right","opacity","height","width"],mode=$.effects.setMode(el,o.mode||"hide"),show="show"===mode,direction=o.direction||"left",ref="up"===direction||"down"===direction?"top":"left",motion="up"===direction||"left"===direction?"pos":"neg",animation={opacity:show?1:0};$.effects.save(el,props),el.show(),$.effects.createWrapper(el),distance=o.distance||el["top"===ref?"outerHeight":"outerWidth"](!0)/2,show&&el.css("opacity",0).css(ref,"pos"===motion?-distance:distance),animation[ref]=(show?"pos"===motion?"+=":"-=":"pos"===motion?"-=":"+=")+distance,el.animate(animation,{queue:!1,duration:o.duration,easing:o.easing,complete:function(){"hide"===mode&&el.hide(),$.effects.restore(el,props),$.effects.removeWrapper(el),done()}})}}(jQuery),function($,undefined){$.effects.effect.explode=function(o,done){function childComplete(){pieces.push(this),pieces.length===rows*cells&&animComplete()}function animComplete(){el.css({visibility:"visible"}),$(pieces).remove(),show||el.hide(),done()}var i,j,left,top,mx,my,rows=o.pieces?Math.round(Math.sqrt(o.pieces)):3,cells=rows,el=$(this),mode=$.effects.setMode(el,o.mode||"hide"),show="show"===mode,offset=el.show().css("visibility","hidden").offset(),width=Math.ceil(el.outerWidth()/cells),height=Math.ceil(el.outerHeight()/rows),pieces=[];for(i=0;i<rows;i++)for(top=offset.top+i*height,my=i-(rows-1)/2,j=0;j<cells;j++)left=offset.left+j*width,mx=j-(cells-1)/2,el.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*width,top:-i*height}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:width,height:height,left:left+(show?mx*width:0),top:top+(show?my*height:0),opacity:show?0:1}).animate({left:left+(show?0:mx*width),top:top+(show?0:my*height),opacity:show?1:0},o.duration||500,o.easing,childComplete)}}(jQuery),function($,undefined){$.effects.effect.fade=function(o,done){var el=$(this),mode=$.effects.setMode(el,o.mode||"toggle");el.animate({opacity:mode},{queue:!1,duration:o.duration,easing:o.easing,complete:done})}}(jQuery),function($,undefined){$.effects.effect.fold=function(o,done){var wrapper,distance,el=$(this),props=["position","top","bottom","left","right","height","width"],mode=$.effects.setMode(el,o.mode||"hide"),show="show"===mode,hide="hide"===mode,size=o.size||15,percent=/([0-9]+)%/.exec(size),horizFirst=!!o.horizFirst,widthFirst=show!==horizFirst,ref=widthFirst?["width","height"]:["height","width"],duration=o.duration/2,animation1={},animation2={};$.effects.save(el,props),el.show(),wrapper=$.effects.createWrapper(el).css({overflow:"hidden"}),distance=widthFirst?[wrapper.width(),wrapper.height()]:[wrapper.height(),wrapper.width()],percent&&(size=parseInt(percent[1],10)/100*distance[hide?0:1]),show&&wrapper.css(horizFirst?{height:0,width:size}:{height:size,width:0}),animation1[ref[0]]=show?distance[0]:size,animation2[ref[1]]=show?distance[1]:0,wrapper.animate(animation1,duration,o.easing).animate(animation2,duration,o.easing,function(){hide&&el.hide(),$.effects.restore(el,props),$.effects.removeWrapper(el),done()})}}(jQuery),function($,undefined){$.effects.effect.highlight=function(o,done){var elem=$(this),props=["backgroundImage","backgroundColor","opacity"],mode=$.effects.setMode(elem,o.mode||"show"),animation={backgroundColor:elem.css("backgroundColor")};"hide"===mode&&(animation.opacity=0),$.effects.save(elem,props),elem.show().css({backgroundImage:"none",backgroundColor:o.color||"#ffff99"}).animate(animation,{queue:!1,duration:o.duration,easing:o.easing,complete:function(){"hide"===mode&&elem.hide(),$.effects.restore(elem,props),done()}})}}(jQuery),function($,undefined){$.effects.effect.pulsate=function(o,done){var i,elem=$(this),mode=$.effects.setMode(elem,o.mode||"show"),show="show"===mode,hide="hide"===mode,showhide=show||"hide"===mode,anims=2*(o.times||5)+(showhide?1:0),duration=o.duration/anims,animateTo=0,queue=elem.queue(),queuelen=queue.length;for(!show&&elem.is(":visible")||(elem.css("opacity",0).show(),animateTo=1),i=1;i<anims;i++)elem.animate({opacity:animateTo},duration,o.easing),animateTo=1-animateTo;elem.animate({opacity:animateTo},duration,o.easing),elem.queue(function(){hide&&elem.hide(),done()}),queuelen>1&&queue.splice.apply(queue,[1,0].concat(queue.splice(queuelen,anims+1))),elem.dequeue()}}(jQuery),function($,undefined){$.effects.effect.puff=function(o,done){var elem=$(this),mode=$.effects.setMode(elem,o.mode||"hide"),hide="hide"===mode,percent=parseInt(o.percent,10)||150,factor=percent/100,original={height:elem.height(),width:elem.width(),outerHeight:elem.outerHeight(),outerWidth:elem.outerWidth()};$.extend(o,{effect:"scale",queue:!1,fade:!0,mode:mode,complete:done,percent:hide?percent:100,from:hide?original:{height:original.height*factor,width:original.width*factor,outerHeight:original.outerHeight*factor,outerWidth:original.outerWidth*factor}}),elem.effect(o)},$.effects.effect.scale=function(o,done){var el=$(this),options=$.extend(!0,{},o),mode=$.effects.setMode(el,o.mode||"effect"),percent=parseInt(o.percent,10)||(0===parseInt(o.percent,10)?0:"hide"===mode?0:100),direction=o.direction||"both",origin=o.origin,original={height:el.height(),width:el.width(),outerHeight:el.outerHeight(),outerWidth:el.outerWidth()},factor={y:"horizontal"!==direction?percent/100:1,x:"vertical"!==direction?percent/100:1};options.effect="size",options.queue=!1,options.complete=done,"effect"!==mode&&(options.origin=origin||["middle","center"],options.restore=!0),options.from=o.from||("show"===mode?{height:0,width:0,outerHeight:0,outerWidth:0}:original),options.to={height:original.height*factor.y,width:original.width*factor.x,outerHeight:original.outerHeight*factor.y,outerWidth:original.outerWidth*factor.x},options.fade&&("show"===mode&&(options.from.opacity=0,options.to.opacity=1),"hide"===mode&&(options.from.opacity=1,options.to.opacity=0)),el.effect(options)},$.effects.effect.size=function(o,done){var original,baseline,factor,el=$(this),props0=["position","top","bottom","left","right","width","height","overflow","opacity"],props1=["position","top","bottom","left","right","overflow","opacity"],props2=["width","height","overflow"],cProps=["fontSize"],vProps=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],hProps=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],mode=$.effects.setMode(el,o.mode||"effect"),restore=o.restore||"effect"!==mode,scale=o.scale||"both",origin=o.origin||["middle","center"],position=el.css("position"),props=restore?props0:props1,zero={height:0,width:0,outerHeight:0,outerWidth:0};"show"===mode&&el.show(),original={height:el.height(),width:el.width(),outerHeight:el.outerHeight(),outerWidth:el.outerWidth()},"toggle"===o.mode&&"show"===mode?(el.from=o.to||zero,el.to=o.from||original):(el.from=o.from||("show"===mode?zero:original),el.to=o.to||("hide"===mode?zero:original)),factor={from:{y:el.from.height/original.height,x:el.from.width/original.width},to:{y:el.to.height/original.height,x:el.to.width/original.width}},"box"!==scale&&"both"!==scale||(factor.from.y!==factor.to.y&&(props=props.concat(vProps),el.from=$.effects.setTransition(el,vProps,factor.from.y,el.from),el.to=$.effects.setTransition(el,vProps,factor.to.y,el.to)),factor.from.x!==factor.to.x&&(props=props.concat(hProps),el.from=$.effects.setTransition(el,hProps,factor.from.x,el.from),el.to=$.effects.setTransition(el,hProps,factor.to.x,el.to))),"content"!==scale&&"both"!==scale||factor.from.y!==factor.to.y&&(props=props.concat(cProps).concat(props2),el.from=$.effects.setTransition(el,cProps,factor.from.y,el.from),el.to=$.effects.setTransition(el,cProps,factor.to.y,el.to)),$.effects.save(el,props),el.show(),$.effects.createWrapper(el),el.css("overflow","hidden").css(el.from),origin&&(baseline=$.effects.getBaseline(origin,original),el.from.top=(original.outerHeight-el.outerHeight())*baseline.y,el.from.left=(original.outerWidth-el.outerWidth())*baseline.x,el.to.top=(original.outerHeight-el.to.outerHeight)*baseline.y,el.to.left=(original.outerWidth-el.to.outerWidth)*baseline.x),el.css(el.from),"content"!==scale&&"both"!==scale||(vProps=vProps.concat(["marginTop","marginBottom"]).concat(cProps),hProps=hProps.concat(["marginLeft","marginRight"]),props2=props0.concat(vProps).concat(hProps),el.find("*[width]").each(function(){var child=$(this),c_original={height:child.height(),width:child.width(),outerHeight:child.outerHeight(),outerWidth:child.outerWidth()};restore&&$.effects.save(child,props2),child.from={height:c_original.height*factor.from.y,width:c_original.width*factor.from.x,outerHeight:c_original.outerHeight*factor.from.y,outerWidth:c_original.outerWidth*factor.from.x},child.to={height:c_original.height*factor.to.y,width:c_original.width*factor.to.x,outerHeight:c_original.height*factor.to.y,outerWidth:c_original.width*factor.to.x},factor.from.y!==factor.to.y&&(child.from=$.effects.setTransition(child,vProps,factor.from.y,child.from),child.to=$.effects.setTransition(child,vProps,factor.to.y,child.to)),factor.from.x!==factor.to.x&&(child.from=$.effects.setTransition(child,hProps,factor.from.x,child.from),child.to=$.effects.setTransition(child,hProps,factor.to.x,child.to)),child.css(child.from),child.animate(child.to,o.duration,o.easing,function(){restore&&$.effects.restore(child,props2)})})),el.animate(el.to,{queue:!1,duration:o.duration,easing:o.easing,complete:function(){0===el.to.opacity&&el.css("opacity",el.from.opacity),"hide"===mode&&el.hide(),$.effects.restore(el,props),restore||("static"===position?el.css({position:"relative",top:el.to.top,left:el.to.left}):$.each(["top","left"],function(idx,pos){el.css(pos,function(_,str){var val=parseInt(str,10),toRef=idx?el.to.left:el.to.top;return"auto"===str?toRef+"px":val+toRef+"px"})})),$.effects.removeWrapper(el),done()}})}}(jQuery),function($,undefined){$.effects.effect.shake=function(o,done){var i,el=$(this),props=["position","top","bottom","left","right","height","width"],mode=$.effects.setMode(el,o.mode||"effect"),direction=o.direction||"left",distance=o.distance||20,times=o.times||3,anims=2*times+1,speed=Math.round(o.duration/anims),ref="up"===direction||"down"===direction?"top":"left",positiveMotion="up"===direction||"left"===direction,animation={},animation1={},animation2={},queue=el.queue(),queuelen=queue.length;for($.effects.save(el,props),el.show(),$.effects.createWrapper(el),animation[ref]=(positiveMotion?"-=":"+=")+distance,animation1[ref]=(positiveMotion?"+=":"-=")+2*distance,animation2[ref]=(positiveMotion?"-=":"+=")+2*distance,el.animate(animation,speed,o.easing),i=1;i<times;i++)el.animate(animation1,speed,o.easing).animate(animation2,speed,o.easing);el.animate(animation1,speed,o.easing).animate(animation,speed/2,o.easing).queue(function(){"hide"===mode&&el.hide(),$.effects.restore(el,props),$.effects.removeWrapper(el),done()}),queuelen>1&&queue.splice.apply(queue,[1,0].concat(queue.splice(queuelen,anims+1))),el.dequeue()}}(jQuery),function($,undefined){$.effects.effect.slide=function(o,done){var distance,el=$(this),props=["position","top","bottom","left","right","width","height"],mode=$.effects.setMode(el,o.mode||"show"),show="show"===mode,direction=o.direction||"left",ref="up"===direction||"down"===direction?"top":"left",positiveMotion="up"===direction||"left"===direction,animation={};$.effects.save(el,props),el.show(),distance=o.distance||el["top"===ref?"outerHeight":"outerWidth"](!0),$.effects.createWrapper(el).css({overflow:"hidden"}),show&&el.css(ref,positiveMotion?isNaN(distance)?"-"+distance:-distance:distance),animation[ref]=(show?positiveMotion?"+=":"-=":positiveMotion?"-=":"+=")+distance,el.animate(animation,{queue:!1,duration:o.duration,easing:o.easing,complete:function(){"hide"===mode&&el.hide(),$.effects.restore(el,props),$.effects.removeWrapper(el),done()}})}}(jQuery),function($,undefined){$.effects.effect.transfer=function(o,done){var elem=$(this),target=$(o.to),targetFixed="fixed"===target.css("position"),body=$("body"),fixTop=targetFixed?body.scrollTop():0,fixLeft=targetFixed?body.scrollLeft():0,endPosition=target.offset(),animation={top:endPosition.top-fixTop,left:endPosition.left-fixLeft,height:target.innerHeight(),width:target.innerWidth()},startPosition=elem.offset(),transfer=$("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(o.className).css({top:startPosition.top-fixTop,left:startPosition.left-fixLeft,height:elem.innerHeight(),width:elem.innerWidth(),position:targetFixed?"fixed":"absolute"}).animate(animation,o.duration,o.easing,function(){transfer.remove(),done()})}}(jQuery),function($,undefined){$.widget("ui.menu",{version:"1.10.3",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,$.proxy(function(event){this.options.disabled&&event.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(event){event.preventDefault()},"click .ui-state-disabled > a":function(event){event.preventDefault()},"click .ui-menu-item:has(a)":function(event){var target=$(event.target).closest(".ui-menu-item");!this.mouseHandled&&target.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(event),target.has(".ui-menu").length?this.expand(event):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(event){var target=$(event.currentTarget);target.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(event,target)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(event,keepActiveItem){var item=this.active||this.element.children(".ui-menu-item").eq(0);keepActiveItem||this.focus(event,item)},blur:function(event){this._delay(function(){$.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(event)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(event){$(event.target).closest(".ui-menu").length||this.collapseAll(event),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var elem=$(this);elem.data("ui-menu-submenu-carat")&&elem.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(event){function escape(value){return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var match,prev,character,skip,regex,preventDefault=!0;switch(event.keyCode){case $.ui.keyCode.PAGE_UP:this.previousPage(event);break;case $.ui.keyCode.PAGE_DOWN:this.nextPage(event);break;case $.ui.keyCode.HOME:this._move("first","first",event);break;case $.ui.keyCode.END:this._move("last","last",event);break;case $.ui.keyCode.UP:this.previous(event);break;case $.ui.keyCode.DOWN:this.next(event);break;case $.ui.keyCode.LEFT:this.collapse(event);break;case $.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(event);break;case $.ui.keyCode.ENTER:case $.ui.keyCode.SPACE:this._activate(event);break;case $.ui.keyCode.ESCAPE:this.collapse(event);break;default:preventDefault=!1,prev=this.previousFilter||"",character=String.fromCharCode(event.keyCode),skip=!1,clearTimeout(this.filterTimer),character===prev?skip=!0:character=prev+character,regex=new RegExp("^"+escape(character),"i"),match=this.activeMenu.children(".ui-menu-item").filter(function(){return regex.test($(this).children("a").text())}),match=skip&&-1!==match.index(this.active.next())?this.active.nextAll(".ui-menu-item"):match,match.length||(character=String.fromCharCode(event.keyCode),regex=new RegExp("^"+escape(character),"i"),match=this.activeMenu.children(".ui-menu-item").filter(function(){return regex.test($(this).children("a").text())})),match.length?(this.focus(event,match),match.length>1?(this.previousFilter=character,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}preventDefault&&event.preventDefault()},_activate:function(event){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(event):this.select(event))},refresh:function(){var menus,icon=this.options.icons.submenu,submenus=this.element.find(this.options.menus);submenus.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var menu=$(this),item=menu.prev("a"),submenuCarat=$("<span>").addClass("ui-menu-icon ui-icon "+icon).data("ui-menu-submenu-carat",!0);item.attr("aria-haspopup","true").prepend(submenuCarat),menu.attr("aria-labelledby",item.attr("id"))}),menus=submenus.add(this.element),menus.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),menus.children(":not(.ui-menu-item)").each(function(){var item=$(this);/[^\-\u2014\u2013\s]/.test(item.text())||item.addClass("ui-widget-content ui-menu-divider")}),menus.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!$.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(key,value){"icons"===key&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(value.submenu),this._super(key,value)},focus:function(event,item){var nested,focused;this.blur(event,event&&"focus"===event.type),this._scrollIntoView(item),this.active=item.first(),focused=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",focused.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),event&&"keydown"===event.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),nested=item.children(".ui-menu"),nested.length&&/^mouse/.test(event.type)&&this._startOpening(nested),this.activeMenu=item.parent(),this._trigger("focus",event,{item:item})},_scrollIntoView:function(item){var borderTop,paddingTop,offset,scroll,elementHeight,itemHeight;this._hasScroll()&&(borderTop=parseFloat($.css(this.activeMenu[0],"borderTopWidth"))||0,paddingTop=parseFloat($.css(this.activeMenu[0],"paddingTop"))||0,offset=item.offset().top-this.activeMenu.offset().top-borderTop-paddingTop,scroll=this.activeMenu.scrollTop(),elementHeight=this.activeMenu.height(),itemHeight=item.height(),offset<0?this.activeMenu.scrollTop(scroll+offset):offset+itemHeight>elementHeight&&this.activeMenu.scrollTop(scroll+offset-elementHeight+itemHeight))},blur:function(event,fromFocus){fromFocus||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",event,{item:this.active}))},_startOpening:function(submenu){clearTimeout(this.timer),"true"===submenu.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(submenu)},this.delay))},_open:function(submenu){var position=$.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(submenu.parents(".ui-menu")).hide().attr("aria-hidden","true"),submenu.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(position)},collapseAll:function(event,all){clearTimeout(this.timer),this.timer=this._delay(function(){var currentMenu=all?this.element:$(event&&event.target).closest(this.element.find(".ui-menu"));currentMenu.length||(currentMenu=this.element),this._close(currentMenu),this.blur(event),this.activeMenu=currentMenu},this.delay)},_close:function(startMenu){startMenu||(startMenu=this.active?this.active.parent():this.element),startMenu.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(event){var newItem=this.active&&this.active.parent().closest(".ui-menu-item",this.element);newItem&&newItem.length&&(this._close(),this.focus(event,newItem))},expand:function(event){var newItem=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();newItem&&newItem.length&&(this._open(newItem.parent()),this._delay(function(){this.focus(event,newItem)}))},next:function(event){this._move("next","first",event)},previous:function(event){this._move("prev","last",event)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(direction,filter,event){var next;this.active&&(next="first"===direction||"last"===direction?this.active["first"===direction?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[direction+"All"](".ui-menu-item").eq(0)),next&&next.length&&this.active||(next=this.activeMenu.children(".ui-menu-item")[filter]()),this.focus(event,next)},nextPage:function(event){var item,base,height;if(!this.active)return void this.next(event);this.isLastItem()||(this._hasScroll()?(base=this.active.offset().top,height=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return item=$(this),item.offset().top-base-height<0}),this.focus(event,item)):this.focus(event,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]()))},previousPage:function(event){var item,base,height;if(!this.active)return void this.next(event);this.isFirstItem()||(this._hasScroll()?(base=this.active.offset().top,height=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return item=$(this),item.offset().top-base+height>0}),
+this.focus(event,item)):this.focus(event,this.activeMenu.children(".ui-menu-item").first()))},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(event){this.active=this.active||$(event.target).closest(".ui-menu-item");var ui={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(event,!0),this._trigger("select",event,ui)}})}(jQuery),function($,undefined){function getOffsets(offsets,width,height){return[parseFloat(offsets[0])*(rpercent.test(offsets[0])?width/100:1),parseFloat(offsets[1])*(rpercent.test(offsets[1])?height/100:1)]}function parseCss(element,property){return parseInt($.css(element,property),10)||0}function getDimensions(elem){var raw=elem[0];return 9===raw.nodeType?{width:elem.width(),height:elem.height(),offset:{top:0,left:0}}:$.isWindow(raw)?{width:elem.width(),height:elem.height(),offset:{top:elem.scrollTop(),left:elem.scrollLeft()}}:raw.preventDefault?{width:0,height:0,offset:{top:raw.pageY,left:raw.pageX}}:{width:elem.outerWidth(),height:elem.outerHeight(),offset:elem.offset()}}$.ui=$.ui||{};var cachedScrollbarWidth,max=Math.max,abs=Math.abs,round=Math.round,rhorizontal=/left|center|right/,rvertical=/top|center|bottom/,roffset=/[\+\-]\d+(\.[\d]+)?%?/,rposition=/^\w+/,rpercent=/%$/,_position=$.fn.position;$.position={scrollbarWidth:function(){if(cachedScrollbarWidth!==undefined)return cachedScrollbarWidth;var w1,w2,div=$("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),innerDiv=div.children()[0];return $("body").append(div),w1=innerDiv.offsetWidth,div.css("overflow","scroll"),w2=innerDiv.offsetWidth,w1===w2&&(w2=div[0].clientWidth),div.remove(),cachedScrollbarWidth=w1-w2},getScrollInfo:function(within){var overflowX=within.isWindow?"":within.element.css("overflow-x"),overflowY=within.isWindow?"":within.element.css("overflow-y"),hasOverflowX="scroll"===overflowX||"auto"===overflowX&&within.width<within.element[0].scrollWidth;return{width:"scroll"===overflowY||"auto"===overflowY&&within.height<within.element[0].scrollHeight?$.position.scrollbarWidth():0,height:hasOverflowX?$.position.scrollbarWidth():0}},getWithinInfo:function(element){var withinElement=$(element||window),isWindow=$.isWindow(withinElement[0]);return{element:withinElement,isWindow:isWindow,offset:withinElement.offset()||{left:0,top:0},scrollLeft:withinElement.scrollLeft(),scrollTop:withinElement.scrollTop(),width:isWindow?withinElement.width():withinElement.outerWidth(),height:isWindow?withinElement.height():withinElement.outerHeight()}}},$.fn.position=function(options){if(!options||!options.of)return _position.apply(this,arguments);options=$.extend({},options);var atOffset,targetWidth,targetHeight,targetOffset,basePosition,dimensions,target=$(options.of),within=$.position.getWithinInfo(options.within),scrollInfo=$.position.getScrollInfo(within),collision=(options.collision||"flip").split(" "),offsets={};return dimensions=getDimensions(target),target[0].preventDefault&&(options.at="left top"),targetWidth=dimensions.width,targetHeight=dimensions.height,targetOffset=dimensions.offset,basePosition=$.extend({},targetOffset),$.each(["my","at"],function(){var horizontalOffset,verticalOffset,pos=(options[this]||"").split(" ");1===pos.length&&(pos=rhorizontal.test(pos[0])?pos.concat(["center"]):rvertical.test(pos[0])?["center"].concat(pos):["center","center"]),pos[0]=rhorizontal.test(pos[0])?pos[0]:"center",pos[1]=rvertical.test(pos[1])?pos[1]:"center",horizontalOffset=roffset.exec(pos[0]),verticalOffset=roffset.exec(pos[1]),offsets[this]=[horizontalOffset?horizontalOffset[0]:0,verticalOffset?verticalOffset[0]:0],options[this]=[rposition.exec(pos[0])[0],rposition.exec(pos[1])[0]]}),1===collision.length&&(collision[1]=collision[0]),"right"===options.at[0]?basePosition.left+=targetWidth:"center"===options.at[0]&&(basePosition.left+=targetWidth/2),"bottom"===options.at[1]?basePosition.top+=targetHeight:"center"===options.at[1]&&(basePosition.top+=targetHeight/2),atOffset=getOffsets(offsets.at,targetWidth,targetHeight),basePosition.left+=atOffset[0],basePosition.top+=atOffset[1],this.each(function(){var collisionPosition,using,elem=$(this),elemWidth=elem.outerWidth(),elemHeight=elem.outerHeight(),marginLeft=parseCss(this,"marginLeft"),marginTop=parseCss(this,"marginTop"),collisionWidth=elemWidth+marginLeft+parseCss(this,"marginRight")+scrollInfo.width,collisionHeight=elemHeight+marginTop+parseCss(this,"marginBottom")+scrollInfo.height,position=$.extend({},basePosition),myOffset=getOffsets(offsets.my,elem.outerWidth(),elem.outerHeight());"right"===options.my[0]?position.left-=elemWidth:"center"===options.my[0]&&(position.left-=elemWidth/2),"bottom"===options.my[1]?position.top-=elemHeight:"center"===options.my[1]&&(position.top-=elemHeight/2),position.left+=myOffset[0],position.top+=myOffset[1],$.support.offsetFractions||(position.left=round(position.left),position.top=round(position.top)),collisionPosition={marginLeft:marginLeft,marginTop:marginTop},$.each(["left","top"],function(i,dir){$.ui.position[collision[i]]&&$.ui.position[collision[i]][dir](position,{targetWidth:targetWidth,targetHeight:targetHeight,elemWidth:elemWidth,elemHeight:elemHeight,collisionPosition:collisionPosition,collisionWidth:collisionWidth,collisionHeight:collisionHeight,offset:[atOffset[0]+myOffset[0],atOffset[1]+myOffset[1]],my:options.my,at:options.at,within:within,elem:elem})}),options.using&&(using=function(props){var left=targetOffset.left-position.left,right=left+targetWidth-elemWidth,top=targetOffset.top-position.top,bottom=top+targetHeight-elemHeight,feedback={target:{element:target,left:targetOffset.left,top:targetOffset.top,width:targetWidth,height:targetHeight},element:{element:elem,left:position.left,top:position.top,width:elemWidth,height:elemHeight},horizontal:right<0?"left":left>0?"right":"center",vertical:bottom<0?"top":top>0?"bottom":"middle"};targetWidth<elemWidth&&abs(left+right)<targetWidth&&(feedback.horizontal="center"),targetHeight<elemHeight&&abs(top+bottom)<targetHeight&&(feedback.vertical="middle"),max(abs(left),abs(right))>max(abs(top),abs(bottom))?feedback.important="horizontal":feedback.important="vertical",options.using.call(this,props,feedback)}),elem.offset($.extend(position,{using:using}))})},$.ui.position={fit:{left:function(position,data){var newOverRight,within=data.within,withinOffset=within.isWindow?within.scrollLeft:within.offset.left,outerWidth=within.width,collisionPosLeft=position.left-data.collisionPosition.marginLeft,overLeft=withinOffset-collisionPosLeft,overRight=collisionPosLeft+data.collisionWidth-outerWidth-withinOffset;data.collisionWidth>outerWidth?overLeft>0&&overRight<=0?(newOverRight=position.left+overLeft+data.collisionWidth-outerWidth-withinOffset,position.left+=overLeft-newOverRight):position.left=overRight>0&&overLeft<=0?withinOffset:overLeft>overRight?withinOffset+outerWidth-data.collisionWidth:withinOffset:overLeft>0?position.left+=overLeft:overRight>0?position.left-=overRight:position.left=max(position.left-collisionPosLeft,position.left)},top:function(position,data){var newOverBottom,within=data.within,withinOffset=within.isWindow?within.scrollTop:within.offset.top,outerHeight=data.within.height,collisionPosTop=position.top-data.collisionPosition.marginTop,overTop=withinOffset-collisionPosTop,overBottom=collisionPosTop+data.collisionHeight-outerHeight-withinOffset;data.collisionHeight>outerHeight?overTop>0&&overBottom<=0?(newOverBottom=position.top+overTop+data.collisionHeight-outerHeight-withinOffset,position.top+=overTop-newOverBottom):position.top=overBottom>0&&overTop<=0?withinOffset:overTop>overBottom?withinOffset+outerHeight-data.collisionHeight:withinOffset:overTop>0?position.top+=overTop:overBottom>0?position.top-=overBottom:position.top=max(position.top-collisionPosTop,position.top)}},flip:{left:function(position,data){var newOverRight,newOverLeft,within=data.within,withinOffset=within.offset.left+within.scrollLeft,outerWidth=within.width,offsetLeft=within.isWindow?within.scrollLeft:within.offset.left,collisionPosLeft=position.left-data.collisionPosition.marginLeft,overLeft=collisionPosLeft-offsetLeft,overRight=collisionPosLeft+data.collisionWidth-outerWidth-offsetLeft,myOffset="left"===data.my[0]?-data.elemWidth:"right"===data.my[0]?data.elemWidth:0,atOffset="left"===data.at[0]?data.targetWidth:"right"===data.at[0]?-data.targetWidth:0,offset=-2*data.offset[0];overLeft<0?((newOverRight=position.left+myOffset+atOffset+offset+data.collisionWidth-outerWidth-withinOffset)<0||newOverRight<abs(overLeft))&&(position.left+=myOffset+atOffset+offset):overRight>0&&((newOverLeft=position.left-data.collisionPosition.marginLeft+myOffset+atOffset+offset-offsetLeft)>0||abs(newOverLeft)<overRight)&&(position.left+=myOffset+atOffset+offset)},top:function(position,data){var newOverTop,newOverBottom,within=data.within,withinOffset=within.offset.top+within.scrollTop,outerHeight=within.height,offsetTop=within.isWindow?within.scrollTop:within.offset.top,collisionPosTop=position.top-data.collisionPosition.marginTop,overTop=collisionPosTop-offsetTop,overBottom=collisionPosTop+data.collisionHeight-outerHeight-offsetTop,top="top"===data.my[1],myOffset=top?-data.elemHeight:"bottom"===data.my[1]?data.elemHeight:0,atOffset="top"===data.at[1]?data.targetHeight:"bottom"===data.at[1]?-data.targetHeight:0,offset=-2*data.offset[1];overTop<0?(newOverBottom=position.top+myOffset+atOffset+offset+data.collisionHeight-outerHeight-withinOffset,position.top+myOffset+atOffset+offset>overTop&&(newOverBottom<0||newOverBottom<abs(overTop))&&(position.top+=myOffset+atOffset+offset)):overBottom>0&&(newOverTop=position.top-data.collisionPosition.marginTop+myOffset+atOffset+offset-offsetTop,position.top+myOffset+atOffset+offset>overBottom&&(newOverTop>0||abs(newOverTop)<overBottom)&&(position.top+=myOffset+atOffset+offset))}},flipfit:{left:function(){$.ui.position.flip.left.apply(this,arguments),$.ui.position.fit.left.apply(this,arguments)},top:function(){$.ui.position.flip.top.apply(this,arguments),$.ui.position.fit.top.apply(this,arguments)}}},function(){var testElement,testElementParent,testElementStyle,offsetLeft,i,body=document.getElementsByTagName("body")[0],div=document.createElement("div");testElement=document.createElement(body?"div":"body"),testElementStyle={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},body&&$.extend(testElementStyle,{position:"absolute",left:"-1000px",top:"-1000px"});for(i in testElementStyle)testElement.style[i]=testElementStyle[i];testElement.appendChild(div),testElementParent=body||document.documentElement,testElementParent.insertBefore(testElement,testElementParent.firstChild),div.style.cssText="position: absolute; left: 10.7432222px;",offsetLeft=$(div).offset().left,$.support.offsetFractions=offsetLeft>10&&offsetLeft<11,testElement.innerHTML="",testElementParent.removeChild(testElement)}()}(jQuery),function($,undefined){$.widget("ui.progressbar",{version:"1.10.3",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=$("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(newValue){if(newValue===undefined)return this.options.value;this.options.value=this._constrainedValue(newValue),this._refreshValue()},_constrainedValue:function(newValue){return newValue===undefined&&(newValue=this.options.value),this.indeterminate=!1===newValue,"number"!=typeof newValue&&(newValue=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,newValue))},_setOptions:function(options){var value=options.value;delete options.value,this._super(options),this.options.value=this._constrainedValue(value),this._refreshValue()},_setOption:function(key,value){"max"===key&&(value=Math.max(this.min,value)),this._super(key,value)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var value=this.options.value,percentage=this._percentage();this.valueDiv.toggle(this.indeterminate||value>this.min).toggleClass("ui-corner-right",value===this.options.max).width(percentage.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=$("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":value}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==value&&(this.oldValue=value,this._trigger("change")),value===this.options.max&&this._trigger("complete")}})}(jQuery),function($,undefined){var numPages=5;$.widget("ui.slider",$.ui.mouse,{version:"1.10.3",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var i,handleCount,options=this.options,existingHandles=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),handles=[];for(handleCount=options.values&&options.values.length||1,existingHandles.length>handleCount&&(existingHandles.slice(handleCount).remove(),existingHandles=existingHandles.slice(0,handleCount)),i=existingHandles.length;i<handleCount;i++)handles.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");this.handles=existingHandles.add($(handles.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(i){$(this).data("ui-slider-handle-index",i)})},_createRange:function(){var options=this.options,classes="";options.range?(!0===options.range&&(options.values?options.values.length&&2!==options.values.length?options.values=[options.values[0],options.values[0]]:$.isArray(options.values)&&(options.values=options.values.slice(0)):options.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=$("<div></div>").appendTo(this.element),classes="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(classes+("min"===options.range||"max"===options.range?" ui-slider-range-"+options.range:""))):this.range=$([])},_setupEvents:function(){var elements=this.handles.add(this.range).filter("a");this._off(elements),this._on(elements,this._handleEvents),this._hoverable(elements),this._focusable(elements)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(event){var position,normValue,distance,closestHandle,index,offset,mouseOverHandle,that=this,o=this.options;return!o.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),position={x:event.pageX,y:event.pageY},normValue=this._normValueFromMouse(position),distance=this._valueMax()-this._valueMin()+1,this.handles.each(function(i){var thisDistance=Math.abs(normValue-that.values(i));(distance>thisDistance||distance===thisDistance&&(i===that._lastChangedValue||that.values(i)===o.min))&&(distance=thisDistance,closestHandle=$(this),index=i)}),!1!==this._start(event,index)&&(this._mouseSliding=!0,this._handleIndex=index,closestHandle.addClass("ui-state-active").focus(),offset=closestHandle.offset(),mouseOverHandle=!$(event.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=mouseOverHandle?{left:0,top:0}:{left:event.pageX-offset.left-closestHandle.width()/2,top:event.pageY-offset.top-closestHandle.height()/2-(parseInt(closestHandle.css("borderTopWidth"),10)||0)-(parseInt(closestHandle.css("borderBottomWidth"),10)||0)+(parseInt(closestHandle.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(event,index,normValue),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(event){var position={x:event.pageX,y:event.pageY},normValue=this._normValueFromMouse(position);return this._slide(event,this._handleIndex,normValue),!1},_mouseStop:function(event){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(event,this._handleIndex),this._change(event,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(position){var pixelTotal,pixelMouse,percentMouse,valueTotal,valueMouse;return"horizontal"===this.orientation?(pixelTotal=this.elementSize.width,pixelMouse=position.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(pixelTotal=this.elementSize.height,pixelMouse=position.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),percentMouse=pixelMouse/pixelTotal,percentMouse>1&&(percentMouse=1),percentMouse<0&&(percentMouse=0),"vertical"===this.orientation&&(percentMouse=1-percentMouse),valueTotal=this._valueMax()-this._valueMin(),valueMouse=this._valueMin()+percentMouse*valueTotal,this._trimAlignValue(valueMouse)},_start:function(event,index){var uiHash={handle:this.handles[index],value:this.value()};return this.options.values&&this.options.values.length&&(uiHash.value=this.values(index),uiHash.values=this.values()),this._trigger("start",event,uiHash)},_slide:function(event,index,newVal){var otherVal,newValues,allowed;this.options.values&&this.options.values.length?(otherVal=this.values(index?0:1),2===this.options.values.length&&!0===this.options.range&&(0===index&&newVal>otherVal||1===index&&newVal<otherVal)&&(newVal=otherVal),newVal!==this.values(index)&&(newValues=this.values(),newValues[index]=newVal,allowed=this._trigger("slide",event,{handle:this.handles[index],value:newVal,values:newValues}),otherVal=this.values(index?0:1),!1!==allowed&&this.values(index,newVal,!0))):newVal!==this.value()&&!1!==(allowed=this._trigger("slide",event,{handle:this.handles[index],value:newVal}))&&this.value(newVal)},_stop:function(event,index){var uiHash={handle:this.handles[index],value:this.value()};this.options.values&&this.options.values.length&&(uiHash.value=this.values(index),uiHash.values=this.values()),this._trigger("stop",event,uiHash)},_change:function(event,index){if(!this._keySliding&&!this._mouseSliding){var uiHash={handle:this.handles[index],value:this.value()};this.options.values&&this.options.values.length&&(uiHash.value=this.values(index),uiHash.values=this.values()),this._lastChangedValue=index,this._trigger("change",event,uiHash)}},value:function(newValue){return arguments.length?(this.options.value=this._trimAlignValue(newValue),this._refreshValue(),void this._change(null,0)):this._value()},values:function(index,newValue){var vals,newValues,i;if(arguments.length>1)return this.options.values[index]=this._trimAlignValue(newValue),this._refreshValue(),void this._change(null,index);if(!arguments.length)return this._values();if(!$.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(index):this.value();for(vals=this.options.values,newValues=arguments[0],i=0;i<vals.length;i+=1)vals[i]=this._trimAlignValue(newValues[i]),this._change(null,i);this._refreshValue()},_setOption:function(key,value){var i,valsLength=0;switch("range"===key&&!0===this.options.range&&("min"===value?(this.options.value=this._values(0),this.options.values=null):"max"===value&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),$.isArray(this.options.values)&&(valsLength=this.options.values.length),$.Widget.prototype._setOption.apply(this,arguments),key){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=0;i<valsLength;i+=1)this._change(null,i);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var val=this.options.value;return val=this._trimAlignValue(val)},_values:function(index){var val,vals,i;if(arguments.length)return val=this.options.values[index],val=this._trimAlignValue(val);if(this.options.values&&this.options.values.length){for(vals=this.options.values.slice(),i=0;i<vals.length;i+=1)vals[i]=this._trimAlignValue(vals[i]);return vals}return[]},_trimAlignValue:function(val){if(val<=this._valueMin())return this._valueMin();if(val>=this._valueMax())return this._valueMax();var step=this.options.step>0?this.options.step:1,valModStep=(val-this._valueMin())%step,alignValue=val-valModStep;return 2*Math.abs(valModStep)>=step&&(alignValue+=valModStep>0?step:-step),parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var lastValPercent,valPercent,value,valueMin,valueMax,oRange=this.options.range,o=this.options,that=this,animate=!this._animateOff&&o.animate,_set={};this.options.values&&this.options.values.length?this.handles.each(function(i){valPercent=(that.values(i)-that._valueMin())/(that._valueMax()-that._valueMin())*100,_set["horizontal"===that.orientation?"left":"bottom"]=valPercent+"%",$(this).stop(1,1)[animate?"animate":"css"](_set,o.animate),!0===that.options.range&&("horizontal"===that.orientation?(0===i&&that.range.stop(1,1)[animate?"animate":"css"]({left:valPercent+"%"},o.animate),1===i&&that.range[animate?"animate":"css"]({width:valPercent-lastValPercent+"%"},{queue:!1,duration:o.animate})):(0===i&&that.range.stop(1,1)[animate?"animate":"css"]({bottom:valPercent+"%"},o.animate),1===i&&that.range[animate?"animate":"css"]({height:valPercent-lastValPercent+"%"},{queue:!1,duration:o.animate}))),lastValPercent=valPercent}):(value=this.value(),valueMin=this._valueMin(),valueMax=this._valueMax(),valPercent=valueMax!==valueMin?(value-valueMin)/(valueMax-valueMin)*100:0,_set["horizontal"===this.orientation?"left":"bottom"]=valPercent+"%",this.handle.stop(1,1)[animate?"animate":"css"](_set,o.animate),"min"===oRange&&"horizontal"===this.orientation&&this.range.stop(1,1)[animate?"animate":"css"]({width:valPercent+"%"},o.animate),"max"===oRange&&"horizontal"===this.orientation&&this.range[animate?"animate":"css"]({width:100-valPercent+"%"},{queue:!1,duration:o.animate}),"min"===oRange&&"vertical"===this.orientation&&this.range.stop(1,1)[animate?"animate":"css"]({height:valPercent+"%"},o.animate),"max"===oRange&&"vertical"===this.orientation&&this.range[animate?"animate":"css"]({height:100-valPercent+"%"},{queue:!1,duration:o.animate}))},_handleEvents:{keydown:function(event){var curVal,newVal,step,index=$(event.target).data("ui-slider-handle-index");switch(event.keyCode){case $.ui.keyCode.HOME:case $.ui.keyCode.END:case $.ui.keyCode.PAGE_UP:case $.ui.keyCode.PAGE_DOWN:case $.ui.keyCode.UP:case $.ui.keyCode.RIGHT:case $.ui.keyCode.DOWN:case $.ui.keyCode.LEFT:if(event.preventDefault(),!this._keySliding&&(this._keySliding=!0,$(event.target).addClass("ui-state-active"),!1===this._start(event,index)))return}switch(step=this.options.step,curVal=newVal=this.options.values&&this.options.values.length?this.values(index):this.value(),event.keyCode){case $.ui.keyCode.HOME:newVal=this._valueMin();break;case $.ui.keyCode.END:newVal=this._valueMax();break;case $.ui.keyCode.PAGE_UP:newVal=this._trimAlignValue(curVal+(this._valueMax()-this._valueMin())/numPages);break;case $.ui.keyCode.PAGE_DOWN:newVal=this._trimAlignValue(curVal-(this._valueMax()-this._valueMin())/numPages);break;case $.ui.keyCode.UP:case $.ui.keyCode.RIGHT:if(curVal===this._valueMax())return;newVal=this._trimAlignValue(curVal+step);break;case $.ui.keyCode.DOWN:case $.ui.keyCode.LEFT:if(curVal===this._valueMin())return;newVal=this._trimAlignValue(curVal-step)}this._slide(event,index,newVal)},click:function(event){event.preventDefault()},keyup:function(event){var index=$(event.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(event,index),this._change(event,index),$(event.target).removeClass("ui-state-active"))}}})}(jQuery),function($){function modifier(fn){return function(){var previous=this.element.val();fn.apply(this,arguments),this._refresh(),previous!==this.element.val()&&this._trigger("change")}}$.widget("ui.spinner",{version:"1.10.3",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var options={},element=this.element;return $.each(["min","max","step"],function(i,option){var value=element.attr(option);void 0!==value&&value.length&&(options[option]=value)}),options},_events:{keydown:function(event){this._start(event)&&this._keydown(event)&&event.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(event){if(this.cancelBlur)return void delete this.cancelBlur;this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",event)},mousewheel:function(event,delta){if(delta){if(!this.spinning&&!this._start(event))return!1;this._spin((delta>0?1:-1)*this.options.step,event),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(event)},100),event.preventDefault()}},"mousedown .ui-spinner-button":function(event){function checkFocus(){this.element[0]===this.document[0].activeElement||(this.element.focus(),this.previous=previous,this._delay(function(){this.previous=previous}))}var previous;previous=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),event.preventDefault(),checkFocus.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,checkFocus.call(this)}),!1!==this._start(event)&&this._repeat(null,$(event.currentTarget).hasClass("ui-spinner-up")?1:-1,event)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(event){if($(event.currentTarget).hasClass("ui-state-active"))return!1!==this._start(event)&&void this._repeat(null,$(event.currentTarget).hasClass("ui-spinner-up")?1:-1,event)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var uiSpinner=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=uiSpinner.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*uiSpinner.height())&&uiSpinner.height()>0&&uiSpinner.height(uiSpinner.height()),this.options.disabled&&this.disable()},_keydown:function(event){var options=this.options,keyCode=$.ui.keyCode;switch(event.keyCode){case keyCode.UP:return this._repeat(null,1,event),!0;case keyCode.DOWN:return this._repeat(null,-1,event),!0;case keyCode.PAGE_UP:return this._repeat(null,options.page,event),!0;case keyCode.PAGE_DOWN:return this._repeat(null,-options.page,event),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span></a><a class='ui-spinner-button ui-spinner-down ui-corner-br'><span class='ui-icon "+this.options.icons.down+"'>&#9660;</span></a>"},_start:function(event){return!(!this.spinning&&!1===this._trigger("start",event))&&(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(i,steps,event){i=i||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,steps,event)},i),this._spin(steps*this.options.step,event)},_spin:function(step,event){var value=this.value()||0;this.counter||(this.counter=1),value=this._adjustValue(value+step*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",event,{value:value})||(this._value(value),this.counter++)},_increment:function(i){var incremental=this.options.incremental;return incremental?$.isFunction(incremental)?incremental(i):Math.floor(i*i*i/5e4-i*i/500+17*i/200+1):1},_precision:function(){var precision=this._precisionOf(this.options.step);return null!==this.options.min&&(precision=Math.max(precision,this._precisionOf(this.options.min))),precision},_precisionOf:function(num){var str=num.toString(),decimal=str.indexOf(".");return-1===decimal?0:str.length-decimal-1},_adjustValue:function(value){var base,aboveMin,options=this.options;return base=null!==options.min?options.min:0,aboveMin=value-base,aboveMin=Math.round(aboveMin/options.step)*options.step,value=base+aboveMin,value=parseFloat(value.toFixed(this._precision())),null!==options.max&&value>options.max?options.max:null!==options.min&&value<options.min?options.min:value},_stop:function(event){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",event))},_setOption:function(key,value){if("culture"===key||"numberFormat"===key){var prevValue=this._parse(this.element.val());return this.options[key]=value,void this.element.val(this._format(prevValue))}"max"!==key&&"min"!==key&&"step"!==key||"string"==typeof value&&(value=this._parse(value)),"icons"===key&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(value.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(value.down)),this._super(key,value),"disabled"===key&&(value?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:modifier(function(options){this._super(options),this._value(this.element.val())}),_parse:function(val){return"string"==typeof val&&""!==val&&(val=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(val,10,this.options.culture):+val),""===val||isNaN(val)?null:val},_format:function(value){return""===value?"":window.Globalize&&this.options.numberFormat?Globalize.format(value,this.options.numberFormat,this.options.culture):value},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},
+_value:function(value,allowAny){var parsed;""!==value&&null!==(parsed=this._parse(value))&&(allowAny||(parsed=this._adjustValue(parsed)),value=this._format(parsed)),this.element.val(value),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:modifier(function(steps){this._stepUp(steps)}),_stepUp:function(steps){this._start()&&(this._spin((steps||1)*this.options.step),this._stop())},stepDown:modifier(function(steps){this._stepDown(steps)}),_stepDown:function(steps){this._start()&&(this._spin((steps||1)*-this.options.step),this._stop())},pageUp:modifier(function(pages){this._stepUp((pages||1)*this.options.page)}),pageDown:modifier(function(pages){this._stepDown((pages||1)*this.options.page)}),value:function(newVal){if(!arguments.length)return this._parse(this.element.val());modifier(this._value).call(this,newVal)},widget:function(){return this.uiSpinner}})}(jQuery),function($,undefined){function getNextTabId(){return++tabId}function isLocal(anchor){return anchor.hash.length>1&&decodeURIComponent(anchor.href.replace(rhash,""))===decodeURIComponent(location.href.replace(rhash,""))}var tabId=0,rhash=/#.*$/;$.widget("ui.tabs",{version:"1.10.3",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var that=this,options=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",options.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(event){$(this).is(".ui-state-disabled")&&event.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){$(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),options.active=this._initialActive(),$.isArray(options.disabled)&&(options.disabled=$.unique(options.disabled.concat($.map(this.tabs.filter(".ui-state-disabled"),function(li){return that.tabs.index(li)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(options.active):this.active=$(),this._refresh(),this.active.length&&this.load(options.active)},_initialActive:function(){var active=this.options.active,collapsible=this.options.collapsible,locationHash=location.hash.substring(1);return null===active&&(locationHash&&this.tabs.each(function(i,tab){if($(tab).attr("aria-controls")===locationHash)return active=i,!1}),null===active&&(active=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),null!==active&&-1!==active||(active=!!this.tabs.length&&0)),!1!==active&&-1===(active=this.tabs.index(this.tabs.eq(active)))&&(active=!collapsible&&0),!collapsible&&!1===active&&this.anchors.length&&(active=0),active},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):$()}},_tabKeydown:function(event){var focusedTab=$(this.document[0].activeElement).closest("li"),selectedIndex=this.tabs.index(focusedTab),goingForward=!0;if(!this._handlePageNav(event)){switch(event.keyCode){case $.ui.keyCode.RIGHT:case $.ui.keyCode.DOWN:selectedIndex++;break;case $.ui.keyCode.UP:case $.ui.keyCode.LEFT:goingForward=!1,selectedIndex--;break;case $.ui.keyCode.END:selectedIndex=this.anchors.length-1;break;case $.ui.keyCode.HOME:selectedIndex=0;break;case $.ui.keyCode.SPACE:return event.preventDefault(),clearTimeout(this.activating),void this._activate(selectedIndex);case $.ui.keyCode.ENTER:return event.preventDefault(),clearTimeout(this.activating),void this._activate(selectedIndex!==this.options.active&&selectedIndex);default:return}event.preventDefault(),clearTimeout(this.activating),selectedIndex=this._focusNextTab(selectedIndex,goingForward),event.ctrlKey||(focusedTab.attr("aria-selected","false"),this.tabs.eq(selectedIndex).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",selectedIndex)},this.delay))}},_panelKeydown:function(event){this._handlePageNav(event)||event.ctrlKey&&event.keyCode===$.ui.keyCode.UP&&(event.preventDefault(),this.active.focus())},_handlePageNav:function(event){return event.altKey&&event.keyCode===$.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):event.altKey&&event.keyCode===$.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(index,goingForward){function constrain(){return index>lastTabIndex&&(index=0),index<0&&(index=lastTabIndex),index}for(var lastTabIndex=this.tabs.length-1;-1!==$.inArray(constrain(),this.options.disabled);)index=goingForward?index+1:index-1;return index},_focusNextTab:function(index,goingForward){return index=this._findNextTab(index,goingForward),this.tabs.eq(index).focus(),index},_setOption:function(key,value){return"active"===key?void this._activate(value):"disabled"===key?void this._setupDisabled(value):(this._super(key,value),"collapsible"===key&&(this.element.toggleClass("ui-tabs-collapsible",value),value||!1!==this.options.active||this._activate(0)),"event"===key&&this._setupEvents(value),void("heightStyle"===key&&this._setupHeightStyle(value)))},_tabId:function(tab){return tab.attr("aria-controls")||"ui-tabs-"+getNextTabId()},_sanitizeSelector:function(hash){return hash?hash.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var options=this.options,lis=this.tablist.children(":has(a[href])");options.disabled=$.map(lis.filter(".ui-state-disabled"),function(tab){return lis.index(tab)}),this._processTabs(),!1!==options.active&&this.anchors.length?this.active.length&&!$.contains(this.tablist[0],this.active[0])?this.tabs.length===options.disabled.length?(options.active=!1,this.active=$()):this._activate(this._findNextTab(Math.max(0,options.active-1),!1)):options.active=this.tabs.index(this.active):(options.active=!1,this.active=$()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var that=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return $("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=$(),this.anchors.each(function(i,anchor){var selector,panel,panelId,anchorId=$(anchor).uniqueId().attr("id"),tab=$(anchor).closest("li"),originalAriaControls=tab.attr("aria-controls");isLocal(anchor)?(selector=anchor.hash,panel=that.element.find(that._sanitizeSelector(selector))):(panelId=that._tabId(tab),selector="#"+panelId,panel=that.element.find(selector),panel.length||(panel=that._createPanel(panelId),panel.insertAfter(that.panels[i-1]||that.tablist)),panel.attr("aria-live","polite")),panel.length&&(that.panels=that.panels.add(panel)),originalAriaControls&&tab.data("ui-tabs-aria-controls",originalAriaControls),tab.attr({"aria-controls":selector.substring(1),"aria-labelledby":anchorId}),panel.attr("aria-labelledby",anchorId)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(id){return $("<div>").attr("id",id).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(disabled){$.isArray(disabled)&&(disabled.length?disabled.length===this.anchors.length&&(disabled=!0):disabled=!1);for(var li,i=0;li=this.tabs[i];i++)!0===disabled||-1!==$.inArray(i,disabled)?$(li).addClass("ui-state-disabled").attr("aria-disabled","true"):$(li).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=disabled},_setupEvents:function(event){var events={click:function(event){event.preventDefault()}};event&&$.each(event.split(" "),function(index,eventName){events[eventName]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,events),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(heightStyle){var maxHeight,parent=this.element.parent();"fill"===heightStyle?(maxHeight=parent.height(),maxHeight-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var elem=$(this),position=elem.css("position");"absolute"!==position&&"fixed"!==position&&(maxHeight-=elem.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){maxHeight-=$(this).outerHeight(!0)}),this.panels.each(function(){$(this).height(Math.max(0,maxHeight-$(this).innerHeight()+$(this).height()))}).css("overflow","auto")):"auto"===heightStyle&&(maxHeight=0,this.panels.each(function(){maxHeight=Math.max(maxHeight,$(this).height("").height())}).height(maxHeight))},_eventHandler:function(event){var options=this.options,active=this.active,anchor=$(event.currentTarget),tab=anchor.closest("li"),clickedIsActive=tab[0]===active[0],collapsing=clickedIsActive&&options.collapsible,toShow=collapsing?$():this._getPanelForTab(tab),toHide=active.length?this._getPanelForTab(active):$(),eventData={oldTab:active,oldPanel:toHide,newTab:collapsing?$():tab,newPanel:toShow};event.preventDefault(),tab.hasClass("ui-state-disabled")||tab.hasClass("ui-tabs-loading")||this.running||clickedIsActive&&!options.collapsible||!1===this._trigger("beforeActivate",event,eventData)||(options.active=!collapsing&&this.tabs.index(tab),this.active=clickedIsActive?$():tab,this.xhr&&this.xhr.abort(),toHide.length||toShow.length||$.error("jQuery UI Tabs: Mismatching fragment identifier."),toShow.length&&this.load(this.tabs.index(tab),event),this._toggle(event,eventData))},_toggle:function(event,eventData){function complete(){that.running=!1,that._trigger("activate",event,eventData)}function show(){eventData.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),toShow.length&&that.options.show?that._show(toShow,that.options.show,complete):(toShow.show(),complete())}var that=this,toShow=eventData.newPanel,toHide=eventData.oldPanel;this.running=!0,toHide.length&&this.options.hide?this._hide(toHide,this.options.hide,function(){eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),show()}):(eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),toHide.hide(),show()),toHide.attr({"aria-expanded":"false","aria-hidden":"true"}),eventData.oldTab.attr("aria-selected","false"),toShow.length&&toHide.length?eventData.oldTab.attr("tabIndex",-1):toShow.length&&this.tabs.filter(function(){return 0===$(this).attr("tabIndex")}).attr("tabIndex",-1),toShow.attr({"aria-expanded":"true","aria-hidden":"false"}),eventData.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(index){var anchor,active=this._findActive(index);active[0]!==this.active[0]&&(active.length||(active=this.active),anchor=active.find(".ui-tabs-anchor")[0],this._eventHandler({target:anchor,currentTarget:anchor,preventDefault:$.noop}))},_findActive:function(index){return!1===index?$():this.tabs.eq(index)},_getIndex:function(index){return"string"==typeof index&&(index=this.anchors.index(this.anchors.filter("[href$='"+index+"']"))),index},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){$.data(this,"ui-tabs-destroy")?$(this).remove():$(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var li=$(this),prev=li.data("ui-tabs-aria-controls");prev?li.attr("aria-controls",prev).removeData("ui-tabs-aria-controls"):li.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(index){var disabled=this.options.disabled;!1!==disabled&&(index===undefined?disabled=!1:(index=this._getIndex(index),disabled=$.isArray(disabled)?$.map(disabled,function(num){return num!==index?num:null}):$.map(this.tabs,function(li,num){return num!==index?num:null})),this._setupDisabled(disabled))},disable:function(index){var disabled=this.options.disabled;if(!0!==disabled){if(index===undefined)disabled=!0;else{if(index=this._getIndex(index),-1!==$.inArray(index,disabled))return;disabled=$.isArray(disabled)?$.merge([index],disabled).sort():[index]}this._setupDisabled(disabled)}},load:function(index,event){index=this._getIndex(index);var that=this,tab=this.tabs.eq(index),anchor=tab.find(".ui-tabs-anchor"),panel=this._getPanelForTab(tab),eventData={tab:tab,panel:panel};isLocal(anchor[0])||(this.xhr=$.ajax(this._ajaxSettings(anchor,event,eventData)),this.xhr&&"canceled"!==this.xhr.statusText&&(tab.addClass("ui-tabs-loading"),panel.attr("aria-busy","true"),this.xhr.success(function(response){setTimeout(function(){panel.html(response),that._trigger("load",event,eventData)},1)}).complete(function(jqXHR,status){setTimeout(function(){"abort"===status&&that.panels.stop(!1,!0),tab.removeClass("ui-tabs-loading"),panel.removeAttr("aria-busy"),jqXHR===that.xhr&&delete that.xhr},1)})))},_ajaxSettings:function(anchor,event,eventData){var that=this;return{url:anchor.attr("href"),beforeSend:function(jqXHR,settings){return that._trigger("beforeLoad",event,$.extend({jqXHR:jqXHR,ajaxSettings:settings},eventData))}}},_getPanelForTab:function(tab){var id=$(tab).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+id))}})}(jQuery),function($){function addDescribedBy(elem,id){var describedby=(elem.attr("aria-describedby")||"").split(/\s+/);describedby.push(id),elem.data("ui-tooltip-id",id).attr("aria-describedby",$.trim(describedby.join(" ")))}function removeDescribedBy(elem){var id=elem.data("ui-tooltip-id"),describedby=(elem.attr("aria-describedby")||"").split(/\s+/),index=$.inArray(id,describedby);-1!==index&&describedby.splice(index,1),elem.removeData("ui-tooltip-id"),describedby=$.trim(describedby.join(" ")),describedby?elem.attr("aria-describedby",describedby):elem.removeAttr("aria-describedby")}var increments=0;$.widget("ui.tooltip",{version:"1.10.3",options:{content:function(){var title=$(this).attr("title")||"";return $("<a>").text(title).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(key,value){var that=this;if("disabled"===key)return this[value?"_disable":"_enable"](),void(this.options[key]=value);this._super(key,value),"content"===key&&$.each(this.tooltips,function(id,element){that._updateContent(element)})},_disable:function(){var that=this;$.each(this.tooltips,function(id,element){var event=$.Event("blur");event.target=event.currentTarget=element[0],that.close(event,!0)}),this.element.find(this.options.items).addBack().each(function(){var element=$(this);element.is("[title]")&&element.data("ui-tooltip-title",element.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var element=$(this);element.data("ui-tooltip-title")&&element.attr("title",element.data("ui-tooltip-title"))})},open:function(event){var that=this,target=$(event?event.target:this.element).closest(this.options.items);target.length&&!target.data("ui-tooltip-id")&&(target.attr("title")&&target.data("ui-tooltip-title",target.attr("title")),target.data("ui-tooltip-open",!0),event&&"mouseover"===event.type&&target.parents().each(function(){var blurEvent,parent=$(this);parent.data("ui-tooltip-open")&&(blurEvent=$.Event("blur"),blurEvent.target=blurEvent.currentTarget=this,that.close(blurEvent,!0)),parent.attr("title")&&(parent.uniqueId(),that.parents[this.id]={element:this,title:parent.attr("title")},parent.attr("title",""))}),this._updateContent(target,event))},_updateContent:function(target,event){var content,contentOption=this.options.content,that=this,eventType=event?event.type:null;if("string"==typeof contentOption)return this._open(event,target,contentOption);(content=contentOption.call(target[0],function(response){target.data("ui-tooltip-open")&&that._delay(function(){event&&(event.type=eventType),this._open(event,target,response)})}))&&this._open(event,target,content)},_open:function(event,target,content){function position(event){positionOption.of=event,tooltip.is(":hidden")||tooltip.position(positionOption)}var tooltip,events,delayedShow,positionOption=$.extend({},this.options.position);if(content){if(tooltip=this._find(target),tooltip.length)return void tooltip.find(".ui-tooltip-content").html(content);target.is("[title]")&&(event&&"mouseover"===event.type?target.attr("title",""):target.removeAttr("title")),tooltip=this._tooltip(target),addDescribedBy(target,tooltip.attr("id")),tooltip.find(".ui-tooltip-content").html(content),this.options.track&&event&&/^mouse/.test(event.type)?(this._on(this.document,{mousemove:position}),position(event)):tooltip.position($.extend({of:target},this.options.position)),tooltip.hide(),this._show(tooltip,this.options.show),this.options.show&&this.options.show.delay&&(delayedShow=this.delayedShow=setInterval(function(){tooltip.is(":visible")&&(position(positionOption.of),clearInterval(delayedShow))},$.fx.interval)),this._trigger("open",event,{tooltip:tooltip}),events={keyup:function(event){if(event.keyCode===$.ui.keyCode.ESCAPE){var fakeEvent=$.Event(event);fakeEvent.currentTarget=target[0],this.close(fakeEvent,!0)}},remove:function(){this._removeTooltip(tooltip)}},event&&"mouseover"!==event.type||(events.mouseleave="close"),event&&"focusin"!==event.type||(events.focusout="close"),this._on(!0,target,events)}},close:function(event){var that=this,target=$(event?event.currentTarget:this.element),tooltip=this._find(target);this.closing||(clearInterval(this.delayedShow),target.data("ui-tooltip-title")&&target.attr("title",target.data("ui-tooltip-title")),removeDescribedBy(target),tooltip.stop(!0),this._hide(tooltip,this.options.hide,function(){that._removeTooltip($(this))}),target.removeData("ui-tooltip-open"),this._off(target,"mouseleave focusout keyup"),target[0]!==this.element[0]&&this._off(target,"remove"),this._off(this.document,"mousemove"),event&&"mouseleave"===event.type&&$.each(this.parents,function(id,parent){$(parent.element).attr("title",parent.title),delete that.parents[id]}),this.closing=!0,this._trigger("close",event,{tooltip:tooltip}),this.closing=!1)},_tooltip:function(element){var id="ui-tooltip-"+increments++,tooltip=$("<div>").attr({id:id,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return $("<div>").addClass("ui-tooltip-content").appendTo(tooltip),tooltip.appendTo(this.document[0].body),this.tooltips[id]=element,tooltip},_find:function(target){var id=target.data("ui-tooltip-id");return id?$("#"+id):$()},_removeTooltip:function(tooltip){tooltip.remove(),delete this.tooltips[tooltip.attr("id")]},_destroy:function(){var that=this;$.each(this.tooltips,function(id,element){var event=$.Event("blur");event.target=event.currentTarget=element[0],that.close(event,!0),$("#"+id).remove(),element.data("ui-tooltip-title")&&(element.attr("title",element.data("ui-tooltip-title")),element.removeData("ui-tooltip-title"))})}})}(jQuery),function(){!function(q){var y=this||(0,eval)("this"),w=y.document,K=y.navigator,u=y.jQuery,B=y.JSON;!function(q){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?q(module.exports||exports):"function"==typeof define&&define.amd?define(["exports"],q):q(y.ko={})}(function(F){function G(a,c){return(null===a||typeof a in N)&&a===c}function H(b,c,d,e){a.d[b]={init:function(b){return a.a.f.set(b,L,{}),{controlsDescendantBindings:!0}},update:function(b,h,k,m,f){k=a.a.f.get(b,L),h=a.a.c(h()),m=!d!=!h;var p=!k.ob;(p||c||m!==k.Db)&&(p&&(k.ob=a.a.Ya(a.e.childNodes(b),!0)),m?(p||a.e.S(b,a.a.Ya(k.ob)),a.Ta(e?e(f,h):f,b)):a.e.Z(b),k.Db=m)}},a.g.Y[b]=!1,a.e.P[b]=!0}var a=void 0!==F?F:{};a.b=function(b,c){for(var d=b.split("."),e=a,g=0;g<d.length-1;g++)e=e[d[g]];e[d[d.length-1]]=c},a.s=function(a,c,d){a[c]=d},a.version="3.0.0",a.b("version",a.version),a.a=function(){function b(a,b){for(var f in a)a.hasOwnProperty(f)&&b(f,a[f])}function c(k,b){if("input"!==a.a.v(k)||!k.type||"click"!=b.toLowerCase())return!1;var f=k.type;return"checkbox"==f||"radio"==f}var d={},e={};d[K&&/Firefox\/2/i.test(K.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],d.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),b(d,function(a,b){if(b.length)for(var f=0,c=b.length;f<c;f++)e[b[f]]=a});var g={propertychange:!0},h=w&&function(){for(var a=3,b=w.createElement("div"),f=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+ ++a+"]><i></i><![endif]--\x3e",f[0];);return 4<a?a:q}();return{$a:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],n:function(a,b){for(var f=0,c=a.length;f<c;f++)b(a[f])},l:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var f=0,c=a.length;f<c;f++)if(a[f]===b)return f;return-1},Ua:function(a,b,f){for(var c=0,d=a.length;c<d;c++)if(b.call(f,a[c]))return a[c];return null},ia:function(b,c){var f=a.a.l(b,c);0<=f&&b.splice(f,1)},Va:function(b){b=b||[];for(var c=[],f=0,d=b.length;f<d;f++)0>a.a.l(c,b[f])&&c.push(b[f]);return c},ha:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)f.push(b(a[c]));return f},ga:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)b(a[c])&&f.push(a[c]);return f},X:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var f=0,c=b.length;f<c;f++)a.push(b[f]);return a},V:function(b,c,f){var d=a.a.l(a.a.Ha(b),c);0>d?f&&b.push(c):f||b.splice(d,1)},extend:function(a,b){if(b)for(var f in b)b.hasOwnProperty(f)&&(a[f]=b[f]);return a},K:b,Da:function(a,b){if(!a)return a;var c,f={};for(c in a)a.hasOwnProperty(c)&&(f[c]=b(a[c],c,a));return f},wa:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Vb:function(b){b=a.a.Q(b);for(var c=w.createElement("div"),f=0,d=b.length;f<d;f++)c.appendChild(a.L(b[f]));return c},Ya:function(b,c){for(var f=0,d=b.length,e=[];f<d;f++){var g=b[f].cloneNode(!0);e.push(c?a.L(g):g)}return e},S:function(b,c){if(a.a.wa(b),c)for(var f=0,d=c.length;f<d;f++)b.appendChild(c[f])},nb:function(b,c){var f=b.nodeType?[b]:b;if(0<f.length){for(var d=f[0],e=d.parentNode,g=0,n=c.length;g<n;g++)e.insertBefore(c[g],d);for(g=0,n=f.length;g<n;g++)a.removeNode(f[g])}},$:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);if(1<a.length){var f=a[0],c=a[a.length-1];for(a.length=0;f!==c;)if(a.push(f),!(f=f.nextSibling))return;a.push(c)}}return a},qb:function(a,b){7>h?a.setAttribute("selected",b):a.selected=b},la:function(a){return null===a||a===q?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},ec:function(b,c){for(var f=[],d=(b||"").split(c),e=0,g=d.length;e<g;e++){var n=a.a.la(d[e]);""!==n&&f.push(n)}return f},ac:function(a,b){return a=a||"",!(b.length>a.length)&&a.substring(0,b.length)===b},Gb:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(16&b.compareDocumentPosition(a));for(;a&&a!=b;)a=a.parentNode;return!!a},va:function(b){return a.a.Gb(b,b.ownerDocument.documentElement)},Ra:function(b){return!!a.a.Ua(b,a.a.va)},v:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},r:function(b,d,f){var e=h&&g[d];if(e||void 0===u)if(e||"function"!=typeof b.addEventListener){if(void 0===b.attachEvent)throw Error("Browser doesn't support addEventListener or attachEvent");var s=function(a){f.call(b,a)},l="on"+d;b.attachEvent(l,s),a.a.C.ea(b,function(){b.detachEvent(l,s)})}else b.addEventListener(d,f,!1);else{if(c(b,d)){var n=f;f=function(a,b){var f=this.checked;b&&(this.checked=!0!==b.Ab),n.call(this,a),this.checked=f}}u(b).bind(d,f)}},da:function(a,b){if(!a||!a.nodeType)throw Error("element must be a DOM node when calling triggerEvent");if(void 0!==u){var f=[];c(a,b)&&f.push({Ab:a.checked}),u(a).trigger(b,f)}else if("function"==typeof w.createEvent){if("function"!=typeof a.dispatchEvent)throw Error("The supplied element doesn't support dispatchEvent");f=w.createEvent(e[b]||"HTMLEvents"),f.initEvent(b,!0,!0,y,0,0,0,0,0,!1,!1,!1,!1,0,a),a.dispatchEvent(f)}else{if(void 0===a.fireEvent)throw Error("Browser doesn't support triggering events");c(a,b)&&(a.checked=!0!==a.checked),a.fireEvent("on"+b)}},c:function(b){return a.M(b)?b():b},Ha:function(b){return a.M(b)?b.t():b},ma:function(b,c,f){if(c){var d=/\S+/g,e=b.className.match(d)||[];a.a.n(c.match(d),function(b){a.a.V(e,b,f)}),b.className=e.join(" ")}},Ma:function(b,c){var f=a.a.c(c);null!==f&&f!==q||(f="");var d=a.e.firstChild(b);!d||3!=d.nodeType||a.e.nextSibling(d)?a.e.S(b,[w.createTextNode(f)]):d.data=f,a.a.Jb(b)},pb:function(a,b){if(a.name=b,7>=h)try{a.mergeAttributes(w.createElement("<input name='"+a.name+"'/>"),!1)}catch(f){}},Jb:function(a){9<=h&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Hb:function(a){if(h){var b=a.style.width;a.style.width=0,a.style.width=b}},Zb:function(b,c){b=a.a.c(b),c=a.a.c(c);for(var f=[],d=b;d<=c;d++)f.push(d);return f},Q:function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b},cc:6===h,dc:7===h,ja:h,ab:function(b,c){for(var f=a.a.Q(b.getElementsByTagName("input")).concat(a.a.Q(b.getElementsByTagName("textarea"))),d="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},e=[],g=f.length-1;0<=g;g--)d(f[g])&&e.push(f[g]);return e},Wb:function(b){return"string"==typeof b&&(b=a.a.la(b))?B&&B.parse?B.parse(b):new Function("return "+b)():null},Na:function(b,c,f){if(!B||!B.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return B.stringify(a.a.c(b),c,f)},Xb:function(c,d,f){f=f||{};var e=f.params||{},g=f.includeFields||this.$a,h=c;if("object"==typeof c&&"form"===a.a.v(c))for(var h=c.action,n=g.length-1;0<=n;n--)for(var r=a.a.ab(c,g[n]),v=r.length-1;0<=v;v--)e[r[v].name]=r[v].value;d=a.a.c(d);var t=w.createElement("form");t.style.display="none",t.action=h,t.method="post";for(var E in d)c=w.createElement("input"),c.name=E,c.value=a.a.Na(a.a.c(d[E])),t.appendChild(c);b(e,function(a,b){var c=w.createElement("input");c.name=a,c.value=b,t.appendChild(c)}),w.body.appendChild(t),f.submitter?f.submitter(t):t.submit(),setTimeout(function(){t.parentNode.removeChild(t)},0)}}}(),a.b("utils",a.a),a.b("utils.arrayForEach",a.a.n),a.b("utils.arrayFirst",a.a.Ua),a.b("utils.arrayFilter",a.a.ga),a.b("utils.arrayGetDistinctValues",a.a.Va),a.b("utils.arrayIndexOf",a.a.l),a.b("utils.arrayMap",a.a.ha),a.b("utils.arrayPushAll",a.a.X),a.b("utils.arrayRemoveItem",a.a.ia),a.b("utils.extend",a.a.extend),a.b("utils.fieldsIncludedWithJsonPost",a.a.$a),a.b("utils.getFormFields",a.a.ab),a.b("utils.peekObservable",a.a.Ha),a.b("utils.postJson",a.a.Xb),a.b("utils.parseJson",a.a.Wb),a.b("utils.registerEventHandler",a.a.r),a.b("utils.stringifyJson",a.a.Na),a.b("utils.range",a.a.Zb),a.b("utils.toggleDomNodeCssClass",a.a.ma),a.b("utils.triggerEvent",a.a.da),a.b("utils.unwrapObservable",a.a.c),a.b("utils.objectForEach",a.a.K),a.b("utils.addOrRemoveItem",a.a.V),a.b("unwrap",a.a.c),Function.prototype.bind||(Function.prototype.bind=function(a){var c=this,d=Array.prototype.slice.call(arguments);return a=d.shift(),function(){return c.apply(a,d.concat(Array.prototype.slice.call(arguments)))}}),a.a.f=new function(){function a(b,h){var k=b[d];if(!k||"null"===k||!e[k]){if(!h)return q;k=b[d]="ko"+c++,e[k]={}}return e[k]}var c=0,d="__ko__"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===q?q:e[d]},set:function(c,d,e){e===q&&a(c,!1)===q||(a(c,!0)[d]=e)},clear:function(a){var b=a[d];return!!b&&(delete e[b],a[d]=null,!0)},D:function(){return c+++d}}},a.b("utils.domData",a.a.f),a.b("utils.domData.clear",a.a.f.clear),a.a.C=new function(){function b(b,c){var e=a.a.f.get(b,d);return e===q&&c&&(e=[],a.a.f.set(b,d,e)),e}function c(d){var e=b(d,!1);if(e)for(var e=e.slice(0),m=0;m<e.length;m++)e[m](d);if(a.a.f.clear(d),"function"==typeof u&&"function"==typeof u.cleanData&&u.cleanData([d]),g[d.nodeType])for(e=d.firstChild;d=e;)e=d.nextSibling,8===d.nodeType&&c(d)}var d=a.a.f.D(),e={1:!0,8:!0,9:!0},g={1:!0,9:!0};return{ea:function(a,c){if("function"!=typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},mb:function(c,e){var g=b(c,!1);g&&(a.a.ia(g,e),0==g.length&&a.a.f.set(c,d,q))},L:function(b){if(e[b.nodeType]&&(c(b),g[b.nodeType])){var d=[];a.a.X(d,b.getElementsByTagName("*"));for(var m=0,f=d.length;m<f;m++)c(d[m])}return b},removeNode:function(b){a.L(b),b.parentNode&&b.parentNode.removeChild(b)}}},a.L=a.a.C.L,a.removeNode=a.a.C.removeNode,a.b("cleanNode",a.L),a.b("removeNode",a.removeNode),a.b("utils.domNodeDisposal",a.a.C),a.b("utils.domNodeDisposal.addDisposeCallback",a.a.C.ea),a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.C.mb),function(){a.a.Fa=function(b){var c;if(void 0!==u){if(u.parseHTML)c=u.parseHTML(b)||[];else if((c=u.clean([b]))&&c[0]){for(b=c[0];b.parentNode&&11!==b.parentNode.nodeType;)b=b.parentNode;b.parentNode&&b.parentNode.removeChild(b)}}else{var d=a.a.la(b).toLowerCase();for(c=w.createElement("div"),d=d.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!d.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!d.indexOf("<td")||!d.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""],b="ignored<div>"+d[1]+b+d[2]+"</div>","function"==typeof y.innerShiv?c.appendChild(y.innerShiv(b)):c.innerHTML=b;d[0]--;)c=c.lastChild;c=a.a.Q(c.lastChild.childNodes)}return c},a.a.Ka=function(b,c){if(a.a.wa(b),null!==(c=a.a.c(c))&&c!==q)if("string"!=typeof c&&(c=c.toString()),void 0!==u)u(b).html(c);else for(var d=a.a.Fa(c),e=0;e<d.length;e++)b.appendChild(d[e])}}(),a.b("utils.parseHtmlFragment",a.a.Fa),a.b("utils.setHtml",a.a.Ka),a.u=function(){function b(c,e){if(c)if(8==c.nodeType){var g=a.u.jb(c.nodeValue);null!=g&&e.push({Fb:c,Tb:g})}else if(1==c.nodeType)for(var g=0,h=c.childNodes,k=h.length;g<k;g++)b(h[g],e)}var c={};return{Ca:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()")
+;var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return c[b]=a,"\x3c!--[ko_memo:"+b+"]--\x3e"},ub:function(a,b){var g=c[a];if(g===q)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return g.apply(null,b||[]),!0}finally{delete c[a]}},vb:function(c,e){var g=[];b(c,g);for(var h=0,k=g.length;h<k;h++){var m=g[h].Fb,f=[m];e&&a.a.X(f,e),a.u.ub(g[h].Tb,f),m.nodeValue="",m.parentNode&&m.parentNode.removeChild(m)}},jb:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}(),a.b("memoization",a.u),a.b("memoization.memoize",a.u.Ca),a.b("memoization.unmemoize",a.u.ub),a.b("memoization.parseMemoText",a.u.jb),a.b("memoization.unmemoizeDomNodeAndDescendants",a.u.vb),a.xa={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.h({read:b,write:function(a){clearTimeout(d),d=setTimeout(function(){b(a)},c)}})},notify:function(a,c){a.equalityComparer="always"==c?null:G}};var N={undefined:1,boolean:1,number:1,string:1};a.b("extenders",a.xa),a.sb=function(b,c,d){this.target=b,this.qa=c,this.Eb=d,a.s(this,"dispose",this.B)},a.sb.prototype.B=function(){this.Qb=!0,this.Eb()},a.ca=function(){this.F={},a.a.extend(this,a.ca.fn),a.s(this,"subscribe",this.T),a.s(this,"extend",this.extend),a.s(this,"getSubscriptionsCount",this.Lb)};var I="change";a.ca.fn={T:function(b,c,d){d=d||I;var e=new a.sb(this,c?b.bind(c):b,function(){a.a.ia(this.F[d],e)}.bind(this));return this.F[d]||(this.F[d]=[]),this.F[d].push(e),e},notifySubscribers:function(b,c){if(c=c||I,this.cb(c))try{a.i.Wa();for(var g,d=this.F[c].slice(0),e=0;g=d[e];++e)g&&!0!==g.Qb&&g.qa(b)}finally{a.i.end()}},cb:function(a){return this.F[a]&&this.F[a].length},Lb:function(){var b=0;return a.a.K(this.F,function(a,d){b+=d.length}),b},extend:function(b){var c=this;return b&&a.a.K(b,function(b,e){var g=a.xa[b];"function"==typeof g&&(c=g(c,e)||c)}),c}},a.fb=function(a){return null!=a&&"function"==typeof a.T&&"function"==typeof a.notifySubscribers},a.b("subscribable",a.ca),a.b("isSubscribable",a.fb),a.i=function(){var b=[];return{Wa:function(a){b.push(a&&{qa:a,Za:[]})},end:function(){b.pop()},lb:function(c){if(!a.fb(c))throw Error("Only subscribable things can act as dependencies");if(0<b.length){var d=b[b.length-1];!d||0<=a.a.l(d.Za,c)||(d.Za.push(c),d.qa(c))}},p:function(a,d,e){try{return b.push(null),a.apply(d,e||[])}finally{b.pop()}}}}(),a.q=function(b){function c(){return 0<arguments.length?(c.equalityComparer&&c.equalityComparer(d,arguments[0])||(c.O(),d=arguments[0],c.N()),this):(a.i.lb(c),d)}var d=b;return a.ca.call(c),c.t=function(){return d},c.N=function(){c.notifySubscribers(d)},c.O=function(){c.notifySubscribers(d,"beforeChange")},a.a.extend(c,a.q.fn),a.s(c,"peek",c.t),a.s(c,"valueHasMutated",c.N),a.s(c,"valueWillMutate",c.O),c},a.q.fn={equalityComparer:G};var C=a.q.Yb="__ko_proto__";a.q.fn[C]=a.q,a.ya=function(b,c){return null!==b&&b!==q&&b[C]!==q&&(b[C]===c||a.ya(b[C],c))},a.M=function(b){return a.ya(b,a.q)},a.gb=function(b){return!!("function"==typeof b&&b[C]===a.q||"function"==typeof b&&b[C]===a.h&&b.Nb)},a.b("observable",a.q),a.b("isObservable",a.M),a.b("isWriteableObservable",a.gb),a.ba=function(b){if("object"!=typeof(b=b||[])||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return b=a.q(b),a.a.extend(b,a.ba.fn),b.extend({trackArrayChanges:!0})},a.ba.fn={remove:function(b){for(var c=this.t(),d=[],e="function"!=typeof b||a.M(b)?function(a){return a===b}:b,g=0;g<c.length;g++){var h=c[g];e(h)&&(0===d.length&&this.O(),d.push(h),c.splice(g,1),g--)}return d.length&&this.N(),d},removeAll:function(b){if(b===q){var c=this.t(),d=c.slice(0);return this.O(),c.splice(0,c.length),this.N(),d}return b?this.remove(function(c){return 0<=a.a.l(b,c)}):[]},destroy:function(b){var c=this.t(),d="function"!=typeof b||a.M(b)?function(a){return a===b}:b;this.O();for(var e=c.length-1;0<=e;e--)d(c[e])&&(c[e]._destroy=!0);this.N()},destroyAll:function(b){return b===q?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.l(b,c)}):[]},indexOf:function(b){var c=this();return a.a.l(c,b)},replace:function(a,c){var d=this.indexOf(a);0<=d&&(this.O(),this.t()[d]=c,this.N())}},a.a.n("pop push reverse shift sort splice unshift".split(" "),function(b){a.ba.fn[b]=function(){var a=this.t();return this.O(),this.Xa(a,b,arguments),a=a[b].apply(a,arguments),this.N(),a}}),a.a.n(["slice"],function(b){a.ba.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}}),a.b("observableArray",a.ba);var J="arrayChange";a.xa.trackArrayChanges=function(b){function c(){if(!d){d=!0;var c=b.notifySubscribers;b.notifySubscribers=function(a,b){return b&&b!==I||++g,c.apply(this,arguments)};var m=[].concat(b.t()||[]);e=null,b.T(function(c){if(c=[].concat(c||[]),b.cb(J)){var d;(!e||1<g)&&(e=a.a.ra(m,c,{sparse:!0})),d=e,d.length&&b.notifySubscribers(d,J)}m=c,e=null,g=0})}}if(!b.Xa){var d=!1,e=null,g=0,h=b.T;b.T=b.subscribe=function(a,b,f){return f===J&&c(),h.apply(this,arguments)},b.Xa=function(a,b,c){function p(a,b,c){h.push({status:a,value:b,index:c})}if(d&&!g){var h=[],l=a.length,n=c.length,r=0;switch(b){case"push":r=l;case"unshift":for(b=0;b<n;b++)p("added",c[b],r+b);break;case"pop":r=l-1;case"shift":l&&p("deleted",a[r],r);break;case"splice":b=Math.min(Math.max(0,0>c[0]?l+c[0]:c[0]),l);for(var l=1===n?l:Math.min(b+(c[1]||0),l),n=b+n-2,r=Math.max(l,n),v=2;b<r;++b,++v)b<l&&p("deleted",a[b],b),b<n&&p("added",c[v],b);break;default:return}e=h}}}},a.h=function(b,c,d){function e(){a.a.n(z,function(a){a.B()}),z=[]}function g(){var a=k.throttleEvaluation;a&&0<=a?(clearTimeout(x),x=setTimeout(h,a)):h()}function h(){if(!s){if(E&&E()){if(!l)return D(),void(p=!0)}else l=!1;s=!0;try{var b=a.a.ha(z,function(a){return a.target});a.i.Wa(function(c){var d;0<=(d=a.a.l(b,c))?b[d]=q:z.push(c.T(g))});for(var d=c?n.call(c):n(),e=b.length-1;0<=e;e--)b[e]&&z.splice(e,1)[0].B();p=!0,k.equalityComparer&&k.equalityComparer(f,d)||(k.notifySubscribers(f,"beforeChange"),f=d,k.notifySubscribers(f))}finally{a.i.end(),s=!1}z.length||D()}}function k(){if(0<arguments.length){if("function"!=typeof r)throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return r.apply(c,arguments),this}return p||h(),a.i.lb(k),f}function m(){return!p||0<z.length}var f,p=!1,s=!1,l=!1,n=b;if(n&&"object"==typeof n?(d=n,n=d.read):(d=d||{},n||(n=d.read)),"function"!=typeof n)throw Error("Pass a function that returns the value of the ko.computed");var r=d.write,v=d.disposeWhenNodeIsRemoved||d.I||null,t=d.disposeWhen||d.ua,E=t,D=e,z=[],x=null;return c||(c=d.owner),k.t=function(){return p||h(),f},k.Kb=function(){return z.length},k.Nb="function"==typeof d.write,k.B=function(){D()},k.aa=m,a.ca.call(k),a.a.extend(k,a.h.fn),a.s(k,"peek",k.t),a.s(k,"dispose",k.B),a.s(k,"isActive",k.aa),a.s(k,"getDependenciesCount",k.Kb),v&&(l=!0,v.nodeType&&(E=function(){return!a.a.va(v)||t&&t()})),!0!==d.deferEvaluation&&h(),v&&m()&&(D=function(){a.a.C.mb(v,D),e()},a.a.C.ea(v,D)),k},a.Pb=function(b){return a.ya(b,a.h)},F=a.q.Yb,a.h[F]=a.q,a.h.fn={equalityComparer:G},a.h.fn[F]=a.h,a.b("dependentObservable",a.h),a.b("computed",a.h),a.b("isComputed",a.Pb),function(){function b(a,g,h){if(h=h||new d,"object"!=typeof(a=g(a))||null===a||a===q||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var k=a instanceof Array?[]:{};return h.save(a,k),c(a,function(c){var d=g(a[c]);switch(typeof d){case"boolean":case"number":case"string":case"function":k[c]=d;break;case"object":case"undefined":var p=h.get(d);k[c]=p!==q?p:b(d,g,h)}}),k}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=[],this.Qa=[]}a.tb=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.M(b)&&10>c;c++)b=b();return b})},a.toJSON=function(b,c,d){return b=a.tb(b),a.a.Na(b,c,d)},d.prototype={save:function(b,c){var d=a.a.l(this.keys,b);0<=d?this.Qa[d]=c:(this.keys.push(b),this.Qa.push(c))},get:function(b){return b=a.a.l(this.keys,b),0<=b?this.Qa[b]:q}}}(),a.b("toJS",a.tb),a.b("toJSON",a.toJSON),function(){a.k={o:function(b){switch(a.a.v(b)){case"option":return!0===b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.d.options.Ea):7>=a.a.ja?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case"select":return 0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex]):q;default:return b.value}},na:function(b,c){switch(a.a.v(b)){case"option":switch(typeof c){case"string":a.a.f.set(b,a.d.options.Ea,q),"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__,b.value=c;break;default:a.a.f.set(b,a.d.options.Ea,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"==typeof c?c:""}break;case"select":""===c&&(c=q),null!==c&&c!==q||(b.selectedIndex=-1);for(var d=b.options.length-1;0<=d;d--)if(a.k.o(b.options[d])==c){b.selectedIndex=d;break}1<b.size||-1!==b.selectedIndex||(b.selectedIndex=0);break;default:null!==c&&c!==q||(c=""),b.value=c}}}}(),a.b("selectExtensions",a.k),a.b("selectExtensions.readValue",a.k.o),a.b("selectExtensions.writeValue",a.k.na),a.g=function(){function b(b){b=a.a.la(b),123===b.charCodeAt(0)&&(b=b.slice(1,-1));var k,l,c=[],d=b.match(e),n=0;if(d){d.push(",");for(var v,r=0;v=d[r];++r){var t=v.charCodeAt(0);if(44===t){if(0>=n){k&&c.push(l?{key:k,value:l.join("")}:{unknown:k}),k=l=n=0;continue}}else if(58===t){if(!l)continue}else if(47===t&&r&&1<v.length)(t=d[r-1].match(g))&&!h[t[0]]&&(b=b.substr(b.indexOf(v)+1),d=b.match(e),d.push(","),r=-1,v="/");else if(40===t||123===t||91===t)++n;else if(41===t||125===t||93===t)--n;else if(!k&&!l){k=34===t||39===t?v.slice(1,-1):v;continue}l?l.push(v):l=[v]}}return c}var c=["true","false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]","g"),g=/[\])"'A-Za-z0-9_$]+$/,h={in:1,return:1,typeof:1},k={};return{Y:[],U:k,Ga:b,ka:function(e,f){function g(b,f){var e,r=a.getBindingHandler(b);(r&&r.preprocess?f=r.preprocess(f,b,g):1)&&((r=k[b])&&(e=f,0<=a.a.l(c,e)?e=!1:(r=e.match(d),e=null!==r&&(r[1]?"Object("+r[1]+")"+r[2]:e)),r=e),r&&l.push("'"+b+"':function(_z){"+e+"=_z}"),n&&(f="function(){return "+f+" }"),h.push("'"+b+"':"+f))}f=f||{};var h=[],l=[],n=f.valueAccessors,r="string"==typeof e?b(e):e;return a.a.n(r,function(a){g(a.key||a.unknown,a.value)}),l.length&&g("_ko_property_writers","{"+l.join(",")+"}"),h.join(",")},Sb:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},oa:function(b,c,d,e,k){b&&a.M(b)?!a.gb(b)||k&&b.t()===e||b(e):(b=c.get("_ko_property_writers"))&&b[d]&&b[d](e)}}}(),a.b("expressionRewriting",a.g),a.b("expressionRewriting.bindingRewriteValidators",a.g.Y),a.b("expressionRewriting.parseObjectLiteral",a.g.Ga),a.b("expressionRewriting.preProcessBindings",a.g.ka),a.b("expressionRewriting._twoWayBindings",a.g.U),a.b("jsonExpressionRewriting",a.g),a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.g.ka),function(){function b(a){return 8==a.nodeType&&h.test(g?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&k.test(g?a.text:a.nodeValue)}function d(a,d){for(var e=a,k=1,n=[];e=e.nextSibling;){if(c(e)&&0===--k)return n;n.push(e),b(e)&&k++}if(!d)throw Error("Cannot find closing comment tag to match: "+a.nodeValue);return null}function e(a,b){var c=d(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var g=w&&"\x3c!--test--\x3e"===w.createComment("test").text,h=g?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,k=g?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,m={ul:!0,ol:!0};a.e={P:{},childNodes:function(a){return b(a)?d(a):a.childNodes},Z:function(c){if(b(c)){c=a.e.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.wa(c)},S:function(c,d){if(b(c)){a.e.Z(c);for(var e=c.nextSibling,k=0,n=d.length;k<n;k++)e.parentNode.insertBefore(d[k],e)}else a.a.S(c,d)},kb:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},eb:function(c,d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):c.appendChild(d):a.e.kb(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||c(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){return b(a)&&(a=e(a)),a.nextSibling&&c(a.nextSibling)?null:a.nextSibling},Mb:b,bc:function(a){return(a=(g?a.text:a.nodeValue).match(h))?a[1]:null},ib:function(d){if(m[a.a.v(d)]){var k=d.firstChild;if(k)do{if(1===k.nodeType){var g;g=k.firstChild;var h=null;if(g)do{if(h)h.push(g);else if(b(g)){var n=e(g,!0);n?g=n:h=[g]}else c(g)&&(h=[g])}while(g=g.nextSibling);if(g=h)for(h=k.nextSibling,n=0;n<g.length;n++)h?d.insertBefore(g[n],h):d.appendChild(g[n])}}while(k=k.nextSibling)}}}}(),a.b("virtualElements",a.e),a.b("virtualElements.allowedBindings",a.e.P),a.b("virtualElements.emptyNode",a.e.Z),a.b("virtualElements.insertAfter",a.e.eb),a.b("virtualElements.prepend",a.e.kb),a.b("virtualElements.setDomNodeChildren",a.e.S),function(){a.H=function(){this.zb={}},a.a.extend(a.H.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind");case 8:return a.e.Mb(b);default:return!1}},getBindings:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a):null},getBindingAccessors:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a,{valueAccessors:!0}):null},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.e.bc(b);default:return null}},parseBindingsString:function(b,c,d,e){try{var k,g=this.zb,h=b+(e&&e.valueAccessors||"");if(!(k=g[h])){var m,f="with($context){with($data||{}){return{"+a.g.ka(b,e)+"}}}";m=new Function("$context","$element",f),k=g[h]=m}return k(c,d)}catch(p){throw p.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+p.message,p}}}),a.H.instance=new a.H}(),a.b("bindingProvider",a.H),function(){function b(a){return function(){return a}}function c(a){return a()}function d(b){return a.a.Da(a.i.p(b),function(a,c){return function(){return b()[c]}})}function e(a,b){return d(this.getBindings.bind(this,a,b))}function g(b,c,d){var f,e=a.e.firstChild(c),k=a.H.instance,g=k.preprocessNode;if(g){for(;f=e;)e=a.e.nextSibling(f),g.call(k,f);e=a.e.firstChild(c)}for(;f=e;)e=a.e.nextSibling(f),h(b,f,d)}function h(b,c,d){var f=!0,e=1===c.nodeType;e&&a.e.ib(c),(e&&d||a.H.instance.nodeHasBindings(c))&&(f=m(c,null,b,d).shouldBindDescendants),f&&!p[a.a.v(c)]&&g(b,c,!e)}function k(b){var c=[],d={},f=[];return a.a.K(b,function D(e){if(!d[e]){var k=a.getBindingHandler(e);k&&(k.after&&(f.push(e),a.a.n(k.after,function(c){if(b[c]){if(-1!==a.a.l(f,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+f.join(", "));D(c)}}),f.pop()),c.push({key:e,bb:k})),d[e]=!0}}),c}function m(b,d,f,g){var h=a.a.f.get(b,s);if(!d){if(h)throw Error("You cannot apply bindings multiple times to the same element.");a.a.f.set(b,s,!0)}!h&&g&&a.rb(b,f);var m;if(d&&"function"!=typeof d)m=d;else{var p=a.H.instance,l=p.getBindingAccessors||e;if(d||f.A){var A=a.h(function(){return(m=d?d(f,b):l.call(p,b,f))&&f.A&&f.A(),m},null,{I:b});m&&A.aa()||(A=null)}else m=a.i.p(l,p,[b,f])}var u;if(m){var w=A?function(a){return function(){return c(A()[a])}}:function(a){return m[a]},y=function(){return a.a.Da(A?A():m,c)};y.get=function(a){return m[a]&&c(w(a))},y.has=function(a){return a in m},g=k(m),a.a.n(g,function(c){var d=c.bb.init,e=c.bb.update,k=c.key;if(8===b.nodeType&&!a.e.P[k])throw Error("The binding '"+k+"' cannot be used with virtual elements");try{"function"==typeof d&&a.i.p(function(){var a=d(b,w(k),y,f.$data,f);if(a&&a.controlsDescendantBindings){if(u!==q)throw Error("Multiple bindings ("+u+" and "+k+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=k}}),"function"==typeof e&&a.h(function(){e(b,w(k),y,f.$data,f)},null,{I:b})}catch(g){throw g.message='Unable to process binding "'+k+": "+m[k]+'"\nMessage: '+g.message,g}})}return{shouldBindDescendants:u===q}}function f(b){return b&&b instanceof a.G?b:new a.G(b)}a.d={};var p={script:!0};a.getBindingHandler=function(b){return a.d[b]},a.G=function(b,c,d,f){var g,e=this,k="function"==typeof b,h=a.h(function(){var g=k?b():b;return c?(c.A&&c.A(),a.a.extend(e,c),h&&(e.A=h)):(e.$parents=[],e.$root=g,e.ko=a),e.$rawData=b,e.$data=g,d&&(e[d]=g),f&&f(e,c,g),e.$data},null,{ua:function(){return g&&!a.a.Ra(g)},I:!0});h.aa()&&(e.A=h,h.equalityComparer=null,g=[],h.wb=function(b){g.push(b),a.a.C.ea(b,function(b){a.a.ia(g,b),g.length||(h.B(),e.A=h=q)})})},a.G.prototype.createChildContext=function(b,c,d){return new a.G(b,this,c,function(a,b){a.$parentContext=b,a.$parent=b.$data,a.$parents=(b.$parents||[]).slice(0),a.$parents.unshift(a.$parent),d&&d(a)})},a.G.prototype.extend=function(b){return new a.G(this.$rawData,this,null,function(c){a.a.extend(c,"function"==typeof b?b():b)})};var s=a.a.f.D(),l=a.a.f.D();a.rb=function(b,c){if(2!=arguments.length)return a.a.f.get(b,l);a.a.f.set(b,l,c),c.A&&c.A.wb(b)},a.pa=function(b,c,d){return 1===b.nodeType&&a.e.ib(b),m(b,c,f(d),!0)},a.xb=function(c,e,k){return k=f(k),a.pa(c,"function"==typeof e?d(e.bind(null,k,c)):a.a.Da(e,b),k)},a.Ta=function(a,b){1!==b.nodeType&&8!==b.nodeType||g(f(a),b,!0)},a.Sa=function(a,b){if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");b=b||y.document.body,h(f(a),b,!0)},a.ta=function(b){switch(b.nodeType){case 1:case 8:var c=a.rb(b);if(c)return c;if(b.parentNode)return a.ta(b.parentNode)}return q},a.Cb=function(b){return(b=a.ta(b))?b.$data:q},a.b("bindingHandlers",a.d),a.b("applyBindings",a.Sa),a.b("applyBindingsToDescendants",a.Ta),a.b("applyBindingAccessorsToNode",a.pa),a.b("applyBindingsToNode",a.xb),a.b("contextFor",a.ta),a.b("dataFor",a.Cb)}();var M={class:"className",for:"htmlFor"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.K(d,function(c,d){d=a.a.c(d);var h=!1===d||null===d||d===q;h&&b.removeAttribute(c),8>=a.a.ja&&c in M?(c=M[c],h?b.removeAttribute(c):b[c]=d):h||b.setAttribute(c,d.toString()),"name"===c&&a.a.pb(b,h?"":d.toString())})}},function(){a.d.checked={after:["value","attr"],init:function(b,c,d){function e(){return d.has("checkedValue")?a.a.c(d.get("checkedValue")):b.value}function g(){var k=b.checked,g=s?e():k;if(l&&(!m||k)){var h=a.i.p(c);f?p!==g?(k&&(a.a.V(h,g,!0),a.a.V(h,p,!1)),p=g):a.a.V(h,g,k):a.g.oa(h,d,"checked",g,!0)}}function h(){var d=a.a.c(c());b.checked=f?0<=a.a.l(d,e()):k?d:e()===d}var k="checkbox"==b.type,m="radio"==b.type;if(k||m){var f=k&&a.a.c(c())instanceof Array,p=f?e():q,s=m||f,l=!1;m&&!b.name&&a.d.uniqueName.init(b,function(){return!0}),a.h(g,null,{I:b}),a.a.r(b,"click",g),a.h(h,null,{I:b}),l=!0}}},a.g.U.checked=!0,a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}}(),a.d.css={update:function(b,c){var d=a.a.c(c());"object"==typeof d?a.a.K(d,function(c,d){d=a.a.c(d),a.a.ma(b,c,d)}):(d=String(d||""),a.a.ma(b,b.__ko__cssValue,!1),b.__ko__cssValue=d,a.a.ma(b,d,!0))}},a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):d||b.disabled||(b.disabled=!0)}},a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}},a.d.event={init:function(b,c,d,e,g){var h=c()||{};a.a.K(h,function(k){"string"==typeof k&&a.a.r(b,k,function(b){var f,h=c()[k];if(h){try{var s=a.a.Q(arguments);e=g.$data,s.unshift(e),f=h.apply(e,s)}finally{!0!==f&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(k+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}},a.d.foreach={hb:function(b){return function(){var c=b(),d=a.a.Ha(c);return d&&"number"!=typeof d.length?(a.a.c(c),{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.J.Aa}):{foreach:c,templateEngine:a.J.Aa}}},init:function(b,c){return a.d.template.init(b,a.d.foreach.hb(c))},update:function(b,c,d,e,g){return a.d.template.update(b,a.d.foreach.hb(c),d,e,g)}},a.g.Y.foreach=!1,a.e.P.foreach=!0,a.d.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var g=b.ownerDocument;if("activeElement"in g){var f;try{f=g.activeElement}catch(h){f=g.body}e=f===b}g=c(),a.g.oa(g,d,"hasfocus",e,!0),b.__ko_hasfocusLastValue=e,b.__ko_hasfocusUpdating=!1}var g=e.bind(null,!0),h=e.bind(null,!1);a.a.r(b,"focus",g),a.a.r(b,"focusin",g),a.a.r(b,"blur",h),a.a.r(b,"focusout",h)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),a.i.p(a.a.da,null,[b,d?"focusin":"focusout"]))}},a.g.U.hasfocus=!0,a.d.hasFocus=a.d.hasfocus,a.g.U.hasFocus=!0,a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ka(b,c())}};var L=a.a.f.D();H("if"),H("ifnot",!1,!0),H("with",!0,!1,function(a,c){return a.createChildContext(c)}),a.d.options={init:function(b){if("select"!==a.a.v(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,c,d){function e(){return a.a.ga(b.options,function(a){return a.selected})}function g(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function h(c,d){if(p.length){var f=0<=a.a.l(p,a.k.o(d[0]));a.a.qb(d[0],f),l&&!f&&a.i.p(a.a.da,null,[b,"change"])}}var k=0!=b.length&&b.multiple?b.scrollTop:null;c=a.a.c(c());var p,m=d.get("optionsIncludeDestroyed"),f={};if(p=b.multiple?a.a.ha(e(),a.k.o):0<=b.selectedIndex?[a.k.o(b.options[b.selectedIndex])]:[],c){void 0===c.length&&(c=[c]);var s=a.a.ga(c,function(b){return m||b===q||null===b||!a.a.c(b._destroy)});d.has("optionsCaption")&&null!==(c=a.a.c(d.get("optionsCaption")))&&c!==q&&s.unshift(f)}else c=[];var l=!1;c=h,d.has("optionsAfterRender")&&(c=function(b,c){h(0,c),a.i.p(d.get("optionsAfterRender"),null,[c[0],b!==f?b:q])}),a.a.Ja(b,s,function(b,c,e){return e.length&&(p=e[0].selected?[a.k.o(e[0])]:[],l=!0),c=w.createElement("option"),b===f?(a.a.Ma(c,d.get("optionsCaption")),a.k.na(c,q)):(e=g(b,d.get("optionsValue"),b),a.k.na(c,a.a.c(e)),b=g(b,d.get("optionsText"),e),a.a.Ma(c,b)),[c]},null,c),(b.multiple?p.length&&e().length<p.length:p.length&&0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex])!==p[0]:p.length||0<=b.selectedIndex)&&a.i.p(a.a.da,null,[b,"change"]),a.a.Hb(b),k&&20<Math.abs(k-b.scrollTop)&&(b.scrollTop=k)}},a.d.options.Ea=a.a.f.D(),a.d.selectedOptions={after:["options","foreach"],init:function(b,c,d){a.a.r(b,"change",function(){var e=c(),g=[];a.a.n(b.getElementsByTagName("option"),function(b){b.selected&&g.push(a.k.o(b))}),a.g.oa(e,d,"selectedOptions",g)})},update:function(b,c){if("select"!=a.a.v(b))throw Error("values binding applies only to SELECT elements");var d=a.a.c(c());d&&"number"==typeof d.length&&a.a.n(b.getElementsByTagName("option"),function(b){var c=0<=a.a.l(d,a.k.o(b));a.a.qb(b,c)})}},a.g.U.selectedOptions=!0,a.d.style={update:function(b,c){var d=a.a.c(c()||{});a.a.K(d,function(c,d){d=a.a.c(d),b.style[c]=d||""})}},a.d.submit={init:function(b,c,d,e,g){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");a.a.r(b,"submit",function(a){var d,e=c();try{d=e.call(g.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}},a.d.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ma(b,c())}},a.e.P.text=!0,a.d.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.d.uniqueName.Bb;a.a.pb(b,d)}}},a.d.uniqueName.Bb=0,a.d.value={after:["options","foreach"],init:function(b,c,d){function e(){k=!1;var e=c(),f=a.k.o(b);a.g.oa(e,d,"value",f)}var g=["change"],h=d.get("valueUpdate"),k=!1;h&&("string"==typeof h&&(h=[h]),a.a.X(g,h),g=a.a.Va(g)),!a.a.ja||"input"!=b.tagName.toLowerCase()||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.l(g,"propertychange")||(a.a.r(b,"propertychange",function(){k=!0}),a.a.r(b,"blur",function(){k&&e()})),a.a.n(g,function(c){var d=e;a.a.ac(c,"after")&&(d=function(){setTimeout(e,0)},c=c.substring(5)),a.a.r(b,c,d)})},update:function(b,c){var d="select"===a.a.v(b),e=a.a.c(c()),g=a.k.o(b);e!==g&&(g=function(){a.k.na(b,e)},g(),d&&(e!==a.k.o(b)?a.i.p(a.a.da,null,[b,"change"]):setTimeout(g,0)))}},a.g.U.value=!0,a.d.visible={update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}},function(b){a.d[b]={init:function(c,d,e,g,h){return a.d.event.init.call(this,c,function(){var a={};return a[b]=d(),a},e,g,h)}}}("click"),a.w=function(){},a.w.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},a.w.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},a.w.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.m.j(d)}if(1==b.nodeType||8==b.nodeType)return new a.m.W(b);throw Error("Unknown template type: "+b)},a.w.prototype.renderTemplate=function(a,c,d,e){return a=this.makeTemplateSource(a,e),this.renderTemplateSource(a,c,d)},a.w.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting||this.makeTemplateSource(a,c).data("isRewritten")},a.w.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d),c=c(a.text()),a.text(c),a.data("isRewritten",!0)},a.b("templateEngine",a.w),a.Oa=function(){function b(b,c,d,k){b=a.g.Ga(b);for(var m=a.g.Y,f=0;f<b.length;f++){var p=b[f].key;if(m.hasOwnProperty(p)){var s=m[p];if("function"==typeof s){if(p=s(b[f].value))throw Error(p)}else if(!s)throw Error("This template engine does not support the '"+p+"' binding within its templates")}}return d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.g.ka(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')",k.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{Ib:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Oa.Ub(b,c)},d)},Ub:function(a,g){return a.replace(c,function(a,c,d,f,e){return b(e,c,d,g)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",g)})},yb:function(b,c){return a.u.Ca(function(d,k){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.pa(m,b,k)})}}}(),a.b("__tr_ambtns",a.Oa.yb),function(){a.m={},a.m.j=function(a){this.j=a},a.m.j.prototype.text=function(){var b=a.a.v(this.j),b="script"===b?"text":"textarea"===b?"value":"innerHTML";if(0==arguments.length)return this.j[b];var c=arguments[0];"innerHTML"===b?a.a.Ka(this.j,c):this.j[b]=c};var b=a.a.f.D()+"_";a.m.j.prototype.data=function(c){if(1===arguments.length)return a.a.f.get(this.j,b+c);a.a.f.set(this.j,b+c,arguments[1])};var c=a.a.f.D();a.m.W=function(a){this.j=a},a.m.W.prototype=new a.m.j,a.m.W.prototype.text=function(){if(0==arguments.length){var b=a.a.f.get(this.j,c)||{};return b.Pa===q&&b.sa&&(b.Pa=b.sa.innerHTML),b.Pa}a.a.f.set(this.j,c,{Pa:arguments[0]})},a.m.j.prototype.nodes=function(){if(0==arguments.length)return(a.a.f.get(this.j,c)||{}).sa;a.a.f.set(this.j,c,{sa:arguments[0]})},a.b("templateSources",a.m),a.b("templateSources.domElement",a.m.j),a.b("templateSources.anonymousTemplate",a.m.W)}(),function(){function b(b,c,d){var e;for(c=a.e.nextSibling(c);b&&(e=b)!==c;)b=a.e.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var f=c[0],e=c[c.length-1],g=f.parentNode,h=a.H.instance,n=h.preprocessNode;if(n){if(b(f,e,function(a,b){var c=a.previousSibling,d=n.call(h,a);d&&(a===f&&(f=d[0]||b),a===e&&(e=d[d.length-1]||c))}),c.length=0,!f)return;f===e?c.push(f):(c.push(f,e),a.a.$(c,g))}b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.Sa(d,b)}),b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.u.vb(b,[d])}),a.a.$(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,s){s=s||{};var l=b&&d(b),l=l&&l.ownerDocument,n=s.templateEngine||g;if(a.Oa.Ib(f,n,l),f=n.renderTemplate(f,h,s,l),"number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");switch(l=!1,e){case"replaceChildren":a.e.S(b,f),l=!0;break;case"replaceNode":a.a.nb(b,f),l=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e)}return l&&(c(f,h),s.afterRender&&a.i.p(s.afterRender,null,[f,h.$data])),f}var g;a.La=function(b){if(b!=q&&!(b instanceof a.w))throw Error("templateEngine must inherit from ko.templateEngine");g=b},a.Ia=function(b,c,f,h,s){if(f=f||{},(f.templateEngine||g)==q)throw Error("Set a template engine before calling renderTemplate");if(s=s||"replaceChildren",h){var l=d(h);return a.h(function(){var g=c&&c instanceof a.G?c:new a.G(a.a.c(c)),r="function"==typeof b?b(g.$data,g):b,g=e(h,s,r,g,f);"replaceNode"==s&&(h=g,l=d(h))},null,{ua:function(){return!l||!a.a.va(l)},I:l&&"replaceNode"==s?l.parentNode:l})}return a.u.Ca(function(d){a.Ia(b,c,f,d,"replaceNode")})},a.$b=function(b,d,f,g,h){function l(a,b){c(b,r),f.afterRender&&f.afterRender(b,a)}function n(a,c){return r=h.createChildContext(a,f.as,function(a){a.$index=c}),e(null,"ignoreTargetNode","function"==typeof b?b(a,r):b,r,f)}var r;return a.h(function(){var b=a.a.c(d)||[];void 0===b.length&&(b=[b]),b=a.a.ga(b,function(b){return f.includeDestroyed||b===q||null===b||!a.a.c(b._destroy)}),a.i.p(a.a.Ja,null,[g,b,n,f,l])},null,{I:g})};var h=a.a.f.D();a.d.template={init:function(b,c){var d=a.a.c(c());return"string"==typeof d||d.name?a.e.Z(b):(d=a.e.childNodes(b),d=a.a.Vb(d),new a.m.W(b).nodes(d)),{controlsDescendantBindings:!0}},update:function(b,c,d,e,g){c=a.a.c(c()),d={},e=!0;var l,n=null;"string"!=typeof c&&(d=c,c=a.a.c(d.name),"if"in d&&(e=a.a.c(d.if)),e&&"ifnot"in d&&(e=!a.a.c(d.ifnot)),l=a.a.c(d.data)),"foreach"in d?n=a.$b(c||b,e&&d.foreach||[],d,b,g):e?(g="data"in d?g.createChildContext(l,d.as):g,n=a.Ia(c||b,g,d,b)):a.e.Z(b),g=n,(l=a.a.f.get(b,h))&&"function"==typeof l.B&&l.B(),a.a.f.set(b,h,g&&g.aa()?g:q)}},a.g.Y.template=function(b){return b=a.g.Ga(b),1==b.length&&b[0].unknown||a.g.Sb(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"},a.e.P.template=!0}(),a.b("setTemplateEngine",a.La),a.b("renderTemplate",a.Ia),a.a.ra=function(){function a(b,d,e,g,h){var p,l,t,u,w,k=Math.min,m=Math.max,f=[],q=b.length,n=d.length,r=n-q||1,v=q+n+1;for(p=0;p<=q;p++)for(u=t,f.push(t=[]),w=k(n,p+r),l=m(0,p-1);l<=w;l++)t[l]=l?p?b[p-1]===d[l-1]?u[l-1]:k(u[l]||v,t[l-1]||v)+1:l+1:p+1;for(k=[],m=[],r=[],p=q,l=n;p||l;)n=f[p][l]-1,l&&n===f[p][l-1]?m.push(k[k.length]={status:e,value:d[--l],index:l}):p&&n===f[p-1][l]?r.push(k[k.length]={status:g,value:b[--p],index:p}):(--l,--p,h.sparse||k.push({status:"retained",value:d[l]}));if(m.length&&r.length){b=10*q;var z;for(d=e=0;(h.dontLimitMoves||d<b)&&(z=m[e]);e++){for(g=0;f=r[g];g++)if(z.value===f.value){z.moved=f.index,f.moved=z.index,r.splice(g,1),d=g=0;break}d+=g}}return k.reverse()}return function(c,d,e){return e="boolean"==typeof e?{dontLimitMoves:e}:e||{},c=c||[],d=d||[],c.length<=d.length?a(c,d,"added","deleted",e):a(d,c,"deleted","added",e)}}(),a.b("utils.compareArrays",a.a.ra),function(){function b(b,c,g,h,k){var m=[],f=a.h(function(){var f=c(g,k,a.a.$(m,b))||[];0<m.length&&(a.a.nb(m,f),h&&a.i.p(h,null,[g,f,k])),
+m.splice(0,m.length),a.a.X(m,f)},null,{I:b,ua:function(){return!a.a.Ra(m)}});return{R:m,h:f.aa()?f:q}}var c=a.a.f.D();a.a.Ja=function(d,e,g,h,k){function m(b,c){x=s[c],t!==c&&(z[b]=x),x.za(t++),a.a.$(x.R,d),r.push(x),w.push(x)}function f(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.n(c[d].R,function(a){b(a,d,c[d].fa)})}e=e||[],h=h||{};var p=a.a.f.get(d,c)===q,s=a.a.f.get(d,c)||[],l=a.a.ha(s,function(a){return a.fa}),n=a.a.ra(l,e,h.dontLimitMoves),r=[],v=0,t=0,u=[],w=[];e=[];for(var x,y,B,z=[],l=[],A=0;y=n[A];A++)switch(B=y.moved,y.status){case"deleted":B===q&&(x=s[v],x.h&&x.h.B(),u.push.apply(u,a.a.$(x.R,d)),h.beforeRemove&&(e[A]=x,w.push(x))),v++;break;case"retained":m(A,v++);break;case"added":B!==q?m(A,B):(x={fa:y.value,za:a.q(t++)},r.push(x),w.push(x),p||(l[A]=x))}f(h.beforeMove,z),a.a.n(u,h.beforeRemove?a.L:a.removeNode);for(var C,A=0,p=a.e.firstChild(d);x=w[A];A++){for(x.R||a.a.extend(x,b(d,g,x.fa,k,x.za)),v=0;n=x.R[v];p=n.nextSibling,C=n,v++)n!==p&&a.e.eb(d,n,C);!x.Ob&&k&&(k(x.fa,x.R,x.za),x.Ob=!0)}f(h.beforeRemove,e),f(h.afterMove,z),f(h.afterAdd,l),a.a.f.set(d,c,r)}}(),a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.Ja),a.J=function(){this.allowTemplateRewriting=!1},a.J.prototype=new a.w,a.J.prototype.renderTemplateSource=function(b){var c=(9>a.a.ja?0:b.nodes)?b.nodes():null;return c?a.a.Q(c.cloneNode(!0).childNodes):(b=b.text(),a.a.Fa(b))},a.J.Aa=new a.J,a.La(a.J.Aa),a.b("nativeTemplateEngine",a.J),function(){a.Ba=function(){var a=this.Rb=function(){if(void 0===u||!u.tmpl)return 0;try{if(0<=u.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,g){if(g=g||{},2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");return h||(h=b.text()||"",h=u.template(null,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),b.data("precompiled",h)),b=[e.$data],e=u.extend({koBindingContext:e},g.templateOptions),e=u.tmpl(h,b,e),e.appendTo(w.createElement("div")),u.fragments={},e},this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"},this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"<\/script>")},0<a&&(u.tmpl.tag.ko_code={open:"__.push($1 || '');"},u.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},a.Ba.prototype=new a.w;var b=new a.Ba;0<b.Rb&&a.La(b),a.b("jqueryTmplTemplateEngine",a.Ba)}()})}()}(),function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,v=e.reduce,h=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,w=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.5.1";var A=j.each=j.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(j.has(n,a)&&t.call(e,n[a],a,n)===r)return};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var E="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduce===v)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(E);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduceRight===h)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(E);return r},j.find=j.detect=function(n,t,r){var e;return O(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var O=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null!=n&&(y&&n.indexOf===y?-1!=n.indexOf(t):O(n,function(n){return n===t}))},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,function(n){return n[t]})},j.where=function(n,t,r){return j.isEmpty(t)?r?void 0:[]:j[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},j.findWhere=function(n,t){return j.where(n,t,!0)},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);if(!t&&j.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>e.computed&&(e={value:n,computed:a})}),e.value},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);if(!t&&j.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a<e.computed&&(e={value:n,computed:a})}),e.value},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e};var F=function(n){return j.isFunction(n)?n:function(t){return t[n]}};j.sortBy=function(n,t,r){var e=F(t);return j.pluck(j.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||void 0===r)return 1;if(e>r||void 0===e)return-1}return n.index<t.index?-1:1}),"value")};var k=function(n,t,r,e){var u={},i=F(null==t?j.identity:t);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};j.groupBy=function(n,t,r){return k(n,t,r,function(n,t,r){(j.has(n,t)?n[t]:n[t]=[]).push(r)})},j.countBy=function(n,t,r){return k(n,t,r,function(n,t){j.has(n,t)||(n[t]=0),n[t]++})},j.sortedIndex=function(n,t,r,e){r=null==r?j.identity:F(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var R=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return R(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.indexOf(t,n)>=0})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var M=function(){};j.bind=function(n,t){var r,e;if(w&&n.bind===w)return w.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));M.prototype=n.prototype;var u=new M;M.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=!1===r.leading?0:new Date,a=null,i=n.apply(e,u)};return function(){var l=new Date;o||!1!==r.leading||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u)):a||!1===r.trailing||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u=null;return function(){var i=this,a=arguments,o=function(){u=null,r||(e=n.apply(i,a))},c=r&&!u;return clearTimeout(u),u=setTimeout(o,t),c&&(e=n.apply(i,a)),e}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push(n[r]);return t},j.pairs=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push([r,n[r]]);return t},j.invert=function(n){var t={};for(var r in n)j.has(n,r)&&(t[n[r]]=r);return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)void 0===n[r]&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return!0===n||!1===n||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return void 0===n},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var I={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};I.unescape=j.invert(I.escape);var T={escape:new RegExp("["+j.keys(I.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(I.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(T[n],function(t){return I[n][t]})}}),j.result=function(n,t){if(null!=n){var r=n[t];return j.isFunction(r)?r.call(n):r}},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","\t":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}.call(this),function($,window,document,undefined){function Coords(obj){return obj[0]&&$.isPlainObject(obj[0])?this.data=obj[0]:this.el=obj,this.isCoords=!0,this.coords={},this.init(),this}var fn=Coords.prototype;fn.init=function(){this.set(),this.original_coords=this.get()},fn.set=function(update,not_update_offsets){var el=this.el;if(el&&!update&&(this.data=el.offset(),this.data.width=el.width(),this.data.height=el.height()),el&&update&&!not_update_offsets){var offset=el.offset();this.data.top=offset.top,this.data.left=offset.left}var d=this.data;return this.coords.x1=d.left,this.coords.y1=d.top,this.coords.x2=d.left+d.width,this.coords.y2=d.top+d.height,this.coords.cx=d.left+d.width/2,this.coords.cy=d.top+d.height/2,this.coords.width=d.width,this.coords.height=d.height,this.coords.el=el||!1,this},fn.update=function(data){if(!data&&!this.el)return this;if(data){var new_data=$.extend({},this.data,data);return this.data=new_data,this.set(!0,!0)}return this.set(!0),this},fn.get=function(){return this.coords},$.fn.coords=function(){if(this.data("coords"))return this.data("coords");var ins=new Coords(this,arguments[0]);return this.data("coords",ins),ins}}(jQuery,window,document),function($,window,document,undefined){function Collision(el,colliders,options){this.options=$.extend(defaults,options),this.$element=el,this.last_colliders=[],this.last_colliders_coords=[],"string"==typeof colliders||colliders instanceof jQuery?this.$colliders=$(colliders,this.options.colliders_context).not(this.$element):this.colliders=$(colliders),this.init()}var defaults={colliders_context:document.body},fn=Collision.prototype;fn.init=function(){this.find_collisions()},fn.overlaps=function(a,b){var x=!1,y=!1;return(b.x1>=a.x1&&b.x1<=a.x2||b.x2>=a.x1&&b.x2<=a.x2||a.x1>=b.x1&&a.x2<=b.x2)&&(x=!0),(b.y1>=a.y1&&b.y1<=a.y2||b.y2>=a.y1&&b.y2<=a.y2||a.y1>=b.y1&&a.y2<=b.y2)&&(y=!0),x&&y},fn.detect_overlapping_region=function(a,b){var regionX="",regionY="";return a.y1>b.cy&&a.y1<b.y2&&(regionX="N"),a.y2>b.y1&&a.y2<b.cy&&(regionX="S"),a.x1>b.cx&&a.x1<b.x2&&(regionY="W"),a.x2>b.x1&&a.x2<b.cx&&(regionY="E"),regionX+regionY||"C"},fn.calculate_overlapped_area_coords=function(a,b){var x1=Math.max(a.x1,b.x1),y1=Math.max(a.y1,b.y1),x2=Math.min(a.x2,b.x2),y2=Math.min(a.y2,b.y2);return $({left:x1,top:y1,width:x2-x1,height:y2-y1}).coords().get()},fn.calculate_overlapped_area=function(coords){return coords.width*coords.height},fn.manage_colliders_start_stop=function(new_colliders_coords,start_callback,stop_callback){for(var last=this.last_colliders_coords,i=0,il=last.length;i<il;i++)-1===$.inArray(last[i],new_colliders_coords)&&start_callback.call(this,last[i]);for(var j=0,jl=new_colliders_coords.length;j<jl;j++)-1===$.inArray(new_colliders_coords[j],last)&&stop_callback.call(this,new_colliders_coords[j])},fn.find_collisions=function(player_data_coords){for(var self=this,colliders_coords=[],colliders_data=[],$colliders=this.colliders||this.$colliders,count=$colliders.length,player_coords=self.$element.coords().update(player_data_coords||!1).get();count--;){var $collider=self.$colliders?$($colliders[count]):$colliders[count],$collider_coords_ins=$collider.isCoords?$collider:$collider.coords(),collider_coords=$collider_coords_ins.get();if(self.overlaps(player_coords,collider_coords)){var region=self.detect_overlapping_region(player_coords,collider_coords);if("C"===region){var area_coords=self.calculate_overlapped_area_coords(player_coords,collider_coords),area=self.calculate_overlapped_area(area_coords),collider_data={area:area,area_coords:area_coords,region:region,coords:collider_coords,player_coords:player_coords,el:$collider};self.options.on_overlap&&self.options.on_overlap.call(this,collider_data),colliders_coords.push($collider_coords_ins),colliders_data.push(collider_data)}}}return(self.options.on_overlap_stop||self.options.on_overlap_start)&&this.manage_colliders_start_stop(colliders_coords,self.options.on_overlap_start,self.options.on_overlap_stop),this.last_colliders_coords=colliders_coords,colliders_data},fn.get_closest_colliders=function(player_data_coords){var colliders=this.find_collisions(player_data_coords);return colliders.sort(function(a,b){return"C"===a.region&&"C"===b.region?a.coords.y1<b.coords.y1||a.coords.x1<b.coords.x1?-1:1:(a.area,b.area,1)}),colliders},$.fn.collision=function(collider,options){return new Collision(this,collider,options)}}(jQuery,window,document),function(window,undefined){window.debounce=function(func,wait,immediate){var timeout;return function(){var context=this,args=arguments,later=function(){timeout=null,immediate||func.apply(context,args)};immediate&&!timeout&&func.apply(context,args),clearTimeout(timeout),timeout=setTimeout(later,wait)}},window.throttle=function(func,wait){var context,args,timeout,throttling,more,result,whenDone=debounce(function(){more=throttling=!1},wait);return function(){context=this,args=arguments;var later=function(){timeout=null,more&&func.apply(context,args),whenDone()};return timeout||(timeout=setTimeout(later,wait)),throttling?more=!0:result=func.apply(context,args),whenDone(),throttling=!0,result}}}(window),function($,window,document,undefined){function Draggable(el,options){this.options=$.extend({},defaults,options),this.$body=$(document.body),this.$container=$(el),this.$dragitems=$(this.options.items,this.$container),this.is_dragging=!1,this.player_min_left=0+this.options.offset_left,this.init()}var defaults={items:".gs_w",distance:1,limit:!0,offset_left:0,autoscroll:!0,ignore_dragging:["INPUT","TEXTAREA","SELECT","BUTTON"],handle:null,container_width:0},$window=$(window),isTouch=!!("ontouchstart"in window),pointer_events={start:isTouch?"touchstart.gridster-draggable":"mousedown.gridster-draggable",move:isTouch?"touchmove.gridster-draggable":"mousemove.gridster-draggable",end:isTouch?"touchend.gridster-draggable":"mouseup.gridster-draggable"},fn=Draggable.prototype;fn.init=function(){this.calculate_positions(),this.$container.css("position","relative"),this.disabled=!1,this.events(),$(window).bind("resize.gridster-draggable",throttle($.proxy(this.calculate_positions,this),200))},fn.setOptions=function(options){this.options=$.extend(this.options,options)},fn.events=function(){this.$container.on("selectstart.gridster-draggable",$.proxy(this.on_select_start,this)),this.$container.on(pointer_events.start,this.options.items,$.proxy(this.drag_handler,this)),this.$body.on(pointer_events.end,$.proxy(function(e){this.is_dragging=!1,this.disabled||(this.$body.off(pointer_events.move),this.drag_start&&this.on_dragstop(e))},this))},fn.get_actual_pos=function($el){return $el.position()},fn.get_mouse_pos=function(e){if(isTouch){var oe=e.originalEvent;e=oe.touches.length?oe.touches[0]:oe.changedTouches[0]}return{left:e.clientX,top:e.clientY}},fn.get_offset=function(e){e.preventDefault();var mouse_actual_pos=this.get_mouse_pos(e),diff_x=Math.round(mouse_actual_pos.left-this.mouse_init_pos.left),diff_y=Math.round(mouse_actual_pos.top-this.mouse_init_pos.top),left=Math.round(this.el_init_offset.left+diff_x-this.baseX),top=Math.round(this.el_init_offset.top+diff_y-this.baseY+this.scrollOffset);return this.options.limit&&(left>this.player_max_left?left=this.player_max_left:left<this.player_min_left&&(left=this.player_min_left)),{left:left,top:top,mouse_left:mouse_actual_pos.left,mouse_top:mouse_actual_pos.top}},fn.manage_scroll=function(offset){var nextScrollTop,scrollTop=$window.scrollTop(),min_window_y=scrollTop,max_window_y=min_window_y+this.window_height,mouse_down_zone=max_window_y-50,mouse_up_zone=min_window_y+50,abs_mouse_top=(offset.mouse_left,min_window_y+offset.mouse_top),max_player_y=this.doc_height-this.window_height+this.player_height;abs_mouse_top>=mouse_down_zone&&(nextScrollTop=scrollTop+30)<max_player_y&&($window.scrollTop(nextScrollTop),this.scrollOffset=this.scrollOffset+30),abs_mouse_top<=mouse_up_zone&&(nextScrollTop=scrollTop-30)>0&&($window.scrollTop(nextScrollTop),this.scrollOffset=this.scrollOffset-30)},fn.calculate_positions=function(e){this.window_height=$window.height()},fn.drag_handler=function(e){e.target.nodeName;if(!this.disabled&&(1===e.which||isTouch)&&!this.ignore_drag(e)){var self=this,first=!0;return this.$player=$(e.currentTarget),this.el_init_pos=this.get_actual_pos(this.$player),this.mouse_init_pos=this.get_mouse_pos(e),this.offsetY=this.mouse_init_pos.top-this.el_init_pos.top,this.$body.on(pointer_events.move,function(mme){var mouse_actual_pos=self.get_mouse_pos(mme),diff_x=Math.abs(mouse_actual_pos.left-self.mouse_init_pos.left),diff_y=Math.abs(mouse_actual_pos.top-self.mouse_init_pos.top);return(diff_x>self.options.distance||diff_y>self.options.distance)&&(first?(first=!1,self.on_dragstart.call(self,mme),!1):(!0===self.is_dragging&&self.on_dragmove.call(self,mme),!1))}),!!isTouch&&void 0}},fn.on_dragstart=function(e){e.preventDefault(),this.drag_start=!0,this.is_dragging=!0;var offset=this.$container.offset();this.baseX=Math.round(offset.left),this.baseY=Math.round(offset.top),this.doc_height=$(document).height(),"clone"===this.options.helper?(this.$helper=this.$player.clone().appendTo(this.$container).addClass("helper"),this.helper=!0):this.helper=!1,this.scrollOffset=0,this.el_init_offset=this.$player.offset(),this.player_width=this.$player.width(),this.player_height=this.$player.height();var container_width=this.options.container_width||this.$container.width();return this.player_max_left=container_width-this.player_width+this.options.offset_left,this.options.start&&this.options.start.call(this.$player,e,{helper:this.helper?this.$helper:this.$player}),!1},fn.on_dragmove=function(e){var offset=this.get_offset(e);this.options.autoscroll&&this.manage_scroll(offset),(this.helper?this.$helper:this.$player).css({position:"absolute",left:offset.left,top:offset.top});var ui={position:{left:offset.left,top:offset.top}};return this.options.drag&&this.options.drag.call(this.$player,e,ui),!1},fn.on_dragstop=function(e){var offset=this.get_offset(e);this.drag_start=!1;var ui={position:{left:offset.left,top:offset.top}};return this.options.stop&&this.options.stop.call(this.$player,e,ui),this.helper&&this.$helper.remove(),!1},fn.on_select_start=function(e){if(!this.disabled&&!this.ignore_drag(e))return!1},fn.enable=function(){this.disabled=!1},fn.disable=function(){this.disabled=!0},fn.destroy=function(){this.disable(),this.$container.off(".gridster-draggable"),this.$body.off(".gridster-draggable"),$(window).off(".gridster-draggable"),$.removeData(this.$container,"drag")},fn.ignore_drag=function(event){return this.options.handle?!$(event.target).is(this.options.handle):$.inArray(event.target.nodeName,this.options.ignore_dragging)>=0},$.fn.drag=function(options){return this.each(function(){$.data(this,"drag")?$.data(this,"drag").setOptions(options):$.data(this,"drag",new Draggable(this,options))})}}(jQuery,window,document),function($,window,document,undefined){function Gridster(el,options){this.options=$.extend(!0,defaults,options),this.$el=$(el),this.$wrapper=this.$el.parent(),this.$widgets=this.$el.children(this.options.widget_selector).addClass("gs_w"),this.panes=[],this.$changed=$([]),this.wrapper_width=this.$wrapper.width(),this.min_widget_width=2*this.options.widget_margins[0]+this.options.widget_base_dimensions[0],this.min_widget_height=2*this.options.widget_margins[1]+this.options.widget_base_dimensions[1],this.$style_tags=$([]),this.init()}var defaults={namespace:"",widget_selector:"li",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,max_cols:null,min_rows:15,max_size_x:6,autogenerate_stylesheet:!0,avoid_overlapped_widgets:!0,serialize_params:function($w,wgd){return{col:wgd.col,row:wgd.row,size_x:wgd.size_x,size_y:wgd.size_y}},collision:{},draggable:{distance:4}};Gridster.generated_stylesheets=[];var fn=Gridster.prototype;fn.init=function(){this.generate_grid_and_stylesheet(),this.get_widgets_from_DOM(),this.set_dom_grid_height(),this.$wrapper.addClass("ready"),this.draggable(),$(window).bind("resize.gridster",throttle($.proxy(this.recalculate_faux_grid,this),200))},fn.disable=function(){return this.$wrapper.find(".player-revert").removeClass("player-revert"),this.drag_api.disable(),this},fn.enable=function(){return this.drag_api.enable(),this},fn.add_widget=function(html,size_x,size_y,col,row){var pos;size_x||(size_x=1),size_y||(size_y=1),!col&!row?pos=this.next_position(size_x,size_y):(pos={col:col,row:row},this.empty_cells(col,row,size_x,size_y));var $w=$(html).attr({"data-col":pos.col,"data-row":pos.row,"data-sizex":size_x,"data-sizey":size_y}).addClass("gs_w").appendTo(this.$el).hide();return this.$widgets=this.$widgets.add($w),this.register_widget($w),this.add_faux_rows(pos.size_y),this.set_dom_grid_height(),$w.fadeIn()},fn.resize_widget=function($widget,size_x,size_y,callback){var wgd=$widget.coords().grid;size_x||(size_x=wgd.size_x),size_y||(size_y=wgd.size_y),size_x>this.cols&&(size_x=this.cols);var old_cells_occupied=this.get_cells_occupied(wgd),old_size_x=wgd.size_x,old_size_y=wgd.size_y,old_col=wgd.col,new_col=old_col;if(old_col+size_x-1>this.cols){var diff=old_col+(size_x-1)-this.cols,c=old_col-diff;new_col=Math.max(1,c)}var new_grid_data={col:new_col,row:wgd.row,size_x:size_x,size_y:size_y},new_cells_occupied=this.get_cells_occupied(new_grid_data),empty_cols=[];$.each(old_cells_occupied.cols,function(i,col){-1===$.inArray(col,new_cells_occupied.cols)&&empty_cols.push(col)});var occupied_cols=[];$.each(new_cells_occupied.cols,function(i,col){-1===$.inArray(col,old_cells_occupied.cols)&&occupied_cols.push(col)});var empty_rows=[];$.each(old_cells_occupied.rows,function(i,row){-1===$.inArray(row,new_cells_occupied.rows)&&empty_rows.push(row)});var occupied_rows=[];if($.each(new_cells_occupied.rows,function(i,row){-1===$.inArray(row,old_cells_occupied.rows)&&occupied_rows.push(row)}),this.remove_from_gridmap(wgd),occupied_cols.length){var cols_to_empty=[new_col,wgd.row,size_x,Math.min(old_size_y,size_y),$widget];this.empty_cells.apply(this,cols_to_empty)}if(occupied_rows.length){var rows_to_empty=[new_col,wgd.row,size_x,size_y,$widget];this.empty_cells.apply(this,rows_to_empty)}if(wgd.col=new_col,wgd.size_x=size_x,wgd.size_y=size_y,this.add_to_gridmap(new_grid_data,$widget),$widget.data("coords").update({width:size_x*this.options.widget_base_dimensions[0]+(size_x-1)*this.options.widget_margins[0]*2,height:size_y*this.options.widget_base_dimensions[1]+(size_y-1)*this.options.widget_margins[1]*2}),size_y>old_size_y&&this.add_faux_rows(size_y-old_size_y),size_x>old_size_x&&this.add_faux_cols(size_x-old_size_x),$widget.attr({"data-col":new_col,"data-sizex":size_x,"data-sizey":size_y}),empty_cols.length){var cols_to_remove_holes=[empty_cols[0],wgd.row,empty_cols.length,Math.min(old_size_y,size_y),$widget];this.remove_empty_cells.apply(this,cols_to_remove_holes)}if(empty_rows.length){var rows_to_remove_holes=[new_col,wgd.row,size_x,size_y,$widget];this.remove_empty_cells.apply(this,rows_to_remove_holes)}return callback&&callback.call(this,size_x,size_y),$widget},fn.empty_cells=function(col,row,size_x,size_y,$exclude){return this.widgets_below({col:col,row:row-size_y,size_x:size_x,size_y:size_y}).not($exclude).each($.proxy(function(i,w){var wgd=$(w).coords().grid;if(wgd.row<=row+size_y-1){var diff=row+size_y-wgd.row;this.move_widget_down($(w),diff)}},this)),this.set_dom_grid_height(),this},fn.remove_empty_cells=function(col,row,size_x,size_y,exclude){return this.widgets_below({col:col,row:row,size_x:size_x,size_y:size_y}).not(exclude).each($.proxy(function(i,widget){this.move_widget_up($(widget),size_y)},this)),this.set_dom_grid_height(),this},fn.next_position=function(size_x,size_y){
+size_x||(size_x=1),size_y||(size_y=1);for(var rows_l,ga=this.gridmap,cols_l=ga.length,valid_pos=[],c=1;c<cols_l;c++){rows_l=ga[c].length;for(var r=1;r<=rows_l;r++){this.can_move_to({size_x:size_x,size_y:size_y},c,r)&&valid_pos.push({col:c,row:r,size_y:size_y,size_x:size_x})}}return!!valid_pos.length&&this.sort_by_row_and_col_asc(valid_pos)[0]},fn.remove_widget=function(el,silent,callback){var $el=el instanceof jQuery?el:$(el),wgd=$el.coords().grid;$.isFunction(silent)&&(callback=silent,silent=!1),this.cells_occupied_by_placeholder={},this.$widgets=this.$widgets.not($el);var $nexts=this.widgets_below($el);this.remove_from_gridmap(wgd),$el.fadeOut($.proxy(function(){$el.remove(),silent||$nexts.each($.proxy(function(i,widget){this.move_widget_up($(widget),wgd.size_y)},this)),this.set_dom_grid_height(),callback&&callback.call(this,el)},this))},fn.remove_all_widgets=function(callback){return this.$widgets.each($.proxy(function(i,el){this.remove_widget(el,!0,callback)},this)),this},fn.serialize=function($widgets){$widgets||($widgets=this.$widgets);var result=[];return $widgets.each($.proxy(function(i,widget){result.push(this.options.serialize_params($(widget),$(widget).coords().grid))},this)),result},fn.serialize_changed=function(){return this.serialize(this.$changed)},fn.register_widget=function($el){var wgd={col:parseInt($el.attr("data-col"),10),row:parseInt($el.attr("data-row"),10),size_x:parseInt($el.attr("data-sizex"),10),size_y:parseInt($el.attr("data-sizey"),10),el:$el};return this.options.avoid_overlapped_widgets&&!this.can_move_to({size_x:wgd.size_x,size_y:wgd.size_y},wgd.col,wgd.row)&&(wgd=this.next_position(wgd.size_x,wgd.size_y),wgd.el=$el,$el.attr({"data-col":wgd.col,"data-row":wgd.row,"data-sizex":wgd.size_x,"data-sizey":wgd.size_y})),$el.data("coords",$el.coords()),$el.data("coords").grid=wgd,this.add_to_gridmap(wgd,$el),this},fn.update_widget_position=function(grid_data,value){return this.for_each_cell_occupied(grid_data,function(col,row){if(!this.gridmap[col])return this;this.gridmap[col][row]=value}),this},fn.remove_from_gridmap=function(grid_data){return this.update_widget_position(grid_data,!1)},fn.add_to_gridmap=function(grid_data,value){if(this.update_widget_position(grid_data,value||grid_data.el),grid_data.el){this.widgets_below(grid_data.el).each($.proxy(function(i,widget){this.move_widget_up($(widget))},this))}},fn.draggable=function(){var self=this,draggable_options=$.extend(!0,{},this.options.draggable,{offset_left:this.options.widget_margins[0],container_width:this.container_width,start:function(event,ui){self.$widgets.filter(".player-revert").removeClass("player-revert"),self.$player=$(this),self.$helper="clone"===self.options.draggable.helper?$(ui.helper):self.$player,self.helper=!self.$helper.is(self.$player),self.on_start_drag.call(self,event,ui),self.$el.trigger("gridster:dragstart")},stop:function(event,ui){self.on_stop_drag.call(self,event,ui),self.$el.trigger("gridster:dragstop")},drag:throttle(function(event,ui){self.on_drag.call(self,event,ui),self.$el.trigger("gridster:drag")},60)});return this.drag_api=this.$el.drag(draggable_options).data("drag"),this},fn.on_start_drag=function(event,ui){this.$helper.add(this.$player).add(this.$wrapper).addClass("dragging"),this.$player.addClass("player"),this.player_grid_data=this.$player.coords().grid,this.placeholder_grid_data=$.extend({},this.player_grid_data),this.$el.css("height",this.$el.height()+this.player_grid_data.size_y*this.min_widget_height);var colliders=this.faux_grid,coords=this.$player.data("coords").coords;this.cells_occupied_by_player=this.get_cells_occupied(this.player_grid_data),this.cells_occupied_by_placeholder=this.get_cells_occupied(this.placeholder_grid_data),this.last_cols=[],this.last_rows=[],this.collision_api=this.$helper.collision(colliders,this.options.collision),this.$preview_holder=$("<li />",{class:"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:coords.width,height:coords.height}}).appendTo(this.$el),this.options.draggable.start&&this.options.draggable.start.call(this,event,ui)},fn.on_drag=function(event,ui){if(null===this.$player)return!1;var abs_offset={left:ui.position.left+this.baseX,top:ui.position.top+this.baseY};this.colliders_data=this.collision_api.get_closest_colliders(abs_offset),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.helper&&this.$player&&this.$player.css({left:ui.position.left,top:ui.position.top}),this.options.draggable.drag&&this.options.draggable.drag.call(this,event,ui)},fn.on_stop_drag=function(event,ui){this.$helper.add(this.$player).add(this.$wrapper).removeClass("dragging"),ui.position.left=ui.position.left+this.baseX,ui.position.top=ui.position.top+this.baseY,this.colliders_data=this.collision_api.get_closest_colliders(ui.position),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.$player.addClass("player-revert").removeClass("player").attr({"data-col":this.placeholder_grid_data.col,"data-row":this.placeholder_grid_data.row}).css({left:"",top:""}),this.$changed=this.$changed.add(this.$player),this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data),this.set_cells_player_occupies(this.placeholder_grid_data.col,this.placeholder_grid_data.row),this.$player.coords().grid.row=this.placeholder_grid_data.row,this.$player.coords().grid.col=this.placeholder_grid_data.col,this.options.draggable.stop&&this.options.draggable.stop.call(this,event,ui),this.$preview_holder.remove(),this.$player=null,this.$helper=null,this.placeholder_grid_data={},this.player_grid_data={},this.cells_occupied_by_placeholder={},this.cells_occupied_by_player={},this.set_dom_grid_height()},fn.on_overlapped_column_change=function(start_callback,stop_callback){if(!this.colliders_data.length)return this;var i,cols=this.get_targeted_columns(this.colliders_data[0].el.data.col),last_n_cols=this.last_cols.length,n_cols=cols.length;for(i=0;i<n_cols;i++)-1===$.inArray(cols[i],this.last_cols)&&(start_callback||$.noop).call(this,cols[i]);for(i=0;i<last_n_cols;i++)-1===$.inArray(this.last_cols[i],cols)&&(stop_callback||$.noop).call(this,this.last_cols[i]);return this.last_cols=cols,this},fn.on_overlapped_row_change=function(start_callback,end_callback){if(!this.colliders_data.length)return this;var i,rows=this.get_targeted_rows(this.colliders_data[0].el.data.row),last_n_rows=this.last_rows.length,n_rows=rows.length;for(i=0;i<n_rows;i++)-1===$.inArray(rows[i],this.last_rows)&&(start_callback||$.noop).call(this,rows[i]);for(i=0;i<last_n_rows;i++)-1===$.inArray(this.last_rows[i],rows)&&(end_callback||$.noop).call(this,this.last_rows[i]);this.last_rows=rows},fn.set_player=function(col,row,no_player){var self=this;no_player||this.empty_cells_player_occupies();var cell=no_player?{col:col}:self.colliders_data[0].el.data,to_col=cell.col,to_row=row||cell.row;this.player_grid_data={col:to_col,row:to_row,size_y:this.player_grid_data.size_y,size_x:this.player_grid_data.size_x},this.cells_occupied_by_player=this.get_cells_occupied(this.player_grid_data);var $overlapped_widgets=this.get_widgets_overlapped(this.player_grid_data),constraints=this.widgets_constraints($overlapped_widgets);if(this.manage_movements(constraints.can_go_up,to_col,to_row),this.manage_movements(constraints.can_not_go_up,to_col,to_row),!$overlapped_widgets.length){var pp=this.can_go_player_up(this.player_grid_data);!1!==pp&&(to_row=pp),this.set_placeholder(to_col,to_row)}return{col:to_col,row:to_row}},fn.widgets_constraints=function($widgets){var $widgets_can_go_up=$([]),wgd_can_go_up=[],wgd_can_not_go_up=[];return $widgets.each($.proxy(function(i,w){var $w=$(w),wgd=$w.coords().grid;this.can_go_widget_up(wgd)?($widgets_can_go_up=$widgets_can_go_up.add($w),wgd_can_go_up.push(wgd)):wgd_can_not_go_up.push(wgd)},this)),$widgets.not($widgets_can_go_up),{can_go_up:this.sort_by_row_asc(wgd_can_go_up),can_not_go_up:this.sort_by_row_desc(wgd_can_not_go_up)}},fn.sort_by_row_asc=function(widgets){return widgets=widgets.sort(function(a,b){return a.row||(a=$(a).coords().grid,b=$(b).coords().grid),a.row>b.row?1:-1})},fn.sort_by_row_and_col_asc=function(widgets){return widgets=widgets.sort(function(a,b){return a.row>b.row||a.row===b.row&&a.col>b.col?1:-1})},fn.sort_by_col_asc=function(widgets){return widgets=widgets.sort(function(a,b){return a.col>b.col?1:-1})},fn.sort_by_row_desc=function(widgets){return widgets=widgets.sort(function(a,b){return a.row+a.size_y<b.row+b.size_y?1:-1})},fn.manage_movements=function($widgets,to_col,to_row){return $.each($widgets,$.proxy(function(i,w){var wgd=w,$w=wgd.el,can_go_widget_up=this.can_go_widget_up(wgd);if(can_go_widget_up)this.move_widget_to($w,can_go_widget_up),this.set_placeholder(to_col,can_go_widget_up+wgd.size_y);else{if(!this.can_go_player_up(this.player_grid_data)){var y=to_row+this.player_grid_data.size_y-wgd.row;this.move_widget_down($w,y),this.set_placeholder(to_col,to_row)}}},this)),this},fn.is_player=function(col_or_el,row){if(row&&!this.gridmap[col_or_el])return!1;var $w=row?this.gridmap[col_or_el][row]:col_or_el;return $w&&($w.is(this.$player)||$w.is(this.$helper))},fn.is_player_in=function(col,row){var c=this.cells_occupied_by_player||{};return $.inArray(col,c.cols)>=0&&$.inArray(row,c.rows)>=0},fn.is_placeholder_in=function(col,row){var c=this.cells_occupied_by_placeholder||{};return this.is_placeholder_in_col(col)&&$.inArray(row,c.rows)>=0},fn.is_placeholder_in_col=function(col){var c=this.cells_occupied_by_placeholder||[];return $.inArray(col,c.cols)>=0},fn.is_empty=function(col,row){return void 0===this.gridmap[col]||void 0!==this.gridmap[col][row]&&!1===this.gridmap[col][row]},fn.is_occupied=function(col,row){return!!this.gridmap[col]&&!!this.gridmap[col][row]},fn.is_widget=function(col,row){var cell=this.gridmap[col];return!!cell&&((cell=cell[row])||!1)},fn.is_widget_under_player=function(col,row){return!!this.is_widget(col,row)&&this.is_player_in(col,row)},fn.get_widgets_under_player=function(cells){cells||(cells=this.cells_occupied_by_player||{cols:[],rows:[]});var $widgets=$([]);return $.each(cells.cols,$.proxy(function(i,col){$.each(cells.rows,$.proxy(function(i,row){this.is_widget(col,row)&&($widgets=$widgets.add(this.gridmap[col][row]))},this))},this)),$widgets},fn.set_placeholder=function(col,row){var phgd=$.extend({},this.placeholder_grid_data),$nexts=this.widgets_below({col:phgd.col,row:phgd.row,size_y:phgd.size_y,size_x:phgd.size_x}),right_col=col+phgd.size_x-1;right_col>this.cols&&(col-=right_col-col);var moved_down=this.placeholder_grid_data.row<row,changed_column=this.placeholder_grid_data.col!==col;this.placeholder_grid_data.col=col,this.placeholder_grid_data.row=row,this.cells_occupied_by_placeholder=this.get_cells_occupied(this.placeholder_grid_data),this.$preview_holder.attr({"data-row":row,"data-col":col}),(moved_down||changed_column)&&$nexts.each($.proxy(function(i,widget){this.move_widget_up($(widget),this.placeholder_grid_data.col-col+phgd.size_y)},this));var $widgets_under_ph=this.get_widgets_under_player(this.cells_occupied_by_placeholder);$widgets_under_ph.length&&$widgets_under_ph.each($.proxy(function(i,widget){var $w=$(widget);this.move_widget_down($w,row+phgd.size_y-$w.data("coords").grid.row)},this))},fn.can_go_player_up=function(widget_grid_data){var p_bottom_row=widget_grid_data.row+widget_grid_data.size_y-1,result=!0,upper_rows=[],min_row=1e4,$widgets_under_player=this.get_widgets_under_player();return this.for_each_column_occupied(widget_grid_data,function(tcol){var grid_col=this.gridmap[tcol],r=p_bottom_row+1;for(upper_rows[tcol]=[];--r>0&&(this.is_empty(tcol,r)||this.is_player(tcol,r)||this.is_widget(tcol,r)&&grid_col[r].is($widgets_under_player));)upper_rows[tcol].push(r),min_row=r<min_row?r:min_row;if(0===upper_rows[tcol].length)return result=!1,!0;upper_rows[tcol].sort(function(a,b){return a-b})}),!!result&&this.get_valid_rows(widget_grid_data,upper_rows,min_row)},fn.can_go_widget_up=function(widget_grid_data){var p_bottom_row=widget_grid_data.row+widget_grid_data.size_y-1,result=!0,upper_rows=[],min_row=1e4;return this.for_each_column_occupied(widget_grid_data,function(tcol){var grid_col=this.gridmap[tcol];upper_rows[tcol]=[];for(var r=p_bottom_row+1;--r>0&&(!this.is_widget(tcol,r)||this.is_player_in(tcol,r)||grid_col[r].is(widget_grid_data.el));)this.is_player(tcol,r)||this.is_placeholder_in(tcol,r)||this.is_player_in(tcol,r)||upper_rows[tcol].push(r),r<min_row&&(min_row=r);if(0===upper_rows[tcol].length)return result=!1,!0;upper_rows[tcol].sort(function(a,b){return a-b})}),!!result&&this.get_valid_rows(widget_grid_data,upper_rows,min_row)},fn.get_valid_rows=function(widget_grid_data,upper_rows,min_row){for(var p_top_row=widget_grid_data.row,p_bottom_row=widget_grid_data.row+widget_grid_data.size_y-1,size_y=widget_grid_data.size_y,r=min_row-1,valid_rows=[];++r<=p_bottom_row;){var common=!0;if($.each(upper_rows,function(col,rows){$.isArray(rows)&&-1===$.inArray(r,rows)&&(common=!1)}),!0===common&&(valid_rows.push(r),valid_rows.length===size_y))break}var new_row=!1;return 1===size_y?valid_rows[0]!==p_top_row&&(new_row=valid_rows[0]||!1):valid_rows[0]!==p_top_row&&(new_row=this.get_consecutive_numbers_index(valid_rows,size_y)),new_row},fn.get_consecutive_numbers_index=function(arr,size_y){for(var max=arr.length,result=[],first=!0,prev=-1,i=0;i<max;i++){if(first||arr[i]===prev+1){if(result.push(i),result.length===size_y)break;first=!1}else result=[],first=!0;prev=arr[i]}return result.length>=size_y&&arr[result[0]]},fn.get_widgets_overlapped=function(){var $widgets=$([]),used=[],rows_from_bottom=this.cells_occupied_by_player.rows.slice(0);return rows_from_bottom.reverse(),$.each(this.cells_occupied_by_player.cols,$.proxy(function(i,col){$.each(rows_from_bottom,$.proxy(function(i,row){if(!this.gridmap[col])return!0;var $w=this.gridmap[col][row];this.is_occupied(col,row)&&!this.is_player($w)&&-1===$.inArray($w,used)&&($widgets=$widgets.add($w),used.push($w))},this))},this)),$widgets},fn.on_start_overlapping_column=function(col){this.set_player(col,!1)},fn.on_start_overlapping_row=function(row){this.set_player(!1,row)},fn.on_stop_overlapping_column=function(col){this.set_player(col,!1);var self=this;this.for_each_widget_below(col,this.cells_occupied_by_player.rows[0],function(tcol,trow){self.move_widget_up(this,self.player_grid_data.size_y)})},fn.on_stop_overlapping_row=function(row){this.set_player(!1,row);for(var self=this,cols=this.cells_occupied_by_player.cols,c=0,cl=cols.length;c<cl;c++)this.for_each_widget_below(cols[c],row,function(tcol,trow){self.move_widget_up(this,self.player_grid_data.size_y)})},fn.move_widget_to=function($widget,row){var self=this,widget_grid_data=$widget.coords().grid,$next_widgets=(widget_grid_data.row,this.widgets_below($widget));return!1!==this.can_move_to(widget_grid_data,widget_grid_data.col,row,$widget)&&(this.remove_from_gridmap(widget_grid_data),widget_grid_data.row=row,this.add_to_gridmap(widget_grid_data),$widget.attr("data-row",row),this.$changed=this.$changed.add($widget),$next_widgets.each(function(i,widget){var $w=$(widget),wgd=$w.coords().grid,can_go_up=self.can_go_widget_up(wgd);can_go_up&&can_go_up!==wgd.row&&self.move_widget_to($w,can_go_up)}),this)},fn.move_widget_up=function($widget,y_units){var el_grid_data=$widget.coords().grid,actual_row=el_grid_data.row,moved=[];if(y_units||(y_units=1),!this.can_go_up($widget))return!1;this.for_each_column_occupied(el_grid_data,function(col){if(-1===$.inArray($widget,moved)){var widget_grid_data=$widget.coords().grid,next_row=actual_row-y_units;if(!(next_row=this.can_go_up_to_row(widget_grid_data,col,next_row)))return!0;var $next_widgets=this.widgets_below($widget);this.remove_from_gridmap(widget_grid_data),widget_grid_data.row=next_row,this.add_to_gridmap(widget_grid_data),$widget.attr("data-row",widget_grid_data.row),this.$changed=this.$changed.add($widget),moved.push($widget),$next_widgets.each($.proxy(function(i,widget){this.move_widget_up($(widget),y_units)},this))}})},fn.move_widget_down=function($widget,y_units){var el_grid_data=$widget.coords().grid,actual_row=el_grid_data.row,moved=[],y_diff=y_units;if(!$widget)return!1;if(-1===$.inArray($widget,moved)){var widget_grid_data=$widget.coords().grid,next_row=actual_row+y_units,$next_widgets=this.widgets_below($widget);this.remove_from_gridmap(widget_grid_data),$next_widgets.each($.proxy(function(i,widget){var $w=$(widget),wd=$w.coords().grid,tmp_y=this.displacement_diff(wd,widget_grid_data,y_diff);tmp_y>0&&this.move_widget_down($w,tmp_y)},this)),widget_grid_data.row=next_row,this.update_widget_position(widget_grid_data,$widget),$widget.attr("data-row",widget_grid_data.row),this.$changed=this.$changed.add($widget),moved.push($widget)}},fn.can_go_up_to_row=function(widget_grid_data,col,row){var r,ga=this.gridmap,result=!0,urc=[],actual_row=widget_grid_data.row;if(this.for_each_column_occupied(widget_grid_data,function(tcol){ga[tcol];for(urc[tcol]=[],r=actual_row;r--&&this.is_empty(tcol,r)&&!this.is_placeholder_in(tcol,r);)urc[tcol].push(r);if(!urc[tcol].length)return result=!1,!0}),!result)return!1;for(r=row,r=1;r<actual_row;r++){for(var common=!0,uc=0,ucl=urc.length;uc<ucl;uc++)urc[uc]&&-1===$.inArray(r,urc[uc])&&(common=!1);if(!0===common){result=r;break}}return result},fn.displacement_diff=function(widget_grid_data,parent_bgd,y_units){var actual_row=widget_grid_data.row,diffs=[],parent_max_y=parent_bgd.row+parent_bgd.size_y;return this.for_each_column_occupied(widget_grid_data,function(col){for(var temp_y_units=0,r=parent_max_y;r<actual_row;r++)this.is_empty(col,r)&&(temp_y_units+=1);diffs.push(temp_y_units)}),y_units-=Math.max.apply(Math,diffs),y_units>0?y_units:0},fn.widgets_below=function($el){var el_grid_data=$.isPlainObject($el)?$el:$el.coords().grid,self=this,next_row=(this.gridmap,el_grid_data.row+el_grid_data.size_y-1),$nexts=$([]);return this.for_each_column_occupied(el_grid_data,function(col){self.for_each_widget_below(col,next_row,function(tcol,trow){if(!self.is_player(this)&&-1===$.inArray(this,$nexts))return $nexts=$nexts.add(this),!0})}),this.sort_by_row_asc($nexts)},fn.set_cells_player_occupies=function(col,row){return this.remove_from_gridmap(this.placeholder_grid_data),this.placeholder_grid_data.col=col,this.placeholder_grid_data.row=row,this.add_to_gridmap(this.placeholder_grid_data,this.$player),this},fn.empty_cells_player_occupies=function(){return this.remove_from_gridmap(this.placeholder_grid_data),this},fn.can_go_up=function($el){var el_grid_data=$el.coords().grid,initial_row=el_grid_data.row,prev_row=initial_row-1,result=(this.gridmap,!0);return 1!==initial_row&&(this.for_each_column_occupied(el_grid_data,function(col){this.is_widget(col,prev_row);if(this.is_occupied(col,prev_row)||this.is_player(col,prev_row)||this.is_placeholder_in(col,prev_row)||this.is_player_in(col,prev_row))return result=!1,!0}),result)},fn.can_move_to=function(widget_grid_data,col,row,max_row){var $w=(this.gridmap,widget_grid_data.el),future_wd={size_y:widget_grid_data.size_y,size_x:widget_grid_data.size_x,col:col,row:row},result=!0;return!(col+widget_grid_data.size_x-1>this.cols)&&(!(max_row&&max_row<row+widget_grid_data.size_y-1)&&(this.for_each_cell_occupied(future_wd,function(tcol,trow){var $tw=this.is_widget(tcol,trow);!$tw||widget_grid_data.el&&!$tw.is($w)||(result=!1)}),result))},fn.get_targeted_columns=function(from_col){for(var max=(from_col||this.player_grid_data.col)+(this.player_grid_data.size_x-1),cols=[],col=from_col;col<=max;col++)cols.push(col);return cols},fn.get_targeted_rows=function(from_row){for(var max=(from_row||this.player_grid_data.row)+(this.player_grid_data.size_y-1),rows=[],row=from_row;row<=max;row++)rows.push(row);return rows},fn.get_cells_occupied=function(el_grid_data){var i,cells={cols:[],rows:[]};for(arguments[1]instanceof jQuery&&(el_grid_data=arguments[1].coords().grid),i=0;i<el_grid_data.size_x;i++){var col=el_grid_data.col+i;cells.cols.push(col)}for(i=0;i<el_grid_data.size_y;i++){var row=el_grid_data.row+i;cells.rows.push(row)}return cells},fn.for_each_cell_occupied=function(grid_data,callback){return this.for_each_column_occupied(grid_data,function(col){this.for_each_row_occupied(grid_data,function(row){callback.call(this,col,row)})}),this},fn.for_each_column_occupied=function(el_grid_data,callback){for(var i=0;i<el_grid_data.size_x;i++){var col=el_grid_data.col+i;callback.call(this,col,el_grid_data)}},fn.for_each_row_occupied=function(el_grid_data,callback){for(var i=0;i<el_grid_data.size_y;i++){var row=el_grid_data.row+i;callback.call(this,row,el_grid_data)}},fn._traversing_widgets=function(type,direction,col,row,callback){var ga=this.gridmap;if(ga[col]){var cr,max,action=type+"/"+direction;if(arguments[2]instanceof jQuery){var el_grid_data=arguments[2].coords().grid;col=el_grid_data.col,row=el_grid_data.row,callback=arguments[3]}var matched=[],trow=row,methods={"for_each/above":function(){for(;trow--&&!(trow>0&&this.is_widget(col,trow)&&-1===$.inArray(ga[col][trow],matched)&&(cr=callback.call(ga[col][trow],col,trow),matched.push(ga[col][trow]),cr)););},"for_each/below":function(){for(trow=row+1,max=ga[col].length;trow<max&&(!this.is_widget(col,trow)||-1!==$.inArray(ga[col][trow],matched)||(cr=callback.call(ga[col][trow],col,trow),matched.push(ga[col][trow]),!cr));trow++);}};methods[action]&&methods[action].call(this)}},fn.for_each_widget_above=function(col,row,callback){return this._traversing_widgets("for_each","above",col,row,callback),this},fn.for_each_widget_below=function(col,row,callback){return this._traversing_widgets("for_each","below",col,row,callback),this},fn.get_highest_occupied_cell=function(){for(var r,gm=this.gridmap,rows=[],row_in_col=[],c=gm.length-1;c>=1;c--)for(r=gm[c].length-1;r>=1;r--)if(this.is_widget(c,r)){rows.push(r),row_in_col[r]=c;break}var highest_row=Math.max.apply(Math,rows);return this.highest_occupied_cell={col:row_in_col[highest_row],row:highest_row},this.highest_occupied_cell},fn.get_widgets_from=function(col,row){var $widgets=(this.gridmap,$());return col&&($widgets=$widgets.add(this.$widgets.filter(function(){var tcol=$(this).attr("data-col");return tcol===col||tcol>col}))),row&&($widgets=$widgets.add(this.$widgets.filter(function(){var trow=$(this).attr("data-row");return trow===row||trow>row}))),$widgets},fn.set_dom_grid_height=function(){var r=this.get_highest_occupied_cell().row+1;return this.$el.css("height",r*this.min_widget_height),this},fn.generate_stylesheet=function(opts){var i,styles="",max_size_x=this.options.max_size_x;opts||(opts={}),opts.cols||(opts.cols=this.cols),opts.rows||(opts.rows=this.rows),opts.namespace||(opts.namespace=this.options.namespace),opts.widget_base_dimensions||(opts.widget_base_dimensions=this.options.widget_base_dimensions),opts.widget_margins||(opts.widget_margins=this.options.widget_margins),opts.min_widget_width=2*opts.widget_margins[0]+opts.widget_base_dimensions[0],opts.min_widget_height=2*opts.widget_margins[1]+opts.widget_base_dimensions[1];var serialized_opts=$.param(opts);if($.inArray(serialized_opts,Gridster.generated_stylesheets)>=0)return!1;for(Gridster.generated_stylesheets.push(serialized_opts),i=opts.cols;i>=0;i--)styles+=opts.namespace+' [data-col="'+(i+1)+'"] { left:'+(i*opts.widget_base_dimensions[0]+i*opts.widget_margins[0]+(i+1)*opts.widget_margins[0])+"px;} ";for(i=opts.rows;i>=0;i--)styles+=opts.namespace+' [data-row="'+(i+1)+'"] { top:'+(i*opts.widget_base_dimensions[1]+i*opts.widget_margins[1]+(i+1)*opts.widget_margins[1])+"px;} ";for(var y=1;y<=opts.rows;y++)styles+=opts.namespace+' [data-sizey="'+y+'"] { height:'+(y*opts.widget_base_dimensions[1]+(y-1)*(2*opts.widget_margins[1]))+"px;}";for(var x=1;x<=max_size_x;x++)styles+=opts.namespace+' [data-sizex="'+x+'"] { width:'+(x*opts.widget_base_dimensions[0]+(x-1)*(2*opts.widget_margins[0]))+"px;}";return this.add_style_tag(styles)},fn.add_style_tag=function(css){var d=document,tag=d.createElement("style");return d.getElementsByTagName("head")[0].appendChild(tag),tag.setAttribute("type","text/css"),tag.styleSheet?tag.styleSheet.cssText=css:tag.appendChild(document.createTextNode(css)),this.$style_tags=this.$style_tags.add(tag),this},fn.remove_style_tags=function(){this.$style_tags.remove()},fn.generate_faux_grid=function(rows,cols){this.faux_grid=[],this.gridmap=[];var col,row;for(col=cols;col>0;col--)for(this.gridmap[col]=[],row=rows;row>0;row--)this.add_faux_cell(row,col);return this},fn.add_faux_cell=function(row,col){var coords=$({left:this.baseX+(col-1)*this.min_widget_width,top:this.baseY+(row-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:col,row:row,original_col:col,original_row:row}).coords();return $.isArray(this.gridmap[col])||(this.gridmap[col]=[]),this.gridmap[col][row]=!1,this.faux_grid.push(coords),this},fn.add_faux_rows=function(rows){for(var actual_rows=this.rows,max_rows=actual_rows+(rows||1),r=max_rows;r>actual_rows;r--)for(var c=this.cols;c>=1;c--)this.add_faux_cell(r,c);return this.rows=max_rows,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},fn.add_faux_cols=function(cols){for(var actual_cols=this.cols,max_cols=actual_cols+(cols||1),c=actual_cols;c<max_cols;c++)for(var r=this.rows;r>=1;r--)this.add_faux_cell(r,c);return this.cols=max_cols,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},fn.recalculate_faux_grid=function(){var aw=this.$wrapper.width();return this.baseX=($(window).width()-aw)/2,this.baseY=this.$wrapper.offset().top,$.each(this.faux_grid,$.proxy(function(i,coords){this.faux_grid[i]=coords.update({left:this.baseX+(coords.data.col-1)*this.min_widget_width,top:this.baseY+(coords.data.row-1)*this.min_widget_height})},this)),this},fn.get_widgets_from_DOM=function(){return this.$widgets.each($.proxy(function(i,widget){this.register_widget($(widget))},this)),this},fn.generate_grid_and_stylesheet=function(){var aw=this.$wrapper.width(),cols=(this.$wrapper.height(),this.options.max_cols,Math.floor(aw/this.min_widget_width)+this.options.extra_cols),actual_cols=this.$widgets.map(function(){return $(this).attr("data-col")}).get();actual_cols.length||(actual_cols=[0]);var max_rows=(Math.max.apply(Math,actual_cols),this.options.extra_rows);return this.$widgets.each(function(i,w){max_rows+=+$(w).attr("data-sizey")}),this.cols=cols,this.rows=Math.max(max_rows,this.options.min_rows),this.baseX=($(window).width()-aw)/2,this.baseY=this.$wrapper.offset().top,this.container_width=this.cols*this.options.widget_base_dimensions[0]+2*(this.cols-1)*this.options.widget_margins[0],this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this.generate_faux_grid(this.rows,this.cols)},fn.destroy=function(){return $(window).unbind(".gridster"),this.drag_api&&this.drag_api.destroy(),this.remove_style_tags(),this.$el.remove(),this},$.fn.gridster=function(options){return this.each(function(){$(this).data("gridster")||$(this).data("gridster",new Gridster(this,options))})},$.Gridster=fn}(jQuery,window,document),function($,window,document,undefined){var fn=$.Gridster;fn.widgets_in_col=function(col){if(!this.gridmap[col])return!1;for(var i=this.gridmap[col].length-1;i>=0;i--)if(!1!==this.is_widget(col,i))return!0;return!1},fn.widgets_in_row=function(row){for(var i=this.gridmap.length;i>=1;i--)if(!1!==this.is_widget(i,row))return!0;return!1},fn.widgets_in_range=function(col1,row1,col2,row2){var c,r,$w,wgd,$widgets=$([]);for(c=col2;c>=col1;c--)for(r=row2;r>=row1;r--)!1!==($w=this.is_widget(c,r))&&(wgd=$w.data("coords").grid,wgd.col>=col1&&wgd.col<=col2&&wgd.row>=row1&&wgd.row<=row2&&($widgets=$widgets.add($w)));return $widgets},fn.get_bottom_most_occupied_cell=function(){var row=0,col=0;return this.for_each_cell(function($el,c,r){$el&&r>row&&(row=r,col=c)}),{col:col,row:row}},fn.get_right_most_occupied_cell=function(){var row=0,col=0;return this.for_each_cell(function($el,c,r){if($el)return row=r,col=c,!1}),{col:col,row:row}},fn.for_each_cell=function(callback,gridmap){gridmap||(gridmap=this.gridmap);var cols=gridmap.length,rows=gridmap[1].length;cols_iter:for(var c=cols-1;c>=1;c--)for(var r=rows-1;r>=1;r--){var $el=gridmap[c]&&gridmap[c][r];if(callback){if(!1===callback.call(this,$el,c,r))break cols_iter}else;}},fn.next_position_in_range=function(size_x,size_y,max_rows){size_x||(size_x=1),size_y||(size_y=1);for(var rows_l,ga=this.gridmap,cols_l=ga.length,valid_pos=[],c=1;c<cols_l;c++){rows_l=max_rows||ga[c].length;for(var r=1;r<=rows_l;r++){this.can_move_to({size_x:size_x,size_y:size_y},c,r,max_rows)&&valid_pos.push({col:c,row:r,size_y:size_y,size_x:size_x})}}return valid_pos.length>=1&&this.sort_by_col_asc(valid_pos)[0]},fn.closest_to_right=function(col,row){if(!this.gridmap[col])return!1;for(var cols_l=this.gridmap.length-1,c=col;c<=cols_l;c++)if(this.gridmap[c][row])return{col:c,row:row};return!1},fn.closest_to_left=function(col,row){this.gridmap.length;if(!this.gridmap[col])return!1;for(var c=col;c>=1;c--)if(this.gridmap[c][row])return{col:c,row:row};return!1}}(jQuery,window,document),function($){function setCaretTo(element,start,end){if(element.createTextRange){var range=element.createTextRange();range.moveStart("character",start),range.moveEnd("character",end||start),range.select()}else element.selectionStart&&(element.focus(),element.setSelectionRange(start,end||start))}function getCaretPosition(element){if("number"==typeof element.selectionStart)return element.selectionStart;if(document.selection){var range=document.selection.createRange(),rangeLength=range.text.length;return range.moveStart("character",-element.value.length),range.text.length-rangeLength}}$.fn.insertAtCaret=function(text,opts){var element=$(this).get(0);if(document.selection){element.focus();var orig=element.value.replace(/\r\n/g,"\n"),range=document.selection.createRange();if(range.parentElement()!=element)return!1;range.text=text;for(var actual=tmp=element.value.replace(/\r\n/g,"\n"),diff=0;diff<orig.length&&orig.charAt(diff)==actual.charAt(diff);diff++);for(var index=0,start=0;tmp.match(text)&&(tmp=tmp.replace(text,""))&&index<=diff;index=start+text.length)start=actual.indexOf(text,index)}else if(element.selectionStart){var start=element.selectionStart,end=element.selectionEnd;element.value=element.value.substr(0,start)+text+element.value.substr(end,element.value.length)}return start?setCaretTo(element,start+text.length):element.value=text+element.value,$(this).change(),this},$.fn.replaceTextAt=function(start,end,replacementText){var element=$(this).get(0),wholeString=$(this).val(),prefix=wholeString.substr(0,start),suffix=wholeString.substr(end);return $(this).val(prefix+replacementText+suffix),setCaretTo(element,prefix.length+replacementText.length),$(this).change(),this},$.fn.setCaretPosition=function(start,end){var element=$(this).get(0);return element.focus(),setCaretTo(element,start,end),this},$.fn.getCaretPosition=function(){var element=$(this).get(0);return $(element).focus(),getCaretPosition(element)},$.fn.getSelectedText=function(){var element=$(this).get(0);return"number"==typeof element.selectionStart?$(element).val().substr(element.selectionStart,element.selectionEnd-element.selectionStart):document.getSelection?document.getSelection():window.getSelection?window.getSelection():void 0}}(jQuery),function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function($){if(!$.support.cors&&$.ajaxTransport&&window.XDomainRequest){var n=/^https?:\/\//i,o=/^get|post$/i,p=new RegExp("^"+location.protocol,"i");$.ajaxTransport("* text html xml json",function(j,k,l){if(j.crossDomain&&j.async&&o.test(j.type)&&n.test(j.url)&&p.test(j.url)){var m=null;return{send:function(f,g){var h="",i=(k.dataType||"").toLowerCase()
+;m=new XDomainRequest,/^\d+$/.test(k.timeout)&&(m.timeout=k.timeout),m.ontimeout=function(){g(500,"timeout")},m.onload=function(){var a="Content-Length: "+m.responseText.length+"\r\nContent-Type: "+m.contentType,b={code:200,message:"success"},c={text:m.responseText};try{if("html"===i||/text\/html/i.test(m.contentType))c.html=m.responseText;else if("json"===i||"text"!==i&&/\/json/i.test(m.contentType))try{c.json=$.parseJSON(m.responseText)}catch(e){b.code=500,b.message="parseerror"}else if("xml"===i||"text"!==i&&/\/xml/i.test(m.contentType)){var d=new ActiveXObject("Microsoft.XMLDOM");d.async=!1;try{d.loadXML(m.responseText)}catch(e){d=void 0}if(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)throw b.code=500,b.message="parseerror","Invalid XML: "+m.responseText;c.xml=d}}catch(parseMessage){throw parseMessage}finally{g(b.code,b.message,c,a)}},m.onprogress=function(){},m.onerror=function(){g(500,"error",{text:m.responseText})},k.data&&(h="string"===$.type(k.data)?k.data:$.param(k.data)),m.open(j.type,j.url),m.send(h)},abort:function(){m&&m.abort()}}}})}}),function(a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else{if("function"==typeof define&&define.amd)return define([],a);this.CodeMirror=a()}}(function(){"use strict";function y(a,c){if(!(this instanceof y))return new y(a,c);this.options=c=c||{},Eg(Zd,c,!1),M(c);var d=c.value;"string"==typeof d&&(d=new yf(d,c.mode)),this.doc=d;var e=this.display=new z(a,d);e.wrapper.CodeMirror=this,I(this),G(this),c.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),c.autofocus&&!q&&Qc(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new ug},b&&setTimeout(Fg(Pc,this,!0),20),Tc(this),Xg();var f=this;zc(this,function(){f.curOp.forceUpdate=!0,Cf(f,d),c.autofocus&&!q||Qg()==e.input?setTimeout(Fg(vd,f),20):wd(f);for(var a in $d)$d.hasOwnProperty(a)&&$d[a](f,c[a],ae);for(var b=0;b<ee.length;++b)ee[b](f)})}function z(a,b){var d=this,e=d.input=Lg("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none");h?e.style.width="1000px":e.setAttribute("wrap","off"),p&&(e.style.border="1px solid black"),e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck","false"),d.inputDiv=Lg("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;"),d.scrollbarH=Lg("div",[Lg("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar"),d.scrollbarV=Lg("div",[Lg("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),d.scrollbarFiller=Lg("div",null,"CodeMirror-scrollbar-filler"),d.gutterFiller=Lg("div",null,"CodeMirror-gutter-filler"),d.lineDiv=Lg("div",null,"CodeMirror-code"),d.selectionDiv=Lg("div",null,null,"position: relative; z-index: 1"),d.cursorDiv=Lg("div",null,"CodeMirror-cursors"),d.measure=Lg("div",null,"CodeMirror-measure"),d.lineMeasure=Lg("div",null,"CodeMirror-measure"),d.lineSpace=Lg("div",[d.measure,d.lineMeasure,d.selectionDiv,d.cursorDiv,d.lineDiv],null,"position: relative; outline: none"),d.mover=Lg("div",[Lg("div",[d.lineSpace],"CodeMirror-lines")],null,"position: relative"),d.sizer=Lg("div",[d.mover],"CodeMirror-sizer"),d.heightForcer=Lg("div",null,null,"position: absolute; height: "+pg+"px; width: 1px;"),d.gutters=Lg("div",null,"CodeMirror-gutters"),d.lineGutter=null,d.scroller=Lg("div",[d.sizer,d.heightForcer,d.gutters],"CodeMirror-scroll"),d.scroller.setAttribute("tabIndex","-1"),d.wrapper=Lg("div",[d.inputDiv,d.scrollbarH,d.scrollbarV,d.scrollbarFiller,d.gutterFiller,d.scroller],"CodeMirror"),c&&(d.gutters.style.zIndex=-1,d.scroller.style.paddingRight=0),p&&(e.style.width="0px"),h||(d.scroller.draggable=!0),m&&(d.inputDiv.style.height="1px",d.inputDiv.style.position="absolute"),c&&(d.scrollbarH.style.minHeight=d.scrollbarV.style.minWidth="18px"),a.appendChild?a.appendChild(d.wrapper):a(d.wrapper),d.viewFrom=d.viewTo=b.first,d.view=[],d.externalMeasured=null,d.viewOffset=0,d.lastSizeC=0,d.updateLineNumbers=null,d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null,d.prevInput="",d.alignWidgets=!1,d.pollingFast=!1,d.poll=new ug,d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null,d.inaccurateSelection=!1,d.maxLine=null,d.maxLineLength=0,d.maxLineChanged=!1,d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null,d.shift=!1,d.selForContextMenu=null}function A(a){a.doc.mode=y.getMode(a.options,a.doc.modeOption),B(a)}function B(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)}),a.doc.frontier=a.doc.first,Sb(a,100),a.state.modeGen++,a.curOp&&Fc(a)}function C(a){a.options.lineWrapping?(Tg(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth=""):(Sg(a.display.wrapper,"CodeMirror-wrap"),L(a)),E(a),Fc(a),ic(a),setTimeout(function(){O(a)},100)}function D(a){var b=uc(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/vc(a.display)-3);return function(e){if(Ue(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;g<e.widgets.length;g++)e.widgets[g].height&&(f+=e.widgets[g].height);return c?f+(Math.ceil(e.text.length/d)||1)*b:f+b}}function E(a){var b=a.doc,c=D(a);b.iter(function(a){var b=c(a);b!=a.height&&Gf(a,b)})}function F(a){var b=je[a.options.keyMap],c=b.style;a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-keymap-\S+/g,"")+(c?" cm-keymap-"+c:"")}function G(a){a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+a.options.theme.replace(/(^|\s)\s*/g," cm-s-"),ic(a)}function H(a){I(a),Fc(a),setTimeout(function(){Q(a)},20)}function I(a){var b=a.display.gutters,c=a.options.gutters;Ng(b);for(var d=0;d<c.length;++d){var e=c[d],f=b.appendChild(Lg("div",null,"CodeMirror-gutter "+e));"CodeMirror-linenumbers"==e&&(a.display.lineGutter=f,f.style.width=(a.display.lineNumWidth||1)+"px")}b.style.display=d?"":"none",J(a)}function J(a){var b=a.display.gutters.offsetWidth;a.display.sizer.style.marginLeft=b+"px",a.display.scrollbarH.style.left=a.options.fixedGutter?b+"px":0}function K(a){if(0==a.height)return 0;for(var c,b=a.text.length,d=a;c=Ne(d);){var e=c.find(0,!0);d=e.from.line,b+=e.from.ch-e.to.ch}for(d=a;c=Oe(d);){var e=c.find(0,!0);b-=d.text.length-e.from.ch,d=e.to.line,b+=d.text.length-e.to.ch}return b}function L(a){var b=a.display,c=a.doc;b.maxLine=Df(c,c.first),b.maxLineLength=K(b.maxLine),b.maxLineChanged=!0,c.iter(function(a){var c=K(a);c>b.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function M(a){var b=Bg(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]):b>-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function N(a){var b=a.display.scroller;return{clientHeight:b.clientHeight,barHeight:a.display.scrollbarV.clientHeight,scrollWidth:b.scrollWidth,clientWidth:b.clientWidth,barWidth:a.display.scrollbarH.clientWidth,docHeight:Math.round(a.doc.height+Xb(a.display))}}function O(a,b){b||(b=N(a));var c=a.display,d=b.docHeight+pg,e=b.scrollWidth>b.clientWidth,f=d>b.clientHeight;if(f?(c.scrollbarV.style.display="block",c.scrollbarV.style.bottom=e?_g(c.measure)+"px":"0",c.scrollbarV.firstChild.style.height=Math.max(0,d-b.clientHeight+(b.barHeight||c.scrollbarV.clientHeight))+"px"):(c.scrollbarV.style.display="",c.scrollbarV.firstChild.style.height="0"),e?(c.scrollbarH.style.display="block",c.scrollbarH.style.right=f?_g(c.measure)+"px":"0",c.scrollbarH.firstChild.style.width=b.scrollWidth-b.clientWidth+(b.barWidth||c.scrollbarH.clientWidth)+"px"):(c.scrollbarH.style.display="",c.scrollbarH.firstChild.style.width="0"),e&&f?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=c.scrollbarFiller.style.width=_g(c.measure)+"px"):c.scrollbarFiller.style.display="",e&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=_g(c.measure)+"px",c.gutterFiller.style.width=c.gutters.offsetWidth+"px"):c.gutterFiller.style.display="",!a.state.checkedOverlayScrollbar&&b.clientHeight>0){if(0===_g(c.measure)){var g=r&&!n?"12px":"18px";c.scrollbarV.style.minWidth=c.scrollbarH.style.minHeight=g;var h=function(b){cg(b)!=c.scrollbarV&&cg(b)!=c.scrollbarH&&Ac(a,Xc)(b)};eg(c.scrollbarV,"mousedown",h),eg(c.scrollbarH,"mousedown",h)}a.state.checkedOverlayScrollbar=!0}}function P(a,b,c){var d=c&&null!=c.top?c.top:a.scroller.scrollTop;d=Math.floor(d-Wb(a));var e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=If(b,d),g=If(b,e);if(c&&c.ensure){var h=c.ensure.from.line,i=c.ensure.to.line;if(f>h)return{from:h,to:If(b,Jf(Df(b,h))+a.wrapper.clientHeight)};if(Math.min(i,b.lastLine())>=g)return{from:If(b,Jf(Df(b,i))-a.wrapper.clientHeight),to:i}}return{from:f,to:g}}function Q(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=T(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g<c.length;g++)if(!c[g].hidden){a.options.fixedGutter&&c[g].gutter&&(c[g].gutter.style.left=f);var h=c[g].alignable;if(h)for(var i=0;i<h.length;i++)h[i].style.left=f}a.options.fixedGutter&&(b.gutters.style.left=d+e+"px")}}function R(a){if(!a.options.lineNumbers)return!1;var b=a.doc,c=S(a.options,b.first+b.size-1),d=a.display;if(c.length!=d.lineNumChars){var e=d.measure.appendChild(Lg("div",[Lg("div",c)],"CodeMirror-linenumber CodeMirror-gutter-elt")),f=e.firstChild.offsetWidth,g=e.offsetWidth-f;return d.lineGutter.style.width="",d.lineNumInnerWidth=Math.max(f,d.lineGutter.offsetWidth-g),d.lineNumWidth=d.lineNumInnerWidth+g,d.lineNumChars=d.lineNumInnerWidth?c.length:-1,d.lineGutter.style.width=d.lineNumWidth+"px",J(a),!0}return!1}function S(a,b){return String(a.lineNumberFormatter(b+a.firstLineNumber))}function T(a){return a.scroller.getBoundingClientRect().left-a.sizer.getBoundingClientRect().left}function U(a,b,c){for(var f,d=a.display.viewFrom,e=a.display.viewTo,g=P(a.display,a.doc,b),i=!0;;i=!1){var j=a.display.scroller.clientWidth;if(!V(a,g,c))break;f=!0,a.display.maxLineChanged&&!a.options.lineWrapping&&W(a);var k=N(a);if(Ob(a),X(a,k),O(a,k),h&&a.options.lineWrapping&&Y(a,k),i&&a.options.lineWrapping&&j!=a.display.scroller.clientWidth)c=!0;else if(c=!1,b&&null!=b.top&&(b={top:Math.min(k.docHeight-pg-k.clientHeight,b.top)}),g=P(a.display,a.doc,b),g.from>=a.display.viewFrom&&g.to<=a.display.viewTo)break}return a.display.updateLineNumbers=null,f&&(jg(a,"update",a),(a.display.viewFrom!=d||a.display.viewTo!=e)&&jg(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo)),f}function V(a,b,c){var d=a.display,e=a.doc;if(!d.wrapper.offsetWidth)return void Hc(a);if(!(!c&&b.from>=d.viewFrom&&b.to<=d.viewTo&&0==Lc(a))){R(a)&&Hc(a);var f=_(a),g=e.first+e.size,h=Math.max(b.from-a.options.viewportMargin,e.first),i=Math.min(g,b.to+a.options.viewportMargin);d.viewFrom<h&&h-d.viewFrom<20&&(h=Math.max(e.first,d.viewFrom)),d.viewTo>i&&d.viewTo-i<20&&(i=Math.min(g,d.viewTo)),x&&(h=Se(a.doc,h),i=Te(a.doc,i));var j=h!=d.viewFrom||i!=d.viewTo||d.lastSizeC!=d.wrapper.clientHeight;Kc(a,h,i),d.viewOffset=Jf(Df(a.doc,d.viewFrom)),a.display.mover.style.top=d.viewOffset+"px";var k=Lc(a);if(j||0!=k||c){var l=Qg();return k>4&&(d.lineDiv.style.display="none"),ab(a,d.updateLineNumbers,f),k>4&&(d.lineDiv.style.display=""),l&&Qg()!=l&&l.offsetHeight&&l.focus(),Ng(d.cursorDiv),Ng(d.selectionDiv),j&&(d.lastSizeC=d.wrapper.clientHeight,Sb(a,400)),Z(a),!0}}}function W(a){var b=a.display,c=ac(a,b.maxLine,b.maxLine.text.length).left;b.maxLineChanged=!1;var d=Math.max(0,c+3),e=Math.max(0,b.sizer.offsetLeft+d+pg-b.scroller.clientWidth);b.sizer.style.minWidth=d+"px",e<a.doc.scrollLeft&&hd(a,Math.min(b.scroller.scrollLeft,e),!0)}function X(a,b){a.display.sizer.style.minHeight=a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=Math.max(b.docHeight,b.clientHeight-pg)+"px"}function Y(a,b){a.display.sizer.offsetWidth+a.display.gutters.offsetWidth<a.display.scroller.clientWidth-1&&(a.display.sizer.style.minHeight=a.display.heightForcer.style.top="0px",a.display.gutters.style.height=b.docHeight+"px")}function Z(a){for(var b=a.display,d=b.lineDiv.offsetTop,e=0;e<b.view.length;e++){var g,f=b.view[e];if(!f.hidden){if(c){var h=f.node.offsetTop+f.node.offsetHeight;g=h-d,d=h}else{var i=f.node.getBoundingClientRect();g=i.bottom-i.top}var j=f.line.height-g;if(2>g&&(g=uc(b)),(j>.001||-.001>j)&&(Gf(f.line,g),$(f.line),f.rest))for(var k=0;k<f.rest.length;k++)$(f.rest[k])}}}function $(a){if(a.widgets)for(var b=0;b<a.widgets.length;++b)a.widgets[b].height=a.widgets[b].node.offsetHeight}function _(a){for(var b=a.display,c={},d={},e=b.gutters.firstChild,f=0;e;e=e.nextSibling,++f)c[a.options.gutters[f]]=e.offsetLeft,d[a.options.gutters[f]]=e.offsetWidth;return{fixedPos:T(b),gutterTotalWidth:b.gutters.offsetWidth,gutterLeft:c,gutterWidth:d,wrapperWidth:b.wrapper.clientWidth}}function ab(a,b,c){function i(b){var c=b.nextSibling;return h&&r&&a.display.currentWheelTarget==b?b.style.display="none":b.parentNode.removeChild(b),c}for(var d=a.display,e=a.options.lineNumbers,f=d.lineDiv,g=f.firstChild,j=d.view,k=d.viewFrom,l=0;l<j.length;l++){var m=j[l];if(m.hidden);else if(m.node){for(;g!=m.node;)g=i(g);var o=e&&null!=b&&k>=b&&m.lineNumber;m.changes&&(Bg(m.changes,"gutter")>-1&&(o=!1),bb(a,m,k,c)),o&&(Ng(m.lineNumber),m.lineNumber.appendChild(document.createTextNode(S(a.options,k)))),g=m.node.nextSibling}else{var n=jb(a,m,k,c);f.insertBefore(n,g)}k+=m.size}for(;g;)g=i(g)}function bb(a,b,c,d){for(var e=0;e<b.changes.length;e++){var f=b.changes[e];"text"==f?fb(a,b):"gutter"==f?hb(a,b,c,d):"class"==f?gb(b):"widget"==f&&ib(b,d)}b.changes=null}function cb(a){return a.node==a.text&&(a.node=Lg("div",null,null,"position: relative"),a.text.parentNode&&a.text.parentNode.replaceChild(a.node,a.text),a.node.appendChild(a.text),c&&(a.node.style.zIndex=2)),a.node}function db(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;if(b&&(b+=" CodeMirror-linebackground"),a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=cb(a);a.background=c.insertBefore(Lg("div",null,b),c.firstChild)}}function eb(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):mf(a,b)}function fb(a,b){var c=b.text.className,d=eb(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,gb(b)):c&&(b.text.className=c)}function gb(a){db(a),a.line.wrapClass?cb(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");var b=a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass;a.text.className=b||""}function hb(a,b,c,d){b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null);var e=b.line.gutterMarkers;if(a.options.lineNumbers||e){var f=cb(b),g=b.gutter=f.insertBefore(Lg("div",null,"CodeMirror-gutter-wrapper","position: absolute; left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px"),b.text);if(!a.options.lineNumbers||e&&e["CodeMirror-linenumbers"]||(b.lineNumber=g.appendChild(Lg("div",S(a.options,c),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+a.display.lineNumInnerWidth+"px"))),e)for(var h=0;h<a.options.gutters.length;++h){var i=a.options.gutters[h],j=e.hasOwnProperty(i)&&e[i];j&&g.appendChild(Lg("div",[j],"CodeMirror-gutter-elt","left: "+d.gutterLeft[i]+"px; width: "+d.gutterWidth[i]+"px"))}}}function ib(a,b){a.alignable&&(a.alignable=null);for(var d,c=a.node.firstChild;c;c=d){var d=c.nextSibling;"CodeMirror-linewidget"==c.className&&a.node.removeChild(c)}kb(a,b)}function jb(a,b,c,d){var e=eb(a,b);return b.text=b.node=e.pre,e.bgClass&&(b.bgClass=e.bgClass),e.textClass&&(b.textClass=e.textClass),gb(b),hb(a,b,c,d),kb(b,d),b.node}function kb(a,b){if(lb(a.line,a,b,!0),a.rest)for(var c=0;c<a.rest.length;c++)lb(a.rest[c],a,b,!1)}function lb(a,b,c,d){if(a.widgets)for(var e=cb(b),f=0,g=a.widgets;f<g.length;++f){var h=g[f],i=Lg("div",[h.node],"CodeMirror-linewidget");h.handleMouseEvents||(i.ignoreEvents=!0),mb(h,i,b,c),d&&h.above?e.insertBefore(i,b.gutter||b.text):e.appendChild(i),jg(h,"redraw")}}function mb(a,b,c,d){if(a.noHScroll){(c.alignable||(c.alignable=[])).push(b);var e=d.wrapperWidth;b.style.left=d.fixedPos+"px",a.coverGutter||(e-=d.gutterTotalWidth,b.style.paddingLeft=d.gutterTotalWidth+"px"),b.style.width=e+"px"}a.coverGutter&&(b.style.zIndex=5,b.style.position="relative",a.noHScroll||(b.style.marginLeft=-d.gutterTotalWidth+"px"))}function pb(a){return nb(a.line,a.ch)}function qb(a,b){return ob(a,b)<0?b:a}function rb(a,b){return ob(a,b)<0?a:b}function sb(a,b){this.ranges=a,this.primIndex=b}function tb(a,b){this.anchor=a,this.head=b}function ub(a,b){var c=a[b];a.sort(function(a,b){return ob(a.from(),b.from())}),b=Bg(a,c);for(var d=1;d<a.length;d++){var e=a[d],f=a[d-1];if(ob(f.to(),e.from())>=0){var g=rb(f.from(),e.from()),h=qb(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;b>=d&&--b,a.splice(--d,2,new tb(i?h:g,i?g:h))}}return new sb(a,b)}function vb(a,b){return new sb([new tb(a,b||a)],0)}function wb(a,b){return Math.max(a.first,Math.min(b,a.first+a.size-1))}function xb(a,b){if(b.line<a.first)return nb(a.first,0);var c=a.first+a.size-1;return b.line>c?nb(c,Df(a,c).text.length):yb(b,Df(a,b.line).text.length)}function yb(a,b){var c=a.ch;return null==c||c>b?nb(a.line,b):0>c?nb(a.line,0):a}function zb(a,b){return b>=a.first&&b<a.first+a.size}function Ab(a,b){for(var c=[],d=0;d<b.length;d++)c[d]=xb(a,b[d]);return c}function Bb(a,b,c,d){if(a.cm&&a.cm.display.shift||a.extend){var e=b.anchor;if(d){var f=ob(c,e)<0;f!=ob(d,e)<0?(e=c,c=d):f!=ob(c,d)<0&&(c=d)}return new tb(e,c)}return new tb(d||c,c)}function Cb(a,b,c,d){Ib(a,new sb([Bb(a,a.sel.primary(),b,c)],0),d)}function Db(a,b,c){for(var d=[],e=0;e<a.sel.ranges.length;e++)d[e]=Bb(a,a.sel.ranges[e],b[e],null);Ib(a,ub(d,a.sel.primIndex),c)}function Eb(a,b,c,d){var e=a.sel.ranges.slice(0);e[b]=c,Ib(a,ub(e,a.sel.primIndex),d)}function Fb(a,b,c,d){Ib(a,vb(b,c),d)}function Gb(a,b){var c={ranges:b.ranges,update:function(b){this.ranges=[];for(var c=0;c<b.length;c++)this.ranges[c]=new tb(xb(a,b[c].anchor),xb(a,b[c].head))}};return gg(a,"beforeSelectionChange",a,c),a.cm&&gg(a.cm,"beforeSelectionChange",a.cm,c),c.ranges!=b.ranges?ub(c.ranges,c.ranges.length-1):b}function Hb(a,b,c){var d=a.history.done,e=zg(d);e&&e.ranges?(d[d.length-1]=b,Jb(a,b,c)):Ib(a,b,c)}function Ib(a,b,c){Jb(a,b,c),Rf(a,a.sel,a.cm?a.cm.curOp.id:NaN,c)}function Jb(a,b,c){(ng(a,"beforeSelectionChange")||a.cm&&ng(a.cm,"beforeSelectionChange"))&&(b=Gb(a,b)),Kb(a,Mb(a,b,ob(b.primary().head,a.sel.primary().head)<0?-1:1,!0)),c&&!1===c.scroll||!a.cm||Rd(a.cm)}function Kb(a,b){b.equals(a.sel)||(a.sel=b,a.cm&&(a.cm.curOp.updateInput=a.cm.curOp.selectionChanged=!0,mg(a.cm)),jg(a,"cursorActivity",a))}function Lb(a){Kb(a,Mb(a,a.sel,null,!1),rg)}function Mb(a,b,c,d){for(var e,f=0;f<b.ranges.length;f++){var g=b.ranges[f],h=Nb(a,g.anchor,c,d),i=Nb(a,g.head,c,d);(e||h!=g.anchor||i!=g.head)&&(e||(e=b.ranges.slice(0,f)),e[f]=new tb(h,i))}return e?ub(e,b.primIndex):b}function Nb(a,b,c,d){var e=!1,f=b,g=c||1;a.cantEdit=!1;a:for(;;){var h=Df(a,f.line);if(h.markedSpans)for(var i=0;i<h.markedSpans.length;++i){var j=h.markedSpans[i],k=j.marker;if((null==j.from||(k.inclusiveLeft?j.from<=f.ch:j.from<f.ch))&&(null==j.to||(k.inclusiveRight?j.to>=f.ch:j.to>f.ch))){if(d&&(gg(k,"beforeCursorEnter"),k.explicitlyCleared)){if(h.markedSpans){--i;continue}break}if(!k.atomic)continue;var l=k.find(0>g?-1:1);if(0==ob(l,f)&&(l.ch+=g,l.ch<0?l=l.line>a.first?xb(a,nb(l.line-1)):null:l.ch>h.text.length&&(l=l.line<a.first+a.size-1?nb(l.line+1,0):null),!l)){if(e)return d?(a.cantEdit=!0,nb(a.first,0)):Nb(a,b,c,!0);e=!0,l=b,g=-g}f=l;continue a}}return f}}function Ob(a){for(var b=a.display,c=a.doc,d=document.createDocumentFragment(),e=document.createDocumentFragment(),f=0;f<c.sel.ranges.length;f++){var g=c.sel.ranges[f],h=g.empty();(h||a.options.showCursorWhenSelecting)&&Pb(a,g,d),h||Qb(a,g,e)}if(a.options.moveInputWithCursor){var i=oc(a,c.sel.primary().head,"div"),j=b.wrapper.getBoundingClientRect(),k=b.lineDiv.getBoundingClientRect(),l=Math.max(0,Math.min(b.wrapper.clientHeight-10,i.top+k.top-j.top)),m=Math.max(0,Math.min(b.wrapper.clientWidth-10,i.left+k.left-j.left));b.inputDiv.style.top=l+"px",b.inputDiv.style.left=m+"px"}Og(b.cursorDiv,d),Og(b.selectionDiv,e)}function Pb(a,b,c){var d=oc(a,b.head,"div"),e=c.appendChild(Lg("div"," ","CodeMirror-cursor"));if(e.style.left=d.left+"px",e.style.top=d.top+"px",e.style.height=Math.max(0,d.bottom-d.top)*a.options.cursorHeight+"px",d.other){var f=c.appendChild(Lg("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));f.style.display="",f.style.left=d.other.left+"px",f.style.top=d.other.top+"px",f.style.height=.85*(d.other.bottom-d.other.top)+"px"}}function Qb(a,b,c){function j(a,b,c,d){0>b&&(b=0),b=Math.round(b),d=Math.round(d),f.appendChild(Lg("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?i-a:c)+"px; height: "+(d-b)+"px"))}function k(b,c,d){function m(c,d){return nc(a,nb(b,c),"div",f,d)}var k,l,f=Df(e,b),g=f.text.length;return ih(Kf(f),c||0,null==d?g:d,function(a,b,e){var n,o,p,f=m(a,"left");if(a==b)n=f,o=p=f.left;else{if(n=m(b-1,"right"),"rtl"==e){var q=f;f=n,n=q}o=f.left,p=n.right}null==c&&0==a&&(o=h),n.top-f.top>3&&(j(o,f.top,null,f.bottom),o=h,f.bottom<n.top&&j(o,f.bottom,null,n.top)),null==d&&b==g&&(p=i),(!k||f.top<k.top||f.top==k.top&&f.left<k.left)&&(k=f),(!l||n.bottom>l.bottom||n.bottom==l.bottom&&n.right>l.right)&&(l=n),h+1>o&&(o=h),j(o,n.top,p-o,n.bottom)}),{start:k,end:l}}var d=a.display,e=a.doc,f=document.createDocumentFragment(),g=Yb(a.display),h=g.left,i=d.lineSpace.offsetWidth-g.right,l=b.from(),m=b.to();if(l.line==m.line)k(l.line,l.ch,m.ch);else{var n=Df(e,l.line),o=Df(e,m.line),p=Qe(n)==Qe(o),q=k(l.line,l.ch,p?n.text.length+1:null).end,r=k(m.line,p?0:null,m.ch).start;p&&(q.top<r.top-2?(j(q.right,q.top,null,q.bottom),j(h,r.top,r.left,r.bottom)):j(q.right,q.top,r.left-q.right,q.bottom)),q.bottom<r.top&&j(h,q.bottom,null,r.top)}c.appendChild(f)}function Rb(a){if(a.state.focused){var b=a.display;clearInterval(b.blinker);var c=!0;b.cursorDiv.style.visibility="",a.options.cursorBlinkRate>0&&(b.blinker=setInterval(function(){b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate))}}function Sb(a,b){a.doc.mode.startState&&a.doc.frontier<a.display.viewTo&&a.state.highlight.set(b,Fg(Tb,a))}function Tb(a){var b=a.doc;if(b.frontier<b.first&&(b.frontier=b.first),!(b.frontier>=a.display.viewTo)){var c=+new Date+a.options.workTime,d=ge(b.mode,Vb(a,b.frontier));zc(a,function(){b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(e){if(b.frontier>=a.display.viewFrom){var f=e.styles,g=ff(a,e,d,!0);e.styles=g.styles,g.classes?e.styleClasses=g.classes:e.styleClasses&&(e.styleClasses=null);for(var h=!f||f.length!=e.styles.length,i=0;!h&&i<f.length;++i)h=f[i]!=e.styles[i];h&&Gc(a,b.frontier,"text"),e.stateAfter=ge(b.mode,d)}else hf(a,e.text,d),e.stateAfter=0==b.frontier%5?ge(b.mode,d):null;return++b.frontier,+new Date>c?(Sb(a,a.options.workDelay),!0):void 0})})}}function Ub(a,b,c){for(var d,e,f=a.doc,g=c?-1:b-(a.doc.mode.innerMode?1e3:100),h=b;h>g;--h){if(h<=f.first)return f.first;var i=Df(f,h-1);if(i.stateAfter&&(!c||h<=f.frontier))return h;var j=vg(i.text,null,a.options.tabSize);(null==e||d>j)&&(e=h-1,d=j)}return e}function Vb(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0;var f=Ub(a,b,c),g=f>d.first&&Df(d,f-1).stateAfter;return g=g?ge(d.mode,g):he(d.mode),d.iter(f,b,function(c){hf(a,c.text,g);var h=f==b-1||0==f%5||f>=e.viewFrom&&f<e.viewTo;c.stateAfter=h?ge(d.mode,g):null,++f}),c&&(d.frontier=f),g}function Wb(a){return a.lineSpace.offsetTop}function Xb(a){return a.mover.offsetHeight-a.lineSpace.offsetHeight}function Yb(a){if(a.cachedPaddingH)return a.cachedPaddingH;var b=Og(a.measure,Lg("pre","x")),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d={left:parseInt(c.paddingLeft),right:parseInt(c.paddingRight)};return isNaN(d.left)||isNaN(d.right)||(a.cachedPaddingH=d),d}function Zb(a,b,c){var d=a.options.lineWrapping,e=d&&a.display.scroller.clientWidth;if(!b.measure.heights||d&&b.measure.width!=e){var f=b.measure.heights=[];if(d){b.measure.width=e;for(var g=b.text.firstChild.getClientRects(),h=0;h<g.length-1;h++){var i=g[h],j=g[h+1];Math.abs(i.bottom-j.bottom)>2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function $b(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;d<a.rest.length;d++)if(a.rest[d]==b)return{map:a.measure.maps[d],cache:a.measure.caches[d]};for(var d=0;d<a.rest.length;d++)if(Hf(a.rest[d])>c)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}}function _b(a,b){b=Qe(b);var c=Hf(b),d=a.display.externalMeasured=new Dc(a.doc,b,c);d.lineN=c;var e=d.built=mf(a,d);return d.text=e.pre,Og(a.display.lineMeasure,e.pre),d}function ac(a,b,c,d){return dc(a,cc(a,b),c,d)}function bc(a,b){if(b>=a.display.viewFrom&&b<a.display.viewTo)return a.display.view[Ic(a,b)];var c=a.display.externalMeasured;return c&&b>=c.lineN&&b<c.lineN+c.size?c:void 0}function cc(a,b){var c=Hf(b),d=bc(a,c);d&&!d.text?d=null:d&&d.changes&&bb(a,d,c,_(a)),d||(d=_b(a,b));var e=$b(d,b,c);return{line:b,view:d,rect:null,map:e.map,cache:e.cache,before:e.before,hasHeights:!1}}function dc(a,b,c,d){b.before&&(c=-1);var f,e=c+(d||"");return b.cache.hasOwnProperty(e)?f=b.cache[e]:(b.rect||(b.rect=b.view.text.getBoundingClientRect()),b.hasHeights||(Zb(a,b.view,b.rect),b.hasHeights=!0),f=fc(a,b,c,d),f.bogus||(b.cache[e]=f)),{left:f.left,right:f.right,top:f.top,bottom:f.bottom}}function fc(a,b,c,e){for(var h,i,j,k,f=b.map,l=0;l<f.length;l+=3){var m=f[l],n=f[l+1];if(m>c?(i=0,j=1,k="left"):n>c?(i=c-m,j=i+1):(l==f.length-3||c==n&&f[l+3]>c)&&(j=n-m,i=j-1,c>=n&&(k="right")),null!=i){if(h=f[l+2],m==n&&e==(h.insertLeft?"left":"right")&&(k=e),"left"==e&&0==i)for(;l&&f[l-2]==f[l-3]&&f[l-1].insertLeft;)h=f[2+(l-=3)],k="left";if("right"==e&&i==n-m)for(;l<f.length-3&&f[l+3]==f[l+4]&&!f[l+5].insertLeft;)h=f[(l+=3)+2],k="right";break}}var o;if(3==h.nodeType){for(;i&&Kg(b.line.text.charAt(m+i));)--i;for(;n>m+j&&Kg(b.line.text.charAt(m+j));)++j;if(d&&0==i&&j==n-m)o=h.parentNode.getBoundingClientRect();else if(g&&a.options.lineWrapping){var p=Mg(h,i,j).getClientRects();o=p.length?p["right"==e?p.length-1:0]:ec}else o=Mg(h,i,j).getBoundingClientRect()||ec}else{i>0&&(k=e="right");var p;o=a.options.lineWrapping&&(p=h.getClientRects()).length>1?p["right"==e?p.length-1:0]:h.getBoundingClientRect()}if(d&&!i&&(!o||!o.left&&!o.right)){var q=h.parentNode.getClientRects()[0];o=q?{left:q.left,right:q.left+vc(a.display),top:q.top,bottom:q.bottom}:ec}for(var r,s=(o.bottom+o.top)/2-b.rect.top,t=b.view.measure.heights,l=0;l<t.length-1&&!(s<t[l]);l++);r=l?t[l-1]:0,s=t[l];var u={left:("right"==k?o.right:o.left)-b.rect.left,right:("left"==k?o.left:o.right)-b.rect.left,top:r,bottom:s};return o.left||o.right||(u.bogus=!0),u}function gc(a){if(a.measure&&(a.measure.cache={},a.measure.heights=null,a.rest))for(var b=0;b<a.rest.length;b++)a.measure.caches[b]={}}function hc(a){a.display.externalMeasure=null,Ng(a.display.lineMeasure);for(var b=0;b<a.display.view.length;b++)gc(a.display.view[b])}function ic(a){hc(a),a.display.cachedCharWidth=a.display.cachedTextHeight=a.display.cachedPaddingH=null,a.options.lineWrapping||(a.display.maxLineChanged=!0),a.display.lineNumChars=null}function jc(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function kc(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function lc(a,b,c,d){if(b.widgets)for(var e=0;e<b.widgets.length;++e)if(b.widgets[e].above){var f=Ye(b.widgets[e]);c.top+=f,c.bottom+=f}if("line"==d)return c;d||(d="local");var g=Jf(b);if("local"==d?g+=Wb(a.display):g-=a.display.viewOffset,"page"==d||"window"==d){var h=a.display.lineSpace.getBoundingClientRect();g+=h.top+("window"==d?0:kc());var i=h.left+("window"==d?0:jc());c.left+=i,c.right+=i}return c.top+=g,c.bottom+=g,c}function mc(a,b,c){if("div"==c)return b;var d=b.left,e=b.top;if("page"==c)d-=jc(),e-=kc();else if("local"==c||!c){var f=a.display.sizer.getBoundingClientRect();d+=f.left,e+=f.top}var g=a.display.lineSpace.getBoundingClientRect();return{left:d-g.left,top:e-g.top}}function nc(a,b,c,d,e){return d||(d=Df(a.doc,b.line)),lc(a,d,ac(a,d,b.ch,e),c)}function oc(a,b,c,d,e){function f(b,f){var g=dc(a,e,b,f?"right":"left");return f?g.left=g.right:g.right=g.left,lc(a,d,g,c)}function g(a,b){var c=h[b],d=c.level%2;return a==jh(c)&&b&&c.level<h[b-1].level?(c=h[--b],a=kh(c)-(c.level%2?0:1),d=!0):a==kh(c)&&b<h.length-1&&c.level<h[b+1].level&&(c=h[++b],a=jh(c)-c.level%2,d=!1),d&&a==c.to&&a>c.from?f(a-1):f(a,d)}d=d||Df(a.doc,b.line),e||(e=cc(a,d));var h=Kf(d),i=b.ch;if(!h)return f(i);var j=rh(h,i),k=g(i,j);return null!=qh&&(k.other=g(i,qh)),k}function pc(a,b){var c=0,b=xb(a.doc,b);a.options.lineWrapping||(c=vc(a.display)*b.ch);var d=Df(a.doc,b.line),e=Jf(d)+Wb(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function qc(a,b,c,d){var e=nb(a,b);return e.xRel=d,c&&(e.outside=!0),e}function rc(a,b,c){var d=a.doc;if(0>(c+=a.display.viewOffset))return qc(d.first,0,!0,-1);var e=If(d,c),f=d.first+d.size-1;if(e>f)return qc(d.first+d.size-1,Df(d,f).text.length,!0,1);0>b&&(b=0);for(var g=Df(d,e);;){var h=sc(a,g,e,b,c),i=Oe(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=Hf(g=j.to.line)}}function sc(a,b,c,d,e){function j(d){var e=oc(a,nb(c,d),"line",b,i);return g=!0,f>e.bottom?e.left-h:f<e.top?e.left+h:(g=!1,e.left)}var f=e-Jf(b),g=!1,h=2*a.display.wrapper.clientWidth,i=cc(a,b),k=Kf(b),l=b.text.length,m=lh(b),n=mh(b),o=j(m),p=g,q=j(n),r=g;if(d>q)return qc(c,n,r,1);for(;;){if(k?n==m||n==th(b,m,1):1>=n-m){for(var s=o>d||q-d>=d-o?m:n,t=d-(s==m?o:q);Kg(b.text.charAt(s));)++s;return qc(c,s,s==m?p:r,-1>t?-1:t>1?1:0)}var v=Math.ceil(l/2),w=m+v;if(k){w=m;for(var x=0;v>x;++x)w=th(b,w,1)}var y=j(w);y>d?(n=w,q=y,(r=g)&&(q+=1e3),l=v):(m=w,o=y,p=g,l-=v)}}function uc(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==tc){tc=Lg("pre");for(var b=0;49>b;++b)tc.appendChild(document.createTextNode("x")),tc.appendChild(Lg("br"));tc.appendChild(document.createTextNode("x"))}Og(a.measure,tc);var c=tc.offsetHeight/50;return c>3&&(a.cachedTextHeight=c),Ng(a.measure),c||1}function vc(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=Lg("span","xxxxxxxxxx"),c=Lg("pre",[b]);Og(a.measure,c);var d=b.getBoundingClientRect(),e=(d.right-d.left)/10;return e>2&&(a.cachedCharWidth=e),e||10}function xc(a){a.curOp={viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++wc},ig++||(hg=[])}function yc(a){var b=a.curOp,c=a.doc,d=a.display;if(a.curOp=null,b.updateMaxLine&&L(a),b.viewChanged||b.forceUpdate||null!=b.scrollTop||b.scrollToPos&&(b.scrollToPos.from.line<d.viewFrom||b.scrollToPos.to.line>=d.viewTo)||d.maxLineChanged&&a.options.lineWrapping){var e=U(a,{top:b.scrollTop,ensure:b.scrollToPos},b.forceUpdate);a.display.scroller.offsetHeight&&(a.doc.scrollTop=a.display.scroller.scrollTop)}if(!e&&b.selectionChanged&&Ob(a),e||b.startHeight==a.doc.height||O(a),null!=b.scrollTop&&d.scroller.scrollTop!=b.scrollTop){var f=Math.max(0,Math.min(d.scroller.scrollHeight-d.scroller.clientHeight,b.scrollTop));d.scroller.scrollTop=d.scrollbarV.scrollTop=c.scrollTop=f}if(null!=b.scrollLeft&&d.scroller.scrollLeft!=b.scrollLeft){var g=Math.max(0,Math.min(d.scroller.scrollWidth-d.scroller.clientWidth,b.scrollLeft));d.scroller.scrollLeft=d.scrollbarH.scrollLeft=c.scrollLeft=g,Q(a)}if(b.scrollToPos){
+var h=Nd(a,xb(a.doc,b.scrollToPos.from),xb(a.doc,b.scrollToPos.to),b.scrollToPos.margin);b.scrollToPos.isCursor&&a.state.focused&&Md(a,h)}b.selectionChanged&&Rb(a),a.state.focused&&b.updateInput&&Pc(a,b.typing);var i=b.maybeHiddenMarkers,j=b.maybeUnhiddenMarkers;if(i)for(var k=0;k<i.length;++k)i[k].lines.length||gg(i[k],"hide");if(j)for(var k=0;k<j.length;++k)j[k].lines.length&&gg(j[k],"unhide");var l;if(--ig||(l=hg,hg=null),b.changeObjs&&gg(a,"changes",a,b.changeObjs),l)for(var k=0;k<l.length;++k)l[k]();if(b.cursorActivityHandlers)for(var k=0;k<b.cursorActivityHandlers.length;k++)b.cursorActivityHandlers[k](a)}function zc(a,b){if(a.curOp)return b();xc(a);try{return b()}finally{yc(a)}}function Ac(a,b){return function(){if(a.curOp)return b.apply(a,arguments);xc(a);try{return b.apply(a,arguments)}finally{yc(a)}}}function Bc(a){return function(){if(this.curOp)return a.apply(this,arguments);xc(this);try{return a.apply(this,arguments)}finally{yc(this)}}}function Cc(a){return function(){var b=this.cm;if(!b||b.curOp)return a.apply(this,arguments);xc(b);try{return a.apply(this,arguments)}finally{yc(b)}}}function Dc(a,b,c){this.line=b,this.rest=Re(b),this.size=this.rest?Hf(zg(this.rest))-c+1:1,this.node=this.text=null,this.hidden=Ue(a,b)}function Ec(a,b,c){for(var e,d=[],f=b;c>f;f=e){var g=new Dc(a.doc,Df(a.doc,f),f);e=f+g.size,d.push(g)}return d}function Fc(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var e=a.display;if(d&&c<e.viewTo&&(null==e.updateLineNumbers||e.updateLineNumbers>b)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)x&&Se(a.doc,b)<e.viewTo&&Hc(a);else if(c<=e.viewFrom)x&&Te(a.doc,c+d)>e.viewFrom?Hc(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)Hc(a);else if(b<=e.viewFrom){var f=Jc(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):Hc(a)}else if(c>=e.viewTo){var f=Jc(a,b,b,-1);f?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):Hc(a)}else{var g=Jc(a,b,b,-1),h=Jc(a,c,c+d,1);g&&h?(e.view=e.view.slice(0,g.index).concat(Ec(a,g.lineN,h.lineN)).concat(e.view.slice(h.index)),e.viewTo+=d):Hc(a)}var i=e.externalMeasured;i&&(c<i.lineN?i.lineN+=d:b<i.lineN+i.size&&(e.externalMeasured=null))}function Gc(a,b,c){a.curOp.viewChanged=!0;var d=a.display,e=a.display.externalMeasured;if(e&&b>=e.lineN&&b<e.lineN+e.size&&(d.externalMeasured=null),!(b<d.viewFrom||b>=d.viewTo)){var f=d.view[Ic(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);-1==Bg(g,c)&&g.push(c)}}}function Hc(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Ic(a,b){if(b>=a.display.viewTo)return null;if(0>(b-=a.display.viewFrom))return null;for(var c=a.display.view,d=0;d<c.length;d++)if(0>(b-=c[d].size))return d}function Jc(a,b,c,d){var f,e=Ic(a,b),g=a.display.view;if(!x)return{index:e,lineN:c};for(var h=0,i=a.display.viewFrom;e>h;h++)i+=g[h].size;if(i!=b){if(d>0){if(e==g.length-1)return null;f=i+g[e].size-b,e++}else f=i-b;b+=f,c+=f}for(;Se(a.doc,c)!=c;){if(e==(0>d?0:g.length-1))return null;c+=d*g[e-(0>d?1:0)].size,e+=d}return{index:e,lineN:c}}function Kc(a,b,c){var d=a.display;0==d.view.length||b>=d.viewTo||c<=d.viewFrom?(d.view=Ec(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=Ec(a,b,d.viewFrom).concat(d.view):d.viewFrom<b&&(d.view=d.view.slice(Ic(a,b))),d.viewFrom=b,d.viewTo<c?d.view=d.view.concat(Ec(a,d.viewTo,c)):d.viewTo>c&&(d.view=d.view.slice(0,Ic(a,c)))),d.viewTo=c}function Lc(a){for(var b=a.display.view,c=0,d=0;d<b.length;d++){var e=b[d];e.hidden||e.node&&!e.changes||++c}return c}function Mc(a){a.display.pollingFast||a.display.poll.set(a.options.pollInterval,function(){Oc(a),a.state.focused&&Mc(a)})}function Nc(a){function c(){Oc(a)||b?(a.display.pollingFast=!1,Mc(a)):(b=!0,a.display.poll.set(60,c))}var b=!1;a.display.pollingFast=!0,a.display.poll.set(20,c)}function Oc(a){var b=a.display.input,c=a.display.prevInput,e=a.doc;if(!a.state.focused||fh(b)&&!c||Sc(a)||a.options.disableInput)return!1;a.state.pasteIncoming&&a.state.fakedLastChar&&(b.value=b.value.substring(0,b.value.length-1),a.state.fakedLastChar=!1);var f=b.value;if(f==c&&!a.somethingSelected())return!1;if(g&&!d&&a.display.inputHasSelection===f)return Pc(a),!1;var h=!a.curOp;h&&xc(a),a.display.shift=!1,8203!=f.charCodeAt(0)||e.sel!=a.display.selForContextMenu||c||(c="​");for(var i=0,j=Math.min(c.length,f.length);j>i&&c.charCodeAt(i)==f.charCodeAt(i);)++i;for(var k=f.slice(i),l=eh(k),m=a.state.pasteIncoming&&l.length>1&&e.sel.ranges.length==l.length,n=e.sel.ranges.length-1;n>=0;n--){var o=e.sel.ranges[n],p=o.from(),q=o.to();i<c.length?p=nb(p.line,p.ch-(c.length-i)):a.state.overwrite&&o.empty()&&!a.state.pasteIncoming&&(q=nb(q.line,Math.min(Df(e,q.line).text.length,q.ch+zg(l).length)));var r=a.curOp.updateInput,s={from:p,to:q,text:m?[l[n]]:l,origin:a.state.pasteIncoming?"paste":a.state.cutIncoming?"cut":"+input"};if(Fd(a.doc,s),jg(a,"inputRead",a,s),k&&!a.state.pasteIncoming&&a.options.electricChars&&a.options.smartIndent&&o.head.ch<100&&(!n||e.sel.ranges[n-1].head.line!=o.head.line)){var t=a.getModeAt(o.head);if(t.electricChars){for(var u=0;u<t.electricChars.length;u++)if(k.indexOf(t.electricChars.charAt(u))>-1){Td(a,o.head.line,"smart");break}}else if(t.electricInput){var v=zd(s);t.electricInput.test(Df(e,v.line).text.slice(0,v.ch))&&Td(a,o.head.line,"smart")}}}return Rd(a),a.curOp.updateInput=r,a.curOp.typing=!0,f.length>1e3||f.indexOf("\n")>-1?b.value=a.display.prevInput="":a.display.prevInput=f,h&&yc(a),a.state.pasteIncoming=a.state.cutIncoming=!1,!0}function Pc(a,b){var c,e,f=a.doc;if(a.somethingSelected()){a.display.prevInput="";var h=f.sel.primary();c=gh&&(h.to().line-h.from().line>100||(e=a.getSelection()).length>1e3);var i=c?"-":e||a.getSelection();a.display.input.value=i,a.state.focused&&Ag(a.display.input),g&&!d&&(a.display.inputHasSelection=i)}else b||(a.display.prevInput=a.display.input.value="",g&&!d&&(a.display.inputHasSelection=null));a.display.inaccurateSelection=c}function Qc(a){"nocursor"==a.options.readOnly||q&&Qg()==a.display.input||a.display.input.focus()}function Rc(a){a.state.focused||(Qc(a),vd(a))}function Sc(a){return a.options.readOnly||a.doc.cantEdit}function Tc(a){function e(){a.state.focused&&setTimeout(Fg(Qc,a),0)}function f(b){lg(a,b)||bg(b)}function i(b){if(a.somethingSelected())c.inaccurateSelection&&(c.prevInput="",c.inaccurateSelection=!1,c.input.value=a.getSelection(),Ag(c.input));else{for(var d="",e=[],f=0;f<a.doc.sel.ranges.length;f++){var g=a.doc.sel.ranges[f].head.line,h={anchor:nb(g,0),head:nb(g+1,0)};e.push(h),d+=a.getRange(h.anchor,h.head)}"cut"==b.type?a.setSelections(e,null,rg):(c.prevInput="",c.input.value=d,Ag(c.input))}"cut"==b.type&&(a.state.cutIncoming=!0)}var c=a.display;eg(c.scroller,"mousedown",Ac(a,Xc)),b?eg(c.scroller,"dblclick",Ac(a,function(b){if(!lg(a,b)){var c=Wc(a,b);if(c&&!cd(a,b)&&!Vc(a.display,b)){$f(b);var d=Yd(a.doc,c);Cb(a.doc,d.anchor,d.head)}}})):eg(c.scroller,"dblclick",function(b){lg(a,b)||$f(b)}),eg(c.lineSpace,"selectstart",function(a){Vc(c,a)||$f(a)}),v||eg(c.scroller,"contextmenu",function(b){xd(a,b)}),eg(c.scroller,"scroll",function(){c.scroller.clientHeight&&(gd(a,c.scroller.scrollTop),hd(a,c.scroller.scrollLeft,!0),gg(a,"scroll",a))}),eg(c.scrollbarV,"scroll",function(){c.scroller.clientHeight&&gd(a,c.scrollbarV.scrollTop)}),eg(c.scrollbarH,"scroll",function(){c.scroller.clientHeight&&hd(a,c.scrollbarH.scrollLeft)}),eg(c.scroller,"mousewheel",function(b){kd(a,b)}),eg(c.scroller,"DOMMouseScroll",function(b){kd(a,b)}),eg(c.scrollbarH,"mousedown",e),eg(c.scrollbarV,"mousedown",e),eg(c.wrapper,"scroll",function(){c.wrapper.scrollTop=c.wrapper.scrollLeft=0}),eg(c.input,"keyup",Ac(a,td)),eg(c.input,"input",function(){g&&!d&&a.display.inputHasSelection&&(a.display.inputHasSelection=null),Nc(a)}),eg(c.input,"keydown",Ac(a,rd)),eg(c.input,"keypress",Ac(a,ud)),eg(c.input,"focus",Fg(vd,a)),eg(c.input,"blur",Fg(wd,a)),a.options.dragDrop&&(eg(c.scroller,"dragstart",function(b){fd(a,b)}),eg(c.scroller,"dragenter",f),eg(c.scroller,"dragover",f),eg(c.scroller,"drop",Ac(a,ed))),eg(c.scroller,"paste",function(b){Vc(c,b)||(a.state.pasteIncoming=!0,Qc(a),Nc(a))}),eg(c.input,"paste",function(){if(h&&!a.state.fakedLastChar&&!(new Date-a.state.lastMiddleDown<200)){var b=c.input.selectionStart,d=c.input.selectionEnd;c.input.value+="$",c.input.selectionStart=b,c.input.selectionEnd=d,a.state.fakedLastChar=!0}a.state.pasteIncoming=!0,Nc(a)}),eg(c.input,"cut",i),eg(c.input,"copy",i),m&&eg(c.sizer,"mouseup",function(){Qg()==c.input&&c.input.blur(),Qc(a)})}function Uc(a){var b=a.display;b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,a.setSize()}function Vc(a,b){for(var c=cg(b);c!=a.wrapper;c=c.parentNode)if(!c||c.ignoreEvents||c.parentNode==a.sizer&&c!=a.mover)return!0}function Wc(a,b,c,d){var e=a.display;if(!c){var f=cg(b);if(f==e.scrollbarH||f==e.scrollbarV||f==e.scrollbarFiller||f==e.gutterFiller)return null}var g,h,i=e.lineSpace.getBoundingClientRect();try{g=b.clientX-i.left,h=b.clientY-i.top}catch(b){return null}var k,j=rc(a,g,h);if(d&&1==j.xRel&&(k=Df(a.doc,j.line).text).length==j.ch){var l=vg(k,k.length,a.options.tabSize)-k.length;j=nb(j.line,Math.max(0,Math.round((g-Yb(a.display).left)/vc(a.display))-l))}return j}function Xc(a){if(!lg(this,a)){var b=this,c=b.display;if(c.shift=a.shiftKey,Vc(c,a))return void(h||(c.scroller.draggable=!1,setTimeout(function(){c.scroller.draggable=!0},100)));if(!cd(b,a)){var d=Wc(b,a);switch(window.focus(),dg(a)){case 1:d?$c(b,a,d):cg(a)==c.scroller&&$f(a);break;case 2:h&&(b.state.lastMiddleDown=+new Date),d&&Cb(b.doc,d),setTimeout(Fg(Qc,b),20),$f(a);break;case 3:v&&xd(b,a)}}}}function $c(a,b,c){setTimeout(Fg(Rc,a),0);var e,d=+new Date;Zc&&Zc.time>d-400&&0==ob(Zc.pos,c)?e="triple":Yc&&Yc.time>d-400&&0==ob(Yc.pos,c)?(e="double",Zc={time:d,pos:c}):(e="single",Yc={time:d,pos:c});var f=a.doc.sel,g=r?b.metaKey:b.ctrlKey;a.options.dragDrop&&Zg&&!g&&!Sc(a)&&"single"==e&&f.contains(c)>-1&&f.somethingSelected()?_c(a,b,c):ad(a,b,c,e,g)}function _c(a,c,e){var f=a.display,g=Ac(a,function(i){h&&(f.scroller.draggable=!1),a.state.draggingText=!1,fg(document,"mouseup",g),fg(f.scroller,"drop",g),Math.abs(c.clientX-i.clientX)+Math.abs(c.clientY-i.clientY)<10&&($f(i),Cb(a.doc,e),Qc(a),b&&!d&&setTimeout(function(){document.body.focus(),Qc(a)},20))});h&&(f.scroller.draggable=!0),a.state.draggingText=g,f.scroller.dragDrop&&f.scroller.dragDrop(),eg(document,"mouseup",g),eg(f.scroller,"drop",g)}function ad(a,b,c,d,f){function p(b){if(0!=ob(o,b))if(o=b,"rect"==d){for(var e=[],f=a.options.tabSize,g=vg(Df(i,c.line).text,c.ch,f),h=vg(Df(i,b.line).text,b.ch,f),m=Math.min(g,h),n=Math.max(g,h),p=Math.min(c.line,b.line),q=Math.min(a.lastLine(),Math.max(c.line,b.line));q>=p;p++){var r=Df(i,p).text,s=wg(r,m,f);m==n?e.push(new tb(nb(p,s),nb(p,s))):r.length>s&&e.push(new tb(nb(p,s),nb(p,wg(r,n,f))))}e.length||e.push(new tb(c,c)),Ib(i,ub(l.ranges.slice(0,k).concat(e),k),sg)}else{var t=j,u=t.anchor,v=b;if("single"!=d){if("double"==d)var w=Yd(i,b);else var w=new tb(nb(b.line,0),xb(i,nb(b.line+1,0)));ob(w.anchor,u)>0?(v=w.head,u=rb(t.from(),w.anchor)):(v=w.anchor,u=qb(t.to(),w.head))}var e=l.ranges.slice(0);e[k]=new tb(xb(i,u),v),Ib(i,ub(e,k),sg)}}function s(b){var c=++r,e=Wc(a,b,!0,"rect"==d);if(e)if(0!=ob(e,o)){Rc(a),p(e);var f=P(h,i);(e.line>=f.to||e.line<f.from)&&setTimeout(Ac(a,function(){r==c&&s(b)}),150)}else{var g=b.clientY<q.top?-20:b.clientY>q.bottom?20:0;g&&setTimeout(Ac(a,function(){r==c&&(h.scroller.scrollTop+=g,s(b))}),50)}}function t(b){r=1/0,$f(b),Qc(a),fg(document,"mousemove",u),fg(document,"mouseup",v),i.history.lastSelOrigin=null}var h=a.display,i=a.doc;$f(b);var j,k,l=i.sel;if(f&&!b.shiftKey?(k=i.sel.contains(c),j=k>-1?i.sel.ranges[k]:new tb(c,c)):j=i.sel.primary(),b.altKey)d="rect",f||(j=new tb(c,c)),c=Wc(a,b,!0,!0),k=-1;else if("double"==d){var m=Yd(i,c);j=a.display.shift||i.extend?Bb(i,j,m.anchor,m.head):m}else if("triple"==d){var n=new tb(nb(c.line,0),xb(i,nb(c.line+1,0)));j=a.display.shift||i.extend?Bb(i,j,n.anchor,n.head):n}else j=Bb(i,j,c);f?k>-1?Eb(i,k,j,sg):(k=i.sel.ranges.length,Ib(i,ub(i.sel.ranges.concat([j]),k),{scroll:!1,origin:"*mouse"})):(k=0,Ib(i,new sb([j],0),sg),l=i.sel);var o=c,q=h.wrapper.getBoundingClientRect(),r=0,u=Ac(a,function(a){(g&&!e?a.buttons:dg(a))?s(a):t(a)}),v=Ac(a,t);eg(document,"mousemove",u),eg(document,"mouseup",v)}function bd(a,b,c,d,e){try{var f=b.clientX,g=b.clientY}catch(b){return!1}if(f>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&$f(b);var h=a.display,i=h.lineDiv.getBoundingClientRect();if(g>i.bottom||!ng(a,c))return ag(b);g-=i.top-h.viewOffset;for(var j=0;j<a.options.gutters.length;++j){var k=h.gutters.childNodes[j];if(k&&k.getBoundingClientRect().right>=f){return e(a,c,a,If(a.doc,g),a.options.gutters[j],b),ag(b)}}}function cd(a,b){return bd(a,b,"gutterClick",!0,jg)}function ed(a){var b=this;if(!lg(b,a)&&!Vc(b.display,a)){$f(a),g&&(dd=+new Date);var c=Wc(b,a,!0),d=a.dataTransfer.files;if(c&&!Sc(b))if(d&&d.length&&window.FileReader&&window.File)for(var e=d.length,f=Array(e),h=0,i=function(a,d){var g=new FileReader;g.onload=Ac(b,function(){if(f[d]=g.result,++h==e){c=xb(b.doc,c);var a={from:c,to:c,text:eh(f.join("\n")),origin:"paste"};Fd(b.doc,a),Hb(b.doc,vb(c,zd(a)))}}),g.readAsText(a)},j=0;e>j;++j)i(d[j],j);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return b.state.draggingText(a),void setTimeout(Fg(Qc,b),20);try{var f=a.dataTransfer.getData("Text");if(f){var k=b.state.draggingText&&b.listSelections();if(Jb(b.doc,vb(c,c)),k)for(var j=0;j<k.length;++j)Ld(b.doc,"",k[j].anchor,k[j].head,"drag");b.replaceSelection(f,"around","paste"),Qc(b)}}catch(a){}}}}function fd(a,b){if(g&&(!a.state.draggingText||+new Date-dd<100))return void bg(b);if(!lg(a,b)&&!Vc(a.display,b)&&(b.dataTransfer.setData("Text",a.getSelection()),b.dataTransfer.setDragImage&&!l)){var c=Lg("img",null,null,"position: fixed; left: 0; top: 0;");c.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",k&&(c.width=c.height=1,a.display.wrapper.appendChild(c),c._top=c.offsetTop),b.dataTransfer.setDragImage(c,0,0),k&&c.parentNode.removeChild(c)}}function gd(b,c){Math.abs(b.doc.scrollTop-c)<2||(b.doc.scrollTop=c,a||U(b,{top:c}),b.display.scroller.scrollTop!=c&&(b.display.scroller.scrollTop=c),b.display.scrollbarV.scrollTop!=c&&(b.display.scrollbarV.scrollTop=c),a&&U(b),Sb(b,100))}function hd(a,b,c){(c?b==a.doc.scrollLeft:Math.abs(a.doc.scrollLeft-b)<2)||(b=Math.min(b,a.display.scroller.scrollWidth-a.display.scroller.clientWidth),a.doc.scrollLeft=b,Q(a),a.display.scroller.scrollLeft!=b&&(a.display.scroller.scrollLeft=b),a.display.scrollbarH.scrollLeft!=b&&(a.display.scrollbarH.scrollLeft=b))}function kd(b,c){var d=c.wheelDeltaX,e=c.wheelDeltaY;null==d&&c.detail&&c.axis==c.HORIZONTAL_AXIS&&(d=c.detail),null==e&&c.detail&&c.axis==c.VERTICAL_AXIS?e=c.detail:null==e&&(e=c.wheelDelta);var f=b.display,g=f.scroller;if(d&&g.scrollWidth>g.clientWidth||e&&g.scrollHeight>g.clientHeight){if(e&&r&&h)a:for(var i=c.target,j=f.view;i!=g;i=i.parentNode)for(var l=0;l<j.length;l++)if(j[l].node==i){b.display.currentWheelTarget=i;break a}if(d&&!a&&!k&&null!=jd)return e&&gd(b,Math.max(0,Math.min(g.scrollTop+e*jd,g.scrollHeight-g.clientHeight))),hd(b,Math.max(0,Math.min(g.scrollLeft+d*jd,g.scrollWidth-g.clientWidth))),$f(c),void(f.wheelStartX=null);if(e&&null!=jd){var m=e*jd,n=b.doc.scrollTop,o=n+f.wrapper.clientHeight;0>m?n=Math.max(0,n+m-50):o=Math.min(b.doc.height,o+m+50),U(b,{top:n,bottom:o})}20>id&&(null==f.wheelStartX?(f.wheelStartX=g.scrollLeft,f.wheelStartY=g.scrollTop,f.wheelDX=d,f.wheelDY=e,setTimeout(function(){if(null!=f.wheelStartX){var a=g.scrollLeft-f.wheelStartX,b=g.scrollTop-f.wheelStartY,c=b&&f.wheelDY&&b/f.wheelDY||a&&f.wheelDX&&a/f.wheelDX;f.wheelStartX=f.wheelStartY=null,c&&(jd=(jd*id+c)/(id+1),++id)}},200)):(f.wheelDX+=d,f.wheelDY+=e))}}function ld(a,b,c){if("string"==typeof b&&!(b=ie[b]))return!1;a.display.pollingFast&&Oc(a)&&(a.display.pollingFast=!1);var d=a.display.shift,e=!1;try{Sc(a)&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=qg}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function md(a){var b=a.state.keyMaps.slice(0);return a.options.extraKeys&&b.push(a.options.extraKeys),b.push(a.options.keyMap),b}function od(a,b){var c=ke(a.options.keyMap),d=c.auto;clearTimeout(nd),d&&!me(b)&&(nd=setTimeout(function(){ke(a.options.keyMap)==c&&(a.options.keyMap=d.call?d.call(null,a):d,F(a))},50));var e=ne(b,!0),f=!1;if(!e)return!1;var g=md(a);return f=b.shiftKey?le("Shift-"+e,g,function(b){return ld(a,b,!0)})||le(e,g,function(b){return("string"==typeof b?/^go[A-Z]/.test(b):b.motion)?ld(a,b):void 0}):le(e,g,function(b){return ld(a,b)}),f&&($f(b),Rb(a),jg(a,"keyHandled",a,e,b)),f}function pd(a,b,c){var d=le("'"+c+"'",md(a),function(b){return ld(a,b,!0)});return d&&($f(b),Rb(a),jg(a,"keyHandled",a,"'"+c+"'",b)),d}function rd(a){var c=this;if(Rc(c),!lg(c,a)){b&&27==a.keyCode&&(a.returnValue=!1);var d=a.keyCode;c.display.shift=16==d||a.shiftKey;var e=od(c,a);k&&(qd=e?d:null,!e&&88==d&&!gh&&(r?a.metaKey:a.ctrlKey)&&c.replaceSelection("",null,"cut")),18!=d||/\bCodeMirror-crosshair\b/.test(c.display.lineDiv.className)||sd(c)}}function sd(a){function c(a){18!=a.keyCode&&a.altKey||(Sg(b,"CodeMirror-crosshair"),fg(document,"keyup",c),fg(document,"mouseover",c))}var b=a.display.lineDiv;Tg(b,"CodeMirror-crosshair"),eg(document,"keyup",c),eg(document,"mouseover",c)}function td(a){lg(this,a)||16==a.keyCode&&(this.doc.sel.shift=!1)}function ud(a){var b=this;if(!lg(b,a)){var c=a.keyCode,e=a.charCode;if(k&&c==qd)return qd=null,void $f(a);if(!(k&&(!a.which||a.which<10)||m)||!od(b,a)){pd(b,a,String.fromCharCode(null==e?c:e))||(g&&!d&&(b.display.inputHasSelection=null),Nc(b))}}}function vd(a){"nocursor"!=a.options.readOnly&&(a.state.focused||(gg(a,"focus",a),a.state.focused=!0,Tg(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(Pc(a),h&&setTimeout(Fg(Pc,a,!0),0))),Mc(a),Rb(a))}function wd(a){a.state.focused&&(gg(a,"blur",a),a.state.focused=!1,Sg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150)}function xd(a,b){function j(){if(null!=c.input.selectionStart){var b=a.somethingSelected(),d=c.input.value="​"+(b?c.input.value:"");c.prevInput=b?"":"​",c.input.selectionStart=1,c.input.selectionEnd=d.length}}function l(){if(c.inputDiv.style.position="relative",c.input.style.cssText=i,d&&(c.scrollbarV.scrollTop=c.scroller.scrollTop=f),Mc(a),null!=c.input.selectionStart){(!g||d)&&j();var b=0,e=function(){c.selForContextMenu==a.doc.sel&&0==c.input.selectionStart?Ac(a,ie.selectAll)(a):b++<10?c.detectingSelectAll=setTimeout(e,500):Pc(a)};c.detectingSelectAll=setTimeout(e,200)}}if(!lg(a,b,"contextmenu")){var c=a.display;if(!Vc(c,b)&&!yd(a,b)){var e=Wc(a,b),f=c.scroller.scrollTop;if(e&&!k){a.options.resetSelectionOnContextMenu&&-1==a.doc.sel.contains(e)&&Ac(a,Ib)(a.doc,vb(e),rg);var i=c.input.style.cssText;if(c.inputDiv.style.position="absolute",c.input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(b.clientY-5)+"px; left: "+(b.clientX-5)+"px; z-index: 1000; background: "+(g?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",Qc(a),Pc(a),a.somethingSelected()||(c.input.value=c.prevInput=" "),c.selForContextMenu=a.doc.sel,clearTimeout(c.detectingSelectAll),g&&!d&&j(),v){bg(b);var m=function(){fg(window,"mouseup",m),setTimeout(l,20)};eg(window,"mouseup",m)}else setTimeout(l,50)}}}}function yd(a,b){return!!ng(a,"gutterContextMenu")&&bd(a,b,"gutterContextMenu",!1,gg)}function Ad(a,b){if(ob(a,b.from)<0)return a;if(ob(a,b.to)<=0)return zd(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=zd(b).ch-b.to.ch),nb(c,d)}function Bd(a,b){for(var c=[],d=0;d<a.sel.ranges.length;d++){var e=a.sel.ranges[d];c.push(new tb(Ad(e.anchor,b),Ad(e.head,b)))}return ub(c,a.sel.primIndex)}function Cd(a,b,c){return a.line==b.line?nb(c.line,a.ch-b.ch+c.ch):nb(c.line+(a.line-b.line),a.ch)}function Dd(a,b,c){for(var d=[],e=nb(a.first,0),f=e,g=0;g<b.length;g++){var h=b[g],i=Cd(h.from,e,f),j=Cd(zd(h),e,f);if(e=h.to,f=j,"around"==c){var k=a.sel.ranges[g],l=ob(k.head,k.anchor)<0;d[g]=new tb(l?j:i,l?i:j)}else d[g]=new tb(i,i)}return new sb(d,a.sel.primIndex)}function Ed(a,b,c){var d={canceled:!1,from:b.from,to:b.to,text:b.text,origin:b.origin,cancel:function(){this.canceled=!0}};return c&&(d.update=function(b,c,d,e){b&&(this.from=xb(a,b)),c&&(this.to=xb(a,c)),d&&(this.text=d),void 0!==e&&(this.origin=e)}),gg(a,"beforeChange",a,d),a.cm&&gg(a.cm,"beforeChange",a.cm,d),d.canceled?null:{from:d.from,to:d.to,text:d.text,origin:d.origin}}function Fd(a,b,c){if(a.cm){if(!a.cm.curOp)return Ac(a.cm,Fd)(a,b,c);if(a.cm.state.suppressEdits)return}if(!(ng(a,"beforeChange")||a.cm&&ng(a.cm,"beforeChange"))||(b=Ed(a,b,!0))){var d=w&&!c&&Ge(a,b.from,b.to);if(d)for(var e=d.length-1;e>=0;--e)Gd(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text});else Gd(a,b)}}function Gd(a,b){if(1!=b.text.length||""!=b.text[0]||0!=ob(b.from,b.to)){var c=Bd(a,b);Pf(a,b,c,a.cm?a.cm.curOp.id:NaN),Jd(a,b,c,De(a,b));var d=[];Bf(a,function(a,c){c||-1!=Bg(d,a.history)||(Zf(a.history,b),d.push(a.history)),Jd(a,b,null,De(a,b))})}}function Hd(a,b,c){if(!a.cm||!a.cm.state.suppressEdits){for(var e,d=a.history,f=a.sel,g="undo"==b?d.done:d.undone,h="undo"==b?d.undone:d.done,i=0;i<g.length&&(e=g[i],c?!e.ranges||e.equals(a.sel):e.ranges);i++);if(i!=g.length){for(d.lastOrigin=d.lastSelOrigin=null;e=g.pop(),e.ranges;){if(Sf(e,h),c&&!e.equals(a.sel))return void Ib(a,e,{clearRedo:!1});f=e}var j=[];Sf(f,h),h.push({changes:j,generation:d.generation}),d.generation=e.generation||++d.maxGeneration;for(var k=ng(a,"beforeChange")||a.cm&&ng(a.cm,"beforeChange"),i=e.changes.length-1;i>=0;--i){var l=e.changes[i];if(l.origin=b,k&&!Ed(a,l,!1))return void(g.length=0);j.push(Mf(a,l));var m=i?Bd(a,l,null):zg(g);Jd(a,l,m,Fe(a,l)),!i&&a.cm&&a.cm.scrollIntoView(l);var n=[];Bf(a,function(a,b){b||-1!=Bg(n,a.history)||(Zf(a.history,l),n.push(a.history)),Jd(a,l,null,Fe(a,l))})}}}}function Id(a,b){if(0!=b&&(a.first+=b,a.sel=new sb(Cg(a.sel.ranges,function(a){return new tb(nb(a.anchor.line+b,a.anchor.ch),nb(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){Fc(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;d<c.viewTo;d++)Gc(a.cm,d,"gutter")}}function Jd(a,b,c,d){if(a.cm&&!a.cm.curOp)return Ac(a.cm,Jd)(a,b,c,d);if(b.to.line<a.first)return void Id(a,b.text.length-1-(b.to.line-b.from.line));if(!(b.from.line>a.lastLine())){if(b.from.line<a.first){var e=b.text.length-1-(a.first-b.from.line);Id(a,e),b={from:nb(a.first,0),to:nb(b.to.line+e,b.to.ch),text:[zg(b.text)],origin:b.origin}}var f=a.lastLine();b.to.line>f&&(b={from:b.from,to:nb(f,Df(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=Ef(a,b.from,b.to),c||(c=Bd(a,b,null)),a.cm?Kd(a.cm,b,d):uf(a,b,d),Jb(a,c,rg)}}function Kd(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping||(i=Hf(Qe(Df(d,f.line))),d.iter(i,g.line+1,function(a){return a==e.maxLine?(h=!0,!0):void 0})),d.sel.contains(b.from,b.to)>-1&&mg(a),uf(d,b,c,D(a)),a.options.lineWrapping||(d.iter(i,f.line+b.text.length,function(a){var b=K(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,h=!1)}),h&&(a.curOp.updateMaxLine=!0)),d.frontier=Math.min(d.frontier,f.line),Sb(a,400);var j=b.text.length-(g.line-f.line)-1;f.line!=g.line||1!=b.text.length||tf(a.doc,b)?Fc(a,f.line,g.line+1,j):Gc(a,f.line,"text");var k=ng(a,"changes"),l=ng(a,"change");if(l||k){var m={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin};l&&jg(a,"change",a,m),k&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(m)}a.display.selForContextMenu=null}function Ld(a,b,c,d,e){if(d||(d=c),ob(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=eh(b)),Fd(a,{from:c,to:d,text:b,origin:e})}function Md(a,b){var c=a.display,d=c.sizer.getBoundingClientRect(),e=null;if(b.top+d.top<0?e=!0:b.bottom+d.top>(window.innerHeight||document.documentElement.clientHeight)&&(e=!1),null!=e&&!o){var f=Lg("div","​",null,"position: absolute; top: "+(b.top-c.viewOffset-Wb(a.display))+"px; height: "+(b.bottom-b.top+pg)+"px; left: "+b.left+"px; width: 2px;");a.display.lineSpace.appendChild(f),f.scrollIntoView(e),a.display.lineSpace.removeChild(f)}}function Nd(a,b,c,d){for(null==d&&(d=0);;){var e=!1,f=oc(a,b),g=c&&c!=b?oc(a,c):f,h=Pd(a,Math.min(f.left,g.left),Math.min(f.top,g.top)-d,Math.max(f.left,g.left),Math.max(f.bottom,g.bottom)+d),i=a.doc.scrollTop,j=a.doc.scrollLeft;if(null!=h.scrollTop&&(gd(a,h.scrollTop),Math.abs(a.doc.scrollTop-i)>1&&(e=!0)),null!=h.scrollLeft&&(hd(a,h.scrollLeft),Math.abs(a.doc.scrollLeft-j)>1&&(e=!0)),!e)return f}}function Od(a,b,c,d,e){var f=Pd(a,b,c,d,e);null!=f.scrollTop&&gd(a,f.scrollTop),null!=f.scrollLeft&&hd(a,f.scrollLeft)}function Pd(a,b,c,d,e){var f=a.display,g=uc(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=f.scroller.clientHeight-pg,j={},k=a.doc.height+Xb(f),l=g>c,m=e>k-g;if(h>c)j.scrollTop=l?0:c;else if(e>h+i){var n=Math.min(c,(m?k:e)-i);n!=h&&(j.scrollTop=n)}var o=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft,p=f.scroller.clientWidth-pg;b+=f.gutters.offsetWidth,d+=f.gutters.offsetWidth;var q=f.gutters.offsetWidth,r=q+10>b;return o+q>b||r?(r&&(b=0),j.scrollLeft=Math.max(0,b-10-q)):d>p+o-3&&(j.scrollLeft=d+10-p),j}function Qd(a,b,c){(null!=b||null!=c)&&Sd(a),null!=b&&(a.curOp.scrollLeft=(null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b),null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c)}function Rd(a){Sd(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?nb(b.line,b.ch-1):b,d=nb(b.line,b.ch+1)),a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function Sd(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=pc(a,b.from),d=pc(a,b.to),e=Pd(a,Math.min(c.left,d.left),Math.min(c.top,d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);a.scrollTo(e.scrollLeft,e.scrollTop)}}function Td(a,b,c,d){var f,e=a.doc;null==c&&(c="add"),"smart"==c&&(a.doc.mode.indent?f=Vb(a,b):c="prev");var g=a.options.tabSize,h=Df(e,b),i=vg(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var k,j=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(k=a.doc.mode.indent(f,h.text.slice(j.length),h.text))==qg){if(!d)return;c="prev"}}else k=0,c="not";"prev"==c?k=b>e.first?vg(Df(e,b-1).text,null,g):0:"add"==c?k=i+a.options.indentUnit:"subtract"==c?k=i-a.options.indentUnit:"number"==typeof c&&(k=i+c),k=Math.max(0,k);var l="",m=0;if(a.options.indentWithTabs)for(var n=Math.floor(k/g);n;--n)m+=g,l+="\t";if(k>m&&(l+=yg(k-m)),l!=j)Ld(a.doc,l,nb(b,0),nb(b,j.length),"+input");else for(var n=0;n<e.sel.ranges.length;n++){var o=e.sel.ranges[n];if(o.head.line==b&&o.head.ch<j.length){var m=nb(b,j.length);Eb(e,n,new tb(m,m));break}}h.stateAfter=null}function Ud(a,b,c,d){var e=b,f=b,g=a.doc;return"number"==typeof b?f=Df(g,wb(g,b)):e=Hf(b),null==e?null:(d(f,e)&&Gc(a,e,c),f)}function Vd(a,b){for(var c=a.doc.sel.ranges,d=[],e=0;e<c.length;e++){for(var f=b(c[e]);d.length&&ob(f.from,zg(d).to)<=0;){var g=d.pop();if(ob(g.from,f.from)<0){f.from=g.from;break}}d.push(f)}zc(a,function(){for(var b=d.length-1;b>=0;b--)Ld(a.doc,"",d[b].from,d[b].to,"+delete");Rd(a)})}function Wd(a,b,c,d,e){function k(){var b=f+c;return b<a.first||b>=a.first+a.size?j=!1:(f=b,i=Df(a,b))}function l(a){var b=(e?th:uh)(i,g,c,!0);if(null==b){if(a||!k())return j=!1;g=e?(0>c?mh:lh)(i):0>c?i.text.length:0}else g=b;return!0}var f=b.line,g=b.ch,h=c,i=Df(a,f),j=!0;if("char"==d)l();else if("column"==d)l(!0);else if("word"==d||"group"==d)for(var m=null,n="group"==d,o=!0;!(0>c)||l(!o);o=!1){var p=i.text.charAt(g)||"\n",q=Hg(p)?"w":n&&"\n"==p?"n":!n||/\s/.test(p)?null:"p";if(!n||o||q||(q="s"),m&&m!=q){0>c&&(c=1,l());break}if(q&&(m=q),c>0&&!l(!o))break}var r=Nb(a,nb(f,g),h,!0);return j||(r.hitSide=!0),r}function Xd(a,b,c,d){var g,e=a.doc,f=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);g=b.top+c*(h-(0>c?1.5:.5)*uc(a.display))}else"line"==d&&(g=c>0?b.bottom+3:b.top-3);for(;;){var i=rc(a,f,g);if(!i.outside)break;if(0>c?0>=g:g>=e.height){i.hitSide=!0;break}g+=5*c}return i}function Yd(a,b){var c=Df(a,b.line).text,d=b.ch,e=b.ch;if(c){(b.xRel<0||e==c.length)&&d?--d:++e;for(var f=c.charAt(d),g=Hg(f)?Hg:/\s/.test(f)?function(a){return/\s/.test(a)}:function(a){return!/\s/.test(a)&&!Hg(a)};d>0&&g(c.charAt(d-1));)--d;for(;e<c.length&&g(c.charAt(e));)++e}return new tb(nb(b.line,d),nb(b.line,e))}function _d(a,b,c,d){y.defaults[a]=b,c&&($d[a]=d?function(a,b,d){d!=ae&&c(a,b,d)}:c)}function ke(a){return"string"==typeof a?je[a]:a}function re(a,b,c,d,e){if(d&&d.shared)return te(a,b,c,d,e);if(a.cm&&!a.cm.curOp)return Ac(a.cm,re)(a,b,c,d,e);var f=new pe(a,e),g=ob(b,c);if(d&&Eg(d,f,!1),g>0||0==g&&!1!==f.clearWhenEmpty)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=Lg("span",[f.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||(f.widgetNode.ignoreEvents=!0),d.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(Pe(a,b.line,b,c,f)||b.line!=c.line&&Pe(a,c.line,b,c,f))throw new Error("Inserting collapsed marker partially overlapping an existing one");x=!0}f.addToHistory&&Pf(a,{from:b,to:c,origin:"markText"},a.sel,NaN);var j,h=b.line,i=a.cm;if(a.iter(h,c.line+1,function(a){i&&f.collapsed&&!i.options.lineWrapping&&Qe(a)==i.display.maxLine&&(j=!0),f.collapsed&&h!=b.line&&Gf(a,0),Ae(a,new xe(f,h==b.line?b.ch:null,h==c.line?c.ch:null)),++h}),f.collapsed&&a.iter(b.line,c.line+1,function(b){Ue(a,b)&&Gf(b,0)}),f.clearOnEnter&&eg(f,"beforeCursorEnter",function(){f.clear()}),f.readOnly&&(w=!0,(a.history.done.length||a.history.undone.length)&&a.clearHistory()),f.collapsed&&(f.id=++qe,f.atomic=!0),i){if(j&&(i.curOp.updateMaxLine=!0),f.collapsed)Fc(i,b.line,c.line+1);else if(f.className||f.title||f.startStyle||f.endStyle)for(var k=b.line;k<=c.line;k++)Gc(i,k,"text");f.atomic&&Lb(i.doc),jg(i,"markerAdded",i,f)}return f}function te(a,b,c,d,e){d=Eg(d),d.shared=!1;var f=[re(a,b,c,d,e)],g=f[0],h=d.widgetNode;return Bf(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(re(a,xb(a,b),xb(a,c),d,e));for(var i=0;i<a.linked.length;++i)if(a.linked[i].isParent)return;g=zg(f)}),new se(f,g)}function ue(a){return a.findMarks(nb(a.first,0),a.clipPos(nb(a.lastLine())),function(a){return a.parent})}function ve(a,b){for(var c=0;c<b.length;c++){var d=b[c],e=d.find(),f=a.clipPos(e.from),g=a.clipPos(e.to);if(ob(f,g)){var h=re(a,f,g,d.primary,d.primary.type);d.markers.push(h),h.parent=d}}}function we(a){for(var b=0;b<a.length;b++){var c=a[b],d=[c.primary.doc];Bf(c.primary.doc,function(a){d.push(a)});for(var e=0;e<c.markers.length;e++){var f=c.markers[e];-1==Bg(d,f.doc)&&(f.parent=null,c.markers.splice(e--,1))}}}function xe(a,b,c){this.marker=a,this.from=b,this.to=c}function ye(a,b){if(a)for(var c=0;c<a.length;++c){var d=a[c];if(d.marker==b)return d}}function ze(a,b){for(var c,d=0;d<a.length;++d)a[d]!=b&&(c||(c=[])).push(a[d]);return c}function Ae(a,b){a.markedSpans=a.markedSpans?a.markedSpans.concat([b]):[b],b.marker.attachLine(a)}function Be(a,b,c){if(a)for(var e,d=0;d<a.length;++d){var f=a[d],g=f.marker,h=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);if(h||f.from==b&&"bookmark"==g.type&&(!c||!f.marker.insertLeft)){var i=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);(e||(e=[])).push(new xe(g,f.from,i?null:f.to))}}return e}function Ce(a,b,c){if(a)for(var e,d=0;d<a.length;++d){var f=a[d],g=f.marker,h=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);(e||(e=[])).push(new xe(g,i?null:f.from-b,null==f.to?null:f.to-b))}}return e}function De(a,b){
+var c=zb(a,b.from.line)&&Df(a,b.from.line).markedSpans,d=zb(a,b.to.line)&&Df(a,b.to.line).markedSpans;if(!c&&!d)return null;var e=b.from.ch,f=b.to.ch,g=0==ob(b.from,b.to),h=Be(c,e,g),i=Ce(d,f,g),j=1==b.text.length,k=zg(b.text).length+(j?e:0);if(h)for(var l=0;l<h.length;++l){var m=h[l];if(null==m.to){var n=ye(i,m.marker);n?j&&(m.to=null==n.to?null:n.to+k):m.to=e}}if(i)for(var l=0;l<i.length;++l){var m=i[l];if(null!=m.to&&(m.to+=k),null==m.from){var n=ye(h,m.marker);n||(m.from=k,j&&(h||(h=[])).push(m))}else m.from+=k,j&&(h||(h=[])).push(m)}h&&(h=Ee(h)),i&&i!=h&&(i=Ee(i));var o=[h];if(!j){var q,p=b.text.length-2;if(p>0&&h)for(var l=0;l<h.length;++l)null==h[l].to&&(q||(q=[])).push(new xe(h[l].marker,null,null));for(var l=0;p>l;++l)o.push(q);o.push(i)}return o}function Ee(a){for(var b=0;b<a.length;++b){var c=a[b];null!=c.from&&c.from==c.to&&!1!==c.marker.clearWhenEmpty&&a.splice(b--,1)}return a.length?a:null}function Fe(a,b){var c=Vf(a,b),d=De(a,b);if(!c)return d;if(!d)return c;for(var e=0;e<c.length;++e){var f=c[e],g=d[e];if(f&&g)a:for(var h=0;h<g.length;++h){for(var i=g[h],j=0;j<f.length;++j)if(f[j].marker==i.marker)continue a;f.push(i)}else g&&(c[e]=g)}return c}function Ge(a,b,c){var d=null;if(a.iter(b.line,c.line+1,function(a){if(a.markedSpans)for(var b=0;b<a.markedSpans.length;++b){var c=a.markedSpans[b].marker;!c.readOnly||d&&-1!=Bg(d,c)||(d||(d=[])).push(c)}}),!d)return null;for(var e=[{from:b,to:c}],f=0;f<d.length;++f)for(var g=d[f],h=g.find(0),i=0;i<e.length;++i){var j=e[i];if(!(ob(j.to,h.from)<0||ob(j.from,h.to)>0)){var k=[i,1],l=ob(j.from,h.from),m=ob(j.to,h.to);(0>l||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(m>0||!g.inclusiveRight&&!m)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-1}}return e}function He(a){var b=a.markedSpans;if(b){for(var c=0;c<b.length;++c)b[c].marker.detachLine(a);a.markedSpans=null}}function Ie(a,b){if(b){for(var c=0;c<b.length;++c)b[c].marker.attachLine(a);a.markedSpans=b}}function Je(a){return a.inclusiveLeft?-1:0}function Ke(a){return a.inclusiveRight?1:0}function Le(a,b){var c=a.lines.length-b.lines.length;if(0!=c)return c;var d=a.find(),e=b.find(),f=ob(d.from,e.from)||Je(a)-Je(b);if(f)return-f;var g=ob(d.to,e.to)||Ke(a)-Ke(b);return g||b.id-a.id}function Me(a,b){var d,c=x&&a.markedSpans;if(c)for(var e,f=0;f<c.length;++f)e=c[f],e.marker.collapsed&&null==(b?e.from:e.to)&&(!d||Le(d,e.marker)<0)&&(d=e.marker);return d}function Ne(a){return Me(a,!0)}function Oe(a){return Me(a,!1)}function Pe(a,b,c,d,e){var f=Df(a,b),g=x&&f.markedSpans;if(g)for(var h=0;h<g.length;++h){var i=g[h];if(i.marker.collapsed){var j=i.marker.find(0),k=ob(j.from,c)||Je(i.marker)-Je(e),l=ob(j.to,d)||Ke(i.marker)-Ke(e);if(!(k>=0&&0>=l||0>=k&&l>=0)&&(0>=k&&(ob(j.to,c)||Ke(i.marker)-Je(e))>0||k>=0&&(ob(j.from,d)||Je(i.marker)-Ke(e))<0))return!0}}}function Qe(a){for(var b;b=Ne(a);)a=b.find(-1,!0).line;return a}function Re(a){for(var b,c;b=Oe(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function Se(a,b){var c=Df(a,b),d=Qe(c);return c==d?b:Hf(d)}function Te(a,b){if(b>a.lastLine())return b;var d,c=Df(a,b);if(!Ue(a,c))return b;for(;d=Oe(c);)c=d.find(1,!0).line;return Hf(c)+1}function Ue(a,b){var c=x&&b.markedSpans;if(c)for(var d,e=0;e<c.length;++e)if(d=c[e],d.marker.collapsed){if(null==d.from)return!0;if(!d.marker.widgetNode&&0==d.from&&d.marker.inclusiveLeft&&Ve(a,b,d))return!0}}function Ve(a,b,c){if(null==c.to){var d=c.marker.find(1,!0);return Ve(a,d.line,ye(d.line.markedSpans,c.marker))}if(c.marker.inclusiveRight&&c.to==b.text.length)return!0;for(var e,f=0;f<b.markedSpans.length;++f)if(e=b.markedSpans[f],e.marker.collapsed&&!e.marker.widgetNode&&e.from==c.to&&(null==e.to||e.to!=c.from)&&(e.marker.inclusiveLeft||c.marker.inclusiveRight)&&Ve(a,b,e))return!0}function Xe(a,b,c){Jf(b)<(a.curOp&&a.curOp.scrollTop||a.doc.scrollTop)&&Qd(a,null,c)}function Ye(a){return null!=a.height?a.height:(Pg(document.body,a.node)||Og(a.cm.display.measure,Lg("div",[a.node],null,"position: relative")),a.height=a.node.offsetHeight)}function Ze(a,b,c,d){var e=new We(a,c,d);return e.noHScroll&&(a.display.alignWidgets=!0),Ud(a,b,"widget",function(b){var c=b.widgets||(b.widgets=[]);if(null==e.insertAt?c.push(e):c.splice(Math.min(c.length-1,Math.max(0,e.insertAt)),0,e),e.line=b,!Ue(a.doc,b)){var d=Jf(b)<a.doc.scrollTop;Gf(b,b.height+Ye(e)),d&&Qd(a,null,e.height),a.curOp.forceUpdate=!0}return!0}),e}function _e(a,b,c,d){a.text=b,a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null),null!=a.order&&(a.order=null),He(a),Ie(a,c);var e=d?d(a):1;e!=a.height&&Gf(a,e)}function af(a){a.parent=null,He(a)}function bf(a,b){if(a)for(;;){var c=a.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!c)break;a=a.slice(0,c.index)+a.slice(c.index+c[0].length);var d=c[1]?"bgClass":"textClass";null==b[d]?b[d]=c[2]:new RegExp("(?:^|s)"+c[2]+"(?:$|s)").test(b[d])||(b[d]+=" "+c[2])}return a}function cf(a,b){if(a.blankLine)return a.blankLine(b);if(a.innerMode){var c=y.innerMode(a,b);return c.mode.blankLine?c.mode.blankLine(c.state):void 0}}function df(a,b,c){for(var d=0;10>d;d++){var e=a.token(b,c);if(b.pos>b.start)return e}throw new Error("Mode "+a.name+" failed to advance stream.")}function ef(a,b,c,d,e,f,g){var h=c.flattenSpans;null==h&&(h=a.options.flattenSpans);var l,i=0,j=null,k=new oe(b,a.options.tabSize);for(""==b&&bf(cf(c,d),f);!k.eol();){if(k.pos>a.options.maxHighlightLength?(h=!1,g&&hf(a,b,d,k.pos),k.pos=b.length,l=null):l=bf(df(c,k,d),f),a.options.addModeClass){var m=y.innerMode(c,d).mode.name;m&&(l="m-"+(l?m+" "+l:m))}h&&j==l||(i<k.start&&e(k.start,j),i=k.start,j=l),k.start=k.pos}for(;i<k.pos;){var n=Math.min(k.pos,i+5e4);e(n,j),i=n}}function ff(a,b,c,d){var e=[a.state.modeGen],f={};ef(a,b.text,a.doc.mode,c,function(a,b){e.push(a,b)},f,d);for(var g=0;g<a.state.overlays.length;++g){var h=a.state.overlays[g],i=1,j=0;ef(a,b.text,h.mode,!0,function(a,b){for(var c=i;a>j;){var d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"cm-overlay "+b),i=c+2;else for(;i>c;c+=2){var f=e[c+1];e[c+1]=(f?f+" ":"")+"cm-overlay "+b}},f)}return{styles:e,classes:f.bgClass||f.textClass?f:null}}function gf(a,b){if(!b.styles||b.styles[0]!=a.state.modeGen){var c=ff(a,b,b.stateAfter=Vb(a,Hf(b)));b.styles=c.styles,c.classes?b.styleClasses=c.classes:b.styleClasses&&(b.styleClasses=null)}return b.styles}function hf(a,b,c,d){var e=a.doc.mode,f=new oe(b,a.options.tabSize);for(f.start=f.pos=d||0,""==b&&cf(e,c);!f.eol()&&f.pos<=a.options.maxHighlightLength;)df(e,f,c),f.start=f.pos}function lf(a,b){if(!a||/^\s*$/.test(a))return null;var c=b.addModeClass?kf:jf;return c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function mf(a,b){var c=Lg("span",null,null,h?"padding-right: .1px":null),d={pre:Lg("pre",[c]),content:c,col:0,pos:0,cm:a};b.measure={};for(var e=0;e<=(b.rest?b.rest.length:0);e++){var i,f=e?b.rest[e-1]:b.line;d.pos=0,d.addToken=of,(g||h)&&a.getOption("lineWrapping")&&(d.addToken=pf(d.addToken)),dh(a.display.measure)&&(i=Kf(f))&&(d.addToken=qf(d.addToken,i)),d.map=[],sf(f,d,gf(a,f)),f.styleClasses&&(f.styleClasses.bgClass&&(d.bgClass=Ug(f.styleClasses.bgClass,d.bgClass||"")),f.styleClasses.textClass&&(d.textClass=Ug(f.styleClasses.textClass,d.textClass||""))),0==d.map.length&&d.map.push(0,0,d.content.appendChild(bh(a.display.measure))),0==e?(b.measure.map=d.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(d.map),(b.measure.caches||(b.measure.caches=[])).push({}))}return gg(a,"renderLine",a,b.line,d.pre),d}function nf(a){var b=Lg("span","•","cm-invalidchar");return b.title="\\u"+a.charCodeAt(0).toString(16),b}function of(a,b,c,e,f,g){if(b){var h=a.cm.options.specialChars,i=!1;if(h.test(b))for(var j=document.createDocumentFragment(),k=0;;){h.lastIndex=k;var l=h.exec(b),m=l?l.index-k:b.length-k;if(m){var n=document.createTextNode(b.slice(k,k+m));d?j.appendChild(Lg("span",[n])):j.appendChild(n),a.map.push(a.pos,a.pos+m,n),a.col+=m,a.pos+=m}if(!l)break;if(k+=m+1,"\t"==l[0]){var o=a.cm.options.tabSize,p=o-a.col%o,n=j.appendChild(Lg("span",yg(p),"cm-tab"));a.col+=p}else{var n=a.cm.options.specialCharPlaceholder(l[0]);d?j.appendChild(Lg("span",[n])):j.appendChild(n),a.col+=1}a.map.push(a.pos,a.pos+1,n),a.pos++}else{a.col+=b.length;var j=document.createTextNode(b);a.map.push(a.pos,a.pos+b.length,j),d&&(i=!0),a.pos+=b.length}if(c||e||f||i){var q=c||"";e&&(q+=e),f&&(q+=f);var r=Lg("span",[j],q);return g&&(r.title=g),a.content.appendChild(r)}a.content.appendChild(j)}}function pf(a){function b(a){for(var b=" ",c=0;c<a.length-2;++c)b+=c%2?" ":" ";return b+=" "}return function(c,d,e,f,g,h){a(c,d.replace(/ {3,}/g,b),e,f,g,h)}}function qf(a,b){return function(c,d,e,f,g,h){e=e?e+" cm-force-border":"cm-force-border";for(var i=c.pos,j=i+d.length;;){for(var k=0;k<b.length;k++){var l=b[k];if(l.to>i&&l.from<=i)break}if(l.to>=j)return a(c,d,e,f,g,h);a(c,d.slice(0,l.to-i),e,f,null,h),f=null,d=d.slice(l.to-i),i=l.to}}}function rf(a,b,c,d){var e=!d&&c.widgetNode;e&&(a.map.push(a.pos,a.pos+b,e),a.content.appendChild(e)),a.pos+=b}function sf(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var k,m,n,o,p,q,h=e.length,i=0,g=1,j="",l=0;;){if(l==i){m=n=o=p="",q=null,l=1/0;for(var r=[],s=0;s<d.length;++s){var t=d[s],u=t.marker;t.from<=i&&(null==t.to||t.to>i)?(null!=t.to&&l>t.to&&(l=t.to,n=""),u.className&&(m+=" "+u.className),u.startStyle&&t.from==i&&(o+=" "+u.startStyle),u.endStyle&&t.to==l&&(n+=" "+u.endStyle),u.title&&!p&&(p=u.title),u.collapsed&&(!q||Le(q.marker,u)<0)&&(q=t)):t.from>i&&l>t.from&&(l=t.from),"bookmark"==u.type&&t.from==i&&u.widgetNode&&r.push(u)}if(q&&(q.from||0)==i&&(rf(b,(null==q.to?h+1:q.to)-i,q.marker,null==q.from),null==q.to))return;if(!q&&r.length)for(var s=0;s<r.length;++s)rf(b,0,r[s])}if(i>=h)break;for(var v=Math.min(h,l);;){if(j){var w=i+j.length;if(!q){var x=w>v?j.slice(0,v-i):j;b.addToken(b,x,k?k+m:m,o,i+x.length==l?n:"",p)}if(w>=v){j=j.slice(v-i),i=v;break}i=w,o=""}j=e.slice(f,f=c[g++]),k=lf(c[g++],b.cm.options)}}else for(var g=1;g<c.length;g+=2)b.addToken(b,e.slice(f,f=c[g]),lf(c[g+1],b.cm.options))}function tf(a,b){return 0==b.from.ch&&0==b.to.ch&&""==zg(b.text)&&(!a.cm||a.cm.options.wholeLineUpdateBefore)}function uf(a,b,c,d){function e(a){return c?c[a]:null}function f(a,c,e){_e(a,c,e,d),jg(a,"change",a,b)}var g=b.from,h=b.to,i=b.text,j=Df(a,g.line),k=Df(a,h.line),l=zg(i),m=e(i.length-1),n=h.line-g.line;if(tf(a,b)){for(var o=0,p=[];o<i.length-1;++o)p.push(new $e(i[o],e(o),d));f(k,k.text,m),n&&a.remove(g.line,n),p.length&&a.insert(g.line,p)}else if(j==k)if(1==i.length)f(j,j.text.slice(0,g.ch)+l+j.text.slice(h.ch),m);else{for(var p=[],o=1;o<i.length-1;++o)p.push(new $e(i[o],e(o),d));p.push(new $e(l+j.text.slice(h.ch),m,d)),f(j,j.text.slice(0,g.ch)+i[0],e(0)),a.insert(g.line+1,p)}else if(1==i.length)f(j,j.text.slice(0,g.ch)+i[0]+k.text.slice(h.ch),e(0)),a.remove(g.line+1,n);else{f(j,j.text.slice(0,g.ch)+i[0],e(0)),f(k,l+k.text.slice(h.ch),m);for(var o=1,p=[];o<i.length-1;++o)p.push(new $e(i[o],e(o),d));n>1&&a.remove(g.line+1,n-1),a.insert(g.line+1,p)}jg(a,"change",a,b)}function vf(a){this.lines=a,this.parent=null;for(var b=0,c=0;b<a.length;++b)a[b].parent=this,c+=a[b].height;this.height=c}function wf(a){this.children=a;for(var b=0,c=0,d=0;d<a.length;++d){var e=a[d];b+=e.chunkSize(),c+=e.height,e.parent=this}this.size=b,this.height=c,this.parent=null}function Bf(a,b,c){function d(a,e,f){if(a.linked)for(var g=0;g<a.linked.length;++g){var h=a.linked[g];if(h.doc!=e){var i=f&&h.sharedHist;(!c||i)&&(b(h.doc,i),d(h.doc,a,i))}}}d(a,null,!0)}function Cf(a,b){if(b.cm)throw new Error("This document is already in use.");a.doc=b,b.cm=a,E(a),A(a),a.options.lineWrapping||L(a),a.options.mode=b.modeOption,Fc(a)}function Df(a,b){if(0>(b-=a.first)||b>=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(f>b){c=e;break}b-=f}return c.lines[b]}function Ef(a,b,c){var d=[],e=b.line;return a.iter(b.line,c.line+1,function(a){var f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e}),d}function Ff(a,b,c){var d=[];return a.iter(b,c,function(a){d.push(a.text)}),d}function Gf(a,b){var c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function Hf(a){if(null==a.parent)return null;for(var b=a.parent,c=Bg(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return c+b.first}function If(a,b){var c=a.first;a:do{for(var d=0;d<a.children.length;++d){var e=a.children[d],f=e.height;if(f>b){a=e;continue a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var d=0;d<a.lines.length;++d){var g=a.lines[d],h=g.height;if(h>b)break;b-=h}return c+d}function Jf(a){a=Qe(a);for(var b=0,c=a.parent,d=0;d<c.lines.length;++d){var e=c.lines[d];if(e==a)break;b+=e.height}for(var f=c.parent;f;c=f,f=c.parent)for(var d=0;d<f.children.length;++d){var g=f.children[d];if(g==c)break;b+=g.height}return b}function Kf(a){var b=a.order;return null==b&&(b=a.order=vh(a.text)),b}function Lf(a){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=a||1}function Mf(a,b){var c={from:pb(b.from),to:zd(b),text:Ef(a,b.from,b.to)};return Tf(a,c,b.from.line,b.to.line+1),Bf(a,function(a){Tf(a,c,b.from.line,b.to.line+1)},!0),c}function Nf(a){for(;a.length;){if(!zg(a).ranges)break;a.pop()}}function Of(a,b){return b?(Nf(a.done),zg(a.done)):a.done.length&&!zg(a.done).ranges?zg(a.done):a.done.length>1&&!a.done[a.done.length-2].ranges?(a.done.pop(),zg(a.done)):void 0}function Pf(a,b,c,d){var e=a.history;e.undone.length=0;var g,f=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>f-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(g=Of(e,e.lastOp==d))){var h=zg(g.changes);0==ob(b.from,b.to)&&0==ob(b.from,h.to)?h.to=zd(b):g.changes.push(Mf(a,b))}else{var i=zg(e.done);for(i&&i.ranges||Sf(a.sel,e.done),g={changes:[Mf(a,b)],generation:e.generation},e.done.push(g);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=f,e.lastOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,h||gg(a,"historyAdded")}function Qf(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function Rf(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||Qf(a,f,zg(e.done),b))?e.done[e.done.length-1]=b:Sf(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastOp=c,d&&!1!==d.clearRedo&&Nf(e.undone)}function Sf(a,b){var c=zg(b);c&&c.ranges&&c.equals(a)||b.push(a)}function Tf(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function Uf(a){if(!a)return null;for(var c,b=0;b<a.length;++b)a[b].marker.explicitlyCleared?c||(c=a.slice(0,b)):c&&c.push(a[b]);return c?c.length?c:null:a}function Vf(a,b){var c=b["spans_"+a.id];if(!c)return null;for(var d=0,e=[];d<b.text.length;++d)e.push(Uf(c[d]));return e}function Wf(a,b,c){for(var d=0,e=[];d<a.length;++d){var f=a[d];if(f.ranges)e.push(c?sb.prototype.deepCopy.call(f):f);else{var g=f.changes,h=[];e.push({changes:h});for(var i=0;i<g.length;++i){var k,j=g[i];if(h.push({from:j.from,to:j.to,text:j.text}),b)for(var l in j)(k=l.match(/^spans_(\d+)$/))&&Bg(b,Number(k[1]))>-1&&(zg(h)[l]=j[l],delete j[l])}}}return e}function Xf(a,b,c,d){c<a.line?a.line+=d:b<a.line&&(a.line=b,a.ch=0)}function Yf(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e],g=!0;if(f.ranges){f.copied||(f=a[e]=f.deepCopy(),f.copied=!0);for(var h=0;h<f.ranges.length;h++)Xf(f.ranges[h].anchor,b,c,d),Xf(f.ranges[h].head,b,c,d)}else{for(var h=0;h<f.changes.length;++h){var i=f.changes[h];if(c<i.from.line)i.from=nb(i.from.line+d,i.from.ch),i.to=nb(i.to.line+d,i.to.ch);else if(b<=i.to.line){g=!1;break}}g||(a.splice(0,e+1),e=0)}}}function Zf(a,b){var c=b.from.line,d=b.to.line,e=b.text.length-(d-c)-1;Yf(a.done,c,d,e),Yf(a.undone,c,d,e)}function ag(a){return null!=a.defaultPrevented?a.defaultPrevented:0==a.returnValue}function cg(a){return a.target||a.srcElement}function dg(a){var b=a.which;return null==b&&(1&a.button?b=1:2&a.button?b=3:4&a.button&&(b=2)),r&&a.ctrlKey&&1==b&&(b=3),b}function jg(a,b){function e(a){return function(){a.apply(null,d)}}var c=a._handlers&&a._handlers[b];if(c){var d=Array.prototype.slice.call(arguments,2);hg||(++ig,hg=[],setTimeout(kg,0));for(var f=0;f<c.length;++f)hg.push(e(c[f]))}}function kg(){--ig;var a=hg;hg=null;for(var b=0;b<a.length;++b)a[b]()}function lg(a,b,c){return gg(a,c||b.type,a,b),ag(b)||b.codemirrorIgnore}function mg(a){var b=a._handlers&&a._handlers.cursorActivity;if(b)for(var c=a.curOp.cursorActivityHandlers||(a.curOp.cursorActivityHandlers=[]),d=0;d<b.length;++d)-1==Bg(c,b[d])&&c.push(b[d])}function ng(a,b){var c=a._handlers&&a._handlers[b];return c&&c.length>0}function og(a){a.prototype.on=function(a,b){eg(this,a,b)},a.prototype.off=function(a,b){fg(this,a,b)}}function ug(){this.id=null}function wg(a,b,c){for(var d=0,e=0;;){var f=a.indexOf("\t",d);-1==f&&(f=a.length);var g=f-d;if(f==a.length||e+g>=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}}function yg(a){for(;xg.length<=a;)xg.push(zg(xg)+" ");return xg[a]}function zg(a){return a[a.length-1]}function Bg(a,b){for(var c=0;c<a.length;++c)if(a[c]==b)return c;return-1}function Cg(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=b(a[d],d);return c}function Dg(a,b){var c;if(Object.create)c=Object.create(a);else{var d=function(){};d.prototype=a,c=new d}return b&&Eg(b,c),c}function Eg(a,b,c){b||(b={});for(var d in a)!a.hasOwnProperty(d)||!1===c&&b.hasOwnProperty(d)||(b[d]=a[d]);return b}function Fg(a){var b=Array.prototype.slice.call(arguments,1);return function(){return a.apply(null,b)}}function Ig(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function Kg(a){return a.charCodeAt(0)>=768&&Jg.test(a)}function Lg(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f<b.length;++f)e.appendChild(b[f]);return e}function Ng(a){for(var b=a.childNodes.length;b>0;--b)a.removeChild(a.firstChild);return a}function Og(a,b){return Ng(a).appendChild(b)}function Pg(a,b){if(a.contains)return a.contains(b);for(;b=b.parentNode;)if(b==a)return!0}function Qg(){return document.activeElement}function Rg(a){return new RegExp("\\b"+a+"\\b\\s*")}function Sg(a,b){var c=Rg(b);c.test(a.className)&&(a.className=a.className.replace(c,""))}function Tg(a,b){Rg(b).test(a.className)||(a.className+=" "+b)}function Ug(a,b){for(var c=a.split(" "),d=0;d<c.length;d++)c[d]&&!Rg(c[d]).test(b)&&(b+=" "+c[d]);return b}function Vg(a){if(document.body.getElementsByClassName)for(var b=document.body.getElementsByClassName("CodeMirror"),c=0;c<b.length;c++){var d=b[c].CodeMirror;d&&a(d)}}function Xg(){Wg||(Yg(),Wg=!0)}function Yg(){var a;eg(window,"resize",function(){null==a&&(a=setTimeout(function(){a=null,$g=null,Vg(Uc)},100))}),eg(window,"blur",function(){Vg(wd)})}function _g(a){if(null!=$g)return $g;var b=Lg("div",null,null,"width: 50px; height: 50px; overflow-x: scroll");return Og(a,b),b.offsetWidth&&($g=b.offsetHeight-b.clientHeight),$g||0}function bh(a){if(null==ah){var b=Lg("span","​");Og(a,Lg("span",[b,document.createTextNode("x")])),0!=a.firstChild.offsetHeight&&(ah=b.offsetWidth<=1&&b.offsetHeight>2&&!c)}return ah?Lg("span","​"):Lg("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px")}function dh(a){if(null!=ch)return ch;var b=Og(a,document.createTextNode("AخA")),c=Mg(b,0,1).getBoundingClientRect();if(c.left==c.right)return!1;var d=Mg(b,1,2).getBoundingClientRect();return ch=d.right-c.right<3}function ih(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;f<a.length;++f){var g=a[f];(g.from<c&&g.to>b||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function jh(a){return a.level%2?a.to:a.from}function kh(a){return a.level%2?a.from:a.to}function lh(a){var b=Kf(a);return b?jh(b[0]):0}function mh(a){var b=Kf(a);return b?kh(zg(b)):a.text.length}function nh(a,b){var c=Df(a.doc,b),d=Qe(c);d!=c&&(b=Hf(d));var e=Kf(d),f=e?e[0].level%2?mh(d):lh(d):0;return nb(b,f)}function oh(a,b){for(var c,d=Df(a.doc,b);c=Oe(d);)d=c.find(1,!0).line,b=null;var e=Kf(d),f=e?e[0].level%2?lh(d):mh(d):d.text.length;return nb(null==b?Hf(d):b,f)}function ph(a,b,c){var d=a[0].level;return b==d||c!=d&&c>b}function rh(a,b){qh=null;for(var d,c=0;c<a.length;++c){var e=a[c];if(e.from<b&&e.to>b)return c;if(e.from==b||e.to==b){if(null!=d)return ph(a,e.level,a[d].level)?(e.from!=e.to&&(qh=d),c):(e.from!=e.to&&(qh=c),d);d=c}}return d}function sh(a,b,c,d){if(!d)return b+c;do{b+=c}while(b>0&&Kg(a.text.charAt(b)));return b}function th(a,b,c,d){var e=Kf(a);if(!e)return uh(a,b,c,d);for(var f=rh(e,b),g=e[f],h=sh(a,b,g.level%2?-c:c,d);;){if(h>g.from&&h<g.to)return h;if(h==g.from||h==g.to)return rh(e,h)==f?h:(g=e[f+=c],c>0==g.level%2?g.to:g.from);if(!(g=e[f+=c]))return null;h=c>0==g.level%2?sh(a,g.to,-1,d):sh(a,g.from,1,d)}}function uh(a,b,c,d){var e=b+c;if(d)for(;e>0&&Kg(a.text.charAt(e));)e+=c;return 0>e||e>a.text.length?null:e}var a=/gecko\/\d/i.test(navigator.userAgent),b=/MSIE \d/.test(navigator.userAgent),c=b&&(null==document.documentMode||document.documentMode<8),d=b&&(null==document.documentMode||document.documentMode<9),e=b&&(null==document.documentMode||document.documentMode<10),f=/Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent),g=b||f,h=/WebKit\//.test(navigator.userAgent),i=h&&/Qt\/\d+\.\d+/.test(navigator.userAgent),j=/Chrome\//.test(navigator.userAgent),k=/Opera\//.test(navigator.userAgent),l=/Apple Computer/.test(navigator.vendor),m=/KHTML\//.test(navigator.userAgent),n=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),o=/PhantomJS/.test(navigator.userAgent),p=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),q=p||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),r=p||/Mac/.test(navigator.platform),s=/win/i.test(navigator.platform),t=k&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);t&&(t=Number(t[1])),t&&t>=15&&(k=!1,h=!0);var u=r&&(i||k&&(null==t||12.11>t)),v=a||g&&!d,w=!1,x=!1,nb=y.Pos=function(a,b){return this instanceof nb?(this.line=a,void(this.ch=b)):new nb(a,b)},ob=y.cmpPos=function(a,b){return a.line-b.line||a.ch-b.ch};sb.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var b=0;b<this.ranges.length;b++){var c=this.ranges[b],d=a.ranges[b];if(0!=ob(c.anchor,d.anchor)||0!=ob(c.head,d.head))return!1}return!0},deepCopy:function(){for(var a=[],b=0;b<this.ranges.length;b++)a[b]=new tb(pb(this.ranges[b].anchor),pb(this.ranges[b].head));return new sb(a,this.primIndex)},somethingSelected:function(){for(var a=0;a<this.ranges.length;a++)if(!this.ranges[a].empty())return!0;return!1},contains:function(a,b){b||(b=a);for(var c=0;c<this.ranges.length;c++){var d=this.ranges[c];if(ob(b,d.from())>=0&&ob(a,d.to())<=0)return c}return-1}},tb.prototype={from:function(){return rb(this.anchor,this.head)},to:function(){return qb(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var tc,Yc,Zc,ec={left:0,right:0,top:0,bottom:0},wc=0,dd=0,id=0,jd=null;g?jd=-.53:a?jd=15:j?jd=-.7:l&&(jd=-1/3);var nd,qd=null,zd=y.changeEnd=function(a){return a.text?nb(a.from.line+a.text.length-1,zg(a.text).length+(1==a.text.length?a.from.ch:0)):a.to};y.prototype={constructor:y,focus:function(){window.focus(),Qc(this),Nc(this)},setOption:function(a,b){var c=this.options,d=c[a];(c[a]!=b||"mode"==a)&&(c[a]=b,$d.hasOwnProperty(a)&&Ac(this,$d[a])(this,b,d))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](a)},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;c<b.length;++c)if(b[c]==a||"string"!=typeof b[c]&&b[c].name==a)return b.splice(c,1),!0},addOverlay:Bc(function(a,b){var c=a.token?a:y.getMode(this.options,a);if(c.startState)throw new Error("Overlays may not be stateful.");this.state.overlays.push({mode:c,modeSpec:a,opaque:b&&b.opaque}),this.state.modeGen++,Fc(this)}),removeOverlay:Bc(function(a){for(var b=this.state.overlays,c=0;c<b.length;++c){var d=b[c].modeSpec;if(d==a||"string"==typeof a&&d.name==a)return b.splice(c,1),this.state.modeGen++,void Fc(this)}}),indentLine:Bc(function(a,b,c){"string"!=typeof b&&"number"!=typeof b&&(b=null==b?this.options.smartIndent?"smart":"prev":b?"add":"subtract"),zb(this.doc,a)&&Td(this,a,b,c)}),indentSelection:Bc(function(a){for(var b=this.doc.sel.ranges,c=-1,d=0;d<b.length;d++){var e=b[d];if(e.empty())e.head.line>c&&(Td(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&Rd(this));else{var f=Math.max(c,e.from().line),g=e.to();c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var h=f;c>h;++h)Td(this,h,a)}}}),getTokenAt:function(a,b){var c=this.doc;a=xb(c,a);for(var d=Vb(this,a.line,b),e=this.doc.mode,f=Df(c,a.line),g=new oe(f.text,this.options.tabSize);g.pos<a.ch&&!g.eol();){g.start=g.pos;var h=df(e,g,d)}return{start:g.start,end:g.pos,string:g.current(),type:h||null,state:d}},getTokenTypeAt:function(a){a=xb(this.doc,a);var f,b=gf(this,Df(this.doc,a.line)),c=0,d=(b.length-1)/2,e=a.ch;if(0==e)f=b[2];else for(;;){var g=c+d>>1;if((g?b[2*g-1]:0)>=e)d=g;else{if(!(b[2*g+1]<e)){f=b[2*g+2];break}c=g+1}}var h=f?f.indexOf("cm-overlay "):-1;return 0>h?f:0==h?null:f.slice(0,h-1)},getModeAt:function(a){var b=this.doc.mode;return b.innerMode?y.innerMode(b,this.getTokenAt(a).state).mode:b},getHelper:function(a,b){return this.getHelpers(a,b)[0]},getHelpers:function(a,b){var c=[];if(!fe.hasOwnProperty(b))return fe;var d=fe[b],e=this.getModeAt(a);if("string"==typeof e[b])d[e[b]]&&c.push(d[e[b]]);else if(e[b])for(var f=0;f<e[b].length;f++){var g=d[e[b][f]];g&&c.push(g)}else e.helperType&&d[e.helperType]?c.push(d[e.helperType]):d[e.name]&&c.push(d[e.name]);for(var f=0;f<d._global.length;f++){var h=d._global[f];h.pred(e,this)&&-1==Bg(c,h.val)&&c.push(h.val)}return c},getStateAfter:function(a,b){var c=this.doc;return a=wb(c,null==a?c.first+c.size-1:a),Vb(this,a+1,b)},cursorCoords:function(a,b){var c,d=this.doc.sel.primary();return c=null==a?d.head:"object"==typeof a?xb(this.doc,a):a?d.from():d.to(),oc(this,c,b||"page")},charCoords:function(a,b){return nc(this,xb(this.doc,a),b||"page")},coordsChar:function(a,b){return a=mc(this,a,b||"page"),rc(this,a.left,a.top)},lineAtHeight:function(a,b){return a=mc(this,{top:a,left:0},b||"page").top,If(this.doc,a+this.display.viewOffset)},heightAtLine:function(a,b){var c=!1,d=this.doc.first+this.doc.size-1;a<this.doc.first?a=this.doc.first:a>d&&(a=d,c=!0);var e=Df(this.doc,a);return lc(this,e,{top:0,left:0},b||"page").top+(c?this.doc.height-Jf(e):0)},defaultTextHeight:function(){return uc(this.display)},defaultCharWidth:function(){return vc(this.display)},setGutterMarker:Bc(function(a,b,c){return Ud(this,a,"gutter",function(a){var d=a.gutterMarkers||(a.gutterMarkers={});return d[b]=c,!c&&Ig(d)&&(a.gutterMarkers=null),!0})}),clearGutter:Bc(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){c.gutterMarkers&&c.gutterMarkers[a]&&(c.gutterMarkers[a]=null,Gc(b,d,"gutter"),Ig(c.gutterMarkers)&&(c.gutterMarkers=null)),++d})}),addLineClass:Bc(function(a,b,c){return Ud(this,a,"class",function(a){var d="text"==b?"textClass":"background"==b?"bgClass":"wrapClass";if(a[d]){if(new RegExp("(?:^|\\s)"+c+"(?:$|\\s)").test(a[d]))return!1;a[d]+=" "+c}else a[d]=c;return!0})}),removeLineClass:Bc(function(a,b,c){return Ud(this,a,"class",function(a){var d="text"==b?"textClass":"background"==b?"bgClass":"wrapClass",e=a[d];if(!e)return!1;if(null==c)a[d]=null;else{var f=e.match(new RegExp("(?:^|\\s+)"+c+"(?:$|\\s+)"));if(!f)return!1;var g=f.index+f[0].length;a[d]=e.slice(0,f.index)+(f.index&&g!=e.length?" ":"")+e.slice(g)||null}return!0})}),addLineWidget:Bc(function(a,b,c){return Ze(this,a,b,c)}),removeLineWidget:function(a){a.clear()},lineInfo:function(a){if("number"==typeof a){if(!zb(this.doc,a))return null;var b=a;if(!(a=Df(this.doc,a)))return null}else{var b=Hf(a);if(null==b)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=oc(this,xb(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&Od(this,h,g,h+b.offsetWidth,g+b.offsetHeight)},triggerOnKeyDown:Bc(rd),triggerOnKeyPress:Bc(ud),triggerOnKeyUp:Bc(td),execCommand:function(a){return ie.hasOwnProperty(a)?ie[a](this):void 0},findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);for(var f=0,g=xb(this.doc,a);b>f&&(g=Wd(this.doc,g,e,c,d),!g.hitSide);++f);return g},moveH:Bc(function(a,b){var c=this;c.extendSelectionsBy(function(d){return c.display.shift||c.doc.extend||d.empty()?Wd(c.doc,d.head,a,b,c.options.rtlMoveVisually):0>a?d.from():d.to()},tg)}),deleteH:Bc(function(a,b){var c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):Vd(this,function(c){var e=Wd(d,c.head,a,b,!1);return 0>a?{from:e,to:c.head}:{from:c.head,to:e}})}),findPosV:function(a,b,c,d){var e=1,f=d;0>b&&(e=-1,b=-b);for(var g=0,h=xb(this.doc,a);b>g;++g){var i=oc(this,h,"div");if(null==f?f=i.left:i.left=f,h=Xd(this,i,e,c),h.hitSide)break}return h},moveV:Bc(function(a,b){var c=this,d=this.doc,e=[],f=!c.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy(function(g){if(f)return 0>a?g.from():g.to();var h=oc(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var i=Xd(c,h,a,b);return"page"==b&&g==d.sel.primary()&&Qd(c,null,nc(c,i,"div").top-h.top),i},tg),e.length)for(var g=0;g<d.sel.ranges.length;g++)d.sel.ranges[g].goalColumn=e[g]}),toggleOverwrite:function(a){(null==a||a!=this.state.overwrite)&&((this.state.overwrite=!this.state.overwrite)?Tg(this.display.cursorDiv,"CodeMirror-overwrite"):Sg(this.display.cursorDiv,"CodeMirror-overwrite"),gg(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return Qg()==this.display.input},scrollTo:Bc(function(a,b){(null!=a||null!=b)&&Sd(this),null!=a&&(this.curOp.scrollLeft=a),null!=b&&(this.curOp.scrollTop=b)}),getScrollInfo:function(){var a=this.display.scroller,b=pg;return{left:a.scrollLeft,top:a.scrollTop,height:a.scrollHeight-b,width:a.scrollWidth-b,clientHeight:a.clientHeight-b,clientWidth:a.clientWidth-b}},scrollIntoView:Bc(function(a,b){if(null==a?(a={from:this.doc.sel.primary().head,to:null},null==b&&(b=this.options.cursorScrollMargin)):"number"==typeof a?a={from:nb(a,0),to:null}:null==a.from&&(a={from:a,to:null}),a.to||(a.to=a.from),a.margin=b||0,null!=a.from.line)Sd(this),this.curOp.scrollToPos=a;else{var c=Pd(this,Math.min(a.from.left,a.to.left),Math.min(a.from.top,a.to.top)-a.margin,Math.max(a.from.right,a.to.right),Math.max(a.from.bottom,a.to.bottom)+a.margin);this.scrollTo(c.scrollLeft,c.scrollTop)}}),setSize:Bc(function(a,b){function c(a){
+return"number"==typeof a||/^\d+$/.test(String(a))?a+"px":a}null!=a&&(this.display.wrapper.style.width=c(a)),null!=b&&(this.display.wrapper.style.height=c(b)),this.options.lineWrapping&&hc(this),this.curOp.forceUpdate=!0,gg(this,"refresh",this)}),operation:function(a){return zc(this,a)},refresh:Bc(function(){var a=this.display.cachedTextHeight;Fc(this),this.curOp.forceUpdate=!0,ic(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),J(this),(null==a||Math.abs(a-uc(this.display))>.5)&&E(this),gg(this,"refresh",this)}),swapDoc:Bc(function(a){var b=this.doc;return b.cm=null,Cf(this,a),ic(this),Pc(this),this.scrollTo(a.scrollLeft,a.scrollTop),jg(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},og(y);var Zd=y.defaults={},$d=y.optionHandlers={},ae=y.Init={toString:function(){return"CodeMirror.Init"}};_d("value","",function(a,b){a.setValue(b)},!0),_d("mode",null,function(a,b){a.doc.modeOption=b,A(a)},!0),_d("indentUnit",2,A,!0),_d("indentWithTabs",!1),_d("smartIndent",!0),_d("tabSize",4,function(a){B(a),ic(a),Fc(a)},!0),_d("specialChars",/[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g,function(a,b){a.options.specialChars=new RegExp(b.source+(b.test("\t")?"":"|\t"),"g"),a.refresh()},!0),_d("specialCharPlaceholder",nf,function(a){a.refresh()},!0),_d("electricChars",!0),_d("rtlMoveVisually",!s),_d("wholeLineUpdateBefore",!0),_d("theme","default",function(a){G(a),H(a)},!0),_d("keyMap","default",F),_d("extraKeys",null),_d("lineWrapping",!1,C,!0),_d("gutters",[],function(a){M(a.options),H(a)},!0),_d("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?T(a.display)+"px":"0",a.refresh()},!0),_d("coverGutterNextToScrollbar",!1,O,!0),_d("lineNumbers",!1,function(a){M(a.options),H(a)},!0),_d("firstLineNumber",1,H,!0),_d("lineNumberFormatter",function(a){return a},H,!0),_d("showCursorWhenSelecting",!1,Ob,!0),_d("resetSelectionOnContextMenu",!0),_d("readOnly",!1,function(a,b){"nocursor"==b?(wd(a),a.display.input.blur(),a.display.disabled=!0):(a.display.disabled=!1,b||Pc(a))}),_d("disableInput",!1,function(a,b){b||Pc(a)},!0),_d("dragDrop",!0),_d("cursorBlinkRate",530),_d("cursorScrollMargin",0),_d("cursorHeight",1),_d("workTime",100),_d("workDelay",100),_d("flattenSpans",!0,B,!0),_d("addModeClass",!1,B,!0),_d("pollInterval",100),_d("undoDepth",200,function(a,b){a.doc.history.undoDepth=b}),_d("historyEventDelay",1250),_d("viewportMargin",10,function(a){a.refresh()},!0),_d("maxHighlightLength",1e4,B,!0),_d("moveInputWithCursor",!0,function(a,b){b||(a.display.inputDiv.style.top=a.display.inputDiv.style.left=0)}),_d("tabindex",null,function(a,b){a.display.input.tabIndex=b||""}),_d("autofocus",null);var be=y.modes={},ce=y.mimeModes={};y.defineMode=function(a,b){if(y.defaults.mode||"null"==a||(y.defaults.mode=a),arguments.length>2){b.dependencies=[];for(var c=2;c<arguments.length;++c)b.dependencies.push(arguments[c])}be[a]=b},y.defineMIME=function(a,b){ce[a]=b},y.resolveMode=function(a){if("string"==typeof a&&ce.hasOwnProperty(a))a=ce[a];else if(a&&"string"==typeof a.name&&ce.hasOwnProperty(a.name)){var b=ce[a.name];"string"==typeof b&&(b={name:b}),a=Dg(b,a),a.name=b.name}else if("string"==typeof a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return y.resolveMode("application/xml");return"string"==typeof a?{name:a}:a||{name:"null"}},y.getMode=function(a,b){var b=y.resolveMode(b),c=be[b.name];if(!c)return y.getMode(a,"text/plain");var d=c(a,b);if(de.hasOwnProperty(b.name)){var e=de[b.name];for(var f in e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var f in b.modeProps)d[f]=b.modeProps[f];return d},y.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}}),y.defineMIME("text/plain","null");var de=y.modeExtensions={};y.extendMode=function(a,b){Eg(b,de.hasOwnProperty(a)?de[a]:de[a]={})},y.defineExtension=function(a,b){y.prototype[a]=b},y.defineDocExtension=function(a,b){yf.prototype[a]=b},y.defineOption=_d;var ee=[];y.defineInitHook=function(a){ee.push(a)};var fe=y.helpers={};y.registerHelper=function(a,b,c){fe.hasOwnProperty(a)||(fe[a]=y[a]={_global:[]}),fe[a][b]=c},y.registerGlobalHelper=function(a,b,c,d){y.registerHelper(a,b,d),fe[a]._global.push({pred:c,val:d})};var ge=y.copyState=function(a,b){if(!0===b)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c},he=y.startState=function(a,b,c){return!a.startState||a.startState(b,c)};y.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state,a=c.mode}return c||{mode:a,state:b}};var ie=y.commands={selectAll:function(a){a.setSelection(nb(a.firstLine(),0),nb(a.lastLine()),rg)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),rg)},killLine:function(a){Vd(a,function(b){if(b.empty()){var c=Df(a.doc,b.head.line).text.length;return b.head.ch==c&&b.head.line<a.lastLine()?{from:b.head,to:nb(b.head.line+1,0)}:{from:b.head,to:nb(b.head.line,c)}}return{from:b.from(),to:b.to()}})},deleteLine:function(a){Vd(a,function(b){return{from:nb(b.from().line,0),to:xb(a.doc,nb(b.to().line+1,0))}})},delLineLeft:function(a){Vd(a,function(a){return{from:nb(a.from().line,0),to:a.from()}})},undo:function(a){a.undo()},redo:function(a){a.redo()},undoSelection:function(a){a.undoSelection()},redoSelection:function(a){a.redoSelection()},goDocStart:function(a){a.extendSelection(nb(a.firstLine(),0))},goDocEnd:function(a){a.extendSelection(nb(a.lastLine()))},goLineStart:function(a){a.extendSelectionsBy(function(b){return nh(a,b.head.line)},tg)},goLineStartSmart:function(a){a.extendSelectionsBy(function(b){var c=nh(a,b.head.line),d=a.getLineHandle(c.line),e=Kf(d);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.head.line==c.line&&b.head.ch<=f&&b.head.ch;return nb(c.line,g?0:f)}return c},tg)},goLineEnd:function(a){a.extendSelectionsBy(function(b){return oh(a,b.head.line)},tg)},goLineRight:function(a){a.extendSelectionsBy(function(b){var c=a.charCoords(b.head,"div").top+5;return a.coordsChar({left:a.display.lineDiv.offsetWidth+100,top:c},"div")},tg)},goLineLeft:function(a){a.extendSelectionsBy(function(b){var c=a.charCoords(b.head,"div").top+5;return a.coordsChar({left:0,top:c},"div")},tg)},goLineUp:function(a){a.moveV(-1,"line")},goLineDown:function(a){a.moveV(1,"line")},goPageUp:function(a){a.moveV(-1,"page")},goPageDown:function(a){a.moveV(1,"page")},goCharLeft:function(a){a.moveH(-1,"char")},goCharRight:function(a){a.moveH(1,"char")},goColumnLeft:function(a){a.moveH(-1,"column")},goColumnRight:function(a){a.moveH(1,"column")},goWordLeft:function(a){a.moveH(-1,"word")},goGroupRight:function(a){a.moveH(1,"group")},goGroupLeft:function(a){a.moveH(-1,"group")},goWordRight:function(a){a.moveH(1,"word")},delCharBefore:function(a){a.deleteH(-1,"char")},delCharAfter:function(a){a.deleteH(1,"char")},delWordBefore:function(a){a.deleteH(-1,"word")},delWordAfter:function(a){a.deleteH(1,"word")},delGroupBefore:function(a){a.deleteH(-1,"group")},delGroupAfter:function(a){a.deleteH(1,"group")},indentAuto:function(a){a.indentSelection("smart")},indentMore:function(a){a.indentSelection("add")},indentLess:function(a){a.indentSelection("subtract")},insertTab:function(a){a.replaceSelection("\t")},insertSoftTab:function(a){for(var b=[],c=a.listSelections(),d=a.options.tabSize,e=0;e<c.length;e++){var f=c[e].from(),g=vg(a.getLine(f.line),f.ch,d);b.push(new Array(d-g%d+1).join(" "))}a.replaceSelections(b)},defaultTab:function(a){a.somethingSelected()?a.indentSelection("add"):a.execCommand("insertTab")},transposeChars:function(a){zc(a,function(){for(var b=a.listSelections(),c=0;c<b.length;c++){var d=b[c].head,e=Df(a.doc,d.line).text;d.ch>0&&d.ch<e.length-1&&a.replaceRange(e.charAt(d.ch)+e.charAt(d.ch-1),nb(d.line,d.ch-1),nb(d.line,d.ch+1))}})},newlineAndIndent:function(a){zc(a,function(){for(var b=a.listSelections().length,c=0;b>c;c++){var d=a.listSelections()[c];a.replaceRange("\n",d.anchor,d.head,"+input"),a.indentLine(d.from().line+1,null,!0),Rd(a)}})},toggleOverwrite:function(a){a.toggleOverwrite()}},je=y.keyMap={};je.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},je.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-Up":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Down":"goDocEnd","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},je.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineStart","Cmd-Right":"goLineEnd","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delLineLeft","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection",fallthrough:["basic","emacsy"]},je.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},je.default=r?je.macDefault:je.pcDefault;var le=y.lookupKey=function(a,b,c){function d(b){b=ke(b);var e=b[a];if(!1===e)return"stop";if(null!=e&&c(e))return!0;if(b.nofallthrough)return"stop";var f=b.fallthrough;if(null==f)return!1;if("[object Array]"!=Object.prototype.toString.call(f))return d(f);for(var g=0;g<f.length;++g){var h=d(f[g]);if(h)return h}return!1}for(var e=0;e<b.length;++e){var f=d(b[e]);if(f)return"stop"!=f}},me=y.isModifierKey=function(a){var b=hh[a.keyCode];return"Ctrl"==b||"Alt"==b||"Shift"==b||"Mod"==b},ne=y.keyName=function(a,b){if(k&&34==a.keyCode&&a.char)return!1;var c=hh[a.keyCode];return null!=c&&!a.altGraphKey&&(a.altKey&&(c="Alt-"+c),(u?a.metaKey:a.ctrlKey)&&(c="Ctrl-"+c),(u?a.ctrlKey:a.metaKey)&&(c="Cmd-"+c),!b&&a.shiftKey&&(c="Shift-"+c),c)};y.fromTextArea=function(a,b){function d(){a.value=i.getValue()}if(b||(b={}),b.value=a.value,!b.tabindex&&a.tabindex&&(b.tabindex=a.tabindex),!b.placeholder&&a.placeholder&&(b.placeholder=a.placeholder),null==b.autofocus){var c=Qg();b.autofocus=c==a||null!=a.getAttribute("autofocus")&&c==document.body}if(a.form&&(eg(a.form,"submit",d),!b.leaveSubmitMethodAlone)){var e=a.form,f=e.submit;try{var g=e.submit=function(){d(),e.submit=f,e.submit(),e.submit=g}}catch(h){}}a.style.display="none";var i=y(function(b){a.parentNode.insertBefore(b,a.nextSibling)},b);return i.save=d,i.getTextArea=function(){return a},i.toTextArea=function(){d(),a.parentNode.removeChild(i.getWrapperElement()),a.style.display="",a.form&&(fg(a.form,"submit",d),"function"==typeof a.form.submit&&(a.form.submit=f))},i};var oe=y.StringStream=function(a,b){this.pos=this.start=0,this.string=a,this.tabSize=b||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};oe.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.pos<this.string.length?this.string.charAt(this.pos++):void 0},eat:function(a){var b=this.string.charAt(this.pos);if("string"==typeof a)var c=b==a;else var c=b&&(a.test?a.test(b):a(b));return c?(++this.pos,b):void 0},eatWhile:function(a){for(var b=this.pos;this.eat(a););return this.pos>b},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);return b>-1?(this.pos=b,!0):void 0},backUp:function(a){this.pos-=a},column:function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=vg(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?vg(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return vg(this.string,null,this.tabSize)-(this.lineStart?vg(this.string,this.lineStart,this.tabSize):0)},match:function(a,b,c){if("string"!=typeof a){var f=this.string.slice(this.pos).match(a);return f&&f.index>0?null:(f&&!1!==b&&(this.pos+=f[0].length),f)}var d=function(a){return c?a.toLowerCase():a};return d(this.string.substr(this.pos,a.length))==d(a)?(!1!==b&&(this.pos+=a.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}}};var pe=y.TextMarker=function(a,b){this.lines=[],this.type=b,this.doc=a};og(pe),pe.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b=a&&!a.curOp;if(b&&xc(a),ng(this,"clear")){var c=this.find();c&&jg(this,"clear",c.from,c.to)}for(var d=null,e=null,f=0;f<this.lines.length;++f){var g=this.lines[f],h=ye(g.markedSpans,this);a&&!this.collapsed?Gc(a,Hf(g),"text"):a&&(null!=h.to&&(e=Hf(g)),null!=h.from&&(d=Hf(g))),g.markedSpans=ze(g.markedSpans,h),null==h.from&&this.collapsed&&!Ue(this.doc,g)&&a&&Gf(g,uc(a.display))}if(a&&this.collapsed&&!a.options.lineWrapping)for(var f=0;f<this.lines.length;++f){var i=Qe(this.lines[f]),j=K(i);j>a.display.maxLineLength&&(a.display.maxLine=i,a.display.maxLineLength=j,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&Fc(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&Lb(a.doc)),a&&jg(a,"markerCleared",a,this),b&&yc(a),this.parent&&this.parent.clear()}},pe.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var c,d,e=0;e<this.lines.length;++e){var f=this.lines[e],g=ye(f.markedSpans,this);if(null!=g.from&&(c=nb(b?f:Hf(f),g.from),-1==a))return c;if(null!=g.to&&(d=nb(b?f:Hf(f),g.to),1==a))return d}return c&&{from:c,to:d}},pe.prototype.changed=function(){var a=this.find(-1,!0),b=this,c=this.doc.cm;a&&c&&zc(c,function(){var d=a.line,e=Hf(a.line),f=bc(c,e);if(f&&(gc(f),c.curOp.selectionChanged=c.curOp.forceUpdate=!0),c.curOp.updateMaxLine=!0,!Ue(b.doc,d)&&null!=b.height){var g=b.height;b.height=null;var h=Ye(b)-g;h&&Gf(d,d.height+h)}})},pe.prototype.attachLine=function(a){if(!this.lines.length&&this.doc.cm){var b=this.doc.cm.curOp;b.maybeHiddenMarkers&&-1!=Bg(b.maybeHiddenMarkers,this)||(b.maybeUnhiddenMarkers||(b.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(a)},pe.prototype.detachLine=function(a){if(this.lines.splice(Bg(this.lines,a),1),!this.lines.length&&this.doc.cm){var b=this.doc.cm.curOp;(b.maybeHiddenMarkers||(b.maybeHiddenMarkers=[])).push(this)}};var qe=0,se=y.SharedTextMarker=function(a,b){this.markers=a,this.primary=b;for(var c=0;c<a.length;++c)a[c].parent=this};og(se),se.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var a=0;a<this.markers.length;++a)this.markers[a].clear();jg(this,"clear")}},se.prototype.find=function(a,b){return this.primary.find(a,b)};var We=y.LineWidget=function(a,b,c){if(c)for(var d in c)c.hasOwnProperty(d)&&(this[d]=c[d]);this.cm=a,this.node=b};og(We),We.prototype.clear=function(){var a=this.cm,b=this.line.widgets,c=this.line,d=Hf(c);if(null!=d&&b){for(var e=0;e<b.length;++e)b[e]==this&&b.splice(e--,1);b.length||(c.widgets=null);var f=Ye(this);zc(a,function(){Xe(a,c,-f),Gc(a,d,"widget"),Gf(c,Math.max(0,c.height-f))})}},We.prototype.changed=function(){var a=this.height,b=this.cm,c=this.line;this.height=null;var d=Ye(this)-a;d&&zc(b,function(){b.curOp.forceUpdate=!0,Xe(b,c,d),Gf(c,c.height+d)})};var $e=y.Line=function(a,b,c){this.text=a,Ie(this,b),this.height=c?c(this):1};og($e),$e.prototype.lineNo=function(){return Hf(this)};var jf={},kf={};vf.prototype={chunkSize:function(){return this.lines.length},removeInner:function(a,b){for(var c=a,d=a+b;d>c;++c){var e=this.lines[c];this.height-=e.height,af(e),jg(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var d=0;d<b.length;++d)b[d].parent=this},iterN:function(a,b,c){for(var d=a+b;d>a;++a)if(c(this.lines[a]))return!0}},wf.prototype={chunkSize:function(){return this.size},removeInner:function(a,b){this.size-=b;for(var c=0;c<this.children.length;++c){var d=this.children[c],e=d.chunkSize();if(e>a){var f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof vf))){var h=[];this.collapse(h),this.children=[new vf(h)],this.children[0].parent=this}},collapse:function(a){for(var b=0;b<this.children.length;++b)this.children[b].collapse(a)},insertInner:function(a,b,c){this.size+=b.length,this.height+=c;for(var d=0;d<this.children.length;++d){var e=this.children[d],f=e.chunkSize();if(f>=a){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(;e.lines.length>50;){var g=e.lines.splice(e.lines.length-25,25),h=new vf(g);e.height-=h.height,this.children.splice(d+1,0,h),h.parent=this}this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),c=new wf(b);if(a.parent){a.size-=c.size,a.height-=c.height;var e=Bg(a.parent.children,a);a.parent.children.splice(e+1,0,c)}else{var d=new wf(a.children);d.parent=a,a.children=[d,c],a=d}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;d<this.children.length;++d){var e=this.children[d],f=e.chunkSize();if(f>a){var g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else a-=f}}};var xf=0,yf=y.Doc=function(a,b,c){if(!(this instanceof yf))return new yf(a,b,c);null==c&&(c=0),wf.call(this,[new vf([new $e("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=c;var d=nb(c,0);this.sel=vb(d),this.history=new Lf(null),this.id=++xf,this.modeOption=b,"string"==typeof a&&(a=eh(a)),uf(this,{from:d,to:d,text:a}),Ib(this,vb(d),rg)};yf.prototype=Dg(wf.prototype,{constructor:yf,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var c=0,d=0;d<b.length;++d)c+=b[d].height;this.insertInner(a-this.first,b,c)},remove:function(a,b){this.removeInner(a-this.first,b)},getValue:function(a){var b=Ff(this,this.first,this.first+this.size);return!1===a?b:b.join(a||"\n")},setValue:Cc(function(a){var b=nb(this.first,0),c=this.first+this.size-1;Fd(this,{from:b,to:nb(c,Df(this,c).text.length),text:eh(a),origin:"setValue"},!0),Ib(this,vb(b))}),replaceRange:function(a,b,c,d){b=xb(this,b),c=c?xb(this,c):b,Ld(this,a,b,c,d)},getRange:function(a,b,c){var d=Ef(this,xb(this,a),xb(this,b));return!1===c?d:d.join(c||"\n")},getLine:function(a){var b=this.getLineHandle(a);return b&&b.text},getLineHandle:function(a){return zb(this,a)?Df(this,a):void 0},getLineNumber:function(a){return Hf(a)},getLineHandleVisualStart:function(a){return"number"==typeof a&&(a=Df(this,a)),Qe(a)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(a){return xb(this,a)},getCursor:function(a){var b=this.sel.primary();return null==a||"head"==a?b.head:"anchor"==a?b.anchor:"end"==a||"to"==a||!1===a?b.to():b.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Cc(function(a,b,c){Fb(this,xb(this,"number"==typeof a?nb(a,b||0):a),null,c)}),setSelection:Cc(function(a,b,c){Fb(this,xb(this,a),xb(this,b||a),c)}),extendSelection:Cc(function(a,b,c){Cb(this,xb(this,a),b&&xb(this,b),c)}),extendSelections:Cc(function(a,b){Db(this,Ab(this,a,b))}),extendSelectionsBy:Cc(function(a,b){Db(this,Cg(this.sel.ranges,a),b)}),setSelections:Cc(function(a,b,c){if(a.length){for(var d=0,e=[];d<a.length;d++)e[d]=new tb(xb(this,a[d].anchor),xb(this,a[d].head));null==b&&(b=Math.min(a.length-1,this.sel.primIndex)),Ib(this,ub(e,b),c)}}),addSelection:Cc(function(a,b,c){var d=this.sel.ranges.slice(0);d.push(new tb(xb(this,a),xb(this,b||a))),Ib(this,ub(d,d.length-1),c)}),getSelection:function(a){for(var c,b=this.sel.ranges,d=0;d<b.length;d++){var e=Ef(this,b[d].from(),b[d].to());c=c?c.concat(e):e}return!1===a?c:c.join(a||"\n")},getSelections:function(a){for(var b=[],c=this.sel.ranges,d=0;d<c.length;d++){var e=Ef(this,c[d].from(),c[d].to());!1!==a&&(e=e.join(a||"\n")),b[d]=e}return b},replaceSelection:function(a,b,c){for(var d=[],e=0;e<this.sel.ranges.length;e++)d[e]=a;this.replaceSelections(d,b,c||"+input")},replaceSelections:Cc(function(a,b,c){for(var d=[],e=this.sel,f=0;f<e.ranges.length;f++){var g=e.ranges[f];d[f]={from:g.from(),to:g.to(),text:eh(a[f]),origin:c}}for(var h=b&&"end"!=b&&Dd(this,d,b),f=d.length-1;f>=0;f--)Fd(this,d[f]);h?Hb(this,h):this.cm&&Rd(this.cm)}),undo:Cc(function(){Hd(this,"undo")}),redo:Cc(function(){Hd(this,"redo")}),undoSelection:Cc(function(){Hd(this,"undo",!0)}),redoSelection:Cc(function(){Hd(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d<a.done.length;d++)a.done[d].ranges||++b;for(var d=0;d<a.undone.length;d++)a.undone[d].ranges||++c;return{undo:b,redo:c}},clearHistory:function(){this.history=new Lf(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(a){return a&&(this.history.lastOp=this.history.lastOrigin=null),this.history.generation},isClean:function(a){return this.history.generation==(a||this.cleanGeneration)},getHistory:function(){return{done:Wf(this.history.done),undone:Wf(this.history.undone)}},setHistory:function(a){var b=this.history=new Lf(this.history.maxGeneration);b.done=Wf(a.done.slice(0),null,!0),b.undone=Wf(a.undone.slice(0),null,!0)},markText:function(a,b,c){return re(this,xb(this,a),xb(this,b),c,"range")},setBookmark:function(a,b){var c={replacedWith:b&&(null==b.nodeType?b.widget:b),insertLeft:b&&b.insertLeft,clearWhenEmpty:!1,shared:b&&b.shared};return a=xb(this,a),re(this,a,a,c,"bookmark")},findMarksAt:function(a){a=xb(this,a);var b=[],c=Df(this,a.line).markedSpans;if(c)for(var d=0;d<c.length;++d){var e=c[d];(null==e.from||e.from<=a.ch)&&(null==e.to||e.to>=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=xb(this,a),b=xb(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;h<g.length;h++){var i=g[h];e==a.line&&a.ch>i.to||null==i.from&&e!=a.line||e==b.line&&i.from>b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;d<c.length;++d)null!=c[d].from&&a.push(c[d].marker)}),a},posFromIndex:function(a){var b,c=this.first;return this.iter(function(d){var e=d.text.length+1;return e>a?(b=a,!0):(a-=e,void++c)}),xb(this,nb(c,b))},indexFromPos:function(a){a=xb(this,a);var b=a.ch;return a.line<this.first||a.ch<0?0:(this.iter(this.first,a.line,function(a){b+=a.text.length+1}),b)},copy:function(a){var b=new yf(Ff(this,this.first,this.first+this.size),this.modeOption,this.first);return b.scrollTop=this.scrollTop,b.scrollLeft=this.scrollLeft,b.sel=this.sel,b.extend=!1,a&&(b.history.undoDepth=this.history.undoDepth,b.setHistory(this.getHistory())),b},linkedDoc:function(a){a||(a={});var b=this.first,c=this.first+this.size;null!=a.from&&a.from>b&&(b=a.from),null!=a.to&&a.to<c&&(c=a.to);var d=new yf(Ff(this,b,c),a.mode||this.modeOption,b);return a.sharedHist&&(d.history=this.history),(this.linked||(this.linked=[])).push({doc:d,sharedHist:a.sharedHist}),d.linked=[{doc:this,isParent:!0,sharedHist:a.sharedHist}],ve(d,ue(this)),d},unlinkDoc:function(a){if(a instanceof y&&(a=a.doc),this.linked)for(var b=0;b<this.linked.length;++b){var c=this.linked[b];if(c.doc==a){this.linked.splice(b,1),a.unlinkDoc(this),we(ue(this));break}}if(a.history==this.history){var d=[a.id];Bf(a,function(a){d.push(a.id)},!0),a.history=new Lf(null),a.history.done=Wf(this.history.done,d),a.history.undone=Wf(this.history.undone,d)}},iterLinkedDocs:function(a){Bf(this,a)},getMode:function(){return this.mode},getEditor:function(){return this.cm}}),yf.prototype.eachLine=yf.prototype.iter;var zf="iter insert remove copy getEditor".split(" ");for(var Af in yf.prototype)yf.prototype.hasOwnProperty(Af)&&Bg(zf,Af)<0&&(y.prototype[Af]=function(a){return function(){return a.apply(this.doc,arguments)}}(yf.prototype[Af]));og(yf);var hg,$f=y.e_preventDefault=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},_f=y.e_stopPropagation=function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},bg=y.e_stop=function(a){$f(a),_f(a)},eg=y.on=function(a,b,c){if(a.addEventListener)a.addEventListener(b,c,!1);else if(a.attachEvent)a.attachEvent("on"+b,c);else{var d=a._handlers||(a._handlers={}),e=d[b]||(d[b]=[]);e.push(c)}},fg=y.off=function(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,!1);else if(a.detachEvent)a.detachEvent("on"+b,c);else{var d=a._handlers&&a._handlers[b];if(!d)return;for(var e=0;e<d.length;++e)if(d[e]==c){d.splice(e,1);break}}},gg=y.signal=function(a,b){var c=a._handlers&&a._handlers[b];if(c)for(var d=Array.prototype.slice.call(arguments,2),e=0;e<c.length;++e)c[e].apply(null,d)},ig=0,pg=30,qg=y.Pass={toString:function(){return"CodeMirror.Pass"}},rg={scroll:!1},sg={origin:"*mouse"},tg={origin:"+move"};ug.prototype.set=function(a,b){clearTimeout(this.id),this.id=setTimeout(b,a)};var vg=y.countColumn=function(a,b,c,d,e){null==b&&-1==(b=a.search(/[^\s\u00a0]/))&&(b=a.length);for(var f=d||0,g=e||0;;){var h=a.indexOf("\t",f);if(0>h||h>=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}},xg=[""],Ag=function(a){a.select()};p?Ag=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:g&&(Ag=function(a){try{a.select()}catch(b){}}),[].indexOf&&(Bg=function(a,b){return a.indexOf(b)}),[].map&&(Cg=function(a,b){return a.map(b)});var Mg,Gg=/[\u00df\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Hg=y.isWordChar=function(a){return/\w/.test(a)||a>"€"&&(a.toUpperCase()!=a.toLowerCase()||Gg.test(a))},Jg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;Mg=document.createRange?function(a,b,c){var d=document.createRange();return d.setEnd(a,c),d.setStart(a,b),d}:function(a,b,c){var d=document.body.createTextRange();return d.moveToElementText(a.parentNode),d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d},b&&(Qg=function(){try{return document.activeElement}catch(a){return document.body}});var $g,ah,ch,Wg=!1,Zg=function(){if(d)return!1;var a=Lg("div");return"draggable"in a||"dragDrop"in a}(),eh=y.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;d>=b;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)},fh=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return!(!b||b.parentElement()!=a)&&0!=b.compareEndPoints("StartToEnd",b)},gh=function(){var a=Lg("div");return"oncopy"in a||(a.setAttribute("oncopy","return;"),"function"==typeof a.oncopy)}(),hh={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};y.keyNames=hh,function(){for(var a=0;10>a;a++)hh[a+48]=hh[a+96]=String(a);for(var a=65;90>=a;a++)hh[a]=String.fromCharCode(a);for(var a=1;12>=a;a++)hh[a+111]=hh[a+63235]="F"+a}();var qh,vh=function(){function c(c){return 247>=c?a.charAt(c):c>=1424&&1524>=c?"R":c>=1536&&1773>=c?b.charAt(c-1536):c>=1774&&2220>=c?"r":c>=8192&&8203>=c?"w":8204==c?"b":"L"}function j(a,b,c){this.level=a,this.from=b,this.to=c}
+var a="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",b="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",d=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,e=/[stwN]/,f=/[LRr]/,g=/[Lb1n]/,h=/[1n]/,i="L";return function(a){if(!d.test(a))return!1;for(var m,b=a.length,k=[],l=0;b>l;++l)k.push(m=c(a.charCodeAt(l)));for(var l=0,n=i;b>l;++l){var m=k[l];"m"==m?k[l]=n:n=m}for(var l=0,o=i;b>l;++l){var m=k[l];"1"==m&&"r"==o?k[l]="n":f.test(m)&&(o=m,"r"==m&&(k[l]="R"))}for(var l=1,n=k[0];b-1>l;++l){var m=k[l];"+"==m&&"1"==n&&"1"==k[l+1]?k[l]="1":","!=m||n!=k[l+1]||"1"!=n&&"n"!=n||(k[l]=n),n=m}for(var l=0;b>l;++l){var m=k[l];if(","==m)k[l]="N";else if("%"==m){for(var p=l+1;b>p&&"%"==k[p];++p);for(var q=l&&"!"==k[l-1]||b>p&&"1"==k[p]?"1":"N",r=l;p>r;++r)k[r]=q;l=p-1}}for(var l=0,o=i;b>l;++l){var m=k[l];"L"==o&&"1"==m?k[l]="L":f.test(m)&&(o=m)}for(var l=0;b>l;++l)if(e.test(k[l])){for(var p=l+1;b>p&&e.test(k[p]);++p);for(var s="L"==(l?k[l-1]:i),t="L"==(b>p?k[p]:i),q=s||t?"L":"R",r=l;p>r;++r)k[r]=q;l=p-1}for(var v,u=[],l=0;b>l;)if(g.test(k[l])){var w=l;for(++l;b>l&&g.test(k[l]);++l);u.push(new j(0,w,l))}else{var x=l,y=u.length;for(++l;b>l&&"L"!=k[l];++l);for(var r=x;l>r;)if(h.test(k[r])){r>x&&u.splice(y,0,new j(1,x,r));var z=r;for(++r;l>r&&h.test(k[r]);++r);u.splice(y,0,new j(2,z,r)),x=r}else++r;l>x&&u.splice(y,0,new j(1,x,l))}return 1==u[0].level&&(v=a.match(/^\s+/))&&(u[0].from=v[0].length,u.unshift(new j(0,0,v[0].length))),1==zg(u).level&&(v=a.match(/\s+$/))&&(zg(u).to-=v[0].length,u.push(new j(0,b-v[0].length,b))),u[0].level!=zg(u).level&&u.push(new j(u[0].level,b,b)),u}}();return y.version="4.1.1",y}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("javascript",function(b,c){function l(a){for(var c,b=!1,d=!1;null!=(c=a.next());){if(!b){if("/"==c&&!d)return;"["==c?d=!0:d&&"]"==c&&(d=!1)}b=!b&&"\\"==c}}function o(a,b,c){return m=a,n=c,b}function p(a,b){var c=a.next();if('"'==c||"'"==c)return b.tokenize=q(c),b.tokenize(a,b);if("."==c&&a.match(/^\d+(?:[eE][+\-]?\d+)?/))return o("number","number");if("."==c&&a.match(".."))return o("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(c))return o(c);if("="==c&&a.eat(">"))return o("=>","operator");if("0"==c&&a.eat(/x/i))return a.eatWhile(/[\da-f]/i),o("number","number");if(/\d/.test(c))return a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),o("number","number");if("/"==c)return a.eat("*")?(b.tokenize=r,r(a,b)):a.eat("/")?(a.skipToEnd(),o("comment","comment")):"operator"==b.lastType||"keyword c"==b.lastType||"sof"==b.lastType||/^[\[{}\(,;:]$/.test(b.lastType)?(l(a),a.eatWhile(/[gimy]/),o("regexp","string-2")):(a.eatWhile(j),o("operator","operator",a.current()));if("`"==c)return b.tokenize=s,s(a,b);if("#"==c)return a.skipToEnd(),o("error","error");if(j.test(c))return a.eatWhile(j),o("operator","operator",a.current());a.eatWhile(/[\w\$_]/);var d=a.current(),e=i.propertyIsEnumerable(d)&&i[d];return e&&"."!=b.lastType?o(e.type,e.style,d):o("variable","variable",d)}function q(a){return function(b,c){var e,d=!1;if(f&&"@"==b.peek()&&b.match(k))return c.tokenize=p,o("jsonld-keyword","meta");for(;null!=(e=b.next())&&(e!=a||d);)d=!d&&"\\"==e;return d||(c.tokenize=p),o("string","string")}}function r(a,b){for(var d,c=!1;d=a.next();){if("/"==d&&c){b.tokenize=p;break}c="*"==d}return o("comment","comment")}function s(a,b){for(var d,c=!1;null!=(d=a.next());){if(!c&&("`"==d||"$"==d&&a.eat("{"))){b.tokenize=p;break}c=!c&&"\\"==d}return o("quasi","string-2",a.current())}function u(a,b){b.fatArrowAt&&(b.fatArrowAt=null);var c=a.string.indexOf("=>",a.start);if(!(0>c)){for(var d=0,e=!1,f=c-1;f>=0;--f){var g=a.string.charAt(f),h=t.indexOf(g);if(h>=0&&3>h){if(!d){++f;break}if(0==--d)break}else if(h>=3&&6>h)++d;else if(/[$\w]/.test(g))e=!0;else if(e&&!d){++f;break}}e&&!d&&(b.fatArrowAt=f)}}function w(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,null!=d&&(this.align=d)}function x(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0;for(var d=a.context;d;d=d.prev)for(var c=d.vars;c;c=c.next)if(c.name==b)return!0}function y(a,b,c,d,e){var f=a.cc;for(z.state=a,z.stream=e,z.marked=null,z.cc=f,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);;){if((f.length?f.pop():g?K:J)(c,d)){for(;f.length&&f[f.length-1].lex;)f.pop()();return z.marked?z.marked:"variable"==c&&x(a,d)?"variable-2":b}}}function A(){for(var a=arguments.length-1;a>=0;a--)z.cc.push(arguments[a])}function B(){return A.apply(null,arguments),!0}function C(a){function b(b){for(var c=b;c;c=c.next)if(c.name==a)return!0;return!1}var d=z.state;if(d.context){if(z.marked="def",b(d.localVars))return;d.localVars={name:a,next:d.localVars}}else{if(b(d.globalVars))return;c.globalVars&&(d.globalVars={name:a,next:d.globalVars})}}function E(){z.state.context={prev:z.state.context,vars:z.state.localVars},z.state.localVars=D}function F(){z.state.localVars=z.state.context.vars,z.state.context=z.state.context.prev}function G(a,b){var c=function(){var c=z.state,d=c.indented;"stat"==c.lexical.type&&(d=c.lexical.indented),c.lexical=new w(d,z.stream.column(),a,null,c.lexical,b)};return c.lex=!0,c}function H(){var a=z.state;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function I(a){function b(c){return c==a?B():";"==a?A():B(b)}return b}function J(a,b){return"var"==a?B(G("vardef",b.length),db,I(";"),H):"keyword a"==a?B(G("form"),K,J,H):"keyword b"==a?B(G("form"),J,H):"{"==a?B(G("}"),ab,H):";"==a?B():"if"==a?("else"==z.state.lexical.info&&z.state.cc[z.state.cc.length-1]==H&&z.state.cc.pop()(),B(G("form"),K,J,H,ib)):"function"==a?B(ob):"for"==a?B(G("form"),jb,J,H):"variable"==a?B(G("stat"),V):"switch"==a?B(G("form"),K,G("}","switch"),I("{"),ab,H,H):"case"==a?B(K,I(":")):"default"==a?B(I(":")):"catch"==a?B(G("form"),E,I("("),pb,I(")"),J,H,F):"module"==a?B(G("form"),E,tb,F,H):"class"==a?B(G("form"),qb,sb,H):"export"==a?B(G("form"),ub,H):"import"==a?B(G("form"),vb,H):A(G("stat"),K,I(";"),H)}function K(a){return M(a,!1)}function L(a){return M(a,!0)}function M(a,b){if(z.state.fatArrowAt==z.stream.start){var c=b?U:T;if("("==a)return B(E,G(")"),$(eb,")"),H,I("=>"),c,F);if("variable"==a)return A(E,eb,I("=>"),c,F)}var d=b?Q:P;return v.hasOwnProperty(a)?B(d):"function"==a?B(ob,d):"keyword c"==a?B(b?O:N):"("==a?B(G(")"),N,Ab,I(")"),H,d):"operator"==a||"spread"==a?B(b?L:K):"["==a?B(G("]"),yb,H,d):"{"==a?_(X,"}",null,d):"quasi"==a?A(R,d):B()}function N(a){return a.match(/[;\}\)\],]/)?A():A(K)}function O(a){return a.match(/[;\}\)\],]/)?A():A(L)}function P(a,b){return","==a?B(K):Q(a,b,!1)}function Q(a,b,c){var d=0==c?P:Q,e=0==c?K:L;return"=>"==b?B(E,c?U:T,F):"operator"==a?/\+\+|--/.test(b)?B(d):"?"==b?B(K,I(":"),e):B(e):"quasi"==a?A(R,d):";"!=a?"("==a?_(L,")","call",d):"."==a?B(W,d):"["==a?B(G("]"),N,I("]"),H,d):void 0:void 0}function R(a,b){return"quasi"!=a?A():"${"!=b.slice(b.length-2)?B(R):B(K,S)}function S(a){return"}"==a?(z.marked="string-2",z.state.tokenize=s,B(R)):void 0}function T(a){return u(z.stream,z.state),A("{"==a?J:K)}function U(a){return u(z.stream,z.state),A("{"==a?J:L)}function V(a){return":"==a?B(H,J):A(P,I(";"),H)}function W(a){return"variable"==a?(z.marked="property",B()):void 0}function X(a,b){if("variable"==a){if(z.marked="property","get"==b||"set"==b)return B(Y)}else if("number"==a||"string"==a)z.marked=f?"property":a+" property";else if("["==a)return B(K,I("]"),Z);return v.hasOwnProperty(a)?B(Z):void 0}function Y(a){return"variable"!=a?A(Z):(z.marked="property",B(ob))}function Z(a){return":"==a?B(L):"("==a?A(ob):void 0}function $(a,b){function c(d){if(","==d){var e=z.state.lexical;return"call"==e.info&&(e.pos=(e.pos||0)+1),B(a,c)}return d==b?B():B(I(b))}return function(d){return d==b?B():A(a,c)}}function _(a,b,c){for(var d=3;d<arguments.length;d++)z.cc.push(arguments[d]);return B(G(b,c),$(a,b),H)}function ab(a){return"}"==a?B():A(J,ab)}function bb(a){return h&&":"==a?B(cb):void 0}function cb(a){return"variable"==a?(z.marked="variable-3",B()):void 0}function db(){return A(eb,bb,gb,hb)}function eb(a,b){return"variable"==a?(C(b),B()):"["==a?_(eb,"]"):"{"==a?_(fb,"}"):void 0}function fb(a,b){return"variable"!=a||z.stream.match(/^\s*:/,!1)?("variable"==a&&(z.marked="property"),B(I(":"),eb,gb)):(C(b),B(gb))}function gb(a,b){return"="==b?B(L):void 0}function hb(a){return","==a?B(db):void 0}function ib(a,b){return"keyword b"==a&&"else"==b?B(G("form","else"),J,H):void 0}function jb(a){return"("==a?B(G(")"),kb,I(")"),H):void 0}function kb(a){return"var"==a?B(db,I(";"),mb):";"==a?B(mb):"variable"==a?B(lb):A(K,I(";"),mb)}function lb(a,b){return"in"==b||"of"==b?(z.marked="keyword",B(K)):B(P,mb)}function mb(a,b){return";"==a?B(nb):"in"==b||"of"==b?(z.marked="keyword",B(K)):A(K,I(";"),nb)}function nb(a){")"!=a&&B(K)}function ob(a,b){return"*"==b?(z.marked="keyword",B(ob)):"variable"==a?(C(b),B(ob)):"("==a?B(E,G(")"),$(pb,")"),H,J,F):void 0}function pb(a){return"spread"==a?B(pb):A(eb,bb)}function qb(a,b){return"variable"==a?(C(b),B(rb)):void 0}function rb(a,b){return"extends"==b?B(K):void 0}function sb(a){return"{"==a?_(X,"}"):void 0}function tb(a,b){return"string"==a?B(J):"variable"==a?(C(b),B(xb)):void 0}function ub(a,b){return"*"==b?(z.marked="keyword",B(xb,I(";"))):"default"==b?(z.marked="keyword",B(K,I(";"))):A(J)}function vb(a){return"string"==a?B():A(wb,xb)}function wb(a,b){return"{"==a?_(wb,"}"):("variable"==a&&C(b),B())}function xb(a,b){return"from"==b?(z.marked="keyword",B(K)):void 0}function yb(a){return"]"==a?B():A(L,zb)}function zb(a){return"for"==a?A(Ab,I("]")):","==a?B($(L,"]")):A($(L,"]"))}function Ab(a){return"for"==a?B(jb,Ab):"if"==a?B(K,Ab):void 0}var m,n,d=b.indentUnit,e=c.statementIndent,f=c.jsonld,g=c.json||f,h=c.typescript,i=function(){function a(a){return{type:a,style:"keyword"}}var b=a("keyword a"),c=a("keyword b"),d=a("keyword c"),e=a("operator"),f={type:"atom",style:"atom"},g={if:a("if"),while:b,with:b,else:c,do:c,try:c,finally:c,return:d,break:d,continue:d,new:d,delete:d,throw:d,debugger:d,var:a("var"),const:a("var"),let:a("var"),function:a("function"),catch:a("catch"),for:a("for"),switch:a("switch"),case:a("case"),default:a("default"),in:e,typeof:e,instanceof:e,true:f,false:f,null:f,undefined:f,NaN:f,Infinity:f,this:a("this"),module:a("module"),class:a("class"),super:a("atom"),yield:d,export:a("export"),import:a("import"),extends:d};if(h){var i={type:"variable",style:"variable-3"},j={interface:a("interface"),extends:a("extends"),constructor:a("constructor"),public:a("public"),private:a("private"),protected:a("protected"),static:a("static"),string:i,number:i,bool:i,any:i};for(var k in j)g[k]=j[k]}return g}(),j=/[+\-*&%=<>!?|~^]/,k=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,t="([{}])",v={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0},z={state:null,column:null,marked:null,cc:null},D={name:"this",next:{name:"arguments"}};return H.lex=!0,{startState:function(a){var b={tokenize:p,lastType:"sof",cc:[],lexical:new w((a||0)-d,0,"block",!1),localVars:c.localVars,context:c.localVars&&{vars:c.localVars},indented:0};return c.globalVars&&"object"==typeof c.globalVars&&(b.globalVars=c.globalVars),b},token:function(a,b){if(a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation(),u(a,b)),b.tokenize!=r&&a.eatSpace())return null;var c=b.tokenize(a,b);return"comment"==m?c:(b.lastType="operator"!=m||"++"!=n&&"--"!=n?m:"incdec",y(b,c,m,n,a))},indent:function(b,f){if(b.tokenize==r)return a.Pass;if(b.tokenize!=p)return 0;var g=f&&f.charAt(0),h=b.lexical;if(!/^\s*else\b/.test(f))for(var i=b.cc.length-1;i>=0;--i){var j=b.cc[i];if(j==H)h=h.prev;else if(j!=ib)break}"stat"==h.type&&"}"==g&&(h=h.prev),e&&")"==h.type&&"stat"==h.prev.type&&(h=h.prev);var k=h.type,l=g==k;return"vardef"==k?h.indented+("operator"==b.lastType||","==b.lastType?h.info+1:0):"form"==k&&"{"==g?h.indented:"form"==k?h.indented+d:"stat"==k?h.indented+("operator"==b.lastType||","==b.lastType?e||d:0):"switch"!=h.info||l||0==c.doubleIndentSwitch?h.align?h.column+(l?0:1):h.indented+(l?0:d):h.indented+(/^(?:case|default)\b/.test(f)?d:2*d)},electricChars:":{}",blockCommentStart:g?null:"/*",blockCommentEnd:g?null:"*/",lineComment:g?null:"//",fold:"brace",helperType:g?"json":"javascript",jsonldMode:f,jsonMode:g}}),a.defineMIME("text/javascript","javascript"),a.defineMIME("text/ecmascript","javascript"),a.defineMIME("application/javascript","javascript"),a.defineMIME("application/ecmascript","javascript"),a.defineMIME("application/json",{name:"javascript",json:!0}),a.defineMIME("application/x-json",{name:"javascript",json:!0}),a.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),a.defineMIME("text/typescript",{name:"javascript",typescript:!0}),a.defineMIME("application/typescript",{name:"javascript",typescript:!0})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function f(a,b){var c=a.getRange(e(b.line,b.ch-1),e(b.line,b.ch+1));return 2==c.length?c:null}function g(b){for(var c={name:"autoCloseBrackets",Backspace:function(c){if(c.getOption("disableInput"))return a.Pass;for(var d=c.listSelections(),g=0;g<d.length;g++){if(!d[g].empty())return a.Pass;var h=f(c,d[g].head);if(!h||0!=b.indexOf(h)%2)return a.Pass}for(var g=d.length-1;g>=0;g--){var i=d[g].head;c.replaceRange("",e(i.line,i.ch-1),e(i.line,i.ch+1))}}},g="",h=0;h<b.length;h+=2)!function(b,f){b!=f&&(g+=f),c["'"+b+"'"]=function(c){if(c.getOption("disableInput"))return a.Pass;for(var i,j,h=c.listSelections(),k=0;k<h.length;k++){var n,l=h[k],m=l.head;if("'"==b&&"comment"==c.getTokenTypeAt(m))return a.Pass;var j=c.getRange(m,e(m.line,m.ch+1));if(l.empty())if(b==f&&j==f)n=c.getRange(m,e(m.line,m.ch+3))==b+b+b?"skipThree":"skip";else if(b==f&&m.ch>1&&c.getRange(e(m.line,m.ch-2),m)==b+b&&(m.ch<=2||c.getRange(e(m.line,m.ch-3),e(m.line,m.ch-2))!=b))n="addFour";else{if(b==f&&a.isWordChar(j))return a.Pass;if(!(c.getLine(m.line).length==m.ch||g.indexOf(j)>=0||d.test(j)))return a.Pass;n="both"}else n="surround";if(i){if(i!=n)return a.Pass}else i=n}c.operation(function(){if("skip"==i)c.execCommand("goCharRight");else if("skipThree"==i)for(var a=0;3>a;a++)c.execCommand("goCharRight");else if("surround"==i){for(var d=c.getSelections(),a=0;a<d.length;a++)d[a]=b+d[a]+f;c.replaceSelections(d,"around")}else"both"==i?(c.replaceSelection(b+f,null),c.execCommand("goCharLeft")):"addFour"==i&&(c.replaceSelection(b+b+b+b,"before"),c.execCommand("goCharRight"))})},b!=f&&(c["'"+f+"'"]=function(b){for(var c=b.listSelections(),d=0;d<c.length;d++){var g=c[d];if(!g.empty()||b.getRange(g.head,e(g.head.line,g.head.ch+1))!=f)return a.Pass}b.execCommand("goCharRight")})}(b.charAt(h),b.charAt(h+1));return c}function h(b){return function(c){if(c.getOption("disableInput"))return a.Pass;for(var d=c.listSelections(),e=0;e<d.length;e++){if(!d[e].empty())return a.Pass;var g=f(c,d[e].head);if(!g||0!=b.indexOf(g)%2)return a.Pass}c.operation(function(){c.replaceSelection("\n\n",null),c.execCommand("goCharLeft"),d=c.listSelections();for(var a=0;a<d.length;a++){var b=d[a].head.line;c.indentLine(b,null,!0),c.indentLine(b+1,null,!0)}})}}var d=/\s/,e=a.Pos;a.defineOption("autoCloseBrackets",!1,function(d,e,f){if(f!=a.Init&&f&&d.removeKeyMap("autoCloseBrackets"),e){var i="()[]{}''\"\"",j="[]{}";"string"==typeof e?i=e:"object"==typeof e&&(null!=e.pairs&&(i=e.pairs),null!=e.explode&&(j=e.explode));var k=g(i);j&&(k.Enter=h(j)),d.addKeyMap(k)}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function d(b){if(b.getOption("disableInput"))return a.Pass;for(var d,c=b.listSelections(),f=[],g=0;g<c.length;g++){var h=c[g].head,i=b.getTokenAt(h);if("comment"!=i.type)return a.Pass;var j=a.innerMode(b.getMode(),i.state).mode;if(d){if(d!=j)return a.Pass}else d=j;var k=null;if(d.blockCommentStart&&d.blockCommentContinue){var n,l=i.string.indexOf(d.blockCommentEnd),m=b.getRange(a.Pos(h.line,0),a.Pos(h.line,i.end));if(-1!=l&&l==i.string.length-d.blockCommentEnd.length&&h.ch>=l);else if(0==i.string.indexOf(d.blockCommentStart)){if(k=m.slice(0,i.start),!/^\s*$/.test(k)){k="";for(var o=0;o<i.start;++o)k+=" "}}else-1!=(n=m.indexOf(d.blockCommentContinue))&&n+d.blockCommentContinue.length>i.start&&/^\s*$/.test(m.slice(0,n))&&(k=m.slice(0,n));null!=k&&(k+=d.blockCommentContinue)}if(null==k&&d.lineComment&&e(b)){var p=b.getLine(h.line),n=p.indexOf(d.lineComment);n>-1&&(k=p.slice(0,n),/\S/.test(k)?k=null:k+=d.lineComment+p.slice(n+d.lineComment.length).match(/^\s*/)[0])}if(null==k)return a.Pass;f[g]="\n"+k}b.operation(function(){for(var a=c.length-1;a>=0;a--)b.replaceRange(f[a],c[a].from(),c[a].to(),"+insert")})}function e(a){var b=a.getOption("continueComments");return!b||"object"!=typeof b||!1!==b.continueLineComment}for(var b=["clike","css","javascript"],c=0;c<b.length;++c)a.extendMode(b[c],{blockCommentContinue:" * "});a.defineOption("continueComments",null,function(b,c,e){if(e&&e!=a.Init&&b.removeKeyMap("continueComment"),c){var f="Enter";"string"==typeof c?f=c:"object"==typeof c&&c.key&&(f=c.key);var g={name:"continueComment"};g[f]=d,b.addKeyMap(g)}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function c(a,b){for(var c=0,d=a.length;d>c;++c)b(a[c])}function d(a,b){if(!Array.prototype.indexOf){for(var c=a.length;c--;)if(a[c]===b)return!0;return!1}return-1!=a.indexOf(b)}function e(c,d,e,f){var g=c.getCursor(),h=e(c,g),i=h;if(!/\b(?:string|comment)\b/.test(h.type)){for(h.state=a.innerMode(c.getMode(),h.state).state,/^[\w$_]*$/.test(h.string)||(h=i={start:g.ch,end:g.ch,string:"",state:h.state,type:"."==h.string?"property":null});"property"==i.type;){if(i=e(c,b(g.line,i.start)),"."!=i.string)return;if(i=e(c,b(g.line,i.start)),!j)var j=[];j.push(i)}return{list:n(h,j,d,f),from:b(g.line,h.start),to:b(g.line,h.end)}}}function f(a,b){return e(a,l,function(a,b){return a.getTokenAt(b)},b)}function g(a,b){var c=a.getTokenAt(b);return b.ch==c.start+1&&"."==c.string.charAt(0)?(c.end=c.start,c.string=".",c.type="property"):/^\.[\w$_]*$/.test(c.string)&&(c.type="property",c.start++,c.string=c.string.replace(/\./,"")),c}function h(a,b){return e(a,m,g,b)}function n(a,b,e,f){function l(a){0!=a.lastIndexOf(h,0)||d(g,a)||g.push(a)}function m(a){"string"==typeof a?c(i,l):a instanceof Array?c(j,l):a instanceof Function&&c(k,l);for(var b in a)l(b)}var g=[],h=a.string;if(b&&b.length){var o,n=b.pop();for(n.type&&0===n.type.indexOf("variable")?(f&&f.additionalContext&&(o=f.additionalContext[n.string]),o=o||window[n.string]):"string"==n.type?o="":"atom"==n.type?o=1:"function"==n.type&&(null==window.jQuery||"$"!=n.string&&"jQuery"!=n.string||"function"!=typeof window.jQuery?null!=window._&&"_"==n.string&&"function"==typeof window._&&(o=window._()):o=window.jQuery());null!=o&&b.length;)o=o[b.pop().string];null!=o&&m(o)}else{for(var p=a.state.localVars;p;p=p.next)l(p.name);for(var p=a.state.globalVars;p;p=p.next)l(p.name);m(window),c(e,l)}return g}var b=a.Pos;a.registerHelper("hint","javascript",f),a.registerHelper("hint","coffeescript",h);var i="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),j="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),k="prototype apply call bind".split(" "),l="break case catch continue debugger default delete do else false finally for function if in instanceof new null return switch throw true try typeof var void while with".split(" "),m="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ")}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function e(a,b,e,g){var h=a.getLineHandle(b.line),i=b.ch-1,j=i>=0&&d[h.text.charAt(i)]||d[h.text.charAt(++i)];if(!j)return null;var k=">"==j.charAt(1)?1:-1;if(e&&k>0!=(i==b.ch))return null;var l=a.getTokenTypeAt(c(b.line,i+1)),m=f(a,c(b.line,i+(k>0?1:0)),k,l||null,g);return null==m?null:{from:c(b.line,i),to:m&&m.pos,match:m&&m.ch==j.charAt(0),forward:k>0}}function f(a,b,e,f,g){for(var h=g&&g.maxScanLineLength||1e4,i=g&&g.maxScanLines||1e3,j=[],k=g&&g.bracketRegex?g.bracketRegex:/[(){}[\]]/,l=e>0?Math.min(b.line+i,a.lastLine()+1):Math.max(a.firstLine()-1,b.line-i),m=b.line;m!=l;m+=e){var n=a.getLine(m);if(n){var o=e>0?0:n.length-1,p=e>0?n.length:-1;if(!(n.length>h))for(m==b.line&&(o=b.ch-(0>e?1:0));o!=p;o+=e){var q=n.charAt(o);if(k.test(q)&&(void 0===f||a.getTokenTypeAt(c(m,o+1))==f)){var r=d[q];if(">"==r.charAt(1)==e>0)j.push(q);else{if(!j.length)return{pos:c(m,o),ch:q};j.pop()}}}}}return m-e!=(e>0?a.lastLine():a.firstLine())&&null}function g(a,d,f){for(var g=a.state.matchBrackets.maxHighlightLineLength||1e3,h=[],i=a.listSelections(),j=0;j<i.length;j++){var k=i[j].empty()&&e(a,i[j].head,!1,f);if(k&&a.getLine(k.from.line).length<=g){var l=k.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";h.push(a.markText(k.from,c(k.from.line,k.from.ch+1),{className:l})),k.to&&a.getLine(k.to.line).length<=g&&h.push(a.markText(k.to,c(k.to.line,k.to.ch+1),{className:l}))}}if(h.length){b&&a.state.focused&&a.display.input.focus();var m=function(){a.operation(function(){for(var a=0;a<h.length;a++)h[a].clear()})};if(!d)return m;setTimeout(m,800)}}function i(a){a.operation(function(){h&&(h(),h=null),h=g(a,!1,a.state.matchBrackets)})}var b=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),c=a.Pos,d={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},h=null;a.defineOption("matchBrackets",!1,function(b,c,d){d&&d!=a.Init&&b.off("cursorActivity",i),c&&(b.state.matchBrackets="object"==typeof c?c:{},b.on("cursorActivity",i))}),a.defineExtension("matchBrackets",function(){g(this,!0)}),a.defineExtension("findMatchingBracket",function(a,b,c){return e(this,a,b,c)}),a.defineExtension("scanForBracket",function(a,b,c,d){return f(this,a,b,c,d)})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function d(a,b,c){this.cm=a,this.getHints=b,this.options=c,this.widget=this.onClose=null}function e(a){return"string"==typeof a?a:a.text}function f(a,b){function e(a,e){var f;f="string"!=typeof e?function(a){return e(a,b)}:c.hasOwnProperty(e)?c[e]:e,d[a]=f}var c={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(1-b.menuSize(),!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},d=a.customKeys?{}:c;if(a.customKeys)for(var f in a.customKeys)a.customKeys.hasOwnProperty(f)&&e(f,a.customKeys[f]);if(a.extraKeys)for(var f in a.extraKeys)a.extraKeys.hasOwnProperty(f)&&e(f,a.extraKeys[f]);return d}function g(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function h(d,h){this.completion=d,this.data=h;var i=this,j=d.cm,k=d.options,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=k.getDefaultSelection?k.getDefaultSelection(j,k,h):0;for(var m=h.list,n=0;n<m.length;++n){var o=l.appendChild(document.createElement("li")),p=m[n],q=b+(n!=this.selectedHint?"":" "+c);null!=p.className&&(q=p.className+" "+q),o.className=q,p.render?p.render(o,h,p):o.appendChild(document.createTextNode(p.displayText||e(p))),o.hintId=n}var r=j.cursorCoords(!1!==k.alignWithWord?h.from:null),s=r.left,t=r.bottom,u=!0;l.style.left=s+"px",l.style.top=t+"px";var v=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),w=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(k.container||document.body).appendChild(l);var x=l.getBoundingClientRect();if(x.bottom-w>0){var z=x.bottom-x.top,A=x.top-(r.bottom-r.top);if(A-z>0)l.style.top=(t=A-z)+"px",u=!1;else if(z>w){l.style.height=w-5+"px",l.style.top=(t=r.bottom-x.top)+"px";var B=j.getCursor();h.from.ch!=B.ch&&(r=j.cursorCoords(B),l.style.left=(s=r.left)+"px",x=l.getBoundingClientRect())}}var C=x.left-v;if(C>0&&(x.right-x.left>v&&(l.style.width=v-5+"px",C-=x.right-x.left-v),l.style.left=(s=r.left-C)+"px"),j.addKeyMap(this.keyMap=f(k,{moveFocus:function(a,b){i.changeActive(i.selectedHint+a,b)},setFocus:function(a){i.changeActive(a)},menuSize:function(){return i.screenAmount()},length:m.length,close:function(){d.close()},pick:function(){i.pick()},data:h})),!1!==k.closeOnUnfocus){var D;j.on("blur",this.onBlur=function(){D=setTimeout(function(){d.close()},100)}),j.on("focus",this.onFocus=function(){clearTimeout(D)})}var E=j.getScrollInfo();return j.on("scroll",this.onScroll=function(){var a=j.getScrollInfo(),b=j.getWrapperElement().getBoundingClientRect(),c=t+E.top-a.top,e=c-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return u||(e+=l.offsetHeight),e<=b.top||e>=b.bottom?d.close():(l.style.top=c+"px",void(l.style.left=s+E.left-a.left+"px"))}),a.on(l,"dblclick",function(a){var b=g(l,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),i.pick())}),a.on(l,"click",function(a){var b=g(l,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),k.completeOnSingleClick&&i.pick())}),a.on(l,"mousedown",function(){setTimeout(function(){j.focus()},20)}),a.signal(h,"select",m[0],l.firstChild),!0}var b="CodeMirror-hint",c="CodeMirror-hint-active";a.showHint=function(b,c,e){if(!(b.listSelections().length>1||b.somethingSelected())){if(null==c){if(e&&e.async)return;c=a.hint.auto}b.state.completionActive&&b.state.completionActive.close();var f=b.state.completionActive=new d(b,c,e||{});return a.signal(b,"startCompletion",b),f.options.async?void c(b,function(a){f.showHints(a)},f.options):f.showHints(c(b,f.options))}},d.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.widget&&this.widget.close(),this.onClose&&this.onClose(),a.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(b,c){var d=b.list[c];d.hint?d.hint(this.cm,b,d):this.cm.replaceRange(e(d),d.from||b.from,d.to||b.to,"complete"),a.signal(b,"pick",d),this.close()},showHints:function(a){return a&&a.list.length&&this.active()?void(0!=this.options.completeSingle&&1==a.list.length?this.pick(a,0):this.showWidget(a)):this.close()},showWidget:function(b){function l(){e||(e=!0,d.close(),d.cm.off("cursorActivity",p),b&&a.signal(b,"close"))}function m(){e||(a.signal(b,"update"),d.options.async?d.getHints(d.cm,n,d.options):n(d.getHints(d.cm,d.options)))}function n(a){if(b=a,!e){if(!b||!b.list.length)return l();d.widget&&d.widget.close(),d.widget=new h(d,b)}}function o(){c&&(k(c),c=0)}function p(){o();var a=d.cm.getCursor(),b=d.cm.getLine(a.line);a.line!=g.line||b.length-a.ch!=i-g.ch||a.ch<g.ch||d.cm.somethingSelected()||a.ch&&f.test(b.charAt(a.ch-1))?d.close():(c=j(m),d.widget&&d.widget.close())}this.widget=new h(this,b),a.signal(b,"shown");var e,c=0,d=this,f=this.options.closeCharacters||/[\s()\[\]{};:>,]/,g=this.cm.getCursor(),i=this.cm.getLine(g.line).length,j=window.requestAnimationFrame||function(a){return setTimeout(a,1e3/60)},k=window.cancelAnimationFrame||clearTimeout;this.cm.on("cursorActivity",p),this.onClose=l}},h.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var a=this.completion.cm;!1!==this.completion.options.closeOnUnfocus&&(a.off("blur",this.onBlur),a.off("focus",this.onFocus)),a.off("scroll",this.onScroll)}},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(b,d){if(b>=this.data.list.length?b=d?this.data.list.length-1:0:0>b&&(b=d?0:this.data.list.length-1),this.selectedHint!=b){var e=this.hints.childNodes[this.selectedHint];e.className=e.className.replace(" "+c,""),e=this.hints.childNodes[this.selectedHint=b],e.className+=" "+c,e.offsetTop<this.hints.scrollTop?this.hints.scrollTop=e.offsetTop-3:e.offsetTop+e.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=e.offsetTop+e.offsetHeight-this.hints.clientHeight+3),a.signal(this.data,"select",this.data.list[this.selectedHint],e)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},a.registerHelper("hint","auto",function(b,c){var e,d=b.getHelpers(b.getCursor(),"hint");if(d.length)for(var f=0;f<d.length;f++){var g=d[f](b,c);if(g&&g.list.length)return g}else if(e=b.getHelper(b.getCursor(),"hintWords")){if(e)return a.hint.fromList(b,{words:e})}else if(a.hint.anyword)return a.hint.anyword(b,c)}),a.registerHelper("hint","fromList",function(b,c){for(var d=b.getCursor(),e=b.getTokenAt(d),f=[],g=0;g<c.words.length;g++){var h=c.words[g];h.slice(0,e.string.length)==e.string&&f.push(h)}return f.length?{list:f,from:a.Pos(d.line,e.start),to:a.Pos(d.line,e.end)}:void 0}),a.commands.autocomplete=a.showHint});
\ No newline at end of file
diff --git a/WebSites/errors/403/js/freeboard_plugins.js b/WebSites/errors/403/js/freeboard_plugins.js
new file mode 100644
index 0000000..dd02eb4
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard_plugins.js
@@ -0,0 +1,4730 @@
+DatasourceModel = function(theFreeboardModel, datasourcePlugins) {
+	var self = this;
+
+	function disposeDatasourceInstance()
+	{
+		if(!_.isUndefined(self.datasourceInstance))
+		{
+			if(_.isFunction(self.datasourceInstance.onDispose))
+			{
+				self.datasourceInstance.onDispose();
+			}
+
+			self.datasourceInstance = undefined;
+		}
+	}
+
+	this.name = ko.observable();
+	this.latestData = ko.observable();
+	this.settings = ko.observable({});
+	this.settings.subscribe(function(newValue)
+	{
+		if(!_.isUndefined(self.datasourceInstance) && _.isFunction(self.datasourceInstance.onSettingsChanged))
+		{
+			self.datasourceInstance.onSettingsChanged(newValue);
+		}
+	});
+
+	this.updateCallback = function(newData)
+	{
+		theFreeboardModel.processDatasourceUpdate(self, newData);
+
+		self.latestData(newData);
+
+		var now = new Date();
+		self.last_updated(now.toLocaleTimeString());
+	}
+
+	this.type = ko.observable();
+	this.type.subscribe(function(newValue)
+	{
+		disposeDatasourceInstance();
+
+		if((newValue in datasourcePlugins) && _.isFunction(datasourcePlugins[newValue].newInstance))
+		{
+			var datasourceType = datasourcePlugins[newValue];
+
+			function finishLoad()
+			{
+				datasourceType.newInstance(self.settings(), function(datasourceInstance)
+				{
+
+					self.datasourceInstance = datasourceInstance;
+					datasourceInstance.updateNow();
+
+				}, self.updateCallback);
+			}
+
+			// Do we need to load any external scripts?
+			if(datasourceType.external_scripts)
+			{
+				head.js(datasourceType.external_scripts.slice(0), finishLoad); // Need to clone the array because head.js adds some weird functions to it
+			}
+			else
+			{
+				finishLoad();
+			}
+		}
+	});
+
+	this.last_updated = ko.observable("never");
+	this.last_error = ko.observable();
+
+	this.serialize = function()
+	{
+		return {
+			name    : self.name(),
+			type    : self.type(),
+			settings: self.settings()
+		};
+	}
+
+	this.deserialize = function(object)
+	{
+		self.settings(object.settings);
+		self.name(object.name);
+		self.type(object.type);
+	}
+
+	this.getDataRepresentation = function(dataPath)
+	{
+		var valueFunction = new Function("data", "return " + dataPath + ";");
+		return valueFunction.call(undefined, self.latestData());
+	}
+
+	this.updateNow = function()
+	{
+		if(!_.isUndefined(self.datasourceInstance) && _.isFunction(self.datasourceInstance.updateNow))
+		{
+			self.datasourceInstance.updateNow();
+		}
+	}
+
+	this.dispose = function()
+	{
+		disposeDatasourceInstance();
+	}
+}
+
+DeveloperConsole = function(theFreeboardModel)
+{
+	function showDeveloperConsole()
+	{
+		var pluginScriptsInputs = [];
+		var container = $('<div></div>');
+		var addScript = $('<div class="table-operation text-button">ADD</div>');
+		var table = $('<table class="table table-condensed sub-table"></table>');
+
+		table.append($('<thead style=""><tr><th>Plugin Script URL</th></tr></thead>'));
+
+		var tableBody = $("<tbody></tbody>");
+
+		table.append(tableBody);
+
+		container.append($("<p>Here you can add references to other scripts to load datasource or widget plugins.</p>"))
+			.append(table)
+			.append(addScript)
+            .append('<p>To learn how to build plugins for freeboard, please visit <a target="_blank" href="http://freeboard.github.io/freeboard/docs/plugin_example.html">http://freeboard.github.io/freeboard/docs/plugin_example.html</a></p>');
+
+		function refreshScript(scriptURL)
+		{
+			$('script[src="' + scriptURL + '"]').remove();
+		}
+
+		function addNewScriptRow(scriptURL)
+		{
+			var tableRow = $('<tr></tr>');
+			var tableOperations = $('<ul class="board-toolbar"></ul>');
+			var scriptInput = $('<input class="table-row-value" style="width:100%;" type="text">');
+			var deleteOperation = $('<li><i class="icon-trash icon-white"></i></li>').click(function(e){
+				pluginScriptsInputs = _.without(pluginScriptsInputs, scriptInput);
+				tableRow.remove();
+			});
+
+			pluginScriptsInputs.push(scriptInput);
+
+			if(scriptURL)
+			{
+				scriptInput.val(scriptURL);
+			}
+
+			tableOperations.append(deleteOperation);
+			tableBody
+				.append(tableRow
+				.append($('<td></td>').append(scriptInput))
+					.append($('<td class="table-row-operation">').append(tableOperations)));
+		}
+
+		_.each(theFreeboardModel.plugins(), function(pluginSource){
+
+			addNewScriptRow(pluginSource);
+
+		});
+
+		addScript.click(function(e)
+		{
+			addNewScriptRow();
+		});
+
+		new DialogBox(container, "Developer Console", "OK", null, function(){
+
+			// Unload our previous scripts
+			_.each(theFreeboardModel.plugins(), function(pluginSource){
+
+				$('script[src^="' + pluginSource + '"]').remove();
+
+			});
+
+			theFreeboardModel.plugins.removeAll();
+
+			_.each(pluginScriptsInputs, function(scriptInput){
+
+				var scriptURL = scriptInput.val();
+
+				if(scriptURL && scriptURL.length > 0)
+				{
+					theFreeboardModel.addPluginSource(scriptURL);
+
+					// Load the script with a cache buster
+					head.js(scriptURL + "?" + Date.now());
+				}
+			});
+
+		});
+	}
+
+	// Public API
+	return {
+		showDeveloperConsole : function()
+		{
+			showDeveloperConsole();
+		}
+	}
+}
+
+function DialogBox(contentElement, title, okTitle, cancelTitle, okCallback)
+{
+	var modal_width = 900;
+
+	// Initialize our modal overlay
+	var overlay = $('<div id="modal_overlay" style="display:none;"></div>');
+
+	var modalDialog = $('<div class="modal"></div>');
+
+	function closeModal()
+	{
+		overlay.fadeOut(200, function()
+		{
+			$(this).remove();
+		});
+	}
+
+	// Create our header
+	modalDialog.append('<header><h2 class="title">' + title + "</h2></header>");
+
+	$('<section></section>').appendTo(modalDialog).append(contentElement);
+
+	// Create our footer
+	var footer = $('<footer></footer>').appendTo(modalDialog);
+
+	if(okTitle)
+	{
+		$('<span id="dialog-ok" class="text-button">' + okTitle + '</span>').appendTo(footer).click(function()
+		{
+			var hold = false;
+
+			if(_.isFunction(okCallback))
+			{
+				hold = okCallback();
+			}
+
+			if(!hold)
+			{
+				closeModal();
+			}
+		});
+	}
+
+	if(cancelTitle)
+	{
+		$('<span id="dialog-cancel" class="text-button">' + cancelTitle + '</span>').appendTo(footer).click(function()
+		{
+			closeModal();
+		});
+	}
+
+	overlay.append(modalDialog);
+	$("body").append(overlay);
+	overlay.fadeIn(200);
+}
+
+function FreeboardModel(datasourcePlugins, widgetPlugins, freeboardUI)
+{
+	var self = this;
+
+	var SERIALIZATION_VERSION = 1;
+
+	this.version = 0;
+	this.isEditing = ko.observable(false);
+	this.allow_edit = ko.observable(false);
+	this.allow_edit.subscribe(function(newValue)
+	{
+		if(newValue)
+		{
+			$("#main-header").show();
+		}
+		else
+		{
+			$("#main-header").hide();
+		}
+	});
+
+	this.header_image = ko.observable();
+	this.plugins = ko.observableArray();
+	this.datasources = ko.observableArray();
+	this.panes = ko.observableArray();
+	this.datasourceData = {};
+	this.processDatasourceUpdate = function(datasourceModel, newData)
+	{
+		var datasourceName = datasourceModel.name();
+
+		self.datasourceData[datasourceName] = newData;
+
+		_.each(self.panes(), function(pane)
+		{
+			_.each(pane.widgets(), function(widget)
+			{
+				widget.processDatasourceUpdate(datasourceName);
+			});
+		});
+	}
+
+	this._datasourceTypes = ko.observable();
+	this.datasourceTypes = ko.computed({
+		read: function()
+		{
+			self._datasourceTypes();
+
+			var returnTypes = [];
+
+			_.each(datasourcePlugins, function(datasourcePluginType)
+			{
+				var typeName = datasourcePluginType.type_name;
+				var displayName = typeName;
+
+				if(!_.isUndefined(datasourcePluginType.display_name))
+				{
+					displayName = datasourcePluginType.display_name;
+				}
+
+				returnTypes.push({
+					name        : typeName,
+					display_name: displayName
+				});
+			});
+
+			return returnTypes;
+		}
+	});
+
+	this._widgetTypes = ko.observable();
+	this.widgetTypes = ko.computed({
+		read: function()
+		{
+			self._widgetTypes();
+
+			var returnTypes = [];
+
+			_.each(widgetPlugins, function(widgetPluginType)
+			{
+				var typeName = widgetPluginType.type_name;
+				var displayName = typeName;
+
+				if(!_.isUndefined(widgetPluginType.display_name))
+				{
+					displayName = widgetPluginType.display_name;
+				}
+
+				returnTypes.push({
+					name        : typeName,
+					display_name: displayName
+				});
+			});
+
+			return returnTypes;
+		}
+	});
+
+	this.addPluginSource = function(pluginSource)
+	{
+		if(pluginSource && self.plugins.indexOf(pluginSource) == -1)
+		{
+			self.plugins.push(pluginSource);
+		}
+	}
+
+	this.serialize = function()
+	{
+		var panes = [];
+
+		_.each(self.panes(), function(pane)
+		{
+			panes.push(pane.serialize());
+		});
+
+		var datasources = [];
+
+		_.each(self.datasources(), function(datasource)
+		{
+			datasources.push(datasource.serialize());
+		});
+
+		return {
+			version     : SERIALIZATION_VERSION,
+			header_image: self.header_image(),
+			allow_edit  : self.allow_edit(),
+			plugins     : self.plugins(),
+			panes       : panes,
+			datasources : datasources,
+			columns     : freeboardUI.getUserColumns()
+		};
+	}
+
+	this.deserialize = function(object, finishedCallback)
+	{
+		self.clearDashboard();
+
+		function finishLoad()
+		{
+			freeboardUI.setUserColumns(object.columns);
+
+			if(!_.isUndefined(object.allow_edit))
+			{
+				self.allow_edit(object.allow_edit);
+			}
+			else
+			{
+				self.allow_edit(true);
+			}
+			self.version = object.version || 0;
+			self.header_image(object.header_image);
+
+			_.each(object.datasources, function(datasourceConfig)
+			{
+				var datasource = new DatasourceModel(self, datasourcePlugins);
+				datasource.deserialize(datasourceConfig);
+				self.addDatasource(datasource);
+			});
+
+			var sortedPanes = _.sortBy(object.panes, function(pane){
+				return freeboardUI.getPositionForScreenSize(pane).row;
+			});
+
+			_.each(sortedPanes, function(paneConfig)
+			{
+				var pane = new PaneModel(self, widgetPlugins);
+				pane.deserialize(paneConfig);
+				self.panes.push(pane);
+			});
+
+			if(self.allow_edit() && self.panes().length == 0)
+			{
+				self.setEditing(true);
+			}
+
+			if(_.isFunction(finishedCallback))
+			{
+				finishedCallback();
+			}
+
+			freeboardUI.processResize(true);
+		}
+
+		// This could have been self.plugins(object.plugins), but for some weird reason head.js was causing a function to be added to the list of plugins.
+		_.each(object.plugins, function(plugin)
+		{
+			self.addPluginSource(plugin);
+		});
+
+		// Load any plugins referenced in this definition
+		if(_.isArray(object.plugins) && object.plugins.length > 0)
+		{
+			head.js(object.plugins, function()
+			{
+				finishLoad();
+			});
+		}
+		else
+		{
+			finishLoad();
+		}
+	}
+
+	this.clearDashboard = function()
+	{
+		freeboardUI.removeAllPanes();
+
+		_.each(self.datasources(), function(datasource)
+		{
+			datasource.dispose();
+		});
+
+		_.each(self.panes(), function(pane)
+		{
+			pane.dispose();
+		});
+
+		self.plugins.removeAll();
+		self.datasources.removeAll();
+		self.panes.removeAll();
+	}
+
+	this.loadDashboard = function(dashboardData, callback)
+	{
+		freeboardUI.showLoadingIndicator(true);
+		self.deserialize(dashboardData, function()
+		{
+			freeboardUI.showLoadingIndicator(false);
+
+			if(_.isFunction(callback))
+			{
+				callback();
+			}
+
+        freeboard.emit("dashboard_loaded");
+		});
+	}
+
+	this.loadDashboardFromLocalFile = function()
+	{
+		// Check for the various File API support.
+		if(window.File && window.FileReader && window.FileList && window.Blob)
+		{
+			var input = document.createElement('input');
+			input.type = "file";
+			$(input).on("change", function(event)
+			{
+				var files = event.target.files;
+
+				if(files && files.length > 0)
+				{
+					var file = files[0];
+					var reader = new FileReader();
+
+					reader.addEventListener("load", function(fileReaderEvent)
+					{
+
+						var textFile = fileReaderEvent.target;
+						var jsonObject = JSON.parse(textFile.result);
+
+
+						self.loadDashboard(jsonObject);
+						self.setEditing(false);
+					});
+
+					reader.readAsText(file);
+				}
+
+			});
+			$(input).trigger("click");
+		}
+		else
+		{
+			alert('Unable to load a file in this browser.');
+		}
+	}
+
+	this.saveDashboardClicked = function(){
+		var target = $(event.currentTarget);
+		var siblingsShown = target.data('siblings-shown') || false;
+		if(!siblingsShown){
+			$(event.currentTarget).siblings('label').fadeIn('slow');
+		}else{
+			$(event.currentTarget).siblings('label').fadeOut('slow');
+		}
+		target.data('siblings-shown', !siblingsShown);
+	}
+
+	this.saveDashboard = function(_thisref, event)
+	{
+		var pretty = $(event.currentTarget).data('pretty');
+		var contentType = 'application/octet-stream';
+		var a = document.createElement('a');
+		if(pretty){
+			var blob = new Blob([JSON.stringify(self.serialize(), null, '\t')], {'type': contentType});
+		}else{
+			var blob = new Blob([JSON.stringify(self.serialize())], {'type': contentType});
+		}
+		document.body.appendChild(a);
+		a.href = window.URL.createObjectURL(blob);
+		a.download = "dashboard.json";
+		a.target="_self";
+		a.click();
+	}
+
+	this.addDatasource = function(datasource)
+	{
+		self.datasources.push(datasource);
+	}
+
+	this.deleteDatasource = function(datasource)
+	{
+		delete self.datasourceData[datasource.name()];
+		datasource.dispose();
+		self.datasources.remove(datasource);
+	}
+
+	this.createPane = function()
+	{
+		var newPane = new PaneModel(self, widgetPlugins);
+		self.addPane(newPane);
+	}
+
+	this.addGridColumnLeft = function()
+	{
+		freeboardUI.addGridColumnLeft();
+	}
+
+	this.addGridColumnRight = function()
+	{
+		freeboardUI.addGridColumnRight();
+	}
+
+	this.subGridColumnLeft = function()
+	{
+		freeboardUI.subGridColumnLeft();
+	}
+
+	this.subGridColumnRight = function()
+	{
+		freeboardUI.subGridColumnRight();
+	}
+
+	this.addPane = function(pane)
+	{
+		self.panes.push(pane);
+	}
+
+	this.deletePane = function(pane)
+	{
+		pane.dispose();
+		self.panes.remove(pane);
+	}
+
+	this.deleteWidget = function(widget)
+	{
+		ko.utils.arrayForEach(self.panes(), function(pane)
+		{
+			pane.widgets.remove(widget);
+		});
+
+		widget.dispose();
+	}
+
+	this.setEditing = function(editing, animate)
+	{
+		// Don't allow editing if it's not allowed
+		if(!self.allow_edit() && editing)
+		{
+			return;
+		}
+
+		self.isEditing(editing);
+
+		if(_.isUndefined(animate))
+		{
+			animate = true;
+		}
+
+		var animateLength = (animate) ? 250 : 0;
+		var barHeight = $("#admin-bar").outerHeight();
+
+		if(!editing)
+		{
+			$("#toggle-header-icon").addClass("icon-wrench").removeClass("icon-chevron-up");
+			$(".gridster .gs_w").css({cursor: "default"});
+			$("#main-header").animate({"top": "-" + barHeight + "px"}, animateLength);
+			$("#board-content").animate({"top": "20"}, animateLength);
+			$("#main-header").data().shown = false;
+			$(".sub-section").unbind();
+			freeboardUI.disableGrid();
+		}
+		else
+		{
+			$("#toggle-header-icon").addClass("icon-chevron-up").removeClass("icon-wrench");
+			$(".gridster .gs_w").css({cursor: "pointer"});
+			$("#main-header").animate({"top": "0px"}, animateLength);
+			$("#board-content").animate({"top": (barHeight + 20) + "px"}, animateLength);
+			$("#main-header").data().shown = true;
+			freeboardUI.attachWidgetEditIcons($(".sub-section"));
+			freeboardUI.enableGrid();
+		}
+
+		freeboardUI.showPaneEditIcons(editing, animate);
+	}
+
+	this.toggleEditing = function()
+	{
+		var editing = !self.isEditing();
+		self.setEditing(editing);
+	}
+}
+
+function FreeboardUI()
+{
+	var PANE_MARGIN = 10;
+	var PANE_WIDTH = 300;
+	var MIN_COLUMNS = 3;
+	var COLUMN_WIDTH = PANE_MARGIN + PANE_WIDTH + PANE_MARGIN;
+
+	var userColumns = MIN_COLUMNS;
+
+	var loadingIndicator = $('<div class="wrapperloading"><div class="loading up" ></div><div class="loading down"></div></div>');
+	var grid;
+
+	function processResize(layoutWidgets)
+	{
+		var maxDisplayableColumns = getMaxDisplayableColumnCount();
+		var repositionFunction = function(){};
+		if(layoutWidgets)
+		{
+			repositionFunction = function(index)
+			{
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var newPosition = getPositionForScreenSize(paneModel);
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(),
+					maxDisplayableColumns, grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+
+				paneModel.processSizeChange();
+			}
+		}
+
+		updateGridWidth(Math.min(maxDisplayableColumns, userColumns));
+
+		repositionGrid(repositionFunction);
+		updateGridColumnControls();
+	}
+
+	function addGridColumn(shift)
+	{
+		var num_cols = grid.cols + 1;
+		if(updateGridWidth(num_cols))
+		{
+			repositionGrid(function() {
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var prevColumnIndex = grid.cols > 1 ? grid.cols - 1 : 1;
+				var prevCol = paneModel.col[prevColumnIndex];
+				var prevRow = paneModel.row[prevColumnIndex];
+				var newPosition;
+				if(shift)
+				{
+					leftPreviewCol = true;
+					var newCol = prevCol < grid.cols ? prevCol + 1 : grid.cols;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				else
+				{
+					rightPreviewCol = true;
+					newPosition = {row: prevRow, col: prevCol};
+				}
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(), grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+			});
+		}
+		updateGridColumnControls();
+		userColumns = grid.cols;
+	}
+
+	function subtractGridColumn(shift)
+	{
+		var num_cols = grid.cols - 1;
+		if(updateGridWidth(num_cols))
+		{
+			repositionGrid(function() {
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var prevColumnIndex = grid.cols + 1;
+				var prevCol = paneModel.col[prevColumnIndex];
+				var prevRow = paneModel.row[prevColumnIndex];
+				var newPosition;
+				if(shift)
+				{
+					var newCol = prevCol > 1 ? prevCol - 1 : 1;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				else
+				{
+					var newCol = prevCol <= grid.cols ? prevCol : grid.cols;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(), grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+			});
+		}
+		updateGridColumnControls();
+		userColumns = grid.cols;
+	}
+
+	function updateGridColumnControls()
+	{
+		var col_controls = $(".column-tool");
+		var available_width = $("#board-content").width();
+		var max_columns = Math.floor(available_width / COLUMN_WIDTH);
+
+		if(grid.cols <= MIN_COLUMNS)
+		{
+			col_controls.addClass("min");
+		}
+		else
+		{
+			col_controls.removeClass("min");
+		}
+
+		if(grid.cols >= max_columns)
+		{
+			col_controls.addClass("max");
+		}
+		else
+		{
+			col_controls.removeClass("max");
+		}
+	}
+
+	function getMaxDisplayableColumnCount()
+	{
+		var available_width = $("#board-content").width();
+		return Math.floor(available_width / COLUMN_WIDTH);
+	}
+
+	function updateGridWidth(newCols)
+	{
+		if(newCols === undefined || newCols < MIN_COLUMNS)
+		{
+			newCols = MIN_COLUMNS;
+		}
+
+		var max_columns = getMaxDisplayableColumnCount();
+		if(newCols > max_columns)
+		{
+			newCols = max_columns;
+		}
+
+		// +newCols to account for scaling on zoomed browsers
+		var new_width = (COLUMN_WIDTH * newCols) + newCols;
+		$(".responsive-column-width").css("max-width", new_width);
+
+		if(newCols === grid.cols)
+		{
+			return false; 
+		}
+		else
+		{
+			return true;
+		}
+	}
+
+	function repositionGrid(repositionFunction)
+	{
+		var rootElement = grid.$el;
+
+		rootElement.find("> li").unbind().removeData();
+		$(".responsive-column-width").css("width", "");
+		grid.generate_grid_and_stylesheet();
+
+		rootElement.find("> li").each(repositionFunction);
+
+		grid.init();
+		$(".responsive-column-width").css("width", grid.cols * PANE_WIDTH + (grid.cols * PANE_MARGIN * 2));
+	}
+
+	function getUserColumns()
+	{
+		return userColumns;
+	}
+
+	function setUserColumns(numCols)
+	{
+		userColumns = Math.max(MIN_COLUMNS, numCols);
+	}
+
+	ko.bindingHandlers.grid = {
+		init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			// Initialize our grid
+			grid = $(element).gridster({
+				widget_margins        : [PANE_MARGIN, PANE_MARGIN],
+				widget_base_dimensions: [PANE_WIDTH, 10],
+				resize: {
+					enabled : false,
+					axes : "x"
+				}
+			}).data("gridster");
+
+			processResize(false)
+
+			grid.disable();
+		}
+	}
+
+	function addPane(element, viewModel, isEditing)
+	{
+		var position = getPositionForScreenSize(viewModel);
+		var col = position.col;
+		var row = position.row;
+		var width = Number(viewModel.width());
+		var height = Number(viewModel.getCalculatedHeight());
+
+		grid.add_widget(element, width, height, col, row);
+
+		if(isEditing)
+		{
+			showPaneEditIcons(true);
+		}
+
+		updatePositionForScreenSize(viewModel, row, col);
+
+		$(element).attrchange({
+			trackValues: true,
+			callback   : function(event)
+			{
+				if(event.attributeName == "data-row")
+				{
+                    updatePositionForScreenSize(viewModel, Number(event.newValue), undefined);
+				}
+				else if(event.attributeName == "data-col")
+				{
+                    updatePositionForScreenSize(viewModel, undefined, Number(event.newValue));
+				}
+			}
+		});
+	}
+
+	function updatePane(element, viewModel)
+	{
+		// If widget has been added or removed
+		var calculatedHeight = viewModel.getCalculatedHeight();
+
+		var elementHeight = Number($(element).attr("data-sizey"));
+		var elementWidth = Number($(element).attr("data-sizex"));
+
+		if(calculatedHeight != elementHeight || viewModel.col_width() !=  elementWidth)
+		{
+			grid.resize_widget($(element), viewModel.col_width(), calculatedHeight, function(){
+				grid.set_dom_grid_height();
+			});
+		}
+	}
+
+	function updatePositionForScreenSize(paneModel, row, col)
+	{
+		var displayCols = grid.cols;
+
+		if(!_.isUndefined(row)) paneModel.row[displayCols] = row;
+		if(!_.isUndefined(col)) paneModel.col[displayCols] = col;
+	}
+
+	function showLoadingIndicator(show)
+	{
+		if(show)
+		{
+			loadingIndicator.fadeOut(0).appendTo("body").fadeIn(500);
+		}
+		else
+		{
+	    		loadingIndicator.fadeOut(500).remove();
+		}
+	}
+
+	function showPaneEditIcons(show, animate)
+	{
+		if(_.isUndefined(animate))
+		{
+			animate = true;
+		}
+
+		var animateLength = (animate) ? 250 : 0;
+
+		if(show)
+		{
+			$(".pane-tools").fadeIn(animateLength);//.css("display", "block").animate({opacity: 1.0}, animateLength);
+			$("#column-tools").fadeIn(animateLength);
+		}
+		else
+		{
+			$(".pane-tools").fadeOut(animateLength);//.animate({opacity: 0.0}, animateLength).css("display", "none");//, function()
+			$("#column-tools").fadeOut(animateLength);
+		}
+	}
+
+	function attachWidgetEditIcons(element)
+	{
+		$(element).hover(function()
+		{
+			showWidgetEditIcons(this, true);
+		}, function()
+		{
+			showWidgetEditIcons(this, false);
+		});
+	}
+
+	function showWidgetEditIcons(element, show)
+	{
+		if(show)
+		{
+			$(element).find(".sub-section-tools").fadeIn(250);
+		}
+		else
+		{
+			$(element).find(".sub-section-tools").fadeOut(250);
+		}
+	}
+
+	function getPositionForScreenSize(paneModel)
+	{
+		var cols = grid.cols;
+
+		if(_.isNumber(paneModel.row) && _.isNumber(paneModel.col)) // Support for legacy format
+		{
+			var obj = {};
+			obj[cols] = paneModel.row;
+			paneModel.row = obj;
+
+
+			obj = {};
+			obj[cols] = paneModel.col;
+			paneModel.col = obj;
+		}
+
+		var newColumnIndex = 1;
+		var columnDiff = 1000;
+
+		for(var columnIndex in paneModel.col)
+		{
+			if(columnIndex == cols)	 // If we already have a position defined for this number of columns, return that position
+			{
+				return {row: paneModel.row[columnIndex], col: paneModel.col[columnIndex]};
+			}
+			else if(paneModel.col[columnIndex] > cols) // If it's greater than our display columns, put it in the last column
+			{
+				newColumnIndex = cols;
+			}
+			else // If it's less than, pick whichever one is closest
+			{
+				var delta = cols - columnIndex;
+
+				if(delta < columnDiff)
+				{
+					newColumnIndex = columnIndex;
+					columnDiff = delta;
+				}
+			}
+		}
+
+		if(newColumnIndex in paneModel.col && newColumnIndex in paneModel.row)
+		{
+			return {row: paneModel.row[newColumnIndex], col: paneModel.col[newColumnIndex]};
+		}
+
+		return {row:1,col:newColumnIndex};
+	}
+
+
+	// Public Functions
+	return {
+		showLoadingIndicator : function(show)
+		{
+			showLoadingIndicator(show);
+		},
+		showPaneEditIcons : function(show, animate)
+		{
+			showPaneEditIcons(show, animate);
+		},
+		attachWidgetEditIcons : function(element)
+		{
+			attachWidgetEditIcons(element);
+		},
+		getPositionForScreenSize : function(paneModel)
+		{
+			return getPositionForScreenSize(paneModel);
+		},
+		processResize : function(layoutWidgets)
+		{
+			processResize(layoutWidgets);
+		},
+		disableGrid : function()
+		{
+			grid.disable();
+		},
+		enableGrid : function()
+		{
+			grid.enable();
+		},
+		addPane : function(element, viewModel, isEditing)
+		{
+			addPane(element, viewModel, isEditing);
+		},
+		updatePane : function(element, viewModel)
+		{
+			updatePane(element, viewModel);
+		},
+		removePane : function(element)
+		{
+			grid.remove_widget(element);
+		},
+		removeAllPanes : function()
+		{
+			grid.remove_all_widgets();
+		},
+		addGridColumnLeft : function()
+		{
+			addGridColumn(true);
+		},
+		addGridColumnRight : function()
+		{
+			addGridColumn(false);
+		},
+		subGridColumnLeft : function()
+		{
+			subtractGridColumn(true);
+		},
+		subGridColumnRight : function()
+		{
+			subtractGridColumn(false);
+		},
+		getUserColumns : function()
+		{
+			return getUserColumns();
+		},
+		setUserColumns : function(numCols)
+		{
+			setUserColumns(numCols);
+		}
+	}
+}
+
+JSEditor = function () {
+	var assetRoot = ""
+
+	function setAssetRoot(_assetRoot) {
+		assetRoot = _assetRoot;
+	}
+
+	function displayJSEditor(value, callback) {
+
+		var exampleText = "// Example: Convert temp from C to F and truncate to 2 decimal places.\n// return (datasources[\"MyDatasource\"].sensor.tempInF * 1.8 + 32).toFixed(2);";
+
+		// If value is empty, go ahead and suggest something
+		if (!value) {
+			value = exampleText;
+		}
+
+		var codeWindow = $('<div class="code-window"></div>');
+		var codeMirrorWrapper = $('<div class="code-mirror-wrapper"></div>');
+		var codeWindowFooter = $('<div class="code-window-footer"></div>');
+		var codeWindowHeader = $('<div class="code-window-header cm-s-ambiance">This javascript will be re-evaluated any time a datasource referenced here is updated, and the value you <code><span class="cm-keyword">return</span></code> will be displayed in the widget. You can assume this javascript is wrapped in a function of the form <code><span class="cm-keyword">function</span>(<span class="cm-def">datasources</span>)</code> where datasources is a collection of javascript objects (keyed by their name) corresponding to the most current data in a datasource.</div>');
+
+		codeWindow.append([codeWindowHeader, codeMirrorWrapper, codeWindowFooter]);
+
+		$("body").append(codeWindow);
+
+		var codeMirrorEditor = CodeMirror(codeMirrorWrapper.get(0),
+			{
+				value: value,
+				mode: "javascript",
+				theme: "ambiance",
+				indentUnit: 4,
+				lineNumbers: true,
+				matchBrackets: true,
+				autoCloseBrackets: true
+			}
+		);
+
+		var closeButton = $('<span id="dialog-cancel" class="text-button">Close</span>').click(function () {
+			if (callback) {
+				var newValue = codeMirrorEditor.getValue();
+
+				if (newValue === exampleText) {
+					newValue = "";
+				}
+
+				callback(newValue);
+				codeWindow.remove();
+			}
+		});
+
+		codeWindowFooter.append(closeButton);
+	}
+
+	// Public API
+	return {
+		displayJSEditor: function (value, callback) {
+			displayJSEditor(value, callback);
+		},
+		setAssetRoot: function (assetRoot) {
+			setAssetRoot(assetRoot)
+		}
+	}
+}
+
+function PaneModel(theFreeboardModel, widgetPlugins) {
+	var self = this;
+
+	this.title = ko.observable();
+	this.width = ko.observable(1);
+	this.row = {};
+	this.col = {};
+
+	this.col_width = ko.observable(1);
+	this.col_width.subscribe(function(newValue)
+	{
+		self.processSizeChange();
+	});
+
+	this.widgets = ko.observableArray();
+
+	this.addWidget = function (widget) {
+		this.widgets.push(widget);
+	}
+
+	this.widgetCanMoveUp = function (widget) {
+		return (self.widgets.indexOf(widget) >= 1);
+	}
+
+	this.widgetCanMoveDown = function (widget) {
+		var i = self.widgets.indexOf(widget);
+
+		return (i < self.widgets().length - 1);
+	}
+
+	this.moveWidgetUp = function (widget) {
+		if (self.widgetCanMoveUp(widget)) {
+			var i = self.widgets.indexOf(widget);
+			var array = self.widgets();
+			self.widgets.splice(i - 1, 2, array[i], array[i - 1]);
+		}
+	}
+
+	this.moveWidgetDown = function (widget) {
+		if (self.widgetCanMoveDown(widget)) {
+			var i = self.widgets.indexOf(widget);
+			var array = self.widgets();
+			self.widgets.splice(i, 2, array[i + 1], array[i]);
+		}
+	}
+
+	this.processSizeChange = function()
+	{
+		// Give the animation a moment to complete. Really hacky.
+		// TODO: Make less hacky. Also, doesn't work when screen resizes.
+		setTimeout(function(){
+			_.each(self.widgets(), function (widget) {
+				widget.processSizeChange();
+			});
+		}, 1000);
+	}
+
+	this.getCalculatedHeight = function () {
+		var sumHeights = _.reduce(self.widgets(), function (memo, widget) {
+			return memo + widget.height();
+		}, 0);
+
+		sumHeights *= 6;
+		sumHeights += 3;
+
+		sumHeights *= 10;
+
+		var rows = Math.ceil((sumHeights + 20) / 30);
+
+		return Math.max(4, rows);
+	}
+
+	this.serialize = function () {
+		var widgets = [];
+
+		_.each(self.widgets(), function (widget) {
+			widgets.push(widget.serialize());
+		});
+
+		return {
+			title: self.title(),
+			width: self.width(),
+			row: self.row,
+			col: self.col,
+			col_width: Number(self.col_width()),
+			widgets: widgets
+		};
+	}
+
+	this.deserialize = function (object) {
+		self.title(object.title);
+		self.width(object.width);
+
+		self.row = object.row;
+		self.col = object.col;
+		self.col_width(object.col_width || 1);
+
+		_.each(object.widgets, function (widgetConfig) {
+			var widget = new WidgetModel(theFreeboardModel, widgetPlugins);
+			widget.deserialize(widgetConfig);
+			self.widgets.push(widget);
+		});
+	}
+
+	this.dispose = function () {
+		_.each(self.widgets(), function (widget) {
+			widget.dispose();
+		});
+	}
+}
+
+PluginEditor = function(jsEditor, valueEditor)
+{
+	function _displayValidationError(settingName, errorMessage)
+	{
+		var errorElement = $('<div class="validation-error"></div>').html(errorMessage);
+		$("#setting-value-container-" + settingName).append(errorElement);
+	}
+
+	function _removeSettingsRows()
+	{
+		if($("#setting-row-instance-name").length)
+		{
+			$("#setting-row-instance-name").nextAll().remove();
+		}
+		else
+		{
+			$("#setting-row-plugin-types").nextAll().remove();
+		}
+	}
+
+	function _isNumerical(n)
+	{
+		return !isNaN(parseFloat(n)) && isFinite(n);
+	}
+
+	function _appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue, includeRemove)
+	{
+		var input = $('<textarea></textarea>');
+
+		if(settingDef.multi_input) {
+			input.change(function() {
+				var arrayInput = [];
+				$(valueCell).find('textarea').each(function() {
+					var thisVal = $(this).val();
+					if(thisVal) {
+						arrayInput = arrayInput.concat(thisVal);
+					}
+				});
+				newSettings.settings[settingDef.name] = arrayInput;
+			});
+		} else {
+			input.change(function() {
+				newSettings.settings[settingDef.name] = $(this).val();
+			});
+		}
+
+		if(currentValue) {
+			input.val(currentValue);
+		}
+
+		valueEditor.createValueEditor(input);
+
+		var datasourceToolbox = $('<ul class="board-toolbar datasource-input-suffix"></ul>');
+		var wrapperDiv = $('<div class="calculated-setting-row"></div>');
+		wrapperDiv.append(input).append(datasourceToolbox);
+
+		var datasourceTool = $('<li><i class="icon-plus icon-white"></i><label>DATASOURCE</label></li>')
+			.mousedown(function(e) {
+				e.preventDefault();
+				$(input).val("").focus().insertAtCaret("datasources[\"").trigger("freeboard-eval");
+			});
+		datasourceToolbox.append(datasourceTool);
+
+		var jsEditorTool = $('<li><i class="icon-fullscreen icon-white"></i><label>.JS EDITOR</label></li>')
+			.mousedown(function(e) {
+				e.preventDefault();
+				jsEditor.displayJSEditor(input.val(), function(result) {
+					input.val(result);
+					input.change();
+				});
+			});
+		datasourceToolbox.append(jsEditorTool);
+
+		if(includeRemove) {
+			var removeButton = $('<li class="remove-setting-row"><i class="icon-minus icon-white"></i><label></label></li>')
+				.mousedown(function(e) {
+					e.preventDefault();
+					wrapperDiv.remove();
+					$(valueCell).find('textarea:first').change();
+				});
+			datasourceToolbox.prepend(removeButton);
+		}
+
+		$(valueCell).append(wrapperDiv);
+	}
+
+	function createPluginEditor(title, pluginTypes, currentTypeName, currentSettingsValues, settingsSavedCallback)
+	{
+		var newSettings = {
+			type    : currentTypeName,
+			settings: {}
+		};
+
+		function createSettingRow(name, displayName)
+		{
+			var tr = $('<div id="setting-row-' + name + '" class="form-row"></div>').appendTo(form);
+
+			tr.append('<div class="form-label"><label class="control-label">' + displayName + '</label></div>');
+			return $('<div id="setting-value-container-' + name + '" class="form-value"></div>').appendTo(tr);
+		}
+
+		var selectedType;
+		var form = $('<div></div>');
+
+		var pluginDescriptionElement = $('<div id="plugin-description"></div>').hide();
+		form.append(pluginDescriptionElement);
+
+		function createSettingsFromDefinition(settingsDefs, typeaheadSource, typeaheadDataSegment)
+		{
+			_.each(settingsDefs, function(settingDef)
+			{
+				// Set a default value if one doesn't exist
+				if(!_.isUndefined(settingDef.default_value) && _.isUndefined(currentSettingsValues[settingDef.name]))
+				{
+					currentSettingsValues[settingDef.name] = settingDef.default_value;
+				}
+
+				var displayName = settingDef.name;
+
+				if(!_.isUndefined(settingDef.display_name))
+				{
+					displayName = settingDef.display_name;
+				}
+
+				var valueCell = createSettingRow(settingDef.name, displayName);
+
+				switch (settingDef.type)
+				{
+					case "array":
+					{
+						var subTableDiv = $('<div class="form-table-value-subtable"></div>').appendTo(valueCell);
+
+						var subTable = $('<table class="table table-condensed sub-table"></table>').appendTo(subTableDiv);
+						var subTableHead = $("<thead></thead>").hide().appendTo(subTable);
+						var subTableHeadRow = $("<tr></tr>").appendTo(subTableHead);
+						var subTableBody = $('<tbody></tbody>').appendTo(subTable);
+
+						var currentSubSettingValues = [];
+
+						// Create our headers
+						_.each(settingDef.settings, function(subSettingDef)
+						{
+							var subsettingDisplayName = subSettingDef.name;
+
+							if(!_.isUndefined(subSettingDef.display_name))
+							{
+								subsettingDisplayName = subSettingDef.display_name;
+							}
+
+							$('<th>' + subsettingDisplayName + '</th>').appendTo(subTableHeadRow);
+						});
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							currentSubSettingValues = currentSettingsValues[settingDef.name];
+						}
+
+						function processHeaderVisibility()
+						{
+							if(newSettings.settings[settingDef.name].length > 0)
+							{
+								subTableHead.show();
+							}
+							else
+							{
+								subTableHead.hide();
+							}
+						}
+
+						function createSubsettingRow(subsettingValue)
+						{
+							var subsettingRow = $('<tr></tr>').appendTo(subTableBody);
+
+							var newSetting = {};
+
+							if(!_.isArray(newSettings.settings[settingDef.name]))
+							{
+								newSettings.settings[settingDef.name] = [];
+							}
+
+							newSettings.settings[settingDef.name].push(newSetting);
+
+							_.each(settingDef.settings, function(subSettingDef)
+							{
+								var subsettingCol = $('<td></td>').appendTo(subsettingRow);
+								var subsettingValueString = "";
+
+								if(!_.isUndefined(subsettingValue[subSettingDef.name]))
+								{
+									subsettingValueString = subsettingValue[subSettingDef.name];
+								}
+
+								newSetting[subSettingDef.name] = subsettingValueString;
+
+								$('<input class="table-row-value" type="text">').appendTo(subsettingCol).val(subsettingValueString).change(function()
+								{
+									newSetting[subSettingDef.name] = $(this).val();
+								});
+							});
+
+							subsettingRow.append($('<td class="table-row-operation"></td>').append($('<ul class="board-toolbar"></ul>').append($('<li></li>').append($('<i class="icon-trash icon-white"></i>').click(function()
+							{
+								var subSettingIndex = newSettings.settings[settingDef.name].indexOf(newSetting);
+
+								if(subSettingIndex != -1)
+								{
+									newSettings.settings[settingDef.name].splice(subSettingIndex, 1);
+									subsettingRow.remove();
+									processHeaderVisibility();
+								}
+							})))));
+
+							subTableDiv.scrollTop(subTableDiv[0].scrollHeight);
+
+							processHeaderVisibility();
+						}
+
+						$('<div class="table-operation text-button">ADD</div>').appendTo(valueCell).click(function()
+						{
+							var newSubsettingValue = {};
+
+							_.each(settingDef.settings, function(subSettingDef)
+							{
+								newSubsettingValue[subSettingDef.name] = "";
+							});
+
+							createSubsettingRow(newSubsettingValue);
+						});
+
+						// Create our rows
+						_.each(currentSubSettingValues, function(currentSubSettingValue, subSettingIndex)
+						{
+							createSubsettingRow(currentSubSettingValue);
+						});
+
+						break;
+					}
+					case "boolean":
+					{
+						newSettings.settings[settingDef.name] = currentSettingsValues[settingDef.name];
+
+						var onOffSwitch = $('<div class="onoffswitch"><label class="onoffswitch-label" for="' + settingDef.name + '-onoff"><div class="onoffswitch-inner"><span class="on">YES</span><span class="off">NO</span></div><div class="onoffswitch-switch"></div></label></div>').appendTo(valueCell);
+
+						var input = $('<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="' + settingDef.name + '-onoff">').prependTo(onOffSwitch).change(function()
+						{
+							newSettings.settings[settingDef.name] = this.checked;
+						});
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							input.prop("checked", currentSettingsValues[settingDef.name]);
+						}
+
+						break;
+					}
+					case "option":
+					{
+						var defaultValue = currentSettingsValues[settingDef.name];
+
+						var input = $('<select></select>').appendTo($('<div class="styled-select"></div>').appendTo(valueCell)).change(function()
+						{
+							newSettings.settings[settingDef.name] = $(this).val();
+						});
+
+						_.each(settingDef.options, function(option)
+						{
+
+							var optionName;
+							var optionValue;
+
+							if(_.isObject(option))
+							{
+								optionName = option.name;
+								optionValue = option.value;
+							}
+							else
+							{
+								optionName = option;
+							}
+
+							if(_.isUndefined(optionValue))
+							{
+								optionValue = optionName;
+							}
+
+							if(_.isUndefined(defaultValue))
+							{
+								defaultValue = optionValue;
+							}
+
+							$("<option></option>").text(optionName).attr("value", optionValue).appendTo(input);
+						});
+
+						newSettings.settings[settingDef.name] = defaultValue;
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							input.val(currentSettingsValues[settingDef.name]);
+						}
+
+						break;
+					}
+					default:
+					{
+						newSettings.settings[settingDef.name] = currentSettingsValues[settingDef.name];
+
+						if(settingDef.type == "calculated")
+						{
+							if(settingDef.name in currentSettingsValues) {
+								var currentValue = currentSettingsValues[settingDef.name];
+								if(settingDef.multi_input && _.isArray(currentValue)) {
+									var includeRemove = false;
+									for(var i=0; i<currentValue.length; i++) {
+										_appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue[i], includeRemove);
+										includeRemove = true;
+									}
+								} else {
+									_appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue, false);
+								}
+							} else {
+								_appendCalculatedSettingRow(valueCell, newSettings, settingDef, null, false);
+							}
+
+							if(settingDef.multi_input) {
+								var inputAdder = $('<ul class="board-toolbar"><li class="add-setting-row"><i class="icon-plus icon-white"></i><label>ADD</label></li></ul>')
+									.mousedown(function(e) {
+										e.preventDefault();
+										_appendCalculatedSettingRow(valueCell, newSettings, settingDef, null, true);
+									});
+								$(valueCell).siblings('.form-label').append(inputAdder);
+							}
+						}
+						else
+						{
+							var input = $('<input type="text">').appendTo(valueCell).change(function()
+							{
+								if(settingDef.type == "number")
+								{
+									newSettings.settings[settingDef.name] = Number($(this).val());
+								}
+								else
+								{
+									newSettings.settings[settingDef.name] = $(this).val();
+								}
+							});
+
+							if(settingDef.name in currentSettingsValues)
+							{
+								input.val(currentSettingsValues[settingDef.name]);
+							}
+
+							if(typeaheadSource && settingDef.typeahead_data_field){
+								input.addClass('typeahead_data_field-' + settingDef.typeahead_data_field);
+							}
+
+							if(typeaheadSource && settingDef.typeahead_field){
+								var typeaheadValues = [];
+
+								input.keyup(function(event){
+									if(event.which >= 65 && event.which <= 91) {
+										input.trigger('change');
+									}
+								});
+
+								$(input).autocomplete({
+									source: typeaheadValues,
+									select: function(event, ui){
+										input.val(ui.item.value);
+										input.trigger('change');
+									}
+								});
+
+								input.change(function(event){
+									var value = input.val();
+									var source = _.template(typeaheadSource)({input: value});
+									$.get(source, function(data){
+										if(typeaheadDataSegment){
+											data = data[typeaheadDataSegment];
+										}
+										data  = _.select(data, function(elm){
+											return elm[settingDef.typeahead_field][0] == value[0];
+										});
+
+										typeaheadValues = _.map(data, function(elm){
+											return elm[settingDef.typeahead_field];
+										});
+										$(input).autocomplete("option", "source", typeaheadValues);
+
+										if(data.length == 1){
+											data = data[0];
+											//we found the one. let's use it to populate the other info
+											for(var field in data){
+												if(data.hasOwnProperty(field)){
+													var otherInput = $(_.template('input.typeahead_data_field-<%= field %>')({field: field}));
+													if(otherInput){
+														otherInput.val(data[field]);
+														if(otherInput.val() != input.val()) {
+															otherInput.trigger('change');
+														}
+													}
+												}
+											}
+										}
+									});
+								});
+							}
+						}
+
+						break;
+					}
+				}
+
+				if(!_.isUndefined(settingDef.suffix))
+				{
+					valueCell.append($('<div class="input-suffix">' + settingDef.suffix + '</div>'));
+				}
+
+				if(!_.isUndefined(settingDef.description))
+				{
+					valueCell.append($('<div class="setting-description">' + settingDef.description + '</div>'));
+				}
+			});
+		}
+
+
+		new DialogBox(form, title, "Save", "Cancel", function()
+		{
+			$(".validation-error").remove();
+
+			// Loop through each setting and validate it
+			for(var index = 0; index < selectedType.settings.length; index++)
+			{
+				var settingDef = selectedType.settings[index];
+
+				if(settingDef.required && (_.isUndefined(newSettings.settings[settingDef.name]) || newSettings.settings[settingDef.name] == ""))
+				{
+					_displayValidationError(settingDef.name, "This is required.");
+					return true;
+				}
+				else if(settingDef.type == "integer" && (newSettings.settings[settingDef.name] % 1 !== 0))
+				{
+					_displayValidationError(settingDef.name, "Must be a whole number.");
+					return true;
+				}
+				else if(settingDef.type == "number" && !_isNumerical(newSettings.settings[settingDef.name]))
+				{
+					_displayValidationError(settingDef.name, "Must be a number.");
+					return true;
+				}
+			}
+
+			if(_.isFunction(settingsSavedCallback))
+			{
+				settingsSavedCallback(newSettings);
+			}
+		});
+
+		// Create our body
+		var pluginTypeNames = _.keys(pluginTypes);
+		var typeSelect;
+
+		if(pluginTypeNames.length > 1)
+		{
+			var typeRow = createSettingRow("plugin-types", "Type");
+			typeSelect = $('<select></select>').appendTo($('<div class="styled-select"></div>').appendTo(typeRow));
+
+			typeSelect.append($("<option>Select a type...</option>").attr("value", "undefined"));
+
+			_.each(pluginTypes, function(pluginType)
+			{
+				typeSelect.append($("<option></option>").text(pluginType.display_name).attr("value", pluginType.type_name));
+			});
+
+			typeSelect.change(function()
+			{
+				newSettings.type = $(this).val();
+				newSettings.settings = {};
+
+				// Remove all the previous settings
+				_removeSettingsRows();
+
+				selectedType = pluginTypes[typeSelect.val()];
+
+				if(_.isUndefined(selectedType))
+				{
+					$("#setting-row-instance-name").hide();
+					$("#dialog-ok").hide();
+				}
+				else
+				{
+					$("#setting-row-instance-name").show();
+
+					if(selectedType.description && selectedType.description.length > 0)
+					{
+						pluginDescriptionElement.html(selectedType.description).show();
+					}
+					else
+					{
+						pluginDescriptionElement.hide();
+					}
+
+					$("#dialog-ok").show();
+					createSettingsFromDefinition(selectedType.settings, selectedType.typeahead_source, selectedType.typeahead_data_segment);
+				}
+			});
+		}
+		else if(pluginTypeNames.length == 1)
+		{
+			selectedType = pluginTypes[pluginTypeNames[0]];
+			newSettings.type = selectedType.type_name;
+			newSettings.settings = {};
+			createSettingsFromDefinition(selectedType.settings);
+		}
+
+		if(typeSelect)
+		{
+			if(_.isUndefined(currentTypeName))
+			{
+				$("#setting-row-instance-name").hide();
+				$("#dialog-ok").hide();
+			}
+			else
+			{
+				$("#dialog-ok").show();
+				typeSelect.val(currentTypeName).trigger("change");
+			}
+		}
+	}
+
+	// Public API
+	return {
+		createPluginEditor : function(
+			title,
+			pluginTypes,
+			currentInstanceName,
+			currentTypeName,
+			currentSettingsValues,
+			settingsSavedCallback)
+		{
+			createPluginEditor(title, pluginTypes, currentInstanceName, currentTypeName, currentSettingsValues, settingsSavedCallback);
+		}
+	}
+}
+
+ValueEditor = function(theFreeboardModel)
+{
+	var _veDatasourceRegex = new RegExp(".*datasources\\[\"([^\"]*)(\"\\])?(.*)$");
+
+	var dropdown = null;
+	var selectedOptionIndex = 0;
+	var _autocompleteOptions = [];
+	var currentValue = null;
+
+	var EXPECTED_TYPE = {
+		ANY : "any",
+		ARRAY : "array",
+		OBJECT : "object",
+		STRING : "string",
+		NUMBER : "number",
+		BOOLEAN : "boolean"
+	};
+
+	function _isPotentialTypeMatch(value, expectsType)
+	{
+		if(_.isArray(value) || _.isObject(value))
+		{
+			return true;
+		}
+		return _isTypeMatch(value, expectsType);
+	}
+
+	function _isTypeMatch(value, expectsType) {
+		switch(expectsType)
+		{
+		case EXPECTED_TYPE.ANY: return true;
+		case EXPECTED_TYPE.ARRAY: return _.isArray(value);
+		case EXPECTED_TYPE.OBJECT: return _.isObject(value);
+		case EXPECTED_TYPE.STRING: return _.isString(value);
+		case EXPECTED_TYPE.NUMBER: return _.isNumber(value);
+		case EXPECTED_TYPE.BOOLEAN: return _.isBoolean(value);
+		}
+	}
+
+	function _checkCurrentValueType(element, expectsType) {
+		$(element).parent().find(".validation-error").remove();
+		if(!_isTypeMatch(currentValue, expectsType)) {
+			$(element).parent().append("<div class='validation-error'>" +
+				"This field expects an expression that evaluates to type " +
+				expectsType + ".</div>");
+		}
+	}
+
+	function _resizeValueEditor(element)
+	{
+		var lineBreakCount = ($(element).val().match(/\n/g) || []).length;
+
+		var newHeight = Math.min(200, 20 * (lineBreakCount + 1));
+
+		$(element).css({height: newHeight + "px"});
+	}
+
+	function _autocompleteFromDatasource(inputString, datasources, expectsType)
+	{
+		var match = _veDatasourceRegex.exec(inputString);
+
+		var options = [];
+
+		if(match)
+		{
+			// Editor value is: datasources["; List all datasources
+			if(match[1] == "")
+			{
+				_.each(datasources, function(datasource)
+				{
+					options.push({value: datasource.name(), entity: undefined,
+						precede_char: "", follow_char: "\"]"});
+				});
+			}
+			// Editor value is a partial match for a datasource; list matching datasources
+			else if(match[1] != "" && _.isUndefined(match[2]))
+			{
+				var replacementString = match[1];
+
+				_.each(datasources, function(datasource)
+				{
+					var dsName = datasource.name();
+
+					if(dsName != replacementString && dsName.indexOf(replacementString) == 0)
+					{
+						options.push({value: dsName, entity: undefined,
+							precede_char: "", follow_char: "\"]"});
+					}
+				});
+			}
+			// Editor value matches a datasources; parse JSON in order to populate list
+			else
+			{
+				// We already have a datasource selected; find it
+				var datasource = _.find(datasources, function(datasource)
+				{
+					return (datasource.name() === match[1]);
+				});
+
+				if(!_.isUndefined(datasource))
+				{
+					var dataPath = "data";
+					var remainder = "";
+
+					// Parse the partial JSON selectors
+					if(!_.isUndefined(match[2]))
+					{
+						// Strip any incomplete field values, and store the remainder
+						var remainderIndex = match[3].lastIndexOf("]") + 1;
+						dataPath = dataPath + match[3].substring(0, remainderIndex);
+						remainder = match[3].substring(remainderIndex, match[3].length);
+						remainder = remainder.replace(/^[\[\"]*/, "");
+						remainder = remainder.replace(/[\"\]]*$/, "");
+					}
+
+					// Get the data for the last complete JSON field
+					var dataValue = datasource.getDataRepresentation(dataPath);
+					currentValue = dataValue;
+
+					// For arrays, list out the indices
+					if(_.isArray(dataValue))
+					{
+						for(var index = 0; index < dataValue.length; index++)
+						{
+							if(index.toString().indexOf(remainder) == 0)
+							{
+								var value = dataValue[index];
+								if(_isPotentialTypeMatch(value, expectsType))
+								{
+									options.push({value: index, entity: value,
+										precede_char: "[", follow_char: "]",
+										preview: value.toString()});
+								}
+							}
+						}
+					}
+					// For objects, list out the keys
+					else if(_.isObject(dataValue))
+					{
+						_.each(dataValue, function(value, name)
+						{
+							if(name.indexOf(remainder) == 0)
+							{
+								if(_isPotentialTypeMatch(value, expectsType))
+								{
+									options.push({value: name, entity: value,
+										precede_char: "[\"", follow_char: "\"]"});
+								}
+							}
+						});
+					}
+					// For everything else, do nothing (no further selection possible)
+					else
+					{
+						// no-op
+					}
+				}
+			}
+		}
+		_autocompleteOptions = options;
+	}
+
+	function _renderAutocompleteDropdown(element, expectsType)
+	{
+		var inputString = $(element).val().substring(0, $(element).getCaretPosition());
+
+		// Weird issue where the textarea box was putting in ASCII (nbsp) for spaces.
+		inputString = inputString.replace(String.fromCharCode(160), " ");
+
+		_autocompleteFromDatasource(inputString, theFreeboardModel.datasources(), expectsType);
+
+		if(_autocompleteOptions.length > 0)
+		{
+			if(!dropdown)
+			{
+				dropdown = $('<ul id="value-selector" class="value-dropdown"></ul>')
+					.insertAfter(element)
+					.width($(element).outerWidth() - 2)
+					.css("left", $(element).position().left)
+					.css("top", $(element).position().top + $(element).outerHeight() - 1);
+			}
+
+			dropdown.empty();
+			dropdown.scrollTop(0);
+
+			var selected = true;
+			selectedOptionIndex = 0;
+
+			_.each(_autocompleteOptions, function(option, index)
+			{
+				var li = _renderAutocompleteDropdownOption(element, inputString, option, index);
+				if(selected)
+				{
+					$(li).addClass("selected");
+					selected = false;
+				}
+			});
+		}
+		else
+		{
+			_checkCurrentValueType(element, expectsType);
+			$(element).next("ul#value-selector").remove();
+			dropdown = null;
+			selectedOptionIndex = -1;
+		}
+	}
+
+	function _renderAutocompleteDropdownOption(element, inputString, option, currentIndex)
+	{
+		var optionLabel = option.value;
+		if(option.preview)
+		{
+			optionLabel = optionLabel + "<span class='preview'>" + option.preview + "</span>";
+		}
+		var li = $('<li>' + optionLabel + '</li>').appendTo(dropdown)
+			.mouseenter(function()
+			{
+				$(this).trigger("freeboard-select");
+			})
+			.mousedown(function(event)
+			{
+				$(this).trigger("freeboard-insertValue");
+				event.preventDefault();
+			})
+			.data("freeboard-optionIndex", currentIndex)
+			.data("freeboard-optionValue", option.value)
+			.bind("freeboard-insertValue", function()
+			{
+				var optionValue = option.value;
+				optionValue = option.precede_char + optionValue + option.follow_char;
+
+				var replacementIndex = inputString.lastIndexOf("]");
+				if(replacementIndex != -1)
+				{
+					$(element).replaceTextAt(replacementIndex+1, $(element).val().length,
+						optionValue);
+				}
+				else
+				{
+					$(element).insertAtCaret(optionValue);
+				}
+
+				currentValue = option.entity;
+				$(element).triggerHandler("mouseup");
+			})
+			.bind("freeboard-select", function()
+			{
+				$(this).parent().find("li.selected").removeClass("selected");
+				$(this).addClass("selected");
+				selectedOptionIndex = $(this).data("freeboard-optionIndex");
+			});
+		return li;
+	}
+
+	function createValueEditor(element, expectsType)
+	{
+		$(element).addClass("calculated-value-input")
+			.bind("keyup mouseup freeboard-eval", function(event) {
+				// Ignore arrow keys and enter keys
+				if(dropdown && event.type == "keyup"
+					&& (event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 13))
+				{
+					event.preventDefault();
+					return;
+				}
+				_renderAutocompleteDropdown(element, expectsType);
+			})
+			.focus(function()
+			{
+				$(element).css({"z-index" : 3001});
+				_resizeValueEditor(element);
+			})
+			.focusout(function()
+			{
+				_checkCurrentValueType(element, expectsType);
+				$(element).css({
+					"height": "",
+					"z-index" : 3000
+				});
+				$(element).next("ul#value-selector").remove();
+				dropdown = null;
+				selectedOptionIndex = -1;
+			})
+			.bind("keydown", function(event)
+			{
+
+				if(dropdown)
+				{
+					if(event.keyCode == 38 || event.keyCode == 40) // Handle Arrow keys
+					{
+						event.preventDefault();
+
+						var optionItems = $(dropdown).find("li");
+
+						if(event.keyCode == 38) // Up Arrow
+						{
+							selectedOptionIndex--;
+						}
+						else if(event.keyCode == 40) // Down Arrow
+						{
+							selectedOptionIndex++;
+						}
+
+						if(selectedOptionIndex < 0)
+						{
+							selectedOptionIndex = optionItems.size() - 1;
+						}
+						else if(selectedOptionIndex >= optionItems.size())
+						{
+							selectedOptionIndex = 0;
+						}
+
+						var optionElement = $(optionItems).eq(selectedOptionIndex);
+
+						optionElement.trigger("freeboard-select");
+						$(dropdown).scrollTop($(optionElement).position().top);
+					}
+					else if(event.keyCode == 13) // Handle enter key
+					{
+						event.preventDefault();
+
+						if(selectedOptionIndex != -1)
+						{
+							$(dropdown).find("li").eq(selectedOptionIndex)
+								.trigger("freeboard-insertValue");
+						}
+					}
+				}
+			});
+	}
+
+	// Public API
+	return {
+		createValueEditor : function(element, expectsType)
+		{
+			if(expectsType)
+			{
+				createValueEditor(element, expectsType);
+			}
+			else {
+				createValueEditor(element, EXPECTED_TYPE.ANY);
+			}
+		},
+		EXPECTED_TYPE : EXPECTED_TYPE
+	}
+}
+
+function WidgetModel(theFreeboardModel, widgetPlugins) {
+	function disposeWidgetInstance() {
+		if (!_.isUndefined(self.widgetInstance)) {
+			if (_.isFunction(self.widgetInstance.onDispose)) {
+				self.widgetInstance.onDispose();
+			}
+
+			self.widgetInstance = undefined;
+		}
+	}
+
+	var self = this;
+
+	this.datasourceRefreshNotifications = {};
+	this.calculatedSettingScripts = {};
+
+	this.title = ko.observable();
+	this.fillSize = ko.observable(false);
+
+	this.type = ko.observable();
+	this.type.subscribe(function (newValue) {
+		disposeWidgetInstance();
+
+		if ((newValue in widgetPlugins) && _.isFunction(widgetPlugins[newValue].newInstance)) {
+			var widgetType = widgetPlugins[newValue];
+
+			function finishLoad() {
+				widgetType.newInstance(self.settings(), function (widgetInstance) {
+
+					self.fillSize((widgetType.fill_size === true));
+					self.widgetInstance = widgetInstance;
+					self.shouldRender(true);
+					self._heightUpdate.valueHasMutated();
+
+				});
+			}
+
+			// Do we need to load any external scripts?
+			if (widgetType.external_scripts) {
+				head.js(widgetType.external_scripts.slice(0), finishLoad); // Need to clone the array because head.js adds some weird functions to it
+			}
+			else {
+				finishLoad();
+			}
+		}
+	});
+
+	this.settings = ko.observable({});
+	this.settings.subscribe(function (newValue) {
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onSettingsChanged)) {
+			self.widgetInstance.onSettingsChanged(newValue);
+		}
+
+		self.updateCalculatedSettings();
+		self._heightUpdate.valueHasMutated();
+	});
+
+	this.processDatasourceUpdate = function (datasourceName) {
+		var refreshSettingNames = self.datasourceRefreshNotifications[datasourceName];
+
+		if (_.isArray(refreshSettingNames)) {
+			_.each(refreshSettingNames, function (settingName) {
+				self.processCalculatedSetting(settingName);
+			});
+		}
+	}
+
+	this.callValueFunction = function (theFunction) {
+		return theFunction.call(undefined, theFreeboardModel.datasourceData);
+	}
+
+	this.processSizeChange = function () {
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onSizeChanged)) {
+			self.widgetInstance.onSizeChanged();
+		}
+	}
+
+	this.processCalculatedSetting = function (settingName) {
+		if (_.isFunction(self.calculatedSettingScripts[settingName])) {
+			var returnValue = undefined;
+
+			try {
+				returnValue = self.callValueFunction(self.calculatedSettingScripts[settingName]);
+			}
+			catch (e) {
+				var rawValue = self.settings()[settingName];
+
+				// If there is a reference error and the value just contains letters and numbers, then
+				if (e instanceof ReferenceError && (/^\w+$/).test(rawValue)) {
+					returnValue = rawValue;
+				}
+			}
+
+			if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onCalculatedValueChanged) && !_.isUndefined(returnValue)) {
+				try {
+					self.widgetInstance.onCalculatedValueChanged(settingName, returnValue);
+				}
+				catch (e) {
+					console.log(e.toString());
+				}
+			}
+		}
+	}
+
+	this.updateCalculatedSettings = function () {
+		self.datasourceRefreshNotifications = {};
+		self.calculatedSettingScripts = {};
+
+		if (_.isUndefined(self.type())) {
+			return;
+		}
+
+		// Check for any calculated settings
+		var settingsDefs = widgetPlugins[self.type()].settings;
+		var datasourceRegex = new RegExp("datasources.([\\w_-]+)|datasources\\[['\"]([^'\"]+)", "g");
+		var currentSettings = self.settings();
+
+		_.each(settingsDefs, function (settingDef) {
+			if (settingDef.type == "calculated") {
+				var script = currentSettings[settingDef.name];
+
+				if (!_.isUndefined(script)) {
+
+					if(_.isArray(script)) {
+						script = "[" + script.join(",") + "]";
+					}
+
+					// If there is no return, add one
+					if ((script.match(/;/g) || []).length <= 1 && script.indexOf("return") == -1) {
+						script = "return " + script;
+					}
+
+					var valueFunction;
+
+ 					try {
+						valueFunction = new Function("datasources", script);
+					}
+					catch (e) {
+						var literalText = currentSettings[settingDef.name].replace(/"/g, '\\"').replace(/[\r\n]/g, ' \\\n');
+
+						// If the value function cannot be created, then go ahead and treat it as literal text
+						valueFunction = new Function("datasources", "return \"" + literalText + "\";");
+					}
+
+					self.calculatedSettingScripts[settingDef.name] = valueFunction;
+					self.processCalculatedSetting(settingDef.name);
+
+					// Are there any datasources we need to be subscribed to?
+					var matches;
+
+					while (matches = datasourceRegex.exec(script)) {
+						var dsName = (matches[1] || matches[2]);
+						var refreshSettingNames = self.datasourceRefreshNotifications[dsName];
+
+						if (_.isUndefined(refreshSettingNames)) {
+							refreshSettingNames = [];
+							self.datasourceRefreshNotifications[dsName] = refreshSettingNames;
+						}
+
+						if(_.indexOf(refreshSettingNames, settingDef.name) == -1) // Only subscribe to this notification once.
+						{
+							refreshSettingNames.push(settingDef.name);
+						}
+					}
+				}
+			}
+		});
+	}
+
+	this._heightUpdate = ko.observable();
+	this.height = ko.computed({
+		read: function () {
+			self._heightUpdate();
+
+			if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.getHeight)) {
+				return self.widgetInstance.getHeight();
+			}
+
+			return 1;
+		}
+	});
+
+	this.shouldRender = ko.observable(false);
+	this.render = function (element) {
+		self.shouldRender(false);
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.render)) {
+			self.widgetInstance.render(element);
+			self.updateCalculatedSettings();
+		}
+	}
+
+	this.dispose = function () {
+
+	}
+
+	this.serialize = function () {
+		return {
+			title: self.title(),
+			type: self.type(),
+			settings: self.settings()
+		};
+	}
+
+	this.deserialize = function (object) {
+		self.title(object.title);
+		self.settings(object.settings);
+		self.type(object.type);
+	}
+}
+
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+// Jquery plugin to watch for attribute changes
+(function($)
+{
+	function isDOMAttrModifiedSupported()
+	{
+		var p = document.createElement('p');
+		var flag = false;
+
+		if(p.addEventListener)
+		{
+			p.addEventListener('DOMAttrModified', function()
+			{
+				flag = true
+			}, false);
+		}
+		else if(p.attachEvent)
+		{
+			p.attachEvent('onDOMAttrModified', function()
+			{
+				flag = true
+			});
+		}
+		else
+		{
+			return false;
+		}
+
+		p.setAttribute('id', 'target');
+
+		return flag;
+	}
+
+	function checkAttributes(chkAttr, e)
+	{
+		if(chkAttr)
+		{
+			var attributes = this.data('attr-old-value');
+
+			if(e.attributeName.indexOf('style') >= 0)
+			{
+				if(!attributes['style'])
+				{
+					attributes['style'] = {};
+				} //initialize
+				var keys = e.attributeName.split('.');
+				e.attributeName = keys[0];
+				e.oldValue = attributes['style'][keys[1]]; //old value
+				e.newValue = keys[1] + ':' + this.prop("style")[$.camelCase(keys[1])]; //new value
+				attributes['style'][keys[1]] = e.newValue;
+			}
+			else
+			{
+				e.oldValue = attributes[e.attributeName];
+				e.newValue = this.attr(e.attributeName);
+				attributes[e.attributeName] = e.newValue;
+			}
+
+			this.data('attr-old-value', attributes); //update the old value object
+		}
+	}
+
+	//initialize Mutation Observer
+	var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+
+	$.fn.attrchange = function(o)
+	{
+
+		var cfg = {
+			trackValues: false,
+			callback   : $.noop
+		};
+
+		//for backward compatibility
+		if(typeof o === "function")
+		{
+			cfg.callback = o;
+		}
+		else
+		{
+			$.extend(cfg, o);
+		}
+
+		if(cfg.trackValues)
+		{ //get attributes old value
+			$(this).each(function(i, el)
+			{
+				var attributes = {};
+				for(var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++)
+				{
+					attr = attrs.item(i);
+					attributes[attr.nodeName] = attr.value;
+				}
+
+				$(this).data('attr-old-value', attributes);
+			});
+		}
+
+		if(MutationObserver)
+		{ //Modern Browsers supporting MutationObserver
+			/*
+			 Mutation Observer is still new and not supported by all browsers.
+			 http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1622.html
+			 */
+			var mOptions = {
+				subtree          : false,
+				attributes       : true,
+				attributeOldValue: cfg.trackValues
+			};
+
+			var observer = new MutationObserver(function(mutations)
+			{
+				mutations.forEach(function(e)
+				{
+					var _this = e.target;
+
+					//get new value if trackValues is true
+					if(cfg.trackValues)
+					{
+						/**
+						 * @KNOWN_ISSUE: The new value is buggy for STYLE attribute as we don't have
+						 * any additional information on which style is getting updated.
+						 * */
+						e.newValue = $(_this).attr(e.attributeName);
+					}
+
+					cfg.callback.call(_this, e);
+				});
+			});
+
+			return this.each(function()
+			{
+				observer.observe(this, mOptions);
+			});
+		}
+		else if(isDOMAttrModifiedSupported())
+		{ //Opera
+			//Good old Mutation Events but the performance is no good
+			//http://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/
+			return this.on('DOMAttrModified', function(event)
+			{
+				if(event.originalEvent)
+				{
+					event = event.originalEvent;
+				} //jQuery normalization is not required for us
+				event.attributeName = event.attrName; //property names to be consistent with MutationObserver
+				event.oldValue = event.prevValue; //property names to be consistent with MutationObserver
+				cfg.callback.call(this, event);
+			});
+		}
+		else if('onpropertychange' in document.body)
+		{ //works only in IE
+			return this.on('propertychange', function(e)
+			{
+				e.attributeName = window.event.propertyName;
+				//to set the attr old value
+				checkAttributes.call($(this), cfg.trackValues, e);
+				cfg.callback.call(this, e);
+			});
+		}
+
+		return this;
+	}
+})(jQuery);
+
+(function(jQuery) {
+
+    jQuery.eventEmitter = {
+        _JQInit: function() {
+            this._JQ = jQuery(this);
+        },
+        emit: function(evt, data) {
+            !this._JQ && this._JQInit();
+            this._JQ.trigger(evt, data);
+        },
+        once: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.one(evt, handler);
+        },
+        on: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.bind(evt, handler);
+        },
+        off: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.unbind(evt, handler);
+        }
+    };
+
+}(jQuery));
+
+var freeboard = (function()
+{
+	var datasourcePlugins = {};
+	var widgetPlugins = {};
+
+	var freeboardUI = new FreeboardUI();
+	var theFreeboardModel = new FreeboardModel(datasourcePlugins, widgetPlugins, freeboardUI);
+
+	var jsEditor = new JSEditor();
+	var valueEditor = new ValueEditor(theFreeboardModel);
+	var pluginEditor = new PluginEditor(jsEditor, valueEditor);
+
+	var developerConsole = new DeveloperConsole(theFreeboardModel);
+
+	var currentStyle = {
+		values: {
+			"font-family": '"HelveticaNeue-UltraLight", "Helvetica Neue Ultra Light", "Helvetica Neue", sans-serif',
+			"color"      : "#d3d4d4",
+			"font-weight": 100
+		}
+	};
+
+	ko.bindingHandlers.pluginEditor = {
+		init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			var options = ko.unwrap(valueAccessor());
+
+			var types = {};
+			var settings = undefined;
+			var title = "";
+
+			if(options.type == 'datasource')
+			{
+				types = datasourcePlugins;
+				title = "Datasource";
+			}
+			else if(options.type == 'widget')
+			{
+				types = widgetPlugins;
+				title = "Widget";
+			}
+			else if(options.type == 'pane')
+			{
+				title = "Pane";
+			}
+
+			$(element).click(function(event)
+			{
+				if(options.operation == 'delete')
+				{
+					var phraseElement = $('<p>Are you sure you want to delete this ' + title + '?</p>');
+					new DialogBox(phraseElement, "Confirm Delete", "Yes", "No", function()
+					{
+
+						if(options.type == 'datasource')
+						{
+							theFreeboardModel.deleteDatasource(viewModel);
+						}
+						else if(options.type == 'widget')
+						{
+							theFreeboardModel.deleteWidget(viewModel);
+						}
+						else if(options.type == 'pane')
+						{
+							theFreeboardModel.deletePane(viewModel);
+						}
+
+					});
+				}
+				else
+				{
+					var instanceType = undefined;
+
+					if(options.type == 'datasource')
+					{
+						if(options.operation == 'add')
+						{
+							settings = {};
+						}
+						else
+						{
+							instanceType = viewModel.type();
+							settings = viewModel.settings();
+							settings.name = viewModel.name();
+						}
+					}
+					else if(options.type == 'widget')
+					{
+						if(options.operation == 'add')
+						{
+							settings = {};
+						}
+						else
+						{
+							instanceType = viewModel.type();
+							settings = viewModel.settings();
+						}
+					}
+					else if(options.type == 'pane')
+					{
+						settings = {};
+
+						if(options.operation == 'edit')
+						{
+							settings.title = viewModel.title();
+							settings.col_width = viewModel.col_width();
+						}
+
+						types = {
+							settings: {
+								settings: [
+									{
+										name        : "title",
+										display_name: "Title",
+										type        : "text"
+									},
+									{
+										name : "col_width",
+										display_name : "Columns",
+										type : "integer",
+										default_value : 1,
+										required : true
+									}
+								]
+							}
+						}
+					}
+
+					pluginEditor.createPluginEditor(title, types, instanceType, settings, function(newSettings)
+					{
+						if(options.operation == 'add')
+						{
+							if(options.type == 'datasource')
+							{
+								var newViewModel = new DatasourceModel(theFreeboardModel, datasourcePlugins);
+								theFreeboardModel.addDatasource(newViewModel);
+
+								newViewModel.name(newSettings.settings.name);
+								delete newSettings.settings.name;
+
+								newViewModel.settings(newSettings.settings);
+								newViewModel.type(newSettings.type);
+							}
+							else if(options.type == 'widget')
+							{
+								var newViewModel = new WidgetModel(theFreeboardModel, widgetPlugins);
+								newViewModel.settings(newSettings.settings);
+								newViewModel.type(newSettings.type);
+
+								viewModel.widgets.push(newViewModel);
+
+								freeboardUI.attachWidgetEditIcons(element);
+							}
+						}
+						else if(options.operation == 'edit')
+						{
+							if(options.type == 'pane')
+							{
+								viewModel.title(newSettings.settings.title);
+								viewModel.col_width(newSettings.settings.col_width);
+								freeboardUI.processResize(false);
+							}
+							else
+							{
+								if(options.type == 'datasource')
+								{
+									viewModel.name(newSettings.settings.name);
+									delete newSettings.settings.name;
+								}
+
+								viewModel.type(newSettings.type);
+								viewModel.settings(newSettings.settings);
+							}
+						}
+					});
+				}
+			});
+		}
+	}
+
+	ko.virtualElements.allowedBindings.datasourceTypeSettings = true;
+	ko.bindingHandlers.datasourceTypeSettings = {
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			processPluginSettings(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
+		}
+	}
+
+	ko.bindingHandlers.pane = {
+		init  : function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(theFreeboardModel.isEditing())
+			{
+				$(element).css({cursor: "pointer"});
+			}
+
+			freeboardUI.addPane(element, viewModel, bindingContext.$root.isEditing());
+		},
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			// If pane has been removed
+			if(theFreeboardModel.panes.indexOf(viewModel) == -1)
+			{
+				freeboardUI.removePane(element);
+			}
+			freeboardUI.updatePane(element, viewModel);
+		}
+	}
+
+	ko.bindingHandlers.widget = {
+		init  : function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(theFreeboardModel.isEditing())
+			{
+				freeboardUI.attachWidgetEditIcons($(element).parent());
+			}
+		},
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(viewModel.shouldRender())
+			{
+				$(element).empty();
+				viewModel.render(element);
+			}
+		}
+	}
+
+	function getParameterByName(name)
+	{
+		name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
+		var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search);
+		return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
+	}
+
+	$(function()
+	{ //DOM Ready
+		// Show the loading indicator when we first load
+		freeboardUI.showLoadingIndicator(true);
+
+        var resizeTimer;
+
+        function resizeEnd()
+        {
+            freeboardUI.processResize(true);
+        }
+
+        $(window).resize(function() {
+            clearTimeout(resizeTimer);
+            resizeTimer = setTimeout(resizeEnd, 500);
+        });
+
+	});
+
+	// PUBLIC FUNCTIONS
+	return {
+		initialize          : function(allowEdit, finishedCallback)
+		{
+			ko.applyBindings(theFreeboardModel);
+
+			// Check to see if we have a query param called load. If so, we should load that dashboard initially
+			var freeboardLocation = getParameterByName("load");
+
+			if(freeboardLocation != "")
+			{
+				$.ajax({
+					url    : freeboardLocation,
+					success: function(data)
+					{
+						theFreeboardModel.loadDashboard(data);
+
+						if(_.isFunction(finishedCallback))
+						{
+							finishedCallback();
+						}
+					}
+				});
+			}
+			else
+			{
+				theFreeboardModel.allow_edit(allowEdit);
+				theFreeboardModel.setEditing(allowEdit);
+
+				freeboardUI.showLoadingIndicator(false);
+				if(_.isFunction(finishedCallback))
+				{
+					finishedCallback();
+				}
+
+                freeboard.emit("initialized");
+			}
+		},
+		newDashboard        : function()
+		{
+			theFreeboardModel.loadDashboard({allow_edit: true});
+		},
+		loadDashboard       : function(configuration, callback)
+		{
+			theFreeboardModel.loadDashboard(configuration, callback);
+		},
+		serialize           : function()
+		{
+			return theFreeboardModel.serialize();
+		},
+		setEditing          : function(editing, animate)
+		{
+			theFreeboardModel.setEditing(editing, animate);
+		},
+		isEditing           : function()
+		{
+			return theFreeboardModel.isEditing();
+		},
+		loadDatasourcePlugin: function(plugin)
+		{
+			if(_.isUndefined(plugin.display_name))
+			{
+				plugin.display_name = plugin.type_name;
+			}
+
+            // Add a required setting called name to the beginning
+            plugin.settings.unshift({
+                name : "name",
+                display_name : "Name",
+                type : "text",
+                required : true
+            });
+
+
+			theFreeboardModel.addPluginSource(plugin.source);
+			datasourcePlugins[plugin.type_name] = plugin;
+			theFreeboardModel._datasourceTypes.valueHasMutated();
+		},
+        resize : function()
+        {
+            freeboardUI.processResize(true);
+        },
+		loadWidgetPlugin    : function(plugin)
+		{
+			if(_.isUndefined(plugin.display_name))
+			{
+				plugin.display_name = plugin.type_name;
+			}
+
+			theFreeboardModel.addPluginSource(plugin.source);
+			widgetPlugins[plugin.type_name] = plugin;
+			theFreeboardModel._widgetTypes.valueHasMutated();
+		},
+		// To be used if freeboard is going to load dynamic assets from a different root URL
+		setAssetRoot        : function(assetRoot)
+		{
+			jsEditor.setAssetRoot(assetRoot);
+		},
+		addStyle            : function(selector, rules)
+		{
+			var styleString = selector + "{" + rules + "}";
+
+			var styleElement = $("style#fb-styles");
+
+			if(styleElement.length == 0)
+			{
+				styleElement = $('<style id="fb-styles" type="text/css"></style>');
+				$("head").append(styleElement);
+			}
+
+			if(styleElement[0].styleSheet)
+			{
+				styleElement[0].styleSheet.cssText += styleString;
+			}
+			else
+			{
+				styleElement.text(styleElement.text() + styleString);
+			}
+		},
+		showLoadingIndicator: function(show)
+		{
+			freeboardUI.showLoadingIndicator(show);
+		},
+		showDialog          : function(contentElement, title, okTitle, cancelTitle, okCallback)
+		{
+			new DialogBox(contentElement, title, okTitle, cancelTitle, okCallback);
+		},
+        getDatasourceSettings : function(datasourceName)
+        {
+            var datasources = theFreeboardModel.datasources();
+
+            // Find the datasource with the name specified
+            var datasource = _.find(datasources, function(datasourceModel){
+                return (datasourceModel.name() === datasourceName);
+            });
+
+            if(datasource)
+            {
+                return datasource.settings();
+            }
+            else
+            {
+                return null;
+            }
+        },
+        setDatasourceSettings : function(datasourceName, settings)
+        {
+            var datasources = theFreeboardModel.datasources();
+
+            // Find the datasource with the name specified
+            var datasource = _.find(datasources, function(datasourceModel){
+                return (datasourceModel.name() === datasourceName);
+            });
+
+            if(!datasource)
+            {
+                console.log("Datasource not found");
+                return;
+            }
+
+            var combinedSettings = _.defaults(settings, datasource.settings());
+            datasource.settings(combinedSettings);
+        },
+		getStyleString      : function(name)
+		{
+			var returnString = "";
+
+			_.each(currentStyle[name], function(value, name)
+			{
+				returnString = returnString + name + ":" + value + ";";
+			});
+
+			return returnString;
+		},
+		getStyleObject      : function(name)
+		{
+			return currentStyle[name];
+		},
+		showDeveloperConsole : function()
+		{
+			developerConsole.showDeveloperConsole();
+		}
+	};
+}());
+
+$.extend(freeboard, jQuery.eventEmitter);
+
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+(function () {
+	var jsonDatasource = function (settings, updateCallback) {
+		var self = this;
+		var updateTimer = null;
+		var currentSettings = settings;
+		var errorStage = 0; 	// 0 = try standard request
+		// 1 = try JSONP
+		// 2 = try thingproxy.freeboard.io
+		var lockErrorStage = false;
+
+		function updateRefresh(refreshTime) {
+			if (updateTimer) {
+				clearInterval(updateTimer);
+			}
+
+			updateTimer = setInterval(function () {
+				self.updateNow();
+			}, refreshTime);
+		}
+
+		updateRefresh(currentSettings.refresh * 1000);
+
+		this.updateNow = function () {
+			if ((errorStage > 1 && !currentSettings.use_thingproxy) || errorStage > 2) // We've tried everything, let's quit
+			{
+				return; // TODO: Report an error
+			}
+
+			var requestURL = currentSettings.url;
+
+			if (errorStage == 2 && currentSettings.use_thingproxy) {
+				requestURL = (location.protocol == "https:" ? "https:" : "http:") + "//thingproxy.freeboard.io/fetch/" + encodeURI(currentSettings.url);
+			}
+
+			var body = currentSettings.body;
+
+			// Can the body be converted to JSON?
+			if (body) {
+				try {
+					body = JSON.parse(body);
+				}
+				catch (e) {
+				}
+			}
+
+			$.ajax({
+				url: requestURL,
+				dataType: (errorStage == 1) ? "JSONP" : "JSON",
+				type: currentSettings.method || "GET",
+				data: body,
+				beforeSend: function (xhr) {
+					try {
+						_.each(currentSettings.headers, function (header) {
+							var name = header.name;
+							var value = header.value;
+
+							if (!_.isUndefined(name) && !_.isUndefined(value)) {
+								xhr.setRequestHeader(name, value);
+							}
+						});
+					}
+					catch (e) {
+					}
+				},
+				success: function (data) {
+					lockErrorStage = true;
+					updateCallback(data);
+				},
+				error: function (xhr, status, error) {
+					if (!lockErrorStage) {
+						// TODO: Figure out a way to intercept CORS errors only. The error message for CORS errors seems to be a standard 404.
+						errorStage++;
+						self.updateNow();
+					}
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			clearInterval(updateTimer);
+			updateTimer = null;
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			lockErrorStage = false;
+			errorStage = 0;
+
+			currentSettings = newSettings;
+			updateRefresh(currentSettings.refresh * 1000);
+			self.updateNow();
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		type_name: "JSON",
+		settings: [
+			{
+				name: "url",
+				display_name: "URL",
+				type: "text"
+			},
+			{
+				name: "use_thingproxy",
+				display_name: "Try thingproxy",
+				description: 'A direct JSON connection will be tried first, if that fails, a JSONP connection will be tried. If that fails, you can use thingproxy, which can solve many connection problems to APIs. <a href="https://github.com/Freeboard/thingproxy" target="_blank">More information</a>.',
+				type: "boolean",
+				default_value: true
+			},
+			{
+				name: "refresh",
+				display_name: "Refresh Every",
+				type: "number",
+				suffix: "seconds",
+				default_value: 5
+			},
+			{
+				name: "method",
+				display_name: "Method",
+				type: "option",
+				options: [
+					{
+						name: "GET",
+						value: "GET"
+					},
+					{
+						name: "POST",
+						value: "POST"
+					},
+					{
+						name: "PUT",
+						value: "PUT"
+					},
+					{
+						name: "DELETE",
+						value: "DELETE"
+					}
+				]
+			},
+			{
+				name: "body",
+				display_name: "Body",
+				type: "text",
+				description: "The body of the request. Normally only used if method is POST"
+			},
+			{
+				name: "headers",
+				display_name: "Headers",
+				type: "array",
+				settings: [
+					{
+						name: "name",
+						display_name: "Name",
+						type: "text"
+					},
+					{
+						name: "value",
+						display_name: "Value",
+						type: "text"
+					}
+				]
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new jsonDatasource(settings, updateCallback));
+		}
+	});
+
+	var openWeatherMapDatasource = function (settings, updateCallback) {
+		var self = this;
+		var updateTimer = null;
+		var currentSettings = settings;
+
+		function updateRefresh(refreshTime) {
+			if (updateTimer) {
+				clearInterval(updateTimer);
+			}
+
+			updateTimer = setInterval(function () {
+				self.updateNow();
+			}, refreshTime);
+		}
+
+		function toTitleCase(str) {
+			return str.replace(/\w\S*/g, function (txt) {
+				return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
+			});
+		}
+
+		updateRefresh(currentSettings.refresh * 1000);
+
+		this.updateNow = function () {
+			$.ajax({
+				url: "http://api.openweathermap.org/data/2.5/weather?APPID="+currentSettings.api_key+"&q=" + encodeURIComponent(currentSettings.location) + "&units=" + currentSettings.units,
+				dataType: "JSONP",
+				success: function (data) {
+					// Rejigger our data into something easier to understand
+					var newData = {
+						place_name: data.name,
+						sunrise: (new Date(data.sys.sunrise * 1000)).toLocaleTimeString(),
+						sunset: (new Date(data.sys.sunset * 1000)).toLocaleTimeString(),
+						conditions: toTitleCase(data.weather[0].description),
+						current_temp: data.main.temp,
+						high_temp: data.main.temp_max,
+						low_temp: data.main.temp_min,
+						pressure: data.main.pressure,
+						humidity: data.main.humidity,
+						wind_speed: data.wind.speed,
+						wind_direction: data.wind.deg
+					};
+
+					updateCallback(newData);
+				},
+				error: function (xhr, status, error) {
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			clearInterval(updateTimer);
+			updateTimer = null;
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			self.updateNow();
+			updateRefresh(currentSettings.refresh * 1000);
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		type_name: "openweathermap",
+		display_name: "Open Weather Map API",
+		settings: [
+			{
+				name: "api_key",
+				display_name: "API Key",
+				type: "text",
+				description: "Your personal API Key from Open Weather Map"
+			},
+            {
+				name: "location",
+				display_name: "Location",
+				type: "text",
+				description: "Example: London, UK"
+			},
+			{
+				name: "units",
+				display_name: "Units",
+				type: "option",
+				default: "imperial",
+				options: [
+					{
+						name: "Imperial",
+						value: "imperial"
+					},
+					{
+						name: "Metric",
+						value: "metric"
+					}
+				]
+			},
+			{
+				name: "refresh",
+				display_name: "Refresh Every",
+				type: "number",
+				suffix: "seconds",
+				default_value: 5
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new openWeatherMapDatasource(settings, updateCallback));
+		}
+	});
+
+	var dweetioDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+
+		function onNewDweet(dweet) {
+			updateCallback(dweet);
+		}
+
+		this.updateNow = function () {
+			dweetio.get_latest_dweet_for(currentSettings.thing_id, function (err, dweet) {
+				if (err) {
+					//onNewDweet({});
+				}
+				else {
+					onNewDweet(dweet[0].content);
+				}
+			});
+		}
+
+		this.onDispose = function () {
+
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			dweetio.stop_listening_for(currentSettings.thing_id);
+
+			currentSettings = newSettings;
+
+			dweetio.listen_for(currentSettings.thing_id, function (dweet) {
+				onNewDweet(dweet.content);
+			});
+		}
+
+		self.onSettingsChanged(settings);
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "dweet_io",
+		"display_name": "Dweet.io",
+		"external_scripts": [
+			"http://dweet.io/client/dweet.io.min.js"
+		],
+		"settings": [
+			{
+				name: "thing_id",
+				display_name: "Thing Name",
+				"description": "Example: salty-dog-1",
+				type: "text"
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new dweetioDatasource(settings, updateCallback));
+		}
+	});
+
+	var playbackDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+		var currentDataset = [];
+		var currentIndex = 0;
+		var currentTimeout;
+
+		function moveNext() {
+			if (currentDataset.length > 0) {
+				if (currentIndex < currentDataset.length) {
+					updateCallback(currentDataset[currentIndex]);
+					currentIndex++;
+				}
+
+				if (currentIndex >= currentDataset.length && currentSettings.loop) {
+					currentIndex = 0;
+				}
+
+				if (currentIndex < currentDataset.length) {
+					currentTimeout = setTimeout(moveNext, currentSettings.refresh * 1000);
+				}
+			}
+			else {
+				updateCallback({});
+			}
+		}
+
+		function stopTimeout() {
+			currentDataset = [];
+			currentIndex = 0;
+
+			if (currentTimeout) {
+				clearTimeout(currentTimeout);
+				currentTimeout = null;
+			}
+		}
+
+		this.updateNow = function () {
+			stopTimeout();
+
+			$.ajax({
+				url: currentSettings.datafile,
+				dataType: (currentSettings.is_jsonp) ? "JSONP" : "JSON",
+				success: function (data) {
+					if (_.isArray(data)) {
+						currentDataset = data;
+					}
+					else {
+						currentDataset = [];
+					}
+
+					currentIndex = 0;
+
+					moveNext();
+				},
+				error: function (xhr, status, error) {
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			stopTimeout();
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			self.updateNow();
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "playback",
+		"display_name": "Playback",
+		"settings": [
+			{
+				"name": "datafile",
+				"display_name": "Data File URL",
+				"type": "text",
+				"description": "A link to a JSON array of data."
+			},
+			{
+				name: "is_jsonp",
+				display_name: "Is JSONP",
+				type: "boolean"
+			},
+			{
+				"name": "loop",
+				"display_name": "Loop",
+				"type": "boolean",
+				"description": "Rewind and loop when finished"
+			},
+			{
+				"name": "refresh",
+				"display_name": "Refresh Every",
+				"type": "number",
+				"suffix": "seconds",
+				"default_value": 5
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new playbackDatasource(settings, updateCallback));
+		}
+	});
+
+	var clockDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+		var timer;
+
+		function stopTimer() {
+			if (timer) {
+				clearTimeout(timer);
+				timer = null;
+			}
+		}
+
+		function updateTimer() {
+			stopTimer();
+			timer = setInterval(self.updateNow, currentSettings.refresh * 1000);
+		}
+
+		this.updateNow = function () {
+			var date = new Date();
+
+			var data = {
+				numeric_value: date.getTime(),
+				full_string_value: date.toLocaleString(),
+				date_string_value: date.toLocaleDateString(),
+				time_string_value: date.toLocaleTimeString(),
+				date_object: date
+			};
+
+			updateCallback(data);
+		}
+
+		this.onDispose = function () {
+			stopTimer();
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			updateTimer();
+		}
+
+		updateTimer();
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "clock",
+		"display_name": "Clock",
+		"settings": [
+			{
+				"name": "refresh",
+				"display_name": "Refresh Every",
+				"type": "number",
+				"suffix": "seconds",
+				"default_value": 1
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new clockDatasource(settings, updateCallback));
+		}
+	});
+freeboard.loadDatasourcePlugin({
+		// **type_name** (required) : A unique name for this plugin. This name should be as unique as possible to avoid collisions with other plugins, and should follow naming conventions for javascript variable and function declarations.
+		"type_name"   : "meshblu",
+		// **display_name** : The pretty name that will be used for display purposes for this plugin. If the name is not defined, type_name will be used instead.
+		"display_name": "Octoblu",
+        // **description** : A description of the plugin. This description will be displayed when the plugin is selected or within search results (in the future). The description may contain HTML if needed.
+        "description" : "app.octoblu.com",
+		// **external_scripts** : Any external scripts that should be loaded before the plugin instance is created.
+		"external_scripts" : [
+			"http://meshblu.octoblu.com/js/meshblu.js"
+		],
+		// **settings** : An array of settings that will be displayed for this plugin when the user adds it.
+		"settings"    : [
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "uuid",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "UUID",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "device uuid",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your device UUID",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "token",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Token",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "device token",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your device TOKEN",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "server",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Server",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "meshblu.octoblu.com",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your server",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "port",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Port",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "number",
+				// **default_value** : A default value for this setting.
+				"default_value": 80,
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "server port",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			}
+			
+		],
+		// **newInstance(settings, newInstanceCallback, updateCallback)** (required) : A function that will be called when a new instance of this plugin is requested.
+		// * **settings** : A javascript object with the initial settings set by the user. The names of the properties in the object will correspond to the setting names defined above.
+		// * **newInstanceCallback** : A callback function that you'll call when the new instance of the plugin is ready. This function expects a single argument, which is the new instance of your plugin object.
+		// * **updateCallback** : A callback function that you'll call if and when your datasource has an update for freeboard to recalculate. This function expects a single parameter which is a javascript object with the new, updated data. You should hold on to this reference and call it when needed.
+		newInstance   : function(settings, newInstanceCallback, updateCallback)
+		{
+			// myDatasourcePlugin is defined below.
+			newInstanceCallback(new meshbluSource(settings, updateCallback));
+		}
+	});
+
+
+	// ### Datasource Implementation
+	//
+	// -------------------
+	// Here we implement the actual datasource plugin. We pass in the settings and updateCallback.
+	var meshbluSource = function(settings, updateCallback)
+	{
+		// Always a good idea...
+		var self = this;
+
+		// Good idea to create a variable to hold on to our settings, because they might change in the future. See below.
+		var currentSettings = settings;
+
+		
+
+		/* This is some function where I'll get my data from somewhere */
+
+ 	
+		function getData()
+		{
+
+
+		 var conn = skynet.createConnection({
+    		"uuid": currentSettings.uuid,
+    		"token": currentSettings.token,
+    		"server": currentSettings.server, 
+    		"port": currentSettings.port
+  				});	
+			 
+			 conn.on('ready', function(data){	
+
+			 	conn.on('message', function(message){
+
+    				var newData = message;
+    				updateCallback(newData);
+
+ 						 });
+
+			 });
+			}
+
+	
+
+		// **onSettingsChanged(newSettings)** (required) : A public function we must implement that will be called when a user makes a change to the settings.
+		self.onSettingsChanged = function(newSettings)
+		{
+			// Here we update our current settings with the variable that is passed in.
+			currentSettings = newSettings;
+		}
+
+		// **updateNow()** (required) : A public function we must implement that will be called when the user wants to manually refresh the datasource
+		self.updateNow = function()
+		{
+			// Most likely I'll just call getData() here.
+			getData();
+		}
+
+		// **onDispose()** (required) : A public function we must implement that will be called when this instance of this plugin is no longer needed. Do anything you need to cleanup after yourself here.
+		self.onDispose = function()
+		{
+		
+			//conn.close();
+		}
+
+		// Here we call createRefreshTimer with our current settings, to kick things off, initially. Notice how we make use of one of the user defined settings that we setup earlier.
+	//	createRefreshTimer(currentSettings.refresh_time);
+	}
+
+
+}());
+
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+(function () {
+	var SPARKLINE_HISTORY_LENGTH = 100;
+	var SPARKLINE_COLORS = ["#FF9900", "#FFFFFF", "#B3B4B4", "#6B6B6B", "#28DE28", "#13F7F9", "#E6EE18", "#C41204", "#CA3CB8", "#0B1CFB"];
+
+    function easeTransitionText(newValue, textElement, duration) {
+
+		var currentValue = $(textElement).text();
+
+        if (currentValue == newValue)
+            return;
+
+        if ($.isNumeric(newValue) && $.isNumeric(currentValue)) {
+            var numParts = newValue.toString().split('.');
+            var endingPrecision = 0;
+
+            if (numParts.length > 1) {
+                endingPrecision = numParts[1].length;
+            }
+
+            numParts = currentValue.toString().split('.');
+            var startingPrecision = 0;
+
+            if (numParts.length > 1) {
+                startingPrecision = numParts[1].length;
+            }
+
+            jQuery({transitionValue: Number(currentValue), precisionValue: startingPrecision}).animate({transitionValue: Number(newValue), precisionValue: endingPrecision}, {
+                duration: duration,
+                step: function () {
+                    $(textElement).text(this.transitionValue.toFixed(this.precisionValue));
+                },
+                done: function () {
+                    $(textElement).text(newValue);
+                }
+            });
+        }
+        else {
+            $(textElement).text(newValue);
+        }
+    }
+
+	function addSparklineLegend(element, legend) {
+		var legendElt = $("<div class='sparkline-legend'></div>");
+		for(var i=0; i<legend.length; i++) {
+			var color = SPARKLINE_COLORS[i % SPARKLINE_COLORS.length];
+			var label = legend[i];
+			legendElt.append("<div class='sparkline-legend-value'><span style='color:" +
+							 color + "'>&#9679;</span>" + label + "</div>");
+		}
+		element.empty().append(legendElt);
+
+		freeboard.addStyle('.sparkline-legend', "margin:5px;");
+		freeboard.addStyle('.sparkline-legend-value',
+			'color:white; font:10px arial,san serif; float:left; overflow:hidden; width:50%;');
+		freeboard.addStyle('.sparkline-legend-value span',
+			'font-weight:bold; padding-right:5px;');
+	}
+
+	function addValueToSparkline(element, value, legend) {
+		var values = $(element).data().values;
+		var valueMin = $(element).data().valueMin;
+		var valueMax = $(element).data().valueMax;
+		if (!values) {
+			values = [];
+			valueMin = undefined;
+			valueMax = undefined;
+		}
+
+		var collateValues = function(val, plotIndex) {
+			if(!values[plotIndex]) {
+				values[plotIndex] = [];
+			}
+			if (values[plotIndex].length >= SPARKLINE_HISTORY_LENGTH) {
+				values[plotIndex].shift();
+			}
+			values[plotIndex].push(Number(val));
+
+			if(valueMin === undefined || val < valueMin) {
+				valueMin = val;
+			}
+			if(valueMax === undefined || val > valueMax) {
+				valueMax = val;
+			}
+		}
+
+		if(_.isArray(value)) {
+			_.each(value, collateValues);
+		} else {
+			collateValues(value, 0);
+		}
+		$(element).data().values = values;
+		$(element).data().valueMin = valueMin;
+		$(element).data().valueMax = valueMax;
+
+		var tooltipHTML = '<span style="color: {{color}}">&#9679;</span> {{y}}';
+
+		var composite = false;
+		_.each(values, function(valueArray, valueIndex) {
+			$(element).sparkline(valueArray, {
+				type: "line",
+				composite: composite,
+				height: "100%",
+				width: "100%",
+				fillColor: false,
+				lineColor: SPARKLINE_COLORS[valueIndex % SPARKLINE_COLORS.length],
+				lineWidth: 2,
+				spotRadius: 3,
+				spotColor: false,
+				minSpotColor: "#78AB49",
+				maxSpotColor: "#78AB49",
+				highlightSpotColor: "#9D3926",
+				highlightLineColor: "#9D3926",
+				chartRangeMin: valueMin,
+				chartRangeMax: valueMax,
+				tooltipFormat: (legend && legend[valueIndex])?tooltipHTML + ' (' + legend[valueIndex] + ')':tooltipHTML
+			});
+			composite = true;
+		});
+	}
+
+	var valueStyle = freeboard.getStyleString("values");
+
+	freeboard.addStyle('.widget-big-text', valueStyle + "font-size:75px;");
+
+	freeboard.addStyle('.tw-display', 'width: 100%; height:100%; display:table; table-layout:fixed;');
+
+	freeboard.addStyle('.tw-tr',
+		'display:table-row;');
+
+	freeboard.addStyle('.tw-tg',
+		'display:table-row-group;');
+
+	freeboard.addStyle('.tw-tc',
+		'display:table-caption;');
+
+	freeboard.addStyle('.tw-td',
+		'display:table-cell;');
+
+	freeboard.addStyle('.tw-value',
+		valueStyle +
+		'overflow: hidden;' +
+		'display: inline-block;' +
+		'text-overflow: ellipsis;');
+
+	freeboard.addStyle('.tw-unit',
+		'display: inline-block;' +
+		'padding-left: 10px;' +
+		'padding-bottom: 1.1em;' +
+		'vertical-align: bottom;');
+
+	freeboard.addStyle('.tw-value-wrapper',
+		'position: relative;' +
+		'vertical-align: middle;' +
+		'height:100%;');
+
+	freeboard.addStyle('.tw-sparkline',
+		'height:20px;');
+
+    var textWidget = function (settings) {
+
+        var self = this;
+
+        var currentSettings = settings;
+		var displayElement = $('<div class="tw-display"></div>');
+		var titleElement = $('<h2 class="section-title tw-title tw-td"></h2>');
+        var valueElement = $('<div class="tw-value"></div>');
+        var unitsElement = $('<div class="tw-unit"></div>');
+        var sparklineElement = $('<div class="tw-sparkline tw-td"></div>');
+
+		function updateValueSizing()
+		{
+			if(!_.isUndefined(currentSettings.units) && currentSettings.units != "") // If we're displaying our units
+			{
+				valueElement.css("max-width", (displayElement.innerWidth() - unitsElement.outerWidth(true)) + "px");
+			}
+			else
+			{
+				valueElement.css("max-width", "100%");
+			}
+		}
+
+        this.render = function (element) {
+			$(element).empty();
+
+			$(displayElement)
+				.append($('<div class="tw-tr"></div>').append(titleElement))
+				.append($('<div class="tw-tr"></div>').append($('<div class="tw-value-wrapper tw-td"></div>').append(valueElement).append(unitsElement)))
+				.append($('<div class="tw-tr"></div>').append(sparklineElement));
+
+			$(element).append(displayElement);
+
+			updateValueSizing();
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+
+			var shouldDisplayTitle = (!_.isUndefined(newSettings.title) && newSettings.title != "");
+			var shouldDisplayUnits = (!_.isUndefined(newSettings.units) && newSettings.units != "");
+
+			if(newSettings.sparkline)
+			{
+				sparklineElement.attr("style", null);
+			}
+			else
+			{
+				delete sparklineElement.data().values;
+				sparklineElement.empty();
+				sparklineElement.hide();
+			}
+
+			if(shouldDisplayTitle)
+			{
+				titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+				titleElement.attr("style", null);
+			}
+			else
+			{
+				titleElement.empty();
+				titleElement.hide();
+			}
+
+			if(shouldDisplayUnits)
+			{
+				unitsElement.html((_.isUndefined(newSettings.units) ? "" : newSettings.units));
+				unitsElement.attr("style", null);
+			}
+			else
+			{
+				unitsElement.empty();
+				unitsElement.hide();
+			}
+
+			var valueFontSize = 30;
+
+			if(newSettings.size == "big")
+			{
+				valueFontSize = 75;
+
+				if(newSettings.sparkline)
+				{
+					valueFontSize = 60;
+				}
+			}
+
+			valueElement.css({"font-size" : valueFontSize + "px"});
+
+			updateValueSizing();
+        }
+
+		this.onSizeChanged = function()
+		{
+			updateValueSizing();
+		}
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "value") {
+
+                if (currentSettings.animate) {
+                    easeTransitionText(newValue, valueElement, 500);
+                }
+                else {
+                    valueElement.text(newValue);
+                }
+
+                if (currentSettings.sparkline) {
+                    addValueToSparkline(sparklineElement, newValue);
+                }
+            }
+        }
+
+        this.onDispose = function () {
+
+        }
+
+        this.getHeight = function () {
+            if (currentSettings.size == "big" || currentSettings.sparkline) {
+                return 2;
+            }
+            else {
+                return 1;
+            }
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "text_widget",
+        display_name: "Text",
+        "external_scripts" : [
+            "plugins/thirdparty/jquery.sparkline.min.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "size",
+                display_name: "Size",
+                type: "option",
+                options: [
+                    {
+                        name: "Regular",
+                        value: "regular"
+                    },
+                    {
+                        name: "Big",
+                        value: "big"
+                    }
+                ]
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated"
+            },
+            {
+                name: "sparkline",
+                display_name: "Include Sparkline",
+                type: "boolean"
+            },
+            {
+                name: "animate",
+                display_name: "Animate Value Changes",
+                type: "boolean",
+                default_value: true
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new textWidget(settings));
+        }
+    });
+
+    var gaugeID = 0;
+	freeboard.addStyle('.gauge-widget-wrapper', "width: 100%;text-align: center;");
+	freeboard.addStyle('.gauge-widget', "width:200px;height:160px;display:inline-block;");
+
+    var gaugeWidget = function (settings) {
+        var self = this;
+
+        var thisGaugeID = "gauge-" + gaugeID++;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var gaugeElement = $('<div class="gauge-widget" id="' + thisGaugeID + '"></div>');
+
+        var gaugeObject;
+        var rendered = false;
+
+        var currentSettings = settings;
+
+        function createGauge() {
+            if (!rendered) {
+                return;
+            }
+
+            gaugeElement.empty();
+
+            gaugeObject = new JustGage({
+                id: thisGaugeID,
+                value: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                min: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                max: (_.isUndefined(currentSettings.max_value) ? 0 : currentSettings.max_value),
+                label: currentSettings.units,
+                showInnerShadow: false,
+                valueFontColor: "#d3d4d4"
+            });
+        }
+
+        this.render = function (element) {
+            rendered = true;
+            $(element).append(titleElement).append($('<div class="gauge-widget-wrapper"></div>').append(gaugeElement));
+            createGauge();
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            if (newSettings.min_value != currentSettings.min_value || newSettings.max_value != currentSettings.max_value || newSettings.units != currentSettings.units) {
+                currentSettings = newSettings;
+                createGauge();
+            }
+            else {
+                currentSettings = newSettings;
+            }
+
+            titleElement.html(newSettings.title);
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (!_.isUndefined(gaugeObject)) {
+                gaugeObject.refresh(Number(newValue));
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 3;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "gauge",
+        display_name: "Gauge",
+        "external_scripts" : [
+            "plugins/thirdparty/raphael.2.1.0.min.js",
+            "plugins/thirdparty/justgage.1.0.1.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated"
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            },
+            {
+                name: "min_value",
+                display_name: "Minimum",
+                type: "text",
+                default_value: 0
+            },
+            {
+                name: "max_value",
+                display_name: "Maximum",
+                type: "text",
+                default_value: 100
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new gaugeWidget(settings));
+        }
+    });
+
+
+	freeboard.addStyle('.sparkline', "width:100%;height: 75px;");
+    var sparklineWidget = function (settings) {
+        var self = this;
+
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var sparklineElement = $('<div class="sparkline"></div>');
+		var sparklineLegend = $('<div></div>');
+		var currentSettings = settings;
+
+        this.render = function (element) {
+            $(element).append(titleElement).append(sparklineElement).append(sparklineLegend);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+            titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+
+			if(newSettings.include_legend) {
+				addSparklineLegend(sparklineLegend,  newSettings.legend.split(","));
+			}
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+			if (currentSettings.legend) {
+				addValueToSparkline(sparklineElement, newValue, currentSettings.legend.split(","));
+			} else {
+				addValueToSparkline(sparklineElement, newValue);
+			}
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+			var legendHeight = 0;
+			if (currentSettings.include_legend && currentSettings.legend) {
+				var legendLength = currentSettings.legend.split(",").length;
+				if (legendLength > 4) {
+					legendHeight = Math.floor((legendLength-1) / 4) * 0.5;
+				} else if (legendLength) {
+					legendHeight = 0.5;
+				}
+			}
+			return 2 + legendHeight;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "sparkline",
+        display_name: "Sparkline",
+        "external_scripts" : [
+            "plugins/thirdparty/jquery.sparkline.min.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated",
+				multi_input: "true"
+            },
+			{
+				name: "include_legend",
+				display_name: "Include Legend",
+				type: "boolean"
+			},
+			{
+				name: "legend",
+				display_name: "Legend",
+				type: "text",
+				description: "Comma-separated for multiple sparklines"
+			}
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new sparklineWidget(settings));
+        }
+    });
+
+	freeboard.addStyle('div.pointer-value', "position:absolute;height:95px;margin: auto;top: 0px;bottom: 0px;width: 100%;text-align:center;");
+    var pointerWidget = function (settings) {
+        var self = this;
+        var paper;
+        var strokeWidth = 3;
+        var triangle;
+        var width, height;
+        var currentValue = 0;
+        var valueDiv = $('<div class="widget-big-text"></div>');
+        var unitsDiv = $('<div></div>');
+
+        function polygonPath(points) {
+            if (!points || points.length < 2)
+                return [];
+            var path = []; //will use path object type
+            path.push(['m', points[0], points[1]]);
+            for (var i = 2; i < points.length; i += 2) {
+                path.push(['l', points[i], points[i + 1]]);
+            }
+            path.push(['z']);
+            return path;
+        }
+
+        this.render = function (element) {
+            width = $(element).width();
+            height = $(element).height();
+
+            var radius = Math.min(width, height) / 2 - strokeWidth * 2;
+
+            paper = Raphael($(element).get()[0], width, height);
+            var circle = paper.circle(width / 2, height / 2, radius);
+            circle.attr("stroke", "#FF9900");
+            circle.attr("stroke-width", strokeWidth);
+
+            triangle = paper.path(polygonPath([width / 2, (height / 2) - radius + strokeWidth, 15, 20, -30, 0]));
+            triangle.attr("stroke-width", 0);
+            triangle.attr("fill", "#fff");
+
+            $(element).append($('<div class="pointer-value"></div>').append(valueDiv).append(unitsDiv));
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            unitsDiv.html(newSettings.units);
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "direction") {
+                if (!_.isUndefined(triangle)) {
+                    var direction = "r";
+
+                    var oppositeCurrent = currentValue + 180;
+
+                    if (oppositeCurrent < newValue) {
+                        //direction = "l";
+                    }
+
+                    triangle.animate({transform: "r" + newValue + "," + (width / 2) + "," + (height / 2)}, 250, "bounce");
+                }
+
+                currentValue = newValue;
+            }
+            else if (settingName == "value_text") {
+                valueDiv.html(newValue);
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "pointer",
+        display_name: "Pointer",
+        "external_scripts" : [
+            "plugins/thirdparty/raphael.2.1.0.min.js"
+        ],
+        settings: [
+            {
+                name: "direction",
+                display_name: "Direction",
+                type: "calculated",
+                description: "In degrees"
+            },
+            {
+                name: "value_text",
+                display_name: "Value Text",
+                type: "calculated"
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new pointerWidget(settings));
+        }
+    });
+
+    var pictureWidget = function(settings)
+    {
+        var self = this;
+        var widgetElement;
+        var timer;
+        var imageURL;
+
+        function stopTimer()
+        {
+            if(timer)
+            {
+                clearInterval(timer);
+                timer = null;
+            }
+        }
+
+        function updateImage()
+        {
+            if(widgetElement && imageURL)
+            {
+                var cacheBreakerURL = imageURL + (imageURL.indexOf("?") == -1 ? "?" : "&") + Date.now();
+
+                $(widgetElement).css({
+                    "background-image" :  "url(" + cacheBreakerURL + ")"
+                });
+            }
+        }
+
+        this.render = function(element)
+        {
+            $(element).css({
+                width : "100%",
+                height: "100%",
+                "background-size" : "cover",
+                "background-position" : "center"
+            });
+
+            widgetElement = element;
+        }
+
+        this.onSettingsChanged = function(newSettings)
+        {
+            stopTimer();
+
+            if(newSettings.refresh && newSettings.refresh > 0)
+            {
+                timer = setInterval(updateImage, Number(newSettings.refresh) * 1000);
+            }
+        }
+
+        this.onCalculatedValueChanged = function(settingName, newValue)
+        {
+            if(settingName == "src")
+            {
+                imageURL = newValue;
+            }
+
+            updateImage();
+        }
+
+        this.onDispose = function()
+        {
+            stopTimer();
+        }
+
+        this.getHeight = function()
+        {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "picture",
+        display_name: "Picture",
+        fill_size: true,
+        settings: [
+            {
+                name: "src",
+                display_name: "Image URL",
+                type: "calculated"
+            },
+            {
+                "type": "number",
+                "display_name": "Refresh every",
+                "name": "refresh",
+                "suffix": "seconds",
+                "description":"Leave blank if the image doesn't need to be refreshed"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new pictureWidget(settings));
+        }
+    });
+
+	freeboard.addStyle('.indicator-light', "border-radius:50%;width:22px;height:22px;border:2px solid #3d3d3d;margin-top:5px;float:left;background-color:#222;margin-right:10px;");
+	freeboard.addStyle('.indicator-light.on', "background-color:#FFC773;box-shadow: 0px 0px 15px #FF9900;border-color:#FDF1DF;");
+	freeboard.addStyle('.indicator-text', "margin-top:10px;");
+    var indicatorWidget = function (settings) {
+        var self = this;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var stateElement = $('<div class="indicator-text"></div>');
+        var indicatorElement = $('<div class="indicator-light"></div>');
+        var currentSettings = settings;
+        var isOn = false;
+        var onText;
+        var offText;
+
+        function updateState() {
+            indicatorElement.toggleClass("on", isOn);
+
+            if (isOn) {
+                stateElement.text((_.isUndefined(onText) ? (_.isUndefined(currentSettings.on_text) ? "" : currentSettings.on_text) : onText));
+            }
+            else {
+                stateElement.text((_.isUndefined(offText) ? (_.isUndefined(currentSettings.off_text) ? "" : currentSettings.off_text) : offText));
+            }
+        }
+
+        this.render = function (element) {
+            $(element).append(titleElement).append(indicatorElement).append(stateElement);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+            titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+            updateState();
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "value") {
+                isOn = Boolean(newValue);
+            }
+            if (settingName == "on_text") {
+                onText = newValue;
+            }
+            if (settingName == "off_text") {
+                offText = newValue;
+            }
+
+            updateState();
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 1;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "indicator",
+        display_name: "Indicator Light",
+        settings: [
+	        {
+	            name: "title",
+	            display_name: "Title",
+	            type: "text"
+	        },
+	        {
+	            name: "value",
+	            display_name: "Value",
+	            type: "calculated"
+	        },
+	        {
+	            name: "on_text",
+	            display_name: "On Text",
+	            type: "calculated"
+	        },
+	        {
+	            name: "off_text",
+	            display_name: "Off Text",
+	            type: "calculated"
+	        }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new indicatorWidget(settings));
+        }
+    });
+
+    freeboard.addStyle('.gm-style-cc a', "text-shadow:none;");
+
+    var googleMapWidget = function (settings) {
+        var self = this;
+        var currentSettings = settings;
+        var map;
+        var marker;
+        var currentPosition = {};
+
+        function updatePosition() {
+            if (map && marker && currentPosition.lat && currentPosition.lon) {
+                var newLatLon = new google.maps.LatLng(currentPosition.lat, currentPosition.lon);
+                marker.setPosition(newLatLon);
+                map.panTo(newLatLon);
+            }
+        }
+
+        this.render = function (element) {
+            function initializeMap() {
+                var mapOptions = {
+                    zoom: 13,
+                    center: new google.maps.LatLng(37.235, -115.811111),
+                    disableDefaultUI: true,
+                    draggable: false,
+                    styles: [
+                        {"featureType": "water", "elementType": "geometry", "stylers": [
+                            {"color": "#2a2a2a"}
+                        ]},
+                        {"featureType": "landscape", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 20}
+                        ]},
+                        {"featureType": "road.highway", "elementType": "geometry.fill", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 17}
+                        ]},
+                        {"featureType": "road.highway", "elementType": "geometry.stroke", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 29},
+                            {"weight": 0.2}
+                        ]},
+                        {"featureType": "road.arterial", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 18}
+                        ]},
+                        {"featureType": "road.local", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 16}
+                        ]},
+                        {"featureType": "poi", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 21}
+                        ]},
+                        {"elementType": "labels.text.stroke", "stylers": [
+                            {"visibility": "on"},
+                            {"color": "#000000"},
+                            {"lightness": 16}
+                        ]},
+                        {"elementType": "labels.text.fill", "stylers": [
+                            {"saturation": 36},
+                            {"color": "#000000"},
+                            {"lightness": 40}
+                        ]},
+                        {"elementType": "labels.icon", "stylers": [
+                            {"visibility": "off"}
+                        ]},
+                        {"featureType": "transit", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 19}
+                        ]},
+                        {"featureType": "administrative", "elementType": "geometry.fill", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 20}
+                        ]},
+                        {"featureType": "administrative", "elementType": "geometry.stroke", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 17},
+                            {"weight": 1.2}
+                        ]}
+                    ]
+                };
+
+                map = new google.maps.Map(element, mapOptions);
+
+                google.maps.event.addDomListener(element, 'mouseenter', function (e) {
+                    e.cancelBubble = true;
+                    if (!map.hover) {
+                        map.hover = true;
+                        map.setOptions({zoomControl: true});
+                    }
+                });
+
+                google.maps.event.addDomListener(element, 'mouseleave', function (e) {
+                    if (map.hover) {
+                        map.setOptions({zoomControl: false});
+                        map.hover = false;
+                    }
+                });
+
+                marker = new google.maps.Marker({map: map});
+
+                updatePosition();
+            }
+
+            if (window.google && window.google.maps) {
+                initializeMap();
+            }
+            else {
+                window.gmap_initialize = initializeMap;
+                head.js("https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=gmap_initialize");
+            }
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "lat") {
+                currentPosition.lat = newValue;
+            }
+            else if (settingName == "lon") {
+                currentPosition.lon = newValue;
+            }
+
+            updatePosition();
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "google_map",
+        display_name: "Google Map",
+        fill_size: true,
+        settings: [
+            {
+                name: "lat",
+                display_name: "Latitude",
+                type: "calculated"
+            },
+            {
+                name: "lon",
+                display_name: "Longitude",
+                type: "calculated"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new googleMapWidget(settings));
+        }
+    });
+
+    freeboard.addStyle('.html-widget', "white-space:normal;width:100%;height:100%");
+
+    var htmlWidget = function (settings) {
+        var self = this;
+        var htmlElement = $('<div class="html-widget"></div>');
+        var currentSettings = settings;
+
+        this.render = function (element) {
+            $(element).append(htmlElement);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "html") {
+                htmlElement.html(newValue);
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return Number(currentSettings.height);
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        "type_name": "html",
+        "display_name": "HTML",
+        "fill_size": true,
+        "settings": [
+            {
+                "name": "html",
+                "display_name": "HTML",
+                "type": "calculated",
+                "description": "Can be literal HTML, or javascript that outputs HTML."
+            },
+            {
+                "name": "height",
+                "display_name": "Height Blocks",
+                "type": "number",
+                "default_value": 4,
+                "description": "A height block is around 60 pixels"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new htmlWidget(settings));
+        }
+    });
+
+}());
diff --git a/WebSites/errors/403/js/freeboard_plugins.min.js b/WebSites/errors/403/js/freeboard_plugins.min.js
new file mode 100644
index 0000000..57d8948
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard_plugins.min.js
@@ -0,0 +1,2 @@
+function DialogBox(a,b,c,d,e){function f(){g.fadeOut(200,function(){$(this).remove()})}var g=$('<div id="modal_overlay" style="display:none;"></div>'),h=$('<div class="modal"></div>');h.append('<header><h2 class="title">'+b+"</h2></header>"),$("<section></section>").appendTo(h).append(a);var i=$("<footer></footer>").appendTo(h);c&&$('<span id="dialog-ok" class="text-button">'+c+"</span>").appendTo(i).click(function(){var a=!1;_.isFunction(e)&&(a=e()),a||f()}),d&&$('<span id="dialog-cancel" class="text-button">'+d+"</span>").appendTo(i).click(function(){f()}),g.append(h),$("body").append(g),g.fadeIn(200)}function FreeboardModel(a,b,c){var d=this;this.version=0,this.isEditing=ko.observable(!1),this.allow_edit=ko.observable(!1),this.allow_edit.subscribe(function(a){a?$("#main-header").show():$("#main-header").hide()}),this.header_image=ko.observable(),this.plugins=ko.observableArray(),this.datasources=ko.observableArray(),this.panes=ko.observableArray(),this.datasourceData={},this.processDatasourceUpdate=function(a,b){var c=a.name();d.datasourceData[c]=b,_.each(d.panes(),function(a){_.each(a.widgets(),function(a){a.processDatasourceUpdate(c)})})},this._datasourceTypes=ko.observable(),this.datasourceTypes=ko.computed({read:function(){d._datasourceTypes();var b=[];return _.each(a,function(a){var c=a.type_name,d=c;_.isUndefined(a.display_name)||(d=a.display_name),b.push({name:c,display_name:d})}),b}}),this._widgetTypes=ko.observable(),this.widgetTypes=ko.computed({read:function(){d._widgetTypes();var a=[];return _.each(b,function(b){var c=b.type_name,d=c;_.isUndefined(b.display_name)||(d=b.display_name),a.push({name:c,display_name:d})}),a}}),this.addPluginSource=function(a){a&&-1==d.plugins.indexOf(a)&&d.plugins.push(a)},this.serialize=function(){var a=[];_.each(d.panes(),function(b){a.push(b.serialize())});var b=[];return _.each(d.datasources(),function(a){b.push(a.serialize())}),{version:1,header_image:d.header_image(),allow_edit:d.allow_edit(),plugins:d.plugins(),panes:a,datasources:b,columns:c.getUserColumns()}},this.deserialize=function(e,f){function g(){c.setUserColumns(e.columns),_.isUndefined(e.allow_edit)?d.allow_edit(!0):d.allow_edit(e.allow_edit),d.version=e.version||0,d.header_image(e.header_image),_.each(e.datasources,function(b){var c=new DatasourceModel(d,a);c.deserialize(b),d.addDatasource(c)});var g=_.sortBy(e.panes,function(a){return c.getPositionForScreenSize(a).row});_.each(g,function(a){var c=new PaneModel(d,b);c.deserialize(a),d.panes.push(c)}),d.allow_edit()&&0==d.panes().length&&d.setEditing(!0),_.isFunction(f)&&f(),c.processResize(!0)}d.clearDashboard(),_.each(e.plugins,function(a){d.addPluginSource(a)}),_.isArray(e.plugins)&&e.plugins.length>0?head.js(e.plugins,function(){g()}):g()},this.clearDashboard=function(){c.removeAllPanes(),_.each(d.datasources(),function(a){a.dispose()}),_.each(d.panes(),function(a){a.dispose()}),d.plugins.removeAll(),d.datasources.removeAll(),d.panes.removeAll()},this.loadDashboard=function(a,b){c.showLoadingIndicator(!0),d.deserialize(a,function(){c.showLoadingIndicator(!1),_.isFunction(b)&&b(),freeboard.emit("dashboard_loaded")})},this.loadDashboardFromLocalFile=function(){if(window.File&&window.FileReader&&window.FileList&&window.Blob){var a=document.createElement("input");a.type="file",$(a).on("change",function(a){var b=a.target.files;if(b&&b.length>0){var c=b[0],e=new FileReader;e.addEventListener("load",function(a){var b=a.target,c=JSON.parse(b.result);d.loadDashboard(c),d.setEditing(!1)}),e.readAsText(c)}}),$(a).trigger("click")}else alert("Unable to load a file in this browser.")},this.saveDashboardClicked=function(){var a=$(event.currentTarget),b=a.data("siblings-shown")||!1;b?$(event.currentTarget).siblings("label").fadeOut("slow"):$(event.currentTarget).siblings("label").fadeIn("slow"),a.data("siblings-shown",!b)},this.saveDashboard=function(a,b){var c=$(b.currentTarget).data("pretty"),e="application/octet-stream",f=document.createElement("a");if(c)var g=new Blob([JSON.stringify(d.serialize(),null,"\t")],{type:e});else var g=new Blob([JSON.stringify(d.serialize())],{type:e});document.body.appendChild(f),f.href=window.URL.createObjectURL(g),f.download="dashboard.json",f.target="_self",f.click()},this.addDatasource=function(a){d.datasources.push(a)},this.deleteDatasource=function(a){delete d.datasourceData[a.name()],a.dispose(),d.datasources.remove(a)},this.createPane=function(){var a=new PaneModel(d,b);d.addPane(a)},this.addGridColumnLeft=function(){c.addGridColumnLeft()},this.addGridColumnRight=function(){c.addGridColumnRight()},this.subGridColumnLeft=function(){c.subGridColumnLeft()},this.subGridColumnRight=function(){c.subGridColumnRight()},this.addPane=function(a){d.panes.push(a)},this.deletePane=function(a){a.dispose(),d.panes.remove(a)},this.deleteWidget=function(a){ko.utils.arrayForEach(d.panes(),function(b){b.widgets.remove(a)}),a.dispose()},this.setEditing=function(a,b){if(d.allow_edit()||!a){d.isEditing(a),_.isUndefined(b)&&(b=!0);var e=b?250:0,f=$("#admin-bar").outerHeight();a?($("#toggle-header-icon").addClass("icon-chevron-up").removeClass("icon-wrench"),$(".gridster .gs_w").css({cursor:"pointer"}),$("#main-header").animate({top:"0px"},e),$("#board-content").animate({top:f+20+"px"},e),$("#main-header").data().shown=!0,c.attachWidgetEditIcons($(".sub-section")),c.enableGrid()):($("#toggle-header-icon").addClass("icon-wrench").removeClass("icon-chevron-up"),$(".gridster .gs_w").css({cursor:"default"}),$("#main-header").animate({top:"-"+f+"px"},e),$("#board-content").animate({top:"20"},e),$("#main-header").data().shown=!1,$(".sub-section").unbind(),c.disableGrid()),c.showPaneEditIcons(a,b)}},this.toggleEditing=function(){var a=!d.isEditing();d.setEditing(a)}}function FreeboardUI(){function a(a){var b=e(),c=function(){};a&&(c=function(a){var c=this,d=ko.dataFor(c),e=q(d);$(c).attr("data-sizex",Math.min(d.col_width(),b,r.cols)).attr("data-row",e.row).attr("data-col",e.col),d.processSizeChange()}),f(Math.min(b,w)),g(c),d()}function b(a){f(r.cols+1)&&g(function(){var b,c=this,d=ko.dataFor(c),e=r.cols>1?r.cols-1:1,f=d.col[e],g=d.row[e];a?(leftPreviewCol=!0,b={row:g,col:f<r.cols?f+1:r.cols}):(rightPreviewCol=!0,b={row:g,col:f}),$(c).attr("data-sizex",Math.min(d.col_width(),r.cols)).attr("data-row",b.row).attr("data-col",b.col)}),d(),w=r.cols}function c(a){f(r.cols-1)&&g(function(){var b,c=this,d=ko.dataFor(c),e=r.cols+1,f=d.col[e],g=d.row[e];if(a){var h=f>1?f-1:1;b={row:g,col:h}}else{var h=f<=r.cols?f:r.cols;b={row:g,col:h}}$(c).attr("data-sizex",Math.min(d.col_width(),r.cols)).attr("data-row",b.row).attr("data-col",b.col)}),d(),w=r.cols}function d(){var a=$(".column-tool"),b=$("#board-content").width(),c=Math.floor(b/v);r.cols<=u?a.addClass("min"):a.removeClass("min"),r.cols>=c?a.addClass("max"):a.removeClass("max")}function e(){var a=$("#board-content").width();return Math.floor(a/v)}function f(a){(void 0===a||a<u)&&(a=u);var b=e();a>b&&(a=b);var c=v*a+a;return $(".responsive-column-width").css("max-width",c),a!==r.cols}function g(a){var b=r.$el;b.find("> li").unbind().removeData(),$(".responsive-column-width").css("width",""),r.generate_grid_and_stylesheet(),b.find("> li").each(a),r.init(),$(".responsive-column-width").css("width",r.cols*t+r.cols*s*2)}function h(){return w}function i(a){w=Math.max(u,a)}function j(a,b,c){var d=q(b),e=d.col,f=d.row,g=Number(b.width()),h=Number(b.getCalculatedHeight());r.add_widget(a,g,h,e,f),c&&n(!0),l(b,f,e),$(a).attrchange({trackValues:!0,callback:function(a){"data-row"==a.attributeName?l(b,Number(a.newValue),void 0):"data-col"==a.attributeName&&l(b,void 0,Number(a.newValue))}})}function k(a,b){var c=b.getCalculatedHeight(),d=Number($(a).attr("data-sizey")),e=Number($(a).attr("data-sizex"));c==d&&b.col_width()==e||r.resize_widget($(a),b.col_width(),c,function(){r.set_dom_grid_height()})}function l(a,b,c){var d=r.cols;_.isUndefined(b)||(a.row[d]=b),_.isUndefined(c)||(a.col[d]=c)}function m(a){a?x.fadeOut(0).appendTo("body").fadeIn(500):x.fadeOut(500).remove()}function n(a,b){_.isUndefined(b)&&(b=!0);var c=b?250:0;a?($(".pane-tools").fadeIn(c),$("#column-tools").fadeIn(c)):($(".pane-tools").fadeOut(c),$("#column-tools").fadeOut(c))}function o(a){$(a).hover(function(){p(this,!0)},function(){p(this,!1)})}function p(a,b){b?$(a).find(".sub-section-tools").fadeIn(250):$(a).find(".sub-section-tools").fadeOut(250)}function q(a){var b=r.cols;if(_.isNumber(a.row)&&_.isNumber(a.col)){var c={};c[b]=a.row,a.row=c,c={},c[b]=a.col,a.col=c}var d=1,e=1e3;for(var f in a.col){if(f==b)return{row:a.row[f],col:a.col[f]};if(a.col[f]>b)d=b;else{var g=b-f;g<e&&(d=f,e=g)}}return d in a.col&&d in a.row?{row:a.row[d],col:a.col[d]}:{row:1,col:d}}var r,s=10,t=300,u=3,v=s+t+s,w=u,x=$('<div class="wrapperloading"><div class="loading up" ></div><div class="loading down"></div></div>');return ko.bindingHandlers.grid={init:function(b,c,d,e,f){r=$(b).gridster({widget_margins:[s,s],widget_base_dimensions:[t,10],resize:{enabled:!1,axes:"x"}}).data("gridster"),a(!1),r.disable()}},{showLoadingIndicator:function(a){m(a)},showPaneEditIcons:function(a,b){n(a,b)},attachWidgetEditIcons:function(a){o(a)},getPositionForScreenSize:function(a){return q(a)},processResize:function(b){a(b)},disableGrid:function(){r.disable()},enableGrid:function(){r.enable()},addPane:function(a,b,c){j(a,b,c)},updatePane:function(a,b){k(a,b)},removePane:function(a){r.remove_widget(a)},removeAllPanes:function(){r.remove_all_widgets()},addGridColumnLeft:function(){b(!0)},addGridColumnRight:function(){b(!1)},subGridColumnLeft:function(){c(!0)},subGridColumnRight:function(){c(!1)},getUserColumns:function(){return h()},setUserColumns:function(a){i(a)}}}function PaneModel(a,b){var c=this;this.title=ko.observable(),this.width=ko.observable(1),this.row={},this.col={},this.col_width=ko.observable(1),this.col_width.subscribe(function(a){c.processSizeChange()}),this.widgets=ko.observableArray(),this.addWidget=function(a){this.widgets.push(a)},this.widgetCanMoveUp=function(a){return c.widgets.indexOf(a)>=1},this.widgetCanMoveDown=function(a){return c.widgets.indexOf(a)<c.widgets().length-1},this.moveWidgetUp=function(a){if(c.widgetCanMoveUp(a)){var b=c.widgets.indexOf(a),d=c.widgets();c.widgets.splice(b-1,2,d[b],d[b-1])}},this.moveWidgetDown=function(a){if(c.widgetCanMoveDown(a)){var b=c.widgets.indexOf(a),d=c.widgets();c.widgets.splice(b,2,d[b+1],d[b])}},this.processSizeChange=function(){setTimeout(function(){_.each(c.widgets(),function(a){a.processSizeChange()})},1e3)},this.getCalculatedHeight=function(){var a=_.reduce(c.widgets(),function(a,b){return a+b.height()},0);a*=6,a+=3,a*=10;var b=Math.ceil((a+20)/30);return Math.max(4,b)},this.serialize=function(){var a=[];return _.each(c.widgets(),function(b){a.push(b.serialize())}),{title:c.title(),width:c.width(),row:c.row,col:c.col,col_width:Number(c.col_width()),widgets:a}},this.deserialize=function(d){c.title(d.title),c.width(d.width),c.row=d.row,c.col=d.col,c.col_width(d.col_width||1),_.each(d.widgets,function(d){var e=new WidgetModel(a,b);e.deserialize(d),c.widgets.push(e)})},this.dispose=function(){_.each(c.widgets(),function(a){a.dispose()})}}function WidgetModel(a,b){function c(){_.isUndefined(d.widgetInstance)||(_.isFunction(d.widgetInstance.onDispose)&&d.widgetInstance.onDispose(),d.widgetInstance=void 0)}var d=this;this.datasourceRefreshNotifications={},this.calculatedSettingScripts={},this.title=ko.observable(),this.fillSize=ko.observable(!1),this.type=ko.observable(),this.type.subscribe(function(a){function e(){f.newInstance(d.settings(),function(a){d.fillSize(!0===f.fill_size),d.widgetInstance=a,d.shouldRender(!0),d._heightUpdate.valueHasMutated()})}if(c(),a in b&&_.isFunction(b[a].newInstance)){var f=b[a];f.external_scripts?head.js(f.external_scripts.slice(0),e):e()}}),this.settings=ko.observable({}),this.settings.subscribe(function(a){!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.onSettingsChanged)&&d.widgetInstance.onSettingsChanged(a),d.updateCalculatedSettings(),d._heightUpdate.valueHasMutated()}),this.processDatasourceUpdate=function(a){var b=d.datasourceRefreshNotifications[a];_.isArray(b)&&_.each(b,function(a){d.processCalculatedSetting(a)})},this.callValueFunction=function(b){return b.call(void 0,a.datasourceData)},this.processSizeChange=function(){!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.onSizeChanged)&&d.widgetInstance.onSizeChanged()},this.processCalculatedSetting=function(a){if(_.isFunction(d.calculatedSettingScripts[a])){var b=void 0;try{b=d.callValueFunction(d.calculatedSettingScripts[a])}catch(e){var c=d.settings()[a];e instanceof ReferenceError&&/^\w+$/.test(c)&&(b=c)}if(!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.onCalculatedValueChanged)&&!_.isUndefined(b))try{d.widgetInstance.onCalculatedValueChanged(a,b)}catch(a){console.log(a.toString())}}},this.updateCalculatedSettings=function(){if(d.datasourceRefreshNotifications={},d.calculatedSettingScripts={},!_.isUndefined(d.type())){var a=b[d.type()].settings,c=new RegExp("datasources.([\\w_-]+)|datasources\\[['\"]([^'\"]+)","g"),e=d.settings();_.each(a,function(a){if("calculated"==a.type){var b=e[a.name];if(!_.isUndefined(b)){_.isArray(b)&&(b="["+b.join(",")+"]"),(b.match(/;/g)||[]).length<=1&&-1==b.indexOf("return")&&(b="return "+b);var f;try{f=new Function("datasources",b)}catch(b){var g=e[a.name].replace(/"/g,'\\"').replace(/[\r\n]/g," \\\n");f=new Function("datasources",'return "'+g+'";')}d.calculatedSettingScripts[a.name]=f,d.processCalculatedSetting(a.name);for(var h;h=c.exec(b);){var i=h[1]||h[2],j=d.datasourceRefreshNotifications[i];_.isUndefined(j)&&(j=[],d.datasourceRefreshNotifications[i]=j),-1==_.indexOf(j,a.name)&&j.push(a.name)}}}})}},this._heightUpdate=ko.observable(),this.height=ko.computed({read:function(){return d._heightUpdate(),!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.getHeight)?d.widgetInstance.getHeight():1}}),this.shouldRender=ko.observable(!1),this.render=function(a){d.shouldRender(!1),!_.isUndefined(d.widgetInstance)&&_.isFunction(d.widgetInstance.render)&&(d.widgetInstance.render(a),d.updateCalculatedSettings())},this.dispose=function(){},this.serialize=function(){return{title:d.title(),type:d.type(),settings:d.settings()}},this.deserialize=function(a){d.title(a.title),d.settings(a.settings),d.type(a.type)}}DatasourceModel=function(a,b){function c(){_.isUndefined(d.datasourceInstance)||(_.isFunction(d.datasourceInstance.onDispose)&&d.datasourceInstance.onDispose(),d.datasourceInstance=void 0)}var d=this;this.name=ko.observable(),this.latestData=ko.observable(),this.settings=ko.observable({}),this.settings.subscribe(function(a){!_.isUndefined(d.datasourceInstance)&&_.isFunction(d.datasourceInstance.onSettingsChanged)&&d.datasourceInstance.onSettingsChanged(a)}),this.updateCallback=function(b){a.processDatasourceUpdate(d,b),d.latestData(b);var c=new Date;d.last_updated(c.toLocaleTimeString())},this.type=ko.observable(),this.type.subscribe(function(a){function e(){f.newInstance(d.settings(),function(a){d.datasourceInstance=a,a.updateNow()},d.updateCallback)}if(c(),a in b&&_.isFunction(b[a].newInstance)){var f=b[a];f.external_scripts?head.js(f.external_scripts.slice(0),e):e()}}),this.last_updated=ko.observable("never"),this.last_error=ko.observable(),this.serialize=function(){return{name:d.name(),type:d.type(),settings:d.settings()}},this.deserialize=function(a){d.settings(a.settings),d.name(a.name),d.type(a.type)},this.getDataRepresentation=function(a){return new Function("data","return "+a+";").call(void 0,d.latestData())},this.updateNow=function(){!_.isUndefined(d.datasourceInstance)&&_.isFunction(d.datasourceInstance.updateNow)&&d.datasourceInstance.updateNow()},this.dispose=function(){c()}},DeveloperConsole=function(a){function b(){function b(a){var b=$("<tr></tr>"),d=$('<ul class="board-toolbar"></ul>'),e=$('<input class="table-row-value" style="width:100%;" type="text">'),f=$('<li><i class="icon-trash icon-white"></i></li>').click(function(a){c=_.without(c,e),b.remove()});c.push(e),a&&e.val(a),d.append(f),g.append(b.append($("<td></td>").append(e)).append($('<td class="table-row-operation">').append(d)))}var c=[],d=$("<div></div>"),e=$('<div class="table-operation text-button">ADD</div>'),f=$('<table class="table table-condensed sub-table"></table>');f.append($('<thead style=""><tr><th>Plugin Script URL</th></tr></thead>'));var g=$("<tbody></tbody>");f.append(g),d.append($("<p>Here you can add references to other scripts to load datasource or widget plugins.</p>")).append(f).append(e).append('<p>To learn how to build plugins for freeboard, please visit <a target="_blank" href="http://freeboard.github.io/freeboard/docs/plugin_example.html">http://freeboard.github.io/freeboard/docs/plugin_example.html</a></p>'),_.each(a.plugins(),function(a){b(a)}),e.click(function(a){b()}),new DialogBox(d,"Developer Console","OK",null,function(){_.each(a.plugins(),function(a){$('script[src^="'+a+'"]').remove()}),a.plugins.removeAll(),_.each(c,function(b){var c=b.val();c&&c.length>0&&(a.addPluginSource(c),head.js(c+"?"+Date.now()))})})}return{showDeveloperConsole:function(){b()}}},JSEditor=function(){function a(a){c=a}function b(a,b){var c='// Example: Convert temp from C to F and truncate to 2 decimal places.\n// return (datasources["MyDatasource"].sensor.tempInF * 1.8 + 32).toFixed(2);';a||(a=c);var d=$('<div class="code-window"></div>'),e=$('<div class="code-mirror-wrapper"></div>'),f=$('<div class="code-window-footer"></div>'),g=$('<div class="code-window-header cm-s-ambiance">This javascript will be re-evaluated any time a datasource referenced here is updated, and the value you <code><span class="cm-keyword">return</span></code> will be displayed in the widget. You can assume this javascript is wrapped in a function of the form <code><span class="cm-keyword">function</span>(<span class="cm-def">datasources</span>)</code> where datasources is a collection of javascript objects (keyed by their name) corresponding to the most current data in a datasource.</div>');d.append([g,e,f]),$("body").append(d);var h=CodeMirror(e.get(0),{value:a,mode:"javascript",theme:"ambiance",indentUnit:4,lineNumbers:!0,matchBrackets:!0,autoCloseBrackets:!0}),i=$('<span id="dialog-cancel" class="text-button">Close</span>').click(function(){if(b){var a=h.getValue();a===c&&(a=""),b(a),d.remove()}});f.append(i)}var c="";return{displayJSEditor:function(a,c){b(a,c)},setAssetRoot:function(b){a(b)}}},PluginEditor=function(a,b){function c(a,b){var c=$('<div class="validation-error"></div>').html(b);$("#setting-value-container-"+a).append(c)}function d(){$("#setting-row-instance-name").length?$("#setting-row-instance-name").nextAll().remove():$("#setting-row-plugin-types").nextAll().remove()}function e(a){return!isNaN(parseFloat(a))&&isFinite(a)}function f(c,d,e,f,g){var h=$("<textarea></textarea>");e.multi_input?h.change(function(){var a=[];$(c).find("textarea").each(function(){var b=$(this).val();b&&(a=a.concat(b))}),d.settings[e.name]=a}):h.change(function(){d.settings[e.name]=$(this).val()}),f&&h.val(f),b.createValueEditor(h);var i=$('<ul class="board-toolbar datasource-input-suffix"></ul>'),j=$('<div class="calculated-setting-row"></div>');j.append(h).append(i);var k=$('<li><i class="icon-plus icon-white"></i><label>DATASOURCE</label></li>').mousedown(function(a){a.preventDefault(),$(h).val("").focus().insertAtCaret('datasources["').trigger("freeboard-eval")});i.append(k);var l=$('<li><i class="icon-fullscreen icon-white"></i><label>.JS EDITOR</label></li>').mousedown(function(b){b.preventDefault(),a.displayJSEditor(h.val(),function(a){h.val(a),h.change()})});if(i.append(l),g){var m=$('<li class="remove-setting-row"><i class="icon-minus icon-white"></i><label></label></li>').mousedown(function(a){a.preventDefault(),j.remove(),$(c).find("textarea:first").change()});i.prepend(m)}$(c).append(j)}function g(a,b,g,h,i){function j(a,b){var c=$('<div id="setting-row-'+a+'" class="form-row"></div>').appendTo(n);return c.append('<div class="form-label"><label class="control-label">'+b+"</label></div>"),$('<div id="setting-value-container-'+a+'" class="form-value"></div>').appendTo(c)}function k(a,b,c){_.each(a,function(a){function d(){m.settings[a.name].length>0?n.show():n.hide()}function e(b){var c=$("<tr></tr>").appendTo(p),e={};_.isArray(m.settings[a.name])||(m.settings[a.name]=[]),m.settings[a.name].push(e),_.each(a.settings,function(a){var d=$("<td></td>").appendTo(c),f="";_.isUndefined(b[a.name])||(f=b[a.name]),e[a.name]=f,$('<input class="table-row-value" type="text">').appendTo(d).val(f).change(function(){e[a.name]=$(this).val()})}),c.append($('<td class="table-row-operation"></td>').append($('<ul class="board-toolbar"></ul>').append($("<li></li>").append($('<i class="icon-trash icon-white"></i>').click(function(){var b=m.settings[a.name].indexOf(e);-1!=b&&(m.settings[a.name].splice(b,1),c.remove(),d())}))))),k.scrollTop(k[0].scrollHeight),d()}!_.isUndefined(a.default_value)&&_.isUndefined(h[a.name])&&(h[a.name]=a.default_value);var g=a.name;_.isUndefined(a.display_name)||(g=a.display_name);var i=j(a.name,g);switch(a.type){case"array":var k=$('<div class="form-table-value-subtable"></div>').appendTo(i),l=$('<table class="table table-condensed sub-table"></table>').appendTo(k),n=$("<thead></thead>").hide().appendTo(l),o=$("<tr></tr>").appendTo(n),p=$("<tbody></tbody>").appendTo(l),q=[];_.each(a.settings,function(a){var b=a.name;_.isUndefined(a.display_name)||(b=a.display_name),$("<th>"+b+"</th>").appendTo(o)}),a.name in h&&(q=h[a.name]),$('<div class="table-operation text-button">ADD</div>').appendTo(i).click(function(){var b={};_.each(a.settings,function(a){b[a.name]=""}),e(b)}),_.each(q,function(a,b){e(a)});break;case"boolean":m.settings[a.name]=h[a.name];var r=$('<div class="onoffswitch"><label class="onoffswitch-label" for="'+a.name+'-onoff"><div class="onoffswitch-inner"><span class="on">YES</span><span class="off">NO</span></div><div class="onoffswitch-switch"></div></label></div>').appendTo(i),s=$('<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="'+a.name+'-onoff">').prependTo(r).change(function(){m.settings[a.name]=this.checked});a.name in h&&s.prop("checked",h[a.name]);break;case"option":var t=h[a.name],s=$("<select></select>").appendTo($('<div class="styled-select"></div>').appendTo(i)).change(function(){m.settings[a.name]=$(this).val()});_.each(a.options,function(a){var b,c;_.isObject(a)?(b=a.name,c=a.value):b=a,_.isUndefined(c)&&(c=b),_.isUndefined(t)&&(t=c),$("<option></option>").text(b).attr("value",c).appendTo(s)}),m.settings[a.name]=t,a.name in h&&s.val(h[a.name]);break;default:if(m.settings[a.name]=h[a.name],"calculated"==a.type){if(a.name in h){var u=h[a.name];if(a.multi_input&&_.isArray(u))for(var v=!1,w=0;w<u.length;w++)f(i,m,a,u[w],v),v=!0;else f(i,m,a,u,!1)}else f(i,m,a,null,!1);if(a.multi_input){var x=$('<ul class="board-toolbar"><li class="add-setting-row"><i class="icon-plus icon-white"></i><label>ADD</label></li></ul>').mousedown(function(b){b.preventDefault(),f(i,m,a,null,!0)});$(i).siblings(".form-label").append(x)}}else{var s=$('<input type="text">').appendTo(i).change(function(){"number"==a.type?m.settings[a.name]=Number($(this).val()):m.settings[a.name]=$(this).val()});if(a.name in h&&s.val(h[a.name]),b&&a.typeahead_data_field&&s.addClass("typeahead_data_field-"+a.typeahead_data_field),b&&a.typeahead_field){var y=[];s.keyup(function(a){a.which>=65&&a.which<=91&&s.trigger("change")}),$(s).autocomplete({source:y,select:function(a,b){s.val(b.item.value),s.trigger("change")}}),s.change(function(d){var e=s.val(),f=_.template(b)({input:e});$.get(f,function(b){if(c&&(b=b[c]),b=_.select(b,function(b){return b[a.typeahead_field][0]==e[0]}),y=_.map(b,function(b){return b[a.typeahead_field]}),$(s).autocomplete("option","source",y),1==b.length){b=b[0];for(var d in b)if(b.hasOwnProperty(d)){var f=$(_.template("input.typeahead_data_field-<%= field %>")({field:d}));f&&(f.val(b[d]),f.val()!=s.val()&&f.trigger("change"))}}})})}}}_.isUndefined(a.suffix)||i.append($('<div class="input-suffix">'+a.suffix+"</div>")),_.isUndefined(a.description)||i.append($('<div class="setting-description">'+a.description+"</div>"))})}var l,m={type:g,settings:{}},n=$("<div></div>"),o=$('<div id="plugin-description"></div>').hide();n.append(o),new DialogBox(n,a,"Save","Cancel",function(){$(".validation-error").remove();for(var a=0;a<l.settings.length;a++){var b=l.settings[a];if(b.required&&(_.isUndefined(m.settings[b.name])||""==m.settings[b.name]))return c(b.name,"This is required."),!0;if("integer"==b.type&&m.settings[b.name]%1!=0)return c(b.name,"Must be a whole number."),!0;if("number"==b.type&&!e(m.settings[b.name]))return c(b.name,"Must be a number."),!0}_.isFunction(i)&&i(m)});var p,q=_.keys(b);if(q.length>1){var r=j("plugin-types","Type");p=$("<select></select>").appendTo($('<div class="styled-select"></div>').appendTo(r)),p.append($("<option>Select a type...</option>").attr("value","undefined")),_.each(b,function(a){p.append($("<option></option>").text(a.display_name).attr("value",a.type_name))}),p.change(function(){m.type=$(this).val(),m.settings={},d(),l=b[p.val()],_.isUndefined(l)?($("#setting-row-instance-name").hide(),$("#dialog-ok").hide()):($("#setting-row-instance-name").show(),l.description&&l.description.length>0?o.html(l.description).show():o.hide(),$("#dialog-ok").show(),k(l.settings,l.typeahead_source,l.typeahead_data_segment))})}else 1==q.length&&(l=b[q[0]],m.type=l.type_name,m.settings={},k(l.settings));p&&(_.isUndefined(g)?($("#setting-row-instance-name").hide(),$("#dialog-ok").hide()):($("#dialog-ok").show(),p.val(g).trigger("change")))}return{createPluginEditor:function(a,b,c,d,e,f){g(a,b,c,d,e,f)}}},ValueEditor=function(a){function b(a,b){return!(!_.isArray(a)&&!_.isObject(a))||c(a,b)}function c(a,b){switch(b){case o.ANY:return!0;case o.ARRAY:return _.isArray(a);case o.OBJECT:return _.isObject(a);case o.STRING:return _.isString(a);case o.NUMBER:return _.isNumber(a);case o.BOOLEAN:return _.isBoolean(a)}}function d(a,b){$(a).parent().find(".validation-error").remove(),c(n,b)||$(a).parent().append("<div class='validation-error'>This field expects an expression that evaluates to type "+b+".</div>")}function e(a){var b=($(a).val().match(/\n/g)||[]).length,c=Math.min(200,20*(b+1));$(a).css({height:c+"px"})}function f(a,c,d){var e=j.exec(a),f=[];if(e)if(""==e[1])_.each(c,function(a){f.push({value:a.name(),entity:void 0,precede_char:"",follow_char:'"]'})});else if(""!=e[1]&&_.isUndefined(e[2])){var g=e[1];_.each(c,function(a){var b=a.name();b!=g&&0==b.indexOf(g)&&f.push({value:b,entity:void 0,precede_char:"",follow_char:'"]'})})}else{var h=_.find(c,function(a){return a.name()===e[1]});if(!_.isUndefined(h)){var i="data",k="";if(!_.isUndefined(e[2])){var l=e[3].lastIndexOf("]")+1;i+=e[3].substring(0,l),k=e[3].substring(l,e[3].length),k=k.replace(/^[\[\"]*/,""),k=k.replace(/[\"\]]*$/,"")}var o=h.getDataRepresentation(i);if(n=o,_.isArray(o)){for(var p=0;p<o.length;p++)if(0==p.toString().indexOf(k)){var q=o[p];b(q,d)&&f.push({value:p,entity:q,precede_char:"[",follow_char:"]",preview:q.toString()})}}else _.isObject(o)&&_.each(o,function(a,c){0==c.indexOf(k)&&b(a,d)&&f.push({value:c,entity:a,precede_char:'["',follow_char:'"]'})})}}m=f}function g(b,c){var e=$(b).val().substring(0,$(b).getCaretPosition());if(e=e.replace(String.fromCharCode(160)," "),f(e,a.datasources(),c),m.length>0){k||(k=$('<ul id="value-selector" class="value-dropdown"></ul>').insertAfter(b).width($(b).outerWidth()-2).css("left",$(b).position().left).css("top",$(b).position().top+$(b).outerHeight()-1)),k.empty(),k.scrollTop(0);var g=!0;l=0,_.each(m,function(a,c){var d=h(b,e,a,c);g&&($(d).addClass("selected"),g=!1)})}else d(b,c),$(b).next("ul#value-selector").remove(),k=null,l=-1}function h(a,b,c,d){var e=c.value;return c.preview&&(e=e+"<span class='preview'>"+c.preview+"</span>"),$("<li>"+e+"</li>").appendTo(k).mouseenter(function(){$(this).trigger("freeboard-select")}).mousedown(function(a){$(this).trigger("freeboard-insertValue"),a.preventDefault()}).data("freeboard-optionIndex",d).data("freeboard-optionValue",c.value).bind("freeboard-insertValue",function(){var d=c.value;d=c.precede_char+d+c.follow_char;var e=b.lastIndexOf("]");-1!=e?$(a).replaceTextAt(e+1,$(a).val().length,d):$(a).insertAtCaret(d),n=c.entity,$(a).triggerHandler("mouseup")}).bind("freeboard-select",function(){$(this).parent().find("li.selected").removeClass("selected"),$(this).addClass("selected"),l=$(this).data("freeboard-optionIndex")})}function i(a,b){$(a).addClass("calculated-value-input").bind("keyup mouseup freeboard-eval",function(c){if(k&&"keyup"==c.type&&(38==c.keyCode||40==c.keyCode||13==c.keyCode))return void c.preventDefault();g(a,b)}).focus(function(){$(a).css({"z-index":3001}),e(a)}).focusout(function(){d(a,b),$(a).css({height:"","z-index":3e3}),$(a).next("ul#value-selector").remove(),k=null,l=-1}).bind("keydown",function(a){if(k)if(38==a.keyCode||40==a.keyCode){a.preventDefault();var b=$(k).find("li");38==a.keyCode?l--:40==a.keyCode&&l++,l<0?l=b.size()-1:l>=b.size()&&(l=0);var c=$(b).eq(l);c.trigger("freeboard-select"),$(k).scrollTop($(c).position().top)}else 13==a.keyCode&&(a.preventDefault(),-1!=l&&$(k).find("li").eq(l).trigger("freeboard-insertValue"))})}var j=new RegExp('.*datasources\\["([^"]*)("\\])?(.*)$'),k=null,l=0,m=[],n=null,o={ANY:"any",ARRAY:"array",OBJECT:"object",STRING:"string",NUMBER:"number",BOOLEAN:"boolean"};return{createValueEditor:function(a,b){b?i(a,b):i(a,o.ANY)},EXPECTED_TYPE:o}},function(a){function b(){var a=document.createElement("p"),b=!1;if(a.addEventListener)a.addEventListener("DOMAttrModified",function(){b=!0},!1);else{if(!a.attachEvent)return!1;a.attachEvent("onDOMAttrModified",function(){b=!0})}return a.setAttribute("id","target"),b}function c(b,c){if(b){var d=this.data("attr-old-value");if(c.attributeName.indexOf("style")>=0){d.style||(d.style={});var e=c.attributeName.split(".");c.attributeName=e[0],c.oldValue=d.style[e[1]],c.newValue=e[1]+":"+this.prop("style")[a.camelCase(e[1])],d.style[e[1]]=c.newValue}else c.oldValue=d[c.attributeName],c.newValue=this.attr(c.attributeName),d[c.attributeName]=c.newValue;this.data("attr-old-value",d)}}var d=window.MutationObserver||window.WebKitMutationObserver;a.fn.attrchange=function(e){var f={trackValues:!1,callback:a.noop};if("function"==typeof e?f.callback=e:a.extend(f,e),f.trackValues&&a(this).each(function(b,c){for(var d,e={},b=0,f=c.attributes,g=f.length;b<g;b++)d=f.item(b),e[d.nodeName]=d.value;a(this).data("attr-old-value",e)}),d){var g={subtree:!1,attributes:!0,attributeOldValue:f.trackValues},h=new d(function(b){b.forEach(function(b){var c=b.target;f.trackValues&&(b.newValue=a(c).attr(b.attributeName)),f.callback.call(c,b)})});return this.each(function(){h.observe(this,g)})}return b()?this.on("DOMAttrModified",function(a){a.originalEvent&&(a=a.originalEvent),a.attributeName=a.attrName,a.oldValue=a.prevValue,f.callback.call(this,a)}):"onpropertychange"in document.body?this.on("propertychange",function(b){b.attributeName=window.event.propertyName,c.call(a(this),f.trackValues,b),f.callback.call(this,b)}):this}}(jQuery),function(a){a.eventEmitter={_JQInit:function(){this._JQ=a(this)},emit:function(a,b){!this._JQ&&this._JQInit(),this._JQ.trigger(a,b)},once:function(a,b){!this._JQ&&this._JQInit(),this._JQ.one(a,b)},on:function(a,b){!this._JQ&&this._JQInit(),this._JQ.bind(a,b)},off:function(a,b){!this._JQ&&this._JQInit(),this._JQ.unbind(a,b)}}}(jQuery);var freeboard=function(){function a(a){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var b=new RegExp("[\\?&]"+a+"=([^&#]*)"),c=b.exec(location.search);return null==c?"":decodeURIComponent(c[1].replace(/\+/g," "))}var b={},c={},d=new FreeboardUI,e=new FreeboardModel(b,c,d),f=new JSEditor,g=new ValueEditor(e),h=new PluginEditor(f,g),i=new DeveloperConsole(e),j={values:{
+"font-family":'"HelveticaNeue-UltraLight", "Helvetica Neue Ultra Light", "Helvetica Neue", sans-serif',color:"#d3d4d4","font-weight":100}};return ko.bindingHandlers.pluginEditor={init:function(a,f,g,i,j){var k=ko.unwrap(f()),l={},m=void 0,n="";"datasource"==k.type?(l=b,n="Datasource"):"widget"==k.type?(l=c,n="Widget"):"pane"==k.type&&(n="Pane"),$(a).click(function(f){if("delete"==k.operation){new DialogBox($("<p>Are you sure you want to delete this "+n+"?</p>"),"Confirm Delete","Yes","No",function(){"datasource"==k.type?e.deleteDatasource(i):"widget"==k.type?e.deleteWidget(i):"pane"==k.type&&e.deletePane(i)})}else{var g=void 0;"datasource"==k.type?"add"==k.operation?m={}:(g=i.type(),m=i.settings(),m.name=i.name()):"widget"==k.type?"add"==k.operation?m={}:(g=i.type(),m=i.settings()):"pane"==k.type&&(m={},"edit"==k.operation&&(m.title=i.title(),m.col_width=i.col_width()),l={settings:{settings:[{name:"title",display_name:"Title",type:"text"},{name:"col_width",display_name:"Columns",type:"integer",default_value:1,required:!0}]}}),h.createPluginEditor(n,l,g,m,function(f){if("add"==k.operation){if("datasource"==k.type){var g=new DatasourceModel(e,b);e.addDatasource(g),g.name(f.settings.name),delete f.settings.name,g.settings(f.settings),g.type(f.type)}else if("widget"==k.type){var g=new WidgetModel(e,c);g.settings(f.settings),g.type(f.type),i.widgets.push(g),d.attachWidgetEditIcons(a)}}else"edit"==k.operation&&("pane"==k.type?(i.title(f.settings.title),i.col_width(f.settings.col_width),d.processResize(!1)):("datasource"==k.type&&(i.name(f.settings.name),delete f.settings.name),i.type(f.type),i.settings(f.settings)))})}})}},ko.virtualElements.allowedBindings.datasourceTypeSettings=!0,ko.bindingHandlers.datasourceTypeSettings={update:function(a,b,c,d,e){processPluginSettings(a,b,c,d,e)}},ko.bindingHandlers.pane={init:function(a,b,c,f,g){e.isEditing()&&$(a).css({cursor:"pointer"}),d.addPane(a,f,g.$root.isEditing())},update:function(a,b,c,f,g){-1==e.panes.indexOf(f)&&d.removePane(a),d.updatePane(a,f)}},ko.bindingHandlers.widget={init:function(a,b,c,f,g){e.isEditing()&&d.attachWidgetEditIcons($(a).parent())},update:function(a,b,c,d,e){d.shouldRender()&&($(a).empty(),d.render(a))}},$(function(){function a(){d.processResize(!0)}d.showLoadingIndicator(!0);var b;$(window).resize(function(){clearTimeout(b),b=setTimeout(a,500)})}),{initialize:function(b,c){ko.applyBindings(e);var f=a("load");""!=f?$.ajax({url:f,success:function(a){e.loadDashboard(a),_.isFunction(c)&&c()}}):(e.allow_edit(b),e.setEditing(b),d.showLoadingIndicator(!1),_.isFunction(c)&&c(),freeboard.emit("initialized"))},newDashboard:function(){e.loadDashboard({allow_edit:!0})},loadDashboard:function(a,b){e.loadDashboard(a,b)},serialize:function(){return e.serialize()},setEditing:function(a,b){e.setEditing(a,b)},isEditing:function(){return e.isEditing()},loadDatasourcePlugin:function(a){_.isUndefined(a.display_name)&&(a.display_name=a.type_name),a.settings.unshift({name:"name",display_name:"Name",type:"text",required:!0}),e.addPluginSource(a.source),b[a.type_name]=a,e._datasourceTypes.valueHasMutated()},resize:function(){d.processResize(!0)},loadWidgetPlugin:function(a){_.isUndefined(a.display_name)&&(a.display_name=a.type_name),e.addPluginSource(a.source),c[a.type_name]=a,e._widgetTypes.valueHasMutated()},setAssetRoot:function(a){f.setAssetRoot(a)},addStyle:function(a,b){var c=a+"{"+b+"}",d=$("style#fb-styles");0==d.length&&(d=$('<style id="fb-styles" type="text/css"></style>'),$("head").append(d)),d[0].styleSheet?d[0].styleSheet.cssText+=c:d.text(d.text()+c)},showLoadingIndicator:function(a){d.showLoadingIndicator(a)},showDialog:function(a,b,c,d,e){new DialogBox(a,b,c,d,e)},getDatasourceSettings:function(a){var b=e.datasources(),c=_.find(b,function(b){return b.name()===a});return c?c.settings():null},setDatasourceSettings:function(a,b){var c=e.datasources(),d=_.find(c,function(b){return b.name()===a});if(!d)return void console.log("Datasource not found");var f=_.defaults(b,d.settings());d.settings(f)},getStyleString:function(a){var b="";return _.each(j[a],function(a,c){b=b+c+":"+a+";"}),b},getStyleObject:function(a){return j[a]},showDeveloperConsole:function(){i.showDeveloperConsole()}}}();$.extend(freeboard,jQuery.eventEmitter),function(){var a=function(a,b){function c(a){e&&clearInterval(e),e=setInterval(function(){d.updateNow()},a)}var d=this,e=null,f=a,g=0,h=!1;c(1e3*f.refresh),this.updateNow=function(){if(!(g>1&&!f.use_thingproxy||g>2)){var a=f.url;2==g&&f.use_thingproxy&&(a=("https:"==location.protocol?"https:":"http:")+"//thingproxy.freeboard.io/fetch/"+encodeURI(f.url));var c=f.body;if(c)try{c=JSON.parse(c)}catch(a){}$.ajax({url:a,dataType:1==g?"JSONP":"JSON",type:f.method||"GET",data:c,beforeSend:function(a){try{_.each(f.headers,function(b){var c=b.name,d=b.value;_.isUndefined(c)||_.isUndefined(d)||a.setRequestHeader(c,d)})}catch(a){}},success:function(a){h=!0,b(a)},error:function(a,b,c){h||(g++,d.updateNow())}})}},this.onDispose=function(){clearInterval(e),e=null},this.onSettingsChanged=function(a){h=!1,g=0,f=a,c(1e3*f.refresh),d.updateNow()}};freeboard.loadDatasourcePlugin({type_name:"JSON",settings:[{name:"url",display_name:"URL",type:"text"},{name:"use_thingproxy",display_name:"Try thingproxy",description:'A direct JSON connection will be tried first, if that fails, a JSONP connection will be tried. If that fails, you can use thingproxy, which can solve many connection problems to APIs. <a href="https://github.com/Freeboard/thingproxy" target="_blank">More information</a>.',type:"boolean",default_value:!0},{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:5},{name:"method",display_name:"Method",type:"option",options:[{name:"GET",value:"GET"},{name:"POST",value:"POST"},{name:"PUT",value:"PUT"},{name:"DELETE",value:"DELETE"}]},{name:"body",display_name:"Body",type:"text",description:"The body of the request. Normally only used if method is POST"},{name:"headers",display_name:"Headers",type:"array",settings:[{name:"name",display_name:"Name",type:"text"},{name:"value",display_name:"Value",type:"text"}]}],newInstance:function(b,c,d){c(new a(b,d))}});var b=function(a,b){function c(a){f&&clearInterval(f),f=setInterval(function(){e.updateNow()},a)}function d(a){return a.replace(/\w\S*/g,function(a){return a.charAt(0).toUpperCase()+a.substr(1).toLowerCase()})}var e=this,f=null,g=a;c(1e3*g.refresh),this.updateNow=function(){$.ajax({url:"http://api.openweathermap.org/data/2.5/weather?APPID="+g.api_key+"&q="+encodeURIComponent(g.location)+"&units="+g.units,dataType:"JSONP",success:function(a){var c={place_name:a.name,sunrise:new Date(1e3*a.sys.sunrise).toLocaleTimeString(),sunset:new Date(1e3*a.sys.sunset).toLocaleTimeString(),conditions:d(a.weather[0].description),current_temp:a.main.temp,high_temp:a.main.temp_max,low_temp:a.main.temp_min,pressure:a.main.pressure,humidity:a.main.humidity,wind_speed:a.wind.speed,wind_direction:a.wind.deg};b(c)},error:function(a,b,c){}})},this.onDispose=function(){clearInterval(f),f=null},this.onSettingsChanged=function(a){g=a,e.updateNow(),c(1e3*g.refresh)}};freeboard.loadDatasourcePlugin({type_name:"openweathermap",display_name:"Open Weather Map API",settings:[{name:"api_key",display_name:"API Key",type:"text",description:"Your personal API Key from Open Weather Map"},{name:"location",display_name:"Location",type:"text",description:"Example: London, UK"},{name:"units",display_name:"Units",type:"option",default:"imperial",options:[{name:"Imperial",value:"imperial"},{name:"Metric",value:"metric"}]},{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:5}],newInstance:function(a,c,d){c(new b(a,d))}});var c=function(a,b){function c(a){b(a)}var d=this,e=a;this.updateNow=function(){dweetio.get_latest_dweet_for(e.thing_id,function(a,b){a||c(b[0].content)})},this.onDispose=function(){},this.onSettingsChanged=function(a){dweetio.stop_listening_for(e.thing_id),e=a,dweetio.listen_for(e.thing_id,function(a){c(a.content)})},d.onSettingsChanged(a)};freeboard.loadDatasourcePlugin({type_name:"dweet_io",display_name:"Dweet.io",external_scripts:["http://dweet.io/client/dweet.io.min.js"],settings:[{name:"thing_id",display_name:"Thing Name",description:"Example: salty-dog-1",type:"text"}],newInstance:function(a,b,d){b(new c(a,d))}});var d=function(a,b){function c(){h.length>0?(i<h.length&&(b(h[i]),i++),i>=h.length&&g.loop&&(i=0),i<h.length&&(e=setTimeout(c,1e3*g.refresh))):b({})}function d(){h=[],i=0,e&&(clearTimeout(e),e=null)}var e,f=this,g=a,h=[],i=0;this.updateNow=function(){d(),$.ajax({url:g.datafile,dataType:g.is_jsonp?"JSONP":"JSON",success:function(a){h=_.isArray(a)?a:[],i=0,c()},error:function(a,b,c){}})},this.onDispose=function(){d()},this.onSettingsChanged=function(a){g=a,f.updateNow()}};freeboard.loadDatasourcePlugin({type_name:"playback",display_name:"Playback",settings:[{name:"datafile",display_name:"Data File URL",type:"text",description:"A link to a JSON array of data."},{name:"is_jsonp",display_name:"Is JSONP",type:"boolean"},{name:"loop",display_name:"Loop",type:"boolean",description:"Rewind and loop when finished"},{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:5}],newInstance:function(a,b,c){b(new d(a,c))}});var e=function(a,b){function c(){e&&(clearTimeout(e),e=null)}function d(){c(),e=setInterval(f.updateNow,1e3*g.refresh)}var e,f=this,g=a;this.updateNow=function(){var a=new Date,c={numeric_value:a.getTime(),full_string_value:a.toLocaleString(),date_string_value:a.toLocaleDateString(),time_string_value:a.toLocaleTimeString(),date_object:a};b(c)},this.onDispose=function(){c()},this.onSettingsChanged=function(a){g=a,d()},d()};freeboard.loadDatasourcePlugin({type_name:"clock",display_name:"Clock",settings:[{name:"refresh",display_name:"Refresh Every",type:"number",suffix:"seconds",default_value:1}],newInstance:function(a,b,c){b(new e(a,c))}}),freeboard.loadDatasourcePlugin({type_name:"meshblu",display_name:"Octoblu",description:"app.octoblu.com",external_scripts:["http://meshblu.octoblu.com/js/meshblu.js"],settings:[{name:"uuid",display_name:"UUID",type:"text",default_value:"device uuid",description:"your device UUID",required:!0},{name:"token",display_name:"Token",type:"text",default_value:"device token",description:"your device TOKEN",required:!0},{name:"server",display_name:"Server",type:"text",default_value:"meshblu.octoblu.com",description:"your server",required:!0},{name:"port",display_name:"Port",type:"number",default_value:80,description:"server port",required:!0}],newInstance:function(a,b,c){b(new f(a,c))}});var f=function(a,b){function c(){var a=skynet.createConnection({uuid:e.uuid,token:e.token,server:e.server,port:e.port});a.on("ready",function(c){a.on("message",function(a){b(a)})})}var d=this,e=a;d.onSettingsChanged=function(a){e=a},d.updateNow=function(){c()},d.onDispose=function(){}}}(),function(){function a(a,b,c){var d=$(b).text();if(d!=a)if($.isNumeric(a)&&$.isNumeric(d)){var e=a.toString().split("."),f=0;e.length>1&&(f=e[1].length),e=d.toString().split(".");var g=0;e.length>1&&(g=e[1].length),jQuery({transitionValue:Number(d),precisionValue:g}).animate({transitionValue:Number(a),precisionValue:f},{duration:c,step:function(){$(b).text(this.transitionValue.toFixed(this.precisionValue))},done:function(){$(b).text(a)}})}else $(b).text(a)}function b(a,b){for(var c=$("<div class='sparkline-legend'></div>"),d=0;d<b.length;d++){var f=e[d%e.length],g=b[d];c.append("<div class='sparkline-legend-value'><span style='color:"+f+"'>&#9679;</span>"+g+"</div>")}a.empty().append(c),freeboard.addStyle(".sparkline-legend","margin:5px;"),freeboard.addStyle(".sparkline-legend-value","color:white; font:10px arial,san serif; float:left; overflow:hidden; width:50%;"),freeboard.addStyle(".sparkline-legend-value span","font-weight:bold; padding-right:5px;")}function c(a,b,c){var f=$(a).data().values,g=$(a).data().valueMin,h=$(a).data().valueMax;f||(f=[],g=void 0,h=void 0);var i=function(a,b){f[b]||(f[b]=[]),f[b].length>=d&&f[b].shift(),f[b].push(Number(a)),(void 0===g||a<g)&&(g=a),(void 0===h||a>h)&&(h=a)};_.isArray(b)?_.each(b,i):i(b,0),$(a).data().values=f,$(a).data().valueMin=g,$(a).data().valueMax=h;var j='<span style="color: {{color}}">&#9679;</span> {{y}}',k=!1;_.each(f,function(b,d){$(a).sparkline(b,{type:"line",composite:k,height:"100%",width:"100%",fillColor:!1,lineColor:e[d%e.length],lineWidth:2,spotRadius:3,spotColor:!1,minSpotColor:"#78AB49",maxSpotColor:"#78AB49",highlightSpotColor:"#9D3926",highlightLineColor:"#9D3926",chartRangeMin:g,chartRangeMax:h,tooltipFormat:c&&c[d]?j+" ("+c[d]+")":j}),k=!0})}var d=100,e=["#FF9900","#FFFFFF","#B3B4B4","#6B6B6B","#28DE28","#13F7F9","#E6EE18","#C41204","#CA3CB8","#0B1CFB"],f=freeboard.getStyleString("values");freeboard.addStyle(".widget-big-text",f+"font-size:75px;"),freeboard.addStyle(".tw-display","width: 100%; height:100%; display:table; table-layout:fixed;"),freeboard.addStyle(".tw-tr","display:table-row;"),freeboard.addStyle(".tw-tg","display:table-row-group;"),freeboard.addStyle(".tw-tc","display:table-caption;"),freeboard.addStyle(".tw-td","display:table-cell;"),freeboard.addStyle(".tw-value",f+"overflow: hidden;display: inline-block;text-overflow: ellipsis;"),freeboard.addStyle(".tw-unit","display: inline-block;padding-left: 10px;padding-bottom: 1.1em;vertical-align: bottom;"),freeboard.addStyle(".tw-value-wrapper","position: relative;vertical-align: middle;height:100%;"),freeboard.addStyle(".tw-sparkline","height:20px;");var g=function(b){function d(){_.isUndefined(e.units)||""==e.units?h.css("max-width","100%"):h.css("max-width",f.innerWidth()-i.outerWidth(!0)+"px")}var e=b,f=$('<div class="tw-display"></div>'),g=$('<h2 class="section-title tw-title tw-td"></h2>'),h=$('<div class="tw-value"></div>'),i=$('<div class="tw-unit"></div>'),j=$('<div class="tw-sparkline tw-td"></div>');this.render=function(a){$(a).empty(),$(f).append($('<div class="tw-tr"></div>').append(g)).append($('<div class="tw-tr"></div>').append($('<div class="tw-value-wrapper tw-td"></div>').append(h).append(i))).append($('<div class="tw-tr"></div>').append(j)),$(a).append(f),d()},this.onSettingsChanged=function(a){e=a;var b=!_.isUndefined(a.title)&&""!=a.title,c=!_.isUndefined(a.units)&&""!=a.units;a.sparkline?j.attr("style",null):(delete j.data().values,j.empty(),j.hide()),b?(g.html(_.isUndefined(a.title)?"":a.title),g.attr("style",null)):(g.empty(),g.hide()),c?(i.html(_.isUndefined(a.units)?"":a.units),i.attr("style",null)):(i.empty(),i.hide());var f=30;"big"==a.size&&(f=75,a.sparkline&&(f=60)),h.css({"font-size":f+"px"}),d()},this.onSizeChanged=function(){d()},this.onCalculatedValueChanged=function(b,d){"value"==b&&(e.animate?a(d,h,500):h.text(d),e.sparkline&&c(j,d))},this.onDispose=function(){},this.getHeight=function(){return"big"==e.size||e.sparkline?2:1},this.onSettingsChanged(b)};freeboard.loadWidgetPlugin({type_name:"text_widget",display_name:"Text",external_scripts:["plugins/thirdparty/jquery.sparkline.min.js"],settings:[{name:"title",display_name:"Title",type:"text"},{name:"size",display_name:"Size",type:"option",options:[{name:"Regular",value:"regular"},{name:"Big",value:"big"}]},{name:"value",display_name:"Value",type:"calculated"},{name:"sparkline",display_name:"Include Sparkline",type:"boolean"},{name:"animate",display_name:"Animate Value Changes",type:"boolean",default_value:!0},{name:"units",display_name:"Units",type:"text"}],newInstance:function(a,b){b(new g(a))}});var h=0;freeboard.addStyle(".gauge-widget-wrapper","width: 100%;text-align: center;"),freeboard.addStyle(".gauge-widget","width:200px;height:160px;display:inline-block;");var i=function(a){function b(){g&&(f.empty(),c=new JustGage({id:d,value:_.isUndefined(i.min_value)?0:i.min_value,min:_.isUndefined(i.min_value)?0:i.min_value,max:_.isUndefined(i.max_value)?0:i.max_value,label:i.units,showInnerShadow:!1,valueFontColor:"#d3d4d4"}))}var c,d="gauge-"+h++,e=$('<h2 class="section-title"></h2>'),f=$('<div class="gauge-widget" id="'+d+'"></div>'),g=!1,i=a;this.render=function(a){g=!0,$(a).append(e).append($('<div class="gauge-widget-wrapper"></div>').append(f)),b()},this.onSettingsChanged=function(a){a.min_value!=i.min_value||a.max_value!=i.max_value||a.units!=i.units?(i=a,b()):i=a,e.html(a.title)},this.onCalculatedValueChanged=function(a,b){_.isUndefined(c)||c.refresh(Number(b))},this.onDispose=function(){},this.getHeight=function(){return 3},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"gauge",display_name:"Gauge",external_scripts:["plugins/thirdparty/raphael.2.1.0.min.js","plugins/thirdparty/justgage.1.0.1.js"],settings:[{name:"title",display_name:"Title",type:"text"},{name:"value",display_name:"Value",type:"calculated"},{name:"units",display_name:"Units",type:"text"},{name:"min_value",display_name:"Minimum",type:"text",default_value:0},{name:"max_value",display_name:"Maximum",type:"text",default_value:100}],newInstance:function(a,b){b(new i(a))}}),freeboard.addStyle(".sparkline","width:100%;height: 75px;");var j=function(a){var d=$('<h2 class="section-title"></h2>'),e=$('<div class="sparkline"></div>'),f=$("<div></div>"),g=a;this.render=function(a){$(a).append(d).append(e).append(f)},this.onSettingsChanged=function(a){g=a,d.html(_.isUndefined(a.title)?"":a.title),a.include_legend&&b(f,a.legend.split(","))},this.onCalculatedValueChanged=function(a,b){g.legend?c(e,b,g.legend.split(",")):c(e,b)},this.onDispose=function(){},this.getHeight=function(){var a=0;if(g.include_legend&&g.legend){var b=g.legend.split(",").length;b>4?a=.5*Math.floor((b-1)/4):b&&(a=.5)}return 2+a},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"sparkline",display_name:"Sparkline",external_scripts:["plugins/thirdparty/jquery.sparkline.min.js"],settings:[{name:"title",display_name:"Title",type:"text"},{name:"value",display_name:"Value",type:"calculated",multi_input:"true"},{name:"include_legend",display_name:"Include Legend",type:"boolean"},{name:"legend",display_name:"Legend",type:"text",description:"Comma-separated for multiple sparklines"}],newInstance:function(a,b){b(new j(a))}}),freeboard.addStyle("div.pointer-value","position:absolute;height:95px;margin: auto;top: 0px;bottom: 0px;width: 100%;text-align:center;");var k=function(a){function b(a){if(!a||a.length<2)return[];var b=[];b.push(["m",a[0],a[1]]);for(var c=2;c<a.length;c+=2)b.push(["l",a[c],a[c+1]]);return b.push(["z"]),b}var c,d,e,f,g=3,h=0,i=$('<div class="widget-big-text"></div>'),j=$("<div></div>");this.render=function(a){e=$(a).width(),f=$(a).height();var h=Math.min(e,f)/2-2*g;c=Raphael($(a).get()[0],e,f);var k=c.circle(e/2,f/2,h);k.attr("stroke","#FF9900"),k.attr("stroke-width",g),d=c.path(b([e/2,f/2-h+g,15,20,-30,0])),d.attr("stroke-width",0),d.attr("fill","#fff"),$(a).append($('<div class="pointer-value"></div>').append(i).append(j))},this.onSettingsChanged=function(a){j.html(a.units)},this.onCalculatedValueChanged=function(a,b){if("direction"==a){if(!_.isUndefined(d)){d.animate({transform:"r"+b+","+e/2+","+f/2},250,"bounce")}h=b}else"value_text"==a&&i.html(b)},this.onDispose=function(){},this.getHeight=function(){return 4},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"pointer",display_name:"Pointer",external_scripts:["plugins/thirdparty/raphael.2.1.0.min.js"],settings:[{name:"direction",display_name:"Direction",type:"calculated",description:"In degrees"},{name:"value_text",display_name:"Value Text",type:"calculated"},{name:"units",display_name:"Units",type:"text"}],newInstance:function(a,b){b(new k(a))}});var l=function(a){function b(){e&&(clearInterval(e),e=null)}function c(){if(d&&f){var a=f+(-1==f.indexOf("?")?"?":"&")+Date.now();$(d).css({"background-image":"url("+a+")"})}}var d,e,f;this.render=function(a){$(a).css({width:"100%",height:"100%","background-size":"cover","background-position":"center"}),d=a},this.onSettingsChanged=function(a){b(),a.refresh&&a.refresh>0&&(e=setInterval(c,1e3*Number(a.refresh)))},this.onCalculatedValueChanged=function(a,b){"src"==a&&(f=b),c()},this.onDispose=function(){b()},this.getHeight=function(){return 4},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"picture",display_name:"Picture",fill_size:!0,settings:[{name:"src",display_name:"Image URL",type:"calculated"},{type:"number",display_name:"Refresh every",name:"refresh",suffix:"seconds",description:"Leave blank if the image doesn't need to be refreshed"}],newInstance:function(a,b){b(new l(a))}}),freeboard.addStyle(".indicator-light","border-radius:50%;width:22px;height:22px;border:2px solid #3d3d3d;margin-top:5px;float:left;background-color:#222;margin-right:10px;"),freeboard.addStyle(".indicator-light.on","background-color:#FFC773;box-shadow: 0px 0px 15px #FF9900;border-color:#FDF1DF;"),freeboard.addStyle(".indicator-text","margin-top:10px;");var m=function(a){function b(){g.toggleClass("on",i),i?f.text(_.isUndefined(c)?_.isUndefined(h.on_text)?"":h.on_text:c):f.text(_.isUndefined(d)?_.isUndefined(h.off_text)?"":h.off_text:d)}var c,d,e=$('<h2 class="section-title"></h2>'),f=$('<div class="indicator-text"></div>'),g=$('<div class="indicator-light"></div>'),h=a,i=!1;this.render=function(a){$(a).append(e).append(g).append(f)},this.onSettingsChanged=function(a){h=a,e.html(_.isUndefined(a.title)?"":a.title),b()},this.onCalculatedValueChanged=function(a,e){"value"==a&&(i=Boolean(e)),"on_text"==a&&(c=e),"off_text"==a&&(d=e),b()},this.onDispose=function(){},this.getHeight=function(){return 1},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"indicator",display_name:"Indicator Light",settings:[{name:"title",display_name:"Title",type:"text"},{name:"value",display_name:"Value",type:"calculated"},{name:"on_text",display_name:"On Text",type:"calculated"},{name:"off_text",display_name:"Off Text",type:"calculated"}],newInstance:function(a,b){b(new m(a))}}),freeboard.addStyle(".gm-style-cc a","text-shadow:none;");var n=function(a){function b(){if(c&&d&&f.lat&&f.lon){var a=new google.maps.LatLng(f.lat,f.lon);d.setPosition(a),c.panTo(a)}}var c,d,e=a,f={};this.render=function(a){function e(){var e={zoom:13,center:new google.maps.LatLng(37.235,-115.811111),disableDefaultUI:!0,draggable:!1,styles:[{featureType:"water",elementType:"geometry",stylers:[{color:"#2a2a2a"}]},{featureType:"landscape",elementType:"geometry",stylers:[{color:"#000000"},{lightness:20}]},{featureType:"road.highway",elementType:"geometry.fill",stylers:[{color:"#000000"},{lightness:17}]},{featureType:"road.highway",elementType:"geometry.stroke",stylers:[{color:"#000000"},{lightness:29},{weight:.2}]},{featureType:"road.arterial",elementType:"geometry",stylers:[{color:"#000000"},{lightness:18}]},{featureType:"road.local",elementType:"geometry",stylers:[{color:"#000000"},{lightness:16}]},{featureType:"poi",elementType:"geometry",stylers:[{color:"#000000"},{lightness:21}]},{elementType:"labels.text.stroke",stylers:[{visibility:"on"},{color:"#000000"},{lightness:16}]},{elementType:"labels.text.fill",stylers:[{saturation:36},{color:"#000000"},{lightness:40}]},{elementType:"labels.icon",stylers:[{visibility:"off"}]},{featureType:"transit",elementType:"geometry",stylers:[{color:"#000000"},{lightness:19}]},{featureType:"administrative",elementType:"geometry.fill",stylers:[{color:"#000000"},{lightness:20}]},{featureType:"administrative",elementType:"geometry.stroke",stylers:[{color:"#000000"},{lightness:17},{weight:1.2}]}]};c=new google.maps.Map(a,e),google.maps.event.addDomListener(a,"mouseenter",function(a){a.cancelBubble=!0,c.hover||(c.hover=!0,c.setOptions({zoomControl:!0}))}),google.maps.event.addDomListener(a,"mouseleave",function(a){c.hover&&(c.setOptions({zoomControl:!1}),c.hover=!1)}),d=new google.maps.Marker({map:c}),b()}window.google&&window.google.maps?e():(window.gmap_initialize=e,head.js("https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=gmap_initialize"))},this.onSettingsChanged=function(a){e=a},this.onCalculatedValueChanged=function(a,c){"lat"==a?f.lat=c:"lon"==a&&(f.lon=c),b()},this.onDispose=function(){},this.getHeight=function(){return 4},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"google_map",display_name:"Google Map",fill_size:!0,settings:[{name:"lat",display_name:"Latitude",type:"calculated"},{name:"lon",display_name:"Longitude",type:"calculated"}],newInstance:function(a,b){b(new n(a))}}),freeboard.addStyle(".html-widget","white-space:normal;width:100%;height:100%");var o=function(a){var b=$('<div class="html-widget"></div>'),c=a;this.render=function(a){$(a).append(b)},this.onSettingsChanged=function(a){c=a},this.onCalculatedValueChanged=function(a,c){"html"==a&&b.html(c)},this.onDispose=function(){},this.getHeight=function(){return Number(c.height)},this.onSettingsChanged(a)};freeboard.loadWidgetPlugin({type_name:"html",display_name:"HTML",fill_size:!0,settings:[{name:"html",display_name:"HTML",type:"calculated",description:"Can be literal HTML, or javascript that outputs HTML."},{name:"height",display_name:"Height Blocks",type:"number",default_value:4,description:"A height block is around 60 pixels"}],newInstance:function(a,b){b(new o(a))}})}();
\ No newline at end of file
diff --git a/WebSites/errors/403/js/freeboard_plugins.min.js.map b/WebSites/errors/403/js/freeboard_plugins.min.js.map
new file mode 100644
index 0000000..4fd8675
--- /dev/null
+++ b/WebSites/errors/403/js/freeboard_plugins.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"freeboard+plugins.min.js","sources":["freeboard%2Bplugins.js"],"names":["DialogBox","contentElement","title","okTitle","cancelTitle","okCallback","closeModal","overlay","fadeOut","$","this","remove","modalDialog","append","appendTo","footer","click","hold","_","isFunction","fadeIn","FreeboardModel","datasourcePlugins","widgetPlugins","freeboardUI","self","SERIALIZATION_VERSION","version","isEditing","ko","observable","allow_edit","subscribe","newValue","show","hide","header_image","plugins","observableArray","datasources","panes","datasourceData","processDatasourceUpdate","datasourceModel","newData","datasourceName","name","each","pane","widgets","widget","_datasourceTypes","datasourceTypes","computed","read","returnTypes","datasourcePluginType","typeName","type_name","displayName","isUndefined","display_name","push","_widgetTypes","widgetTypes","widgetPluginType","addPluginSource","pluginSource","indexOf","serialize","datasource","columns","getUserColumns","deserialize","object","finishedCallback","finishLoad","setUserColumns","datasourceConfig","DatasourceModel","addDatasource","sortedPanes","sortBy","getPositionForScreenSize","row","paneConfig","PaneModel","length","setEditing","processResize","clearDashboard","plugin","isArray","head","js","removeAllPanes","dispose","removeAll","loadDashboard","dashboardData","callback","showLoadingIndicator","freeboard","emit","loadDashboardFromLocalFile","window","File","FileReader","FileList","Blob","input","document","createElement","type","on","event","files","target","file","reader","addEventListener","fileReaderEvent","textFile","jsonObject","JSON","parse","result","readAsText","trigger","alert","saveDashboard","contentType","a","blob","stringify","body","appendChild","href","URL","createObjectURL","download","deleteDatasource","createPane","newPane","addPane","addGridColumnLeft","addGridColumnRight","subGridColumnLeft","subGridColumnRight","deletePane","deleteWidget","utils","arrayForEach","editing","animate","animateLength","barHeight","outerHeight","addClass","removeClass","css","cursor","top","data","shown","attachWidgetEditIcons","enableGrid","unbind","disableGrid","showPaneEditIcons","toggleEditing","FreeboardUI","layoutWidgets","maxDisplayableColumns","getMaxDisplayableColumnCount","repositionFunction","paneElement","paneModel","dataFor","newPosition","attr","Math","min","col_width","grid","cols","col","processSizeChange","updateGridWidth","userColumns","repositionGrid","updateGridColumnControls","addGridColumn","shift","num_cols","prevColumnIndex","prevCol","prevRow","leftPreviewCol","newCol","rightPreviewCol","subtractGridColumn","col_controls","available_width","width","max_columns","floor","COLUMN_WIDTH","MIN_COLUMNS","newCols","undefined","new_width","rootElement","$el","find","removeData","generate_grid_and_stylesheet","init","PANE_WIDTH","PANE_MARGIN","numCols","max","element","viewModel","position","Number","height","getCalculatedHeight","add_widget","updatePositionForScreenSize","attrchange","trackValues","attributeName","updatePane","calculatedHeight","elementHeight","elementWidth","resize_widget","set_dom_grid_height","displayCols","loadingIndicator","hover","showWidgetEditIcons","isNumber","obj","newColumnIndex","columnDiff","columnIndex","delta","bindingHandlers","gridster","widget_margins","widget_base_dimensions","resize","enabled","axes","disable","enable","removePane","remove_widget","remove_all_widgets","theFreeboardModel","addWidget","widgetCanMoveUp","widgetCanMoveDown","i","moveWidgetUp","array","splice","moveWidgetDown","setTimeout","sumHeights","reduce","memo","rows","ceil","widgetConfig","WidgetModel","disposeWidgetInstance","widgetInstance","onDispose","datasourceRefreshNotifications","calculatedSettingScripts","fillSize","widgetType","newInstance","settings","fill_size","shouldRender","_heightUpdate","valueHasMutated","external_scripts","slice","onSettingsChanged","updateCalculatedSettings","refreshSettingNames","settingName","processCalculatedSetting","callValueFunction","theFunction","call","onSizeChanged","returnValue","e","rawValue","ReferenceError","test","onCalculatedValueChanged","console","log","toString","settingsDefs","datasourceRegex","RegExp","currentSettings","settingDef","script","match","valueFunction","Function","literalText","replace","matches","exec","dsName","getHeight","render","disposeDatasourceInstance","datasourceInstance","latestData","updateCallback","now","Date","last_updated","toLocaleTimeString","datasourceType","updateNow","last_error","getDataRepresentation","dataPath","DeveloperConsole","showDeveloperConsole","addNewScriptRow","scriptURL","tableRow","tableOperations","scriptInput","deleteOperation","pluginScriptsInputs","without","val","tableBody","container","addScript","table","JSEditor","setAssetRoot","_assetRoot","assetRoot","displayJSEditor","value","exampleText","codeWindow","codeMirrorWrapper","codeWindowFooter","codeWindowHeader","codeMirrorEditor","CodeMirror","get","mode","theme","indentUnit","lineNumbers","matchBrackets","autoCloseBrackets","closeButton","getValue","PluginEditor","jsEditor","valueEditor","_displayValidationError","errorMessage","errorElement","html","_removeSettingsRows","nextAll","_isNumerical","n","isNaN","parseFloat","isFinite","createPluginEditor","pluginTypes","currentTypeName","currentSettingsValues","settingsSavedCallback","createSettingRow","tr","form","createSettingsFromDefinition","processHeaderVisibility","newSettings","subTableHead","createSubsettingRow","subsettingValue","subsettingRow","subTableBody","newSetting","subSettingDef","subsettingCol","subsettingValueString","change","subSettingIndex","subTableDiv","scrollTop","scrollHeight","default_value","valueCell","subTable","subTableHeadRow","currentSubSettingValues","subsettingDisplayName","newSubsettingValue","currentSubSettingValue","onOffSwitch","prependTo","checked","prop","defaultValue","options","option","optionName","optionValue","isObject","text","createValueEditor","datasourceToolbox","datasourceTool","mousedown","preventDefault","focus","insertAtCaret","jsEditorTool","suffix","description","selectedType","pluginDescriptionElement","index","required","typeSelect","pluginTypeNames","keys","typeRow","pluginType","currentInstanceName","ValueEditor","_resizeValueEditor","lineBreakCount","newHeight","_autocompleteFromDatasource","inputString","replacementString","_veDatasourceRegex","follow_char","dataPathItems","split","dataPathItem","lastPathObject","last","charAt","dataValue","followChar","_autocompleteOptions","_autocompleteReplacementString","dropdown","selectedOptionIndex","bind","keyCode","substring","getCaretPosition","String","fromCharCode","insertAfter","outerWidth","left","empty","selected","currentIndex","li","mouseenter","replacementIndex","lastIndexOf","replaceTextAt","triggerHandler","parent","next","z-index","focusout","optionItems","size","optionElement","eq","isDOMAttrModifiedSupported","p","flag","attachEvent","setAttribute","checkAttributes","chkAttr","attributes","oldValue","camelCase","MutationObserver","WebKitMutationObserver","fn","o","cfg","noop","extend","el","attrs","l","item","nodeName","mOptions","subtree","attributeOldValue","observer","mutations","forEach","_this","observe","originalEvent","attrName","prevValue","propertyName","jQuery","eventEmitter","_JQInit","_JQ","evt","once","handler","one","off","getParameterByName","regex","results","location","search","decodeURIComponent","pluginEditor","developerConsole","currentStyle","values","font-family","color","font-weight","valueAccessor","allBindingsAccessor","unwrap","types","operation","phraseElement","instanceType","newViewModel","virtualElements","allowedBindings","datasourceTypeSettings","update","bindingContext","processPluginSettings","$root","resizeEnd","resizeTimer","clearTimeout","initialize","allowEdit","applyBindings","freeboardLocation","ajax","url","success","newDashboard","configuration","loadDatasourcePlugin","unshift","source","loadWidgetPlugin","addStyle","selector","rules","styleString","styleElement","styleSheet","cssText","showDialog","getDatasourceSettings","setDatasourceSettings","combinedSettings","defaults","getStyleString","returnString","getStyleObject","jsonDatasource","updateRefresh","refreshTime","updateTimer","clearInterval","setInterval","errorStage","lockErrorStage","refresh","use_thingproxy","requestURL","protocol","encodeURI","dataType","method","beforeSend","xhr","headers","header","setRequestHeader","error","newInstanceCallback","openWeatherMapDatasource","toTitleCase","str","txt","toUpperCase","substr","toLowerCase","encodeURIComponent","units","place_name","sunrise","sys","sunset","conditions","weather","current_temp","main","temp","high_temp","temp_max","low_temp","temp_min","pressure","humidity","wind_speed","wind","speed","wind_direction","deg","default","dweetioDatasource","onNewDweet","dweet","dweetio","get_latest_dweet_for","thing_id","err","content","stop_listening","listen_for","playbackDatasource","moveNext","currentDataset","loop","currentTimeout","stopTimeout","datafile","clockDatasource","stopTimer","timer","date","numeric_value","getTime","full_string_value","toLocaleString","date_string_value","toLocaleDateString","time_string_value","date_object","easeTransitionText","textElement","duration","currentValue","isNumeric","numParts","endingPrecision","startingPrecision","transitionValue","precisionValue","step","toFixed","done","addValueToSparkline","SPARKLINE_HISTORY_LENGTH","sparkline","fillColor","lineColor","lineWidth","spotRadius","spotColor","minSpotColor","maxSpotColor","highlightSpotColor","highlightLineColor","valueStyle","textWidget","updateValueSizing","valueElement","displayElement","innerWidth","unitsElement","titleElement","sparklineElement","shouldDisplayTitle","shouldDisplayUnits","valueFontSize","font-size","gaugeID","gaugeWidget","createGauge","rendered","gaugeElement","gaugeObject","JustGage","id","thisGaugeID","min_value","max_value","label","showInnerShadow","valueFontColor","sparklineWidget","pointerWidget","polygonPath","points","path","paper","triangle","strokeWidth","valueDiv","unitsDiv","radius","Raphael","circle","transform","pictureWidget","updateImage","widgetElement","imageURL","cacheBreakerURL","background-image","background-size","background-position","indicatorWidget","updateState","indicatorElement","toggleClass","isOn","stateElement","on_text","off_text","Boolean","googleMapWidget","updatePosition","map","marker","currentPosition","lat","lon","newLatLon","google","maps","LatLng","setPosition","panTo","initializeMap","mapOptions","zoom","center","disableDefaultUI","draggable","styles","featureType","elementType","stylers","lightness","weight","visibility","saturation","Map","addDomListener","cancelBubble","setOptions","zoomControl","Marker","gmap_initialize","htmlWidget","htmlElement"],"mappings":"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"}
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/css/freeboard/styles.css b/WebSites/errors/403/lib/css/freeboard/styles.css
new file mode 100755
index 0000000..349316e
--- /dev/null
+++ b/WebSites/errors/403/lib/css/freeboard/styles.css
@@ -0,0 +1,2380 @@
+/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 8/9.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+	display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 8/9.
+ */
+
+audio,
+canvas,
+video {
+	display: inline-block;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+	display: none;
+	height: 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+[hidden] {
+	display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	font-family: sans-serif; /* 1 */
+	-ms-text-size-adjust: 100%; /* 2 */
+	-webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+	margin: 0;
+}
+
+/* Hacky hack. Remove scrollbars for 320 width screens */
+@media screen and (max-width : 320px) {
+	body::-webkit-scrollbar {
+		display: none;
+	}
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+	outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+	outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari 5, and Chrome.
+ */
+
+h1 {
+	font-size: 2em;
+	margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+	border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
+ */
+
+b,
+strong {
+	font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+	font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	height: 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+	background: #ff0;
+	color: #000;
+}
+
+/**
+ * Correct font family set oddly in Safari 5 and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+	font-family: monospace, serif;
+	font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+	white-space: pre-wrap;
+}
+
+/**
+ * Set consistent quote types.
+ */
+
+q {
+	quotes: "\201C" "\201D" "\2018" "\2019";
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+	font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+	font-size: 75%;
+	line-height: 0;
+	position: relative;
+	vertical-align: baseline;
+}
+
+sup {
+	top: -0.5em;
+}
+
+sub {
+	bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9.
+ */
+
+img {
+	border: 0;
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+	overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari 5.
+ */
+
+figure {
+	margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+	border: 1px solid #c0c0c0;
+	margin: 0 2px;
+	padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+	border: 0; /* 1 */
+	padding: 0; /* 2 */
+}
+
+/**
+ * 1. Correct font family not being inherited in all browsers.
+ * 2. Correct font size not being inherited in all browsers.
+ * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
+ */
+
+button,
+input,
+select,
+textarea {
+	font-family: inherit; /* 1 */
+	font-size: 100%; /* 2 */
+	margin: 0; /* 3 */
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+	line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+	text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+	-webkit-appearance: button; /* 2 */
+	cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+	cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to `content-box` in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+	box-sizing: border-box; /* 1 */
+	padding: 0; /* 2 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+	-webkit-appearance: textfield; /* 1 */
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box; /* 2 */
+	box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+	-webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+	overflow: auto; /* 1 */
+	vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+
+/* ==========
+freeboard
+============*/
+
+html {
+	background-color: #101214;
+	height: 100%;
+	overflow: hidden;
+}
+
+body {
+	background-color: #101214;
+	color: #8b8b8b;
+	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+	font-size: 14px;
+	line-height: 20px;
+	height: 100%;
+	overflow-x: hidden;
+	overflow-y: auto;
+}
+
+.modal {
+	position: absolute;
+	background-color: #2a2a2a;
+	top: 120px;
+	width: 900px;
+	margin: auto;
+	right: 0px;
+	left: 0px;
+	margin-bottom: 25px;
+}
+
+.modal.small {
+	max-width: 500px;
+	width: 100%;
+}
+
+.modal header {
+	background-color: #272727;
+	height: 40px;
+	margin: 0;
+	padding: 0 10px 0 10px;
+	color: #8b8b8b;
+	text-transform: uppercase;
+}
+
+.modal footer {
+	background-color: #272727;
+	height: 40px;
+	margin: 0;
+	color: #8b8b8b;
+	text-transform: uppercase;
+	clear: both;
+}
+
+.modal footer {
+	text-align: right;
+}
+
+.modal footer .text-button {
+	line-height: 40px;
+	padding-left: 15px;
+	padding-right: 15px;
+	display: inline-block;
+}
+
+.modal section {
+	padding: 25px;
+	padding-bottom: 55px;
+}
+
+.control-group:last-child {
+	margin-bottom: 0px;
+}
+
+.control-group {
+	margin-bottom: 16px;
+}
+
+.control-group:before,
+.control-group:after {
+	display: table;
+	line-height: 0;
+	content: "";
+}
+
+.control-group:after {
+	clear: both;
+}
+
+.control-label {
+	padding-top: 5px;
+	text-align: right;
+	text-transform: uppercase;
+	font-size: 11px;
+}
+
+.controls {
+	padding-left: 20px;
+	margin-left: 180px;
+}
+
+.input-suffix {
+	display: inline-block;
+	height: 22px;
+	padding: 4px 10px;
+	line-height: 23px;
+	vertical-align: middle;
+	text-transform: uppercase;
+	font-size: 11px;
+	min-width: 16px;
+}
+
+#plugin-description {
+	margin-bottom: 25px;
+}
+
+.align-right {
+	text-align: right;
+}
+
+select,
+textarea {
+	margin: 0;
+	font-size: 100%;
+	vertical-align: middle;
+}
+
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+	display: inline-block;
+	height: 20px;
+	padding: 4px 6px;
+	font-size: 14px;
+	line-height: 20px;
+	color: #d3d4d4;
+	vertical-align: middle;
+	-webkit-border-radius: 0px;
+	-moz-border-radius: 0px;
+	border-radius: -px;
+	width: 400px;
+}
+
+input,
+textarea {
+	width: 206px;
+}
+
+input.small,
+textarea.small {
+	width: 133px;
+}
+
+textarea {
+	height: auto;
+}
+
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+	background-color: #272727;
+	border: 1px solid #3d3d3d;
+	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	-webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+	-moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+	-o-transition: border linear 0.2s, box-shadow linear 0.2s;
+	transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+	border-color: rgba(255, 153, 0, 0.8);
+	outline: 0;
+	outline: thin dotted    \9;
+	/* IE6-9 */
+
+	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgb(255, 153, 0);
+	-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgb(255, 153, 0);
+	box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgb(255, 153, 0);
+}
+
+select {
+	width: 220px;
+	background-color: #272727;
+	height: 27px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+	margin: 10px 0;
+	font-family: inherit;
+	font-weight: bold;
+	line-height: 20px;
+	color: inherit;
+	text-rendering: optimizelegibility;
+}
+
+h1,
+h2,
+h3 {
+	line-height: 40px;
+}
+
+h1 {
+	font-size: 38.5px;
+}
+
+h2 {
+	font-size: 31.5px;
+}
+
+h3 {
+	font-size: 24.5px;
+}
+
+h4 {
+	font-size: 17.5px;
+}
+
+h5 {
+	font-size: 14px;
+}
+
+h6 {
+	font-size: 11.9px;
+}
+
+table {
+	max-width: 100%;
+	background-color: transparent;
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+
+.table {
+	width: 100%;
+	margin-bottom: 20px;
+}
+
+.table th,
+.table td {
+	padding: 8px;
+	line-height: 20px;
+	text-align: left;
+	vertical-align: top;
+	border-top: 1px solid #dddddd;
+}
+
+.table th {
+	font-weight: bold;
+}
+
+.table thead th {
+	vertical-align: bottom;
+}
+
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+	border-top: 0;
+}
+
+.table tbody + tbody {
+	border-top: 2px solid #dddddd;
+}
+
+.table .table {
+	background-color: #ffffff;
+}
+
+.table-condensed th,
+.table-condensed td {
+	padding: 2px 5px;
+}
+
+a:focus {
+	outline: thin dotted #333;
+	outline: 5px auto -webkit-focus-ring-color;
+	outline-offset: -2px;
+}
+
+#modal_overlay {
+	position: absolute;
+	z-index: 100;
+	top: 0px;
+	left: 0px;
+	height: 100%;
+	width: 100%;
+	background: rgba(0, 0, 0, 0.8);
+	overflow-y: auto;
+}
+
+a:hover,
+a:active {
+	outline: 0;
+}
+
+a {
+	color: #B88F51;
+	text-decoration: none;
+}
+
+a:hover,
+a:focus {
+	color: #005580;
+	text-decoration: underline;
+}
+
+.gridster header {
+	background-color: #272727;
+	height: 30px;
+	margin: 0;
+	padding: 0 10px 0 10px;
+	color: #8b8b8b;
+	text-transform: uppercase;
+}
+
+header h1 {
+	font-size: 12px;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	padding: 0;
+	margin: 0;
+	line-height: 30px;
+}
+
+.gridster section {
+	line-height: normal;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	margin: auto;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+#board-content {
+	overflow: visible;
+	position: relative;
+	padding-top: 10px;
+}
+
+#main-header {
+	width: 100%;
+	position: fixed;
+	z-index: 50;
+	display: none;
+}
+
+#admin-bar {
+	background-color: #313131;
+	width: 100%;
+	height: 200px;
+	position: relative;
+	-webkit-box-shadow: 0 0 5px #000;
+	box-shadow: 0 0 5px #000;
+}
+
+#toggle-header {
+	margin: 0 auto;
+	left: 0;
+	right: 0;
+	width: 50px;
+	background-color: #313131;
+	text-align: center;
+	cursor: pointer;
+}
+
+#toggle-header-icon {
+	margin-top: 4px;
+	margin-bottom: 7px;
+}
+
+.widget {
+	padding: 5px 10px 5px 10px;
+	height: 100%;
+	width: 100%;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.widget.fillsize {
+	padding: 0;
+}
+
+.pane-tools {
+	top: 0px;
+	right: 0px;
+	position: absolute;
+	display: none;
+}
+
+.sub-section-tools {
+	top: 0px;
+	right: 0px;
+	position: absolute;
+	display: none;
+}
+
+.datasource-edit-btn {
+	padding: 5px;
+	margin-right: 5px;
+	cursor: pointer;
+}
+
+.datasource-delete-btn {
+	padding: 5px;
+	margin-left: 5px;
+	cursor: pointer;
+}
+
+#board-tools {
+	width: 50%;
+	float: left;
+}
+
+.table thead th {
+	font-size: 10px;
+	text-shadow: none;
+}
+
+.table td {
+	border-top: solid 1px #3d3d3d;
+	color: #d3d4d4;
+}
+
+#datasources {
+	width: 50%;
+	float: right;
+	height: 100%;
+}
+
+#cam {
+	height: 100%;
+	background-size: cover;
+}
+
+#admin-menu {
+	left: 0px;
+	right: 0px;
+	width: 950px;
+	top: 20px;
+	margin: 0px auto;
+	padding-left: 10px;
+	padding-right: 10px;
+	position: absolute;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.sub-section h2 {
+	font-size: 14px;
+	font-weight: normal;
+	padding: 0px;
+	margin: 0px;
+	line-height: normal;
+}
+
+.sub-section {
+	padding: 0;
+	border-bottom: solid 1px #363636;
+	position: relative;
+	overflow: hidden;
+}
+
+.sub-section-height-1 {
+	height: 60px;
+}
+
+.sub-section-height-2 {
+	height: 120px;
+}
+
+.sub-section-height-3 {
+	height: 180px;
+}
+
+.sub-section-height-4 {
+	height: 240px;
+}
+
+.sub-section:last-of-type {
+	border-bottom: none;
+}
+
+#pump-icon {
+	padding: 10px;
+	padding-bottom: 12px;
+	display: none;
+}
+
+#admin-menu h1 {
+
+}
+
+.section-title {
+	min-height: 7px;
+}
+
+.small-text {
+	color: #d3d4d4;
+	font-size: 20px;
+	font-weight: 100;
+	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	letter-spacing: 1px;
+}
+
+ul, ol {
+	list-style: none;
+}
+
+#column-tools {
+	position: relative;
+	display: none;
+	margin: 0 auto;
+	left: 0;
+	right: 0;
+	top: 5px;
+}
+
+#column-tools .left-columns {
+	position: absolute;
+	left: 0;
+}
+
+#column-tools .right-columns {
+	position: absolute;
+	right: 0;
+}
+
+.column-tool {
+	cursor: pointer;
+}
+
+.column-tool.min.sub, .column-tool.max.add {
+	display: none;
+}
+
+.column-icon {
+	display: inline-block;
+	background-color: white;
+	width: 5px;
+	height: 100%;
+}
+
+.column-icon.right {
+	float: right;
+}
+
+.column-icon.left {
+	float: left;
+}
+
+.gridster {
+	max-width: 960px;
+	margin: 0 auto;
+	left: 0;
+	right: 0;
+	top: 0;
+}
+
+.gridster .gs_w {
+	background: #2a2a2a;
+	padding: 0px;
+	margin: 0px;
+	overflow: hidden;
+	z-index: auto;
+	-webkit-touch-callout: text;
+	-webkit-user-select: text;
+	-khtml-user-select: text;
+	-moz-user-select: text;
+	-ms-user-select: text;
+	user-select: text;
+}
+
+.gridster .preview-holder {
+	border: none !important;
+	border-radius: 0 !important;
+	background: rgba(255, 255, 255, .2) !important;
+}
+
+[class^="icon-"],
+[class*=" icon-"] {
+	display: inline-block;
+	width: 14px;
+	height: 14px;
+	margin-top: 1px;
+	*margin-right: .3em;
+	line-height: 14px;
+	vertical-align: text-top;
+	background-image: url("../../../img/glyphicons-halflings.png");
+	background-position: 14px 14px;
+	background-repeat: no-repeat;
+}
+
+/* White icons with optional class, or on hover/focus/active states of certain elements */
+
+.icon-white,
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:focus > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > li > a:focus > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"],
+.dropdown-submenu:hover > a > [class^="icon-"],
+.dropdown-submenu:focus > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"],
+.dropdown-submenu:focus > a > [class*=" icon-"] {
+	background-image: url("../../../img/glyphicons-halflings-white.png");
+}
+
+.icon-glass {
+	background-position: 0 0;
+}
+
+.icon-music {
+	background-position: -24px 0;
+}
+
+.icon-search {
+	background-position: -48px 0;
+}
+
+.icon-envelope {
+	background-position: -72px 0;
+}
+
+.icon-heart {
+	background-position: -96px 0;
+}
+
+.icon-star {
+	background-position: -120px 0;
+}
+
+.icon-star-empty {
+	background-position: -144px 0;
+}
+
+.icon-user {
+	background-position: -168px 0;
+}
+
+.icon-film {
+	background-position: -192px 0;
+}
+
+.icon-th-large {
+	background-position: -216px 0;
+}
+
+.icon-th {
+	background-position: -240px 0;
+}
+
+.icon-th-list {
+	background-position: -264px 0;
+}
+
+.icon-ok {
+	background-position: -288px 0;
+}
+
+.icon-remove {
+	background-position: -312px 0;
+}
+
+.icon-zoom-in {
+	background-position: -336px 0;
+}
+
+.icon-zoom-out {
+	background-position: -360px 0;
+}
+
+.icon-off {
+	background-position: -384px 0;
+}
+
+.icon-signal {
+	background-position: -408px 0;
+}
+
+.icon-cog {
+	background-position: -432px 0;
+}
+
+.icon-trash {
+	background-position: -456px 0;
+}
+
+.icon-home {
+	background-position: 0 -24px;
+}
+
+.icon-file {
+	background-position: -24px -24px;
+}
+
+.icon-time {
+	background-position: -48px -24px;
+}
+
+.icon-road {
+	background-position: -72px -24px;
+}
+
+.icon-download-alt {
+	background-position: -96px -24px;
+}
+
+.icon-download {
+	background-position: -120px -24px;
+}
+
+.icon-upload {
+	background-position: -144px -24px;
+}
+
+.icon-inbox {
+	background-position: -168px -24px;
+}
+
+.icon-play-circle {
+	background-position: -192px -24px;
+}
+
+.icon-repeat {
+	background-position: -216px -24px;
+}
+
+.icon-refresh {
+	background-position: -240px -24px;
+}
+
+.icon-list-alt {
+	background-position: -264px -24px;
+}
+
+.icon-lock {
+	background-position: -287px -24px;
+}
+
+.icon-flag {
+	background-position: -312px -24px;
+}
+
+.icon-headphones {
+	background-position: -336px -24px;
+}
+
+.icon-volume-off {
+	background-position: -360px -24px;
+}
+
+.icon-volume-down {
+	background-position: -384px -24px;
+}
+
+.icon-volume-up {
+	background-position: -408px -24px;
+}
+
+.icon-qrcode {
+	background-position: -432px -24px;
+}
+
+.icon-barcode {
+	background-position: -456px -24px;
+}
+
+.icon-tag {
+	background-position: 0 -48px;
+}
+
+.icon-tags {
+	background-position: -25px -48px;
+}
+
+.icon-book {
+	background-position: -48px -48px;
+}
+
+.icon-bookmark {
+	background-position: -72px -48px;
+}
+
+.icon-print {
+	background-position: -96px -48px;
+}
+
+.icon-camera {
+	background-position: -120px -48px;
+}
+
+.icon-font {
+	background-position: -144px -48px;
+}
+
+.icon-bold {
+	background-position: -167px -48px;
+}
+
+.icon-italic {
+	background-position: -192px -48px;
+}
+
+.icon-text-height {
+	background-position: -216px -48px;
+}
+
+.icon-text-width {
+	background-position: -240px -48px;
+}
+
+.icon-align-left {
+	background-position: -264px -48px;
+}
+
+.icon-align-center {
+	background-position: -288px -48px;
+}
+
+.icon-align-right {
+	background-position: -312px -48px;
+}
+
+.icon-align-justify {
+	background-position: -336px -48px;
+}
+
+.icon-list {
+	background-position: -360px -48px;
+}
+
+.icon-indent-left {
+	background-position: -384px -48px;
+}
+
+.icon-indent-right {
+	background-position: -408px -48px;
+}
+
+.icon-facetime-video {
+	background-position: -432px -48px;
+}
+
+.icon-picture {
+	background-position: -456px -48px;
+}
+
+.icon-pencil {
+	background-position: 0 -72px;
+}
+
+.icon-map-marker {
+	background-position: -24px -72px;
+}
+
+.icon-adjust {
+	background-position: -48px -72px;
+}
+
+.icon-tint {
+	background-position: -72px -72px;
+}
+
+.icon-edit {
+	background-position: -96px -72px;
+}
+
+.icon-share {
+	background-position: -120px -72px;
+}
+
+.icon-check {
+	background-position: -144px -72px;
+}
+
+.icon-move {
+	background-position: -168px -72px;
+}
+
+.icon-step-backward {
+	background-position: -192px -72px;
+}
+
+.icon-fast-backward {
+	background-position: -216px -72px;
+}
+
+.icon-backward {
+	background-position: -240px -72px;
+}
+
+.icon-play {
+	background-position: -264px -72px;
+}
+
+.icon-pause {
+	background-position: -288px -72px;
+}
+
+.icon-stop {
+	background-position: -312px -72px;
+}
+
+.icon-forward {
+	background-position: -336px -72px;
+}
+
+.icon-fast-forward {
+	background-position: -360px -72px;
+}
+
+.icon-step-forward {
+	background-position: -384px -72px;
+}
+
+.icon-eject {
+	background-position: -408px -72px;
+}
+
+.icon-chevron-left {
+	background-position: -432px -72px;
+}
+
+.icon-chevron-right {
+	background-position: -456px -72px;
+}
+
+.icon-plus-sign {
+	background-position: 0 -96px;
+}
+
+.icon-minus-sign {
+	background-position: -24px -96px;
+}
+
+.icon-remove-sign {
+	background-position: -48px -96px;
+}
+
+.icon-ok-sign {
+	background-position: -72px -96px;
+}
+
+.icon-question-sign {
+	background-position: -96px -96px;
+}
+
+.icon-info-sign {
+	background-position: -120px -96px;
+}
+
+.icon-screenshot {
+	background-position: -144px -96px;
+}
+
+.icon-remove-circle {
+	background-position: -168px -96px;
+}
+
+.icon-ok-circle {
+	background-position: -192px -96px;
+}
+
+.icon-ban-circle {
+	background-position: -216px -96px;
+}
+
+.icon-arrow-left {
+	background-position: -240px -96px;
+}
+
+.icon-arrow-right {
+	background-position: -264px -96px;
+}
+
+.icon-arrow-up {
+	background-position: -289px -96px;
+}
+
+.icon-arrow-down {
+	background-position: -312px -96px;
+}
+
+.icon-share-alt {
+	background-position: -336px -96px;
+}
+
+.icon-resize-full {
+	background-position: -360px -96px;
+}
+
+.icon-resize-small {
+	background-position: -384px -96px;
+}
+
+.icon-plus {
+	background-position: -408px -96px;
+}
+
+.icon-minus {
+	background-position: -433px -96px;
+}
+
+.icon-asterisk {
+	background-position: -456px -96px;
+}
+
+.icon-exclamation-sign {
+	background-position: 0 -120px;
+}
+
+.icon-gift {
+	background-position: -24px -120px;
+}
+
+.icon-leaf {
+	background-position: -48px -120px;
+}
+
+.icon-fire {
+	background-position: -72px -120px;
+}
+
+.icon-eye-open {
+	background-position: -96px -120px;
+}
+
+.icon-eye-close {
+	background-position: -120px -120px;
+}
+
+.icon-warning-sign {
+	background-position: -144px -120px;
+}
+
+.icon-plane {
+	background-position: -168px -120px;
+}
+
+.icon-calendar {
+	background-position: -192px -120px;
+}
+
+.icon-random {
+	width: 16px;
+	background-position: -216px -120px;
+}
+
+.icon-comment {
+	background-position: -240px -120px;
+}
+
+.icon-magnet {
+	background-position: -264px -120px;
+}
+
+.icon-chevron-up {
+	background-position: -288px -120px;
+}
+
+.icon-chevron-down {
+	background-position: -313px -119px;
+}
+
+.icon-retweet {
+	background-position: -336px -120px;
+}
+
+.icon-shopping-cart {
+	background-position: -360px -120px;
+}
+
+.icon-folder-close {
+	width: 16px;
+	background-position: -384px -120px;
+}
+
+.icon-folder-open {
+	width: 16px;
+	background-position: -408px -120px;
+}
+
+.icon-resize-vertical {
+	background-position: -432px -119px;
+}
+
+.icon-resize-horizontal {
+	background-position: -456px -118px;
+}
+
+.icon-hdd {
+	background-position: 0 -144px;
+}
+
+.icon-bullhorn {
+	background-position: -24px -144px;
+}
+
+.icon-bell {
+	background-position: -48px -144px;
+}
+
+.icon-certificate {
+	background-position: -72px -144px;
+}
+
+.icon-thumbs-up {
+	background-position: -96px -144px;
+}
+
+.icon-thumbs-down {
+	background-position: -120px -144px;
+}
+
+.icon-hand-right {
+	background-position: -144px -144px;
+}
+
+.icon-hand-left {
+	background-position: -168px -144px;
+}
+
+.icon-hand-up {
+	background-position: -192px -144px;
+}
+
+.icon-hand-down {
+	background-position: -216px -144px;
+}
+
+.icon-circle-arrow-right {
+	background-position: -240px -144px;
+}
+
+.icon-circle-arrow-left {
+	background-position: -264px -144px;
+}
+
+.icon-circle-arrow-up {
+	background-position: -288px -144px;
+}
+
+.icon-circle-arrow-down {
+	background-position: -312px -144px;
+}
+
+.icon-globe {
+	background-position: -336px -144px;
+}
+
+.icon-wrench {
+	background-position: -360px -144px;
+}
+
+.icon-tasks {
+	background-position: -384px -144px;
+}
+
+.icon-filter {
+	background-position: -408px -144px;
+}
+
+.icon-briefcase {
+	background-position: -432px -144px;
+}
+
+.icon-fullscreen {
+	background-position: -456px -144px;
+}
+
+.form-table td {
+	vertical-align: top;
+}
+
+.form-label {
+	text-align: right;
+	padding-right: 14px;
+	height: 42px;
+	float: left;
+	width: 160px;
+	padding-top: 4px;
+}
+
+.form-value {
+	float: left;
+}
+
+.form-row {
+	clear: both;
+}
+
+td.table-row-operation {
+}
+
+input.table-row-value {
+	width: 150px;
+	margin: 0px;
+}
+
+.sub-table {
+	margin-bottom: 3px;
+}
+
+.sub-table td {
+	border: none;
+	vertical-align: middle;
+}
+
+.form-table-value-subtable {
+	max-height: 110px;
+	overflow-x: hidden;
+	overflow-y: auto;
+	border-bottom: solid 1px #3d3d3d;
+	width: 414px;
+}
+
+.datasource-list-container {
+	max-height: 110px;
+	overflow-x: hidden;
+	overflow-y: auto;
+	border-bottom: solid 1px #3d3d3d;
+}
+
+ul.value-dropdown {
+	height: 75px;
+	position: absolute;
+	padding: 0px;
+	margin: 0px;
+	background-color: #272727;
+	border: 1px solid rgba(255, 153, 0, 0.8);
+	overflow-x: hidden;
+	overflow-y: auto;
+	z-index: 3001;
+}
+
+ul.value-dropdown li {
+	padding: 5px;
+	cursor: pointer;
+}
+
+ul.value-dropdown li.selected {
+	background-color: rgba(255, 153, 0, 0.8);
+	color: #000;
+	text-shadow: none;
+}
+
+ul.value-dropdown li .preview {
+	font-style: italic;
+	font-size: 10px;
+	width: 300px;
+	display: inline-block;
+	vertical-align: bottom;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	padding-left: 20px;
+}
+
+td.form-table-value > input[type="checkbox"] {
+	height: 15px;
+	margin-top: 7px;
+}
+
+.table-row-operation > i {
+	cursor: pointer;
+}
+
+#main-logo {
+	display: block;
+	margin-bottom: 20px;
+}
+
+#dash-logo {
+	display: block;
+	margin-left: 10px;
+	margin-bottom: 10px;
+}
+
+.value-editor-ds {
+	color: #B88F51;
+	cursor: pointer;
+}
+
+ul.board-toolbar {
+	padding: 0px;
+	margin: 0px;
+	text-transform: uppercase;
+	font-size: 11px;
+}
+
+ul.board-toolbar.vertical {
+	display: inline-block;
+}
+
+.board-toolbar li {
+	color: #B88F51;
+	float: left;
+	cursor: pointer;
+	margin: 0px 0px 0px 5px;
+	background-color: rgba(75, 75, 75, 0.0);
+	padding: 8px;
+	height: 14px;
+}
+
+.board-toolbar.vertical li {
+	float: none;
+}
+
+.board-toolbar li:hover {
+	background-color: rgba(75, 75, 75, 1.0);
+
+	-webkit-transition: 250ms linear;
+	-moz-transition: 250ms linear;
+	-o-transition: 250ms linear;
+	-ms-transition: 250ms linear;
+	transition: 250ms linear;
+}
+
+.board-toolbar li i {
+	float: left;
+	margin: 0;
+	padding: 0;
+}
+
+.board-toolbar li label {
+	cursor: pointer;
+	margin-left: 5px;
+	float: left;
+	margin-top: -3px;
+	margin-bottom: -10px;
+}
+
+.text-button {
+	color: #B88F51;
+	cursor: pointer;
+	text-transform: uppercase;
+}
+
+.datasource-name {
+	text-transform: none;
+}
+
+a:hover.text-button, a:focus.text-button {
+	color: #B88F51;
+	text-decoration: none;
+}
+
+.text-button > i {
+	margin-right: 10px;
+}
+
+.text-button::before,
+.text-button::after {
+	display: inline-block;
+	opacity: 0;
+	-webkit-transition: -webkit-transform 0.3s, opacity 0.2s;
+	-moz-transition: -moz-transform 0.3s, opacity 0.2s;
+	transition: transform 0.3s, opacity 0.2s;
+}
+
+.text-button::before {
+	margin-right: 5px;
+	content: '[';
+	-webkit-transform: translateX(10px);
+	-moz-transform: translateX(10px);
+	transform: translateX(10px);
+}
+
+.text-button::after {
+	margin-left: 5px;
+	content: ']';
+	-webkit-transform: translateX(-10px);
+	-moz-transform: translateX(-10px);
+	transform: translateX(-10px);
+}
+
+.text-button:hover::before,
+.text-button:hover::after,
+.text-button:focus::before,
+.text-button:focus::after {
+	opacity: 1;
+	-webkit-transform: translateX(0px);
+	-moz-transform: translateX(0px);
+	transform: translateX(0px);
+}
+
+.setting-description {
+	font-size: 10px;
+	text-shadow: none;
+	color: #6F6F6F;
+	margin-top: 5px;
+	margin-bottom: 15px;
+	max-width: 414px;
+	line-height: 1.5em;
+}
+
+.calculated-setting-row {
+	clear: both;
+	height: 30px;
+	margin-bottom: 5px;
+}
+
+textarea.calculated-value-input {
+	position: absolute;
+	width: 400px;
+	height: 20px;
+	resize: none;
+	white-space: nowrap;
+	overflow: auto;
+	Z-index: 3000;
+}
+
+ul.datasource-input-suffix {
+	margin-left: 409px;
+}
+
+.form-label .board-toolbar li {
+	float: right;
+}
+
+.styled-select select {
+	width: 414px;
+	height: 30px;
+	-webkit-appearance: none;
+	border: 1px solid #3d3d3d;
+	background: url(../../../img/dropdown-arrow.png) no-repeat right #272727;
+}
+
+.title {
+	font-family: 'Helvetica-Neue', 'Helvetica', 'Arial', sans-serif;
+	vertical-align: baseline;
+	-webkit-font-smoothing: antialiased;
+	font-style: normal;
+	color: #d3d4d4;
+}
+
+.title.bordered {
+	border: solid 3px #d3d4d4;
+	display: inline-block;
+	padding: 2px 17px 2px 17px;
+	line-height: 39px;
+}
+
+h1.title {
+	margin-bottom: 10px;
+	font-size: 23px;
+	letter-spacing: -1px;
+}
+
+h2.title {
+	font-size: 13px;
+	line-height: 20px;
+	margin: 0px;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+.form-value input[type="checkbox"] {
+	margin-top: 8px;
+}
+
+.table-operation {
+	font-size: 11px;
+	padding-left: 5px;
+	padding-bottom: 5px;
+	padding-top: 1px;
+}
+
+#add-pane {
+}
+
+#pane-holding-pen {
+	display: none;
+}
+
+@media screen and (max-width : 960px) {
+	#add-pane {
+		padding-top: 10px;
+	}
+
+	.text-button {
+		font-size: 14px;
+		line-height: 22px;
+	}
+
+	h1.title {
+		margin-bottom: 0px;
+		font-size: 13px;
+		letter-spacing: 0px;
+	}
+
+	.title.bordered {
+		padding: 1px 8px;
+		line-height: 25px;
+		border-width: 2px;
+	}
+
+	#admin-menu {
+		width: 100%;
+	}
+
+	h2.title {
+		font-size: 10px;
+		padding-top: 5px;
+		padding-bottom: 5px;
+	}
+
+	#board-tools {
+		width: 100%;
+	}
+
+	#datasources {
+		width: 100%;
+		float: none;
+		clear: both;
+	}
+
+	#board-actions {
+		float: left;
+	}
+
+	#board-logo {
+		float: left;
+	}
+
+	.modal header {
+		height: 30px;
+	}
+
+	.modal {
+		width: 100%;
+		top: 0px;
+		left: 0px;
+	}
+
+	.datasource-list-container {
+		max-height: 77px;
+	}
+
+	.form-label {
+		float: none;
+		height: auto;
+		width: auto;
+		text-align: left;
+		padding-top: 0px;
+	}
+
+	.form-value {
+		width: 100%;
+		padding-bottom: 10px;
+		float: none;
+	}
+
+	.control-label {
+		width: auto;
+	}
+
+	.modal section {
+		padding-bottom: 10px;
+		padding-top: 10px;
+	}
+
+	ul.datasource-input-suffix {
+		margin-left: 0px;
+		margin-bottom: 30px;
+	}
+
+	ul.datasource-input-suffix li {
+		margin-left: 0;
+	}
+
+	textarea, input[type="text"] {
+		width: 95%;
+	}
+
+	.styled-select select {
+		width: 100%;
+	}
+
+	.form-table-value-subtable {
+		width: 100%;
+	}
+
+	.table-operation {
+		font-size: 11px;
+	}
+
+	textarea.calculated-value-input {
+		position: inherit;
+		width: 95%;
+	}
+}
+
+.wrapperloading {
+	position: absolute;
+	height: 200px;
+	width: 200px;
+	top: 50%;
+	margin-top: -100px;
+	left: 50%;
+	margin-left: -100px;
+	z-index: 2000;
+}
+
+.wrapperloading .loading.up {
+	position: absolute;
+	height: 200px;
+	width: 200px;
+	border-radius: 150px;
+	border: 3px solid #fff;
+	border-top-color: #fff;
+	border-left-color: #555;
+	border-right-color: #555;
+	border-bottom-color: #fff;
+	-webkit-animation: rotation 3s linear infinite;
+	-moz-animation: rotation 3s linear infinite;
+	-o-animation: rotation 3s linear infinite;
+	animation: rotation 3s linear infinite;
+}
+
+.wrapperloading .loading.down {
+	position: absolute;
+	height: 100px;
+	width: 100px;
+	top: 50%;
+	margin-top: -50px;
+	left: 50%;
+	margin-left: -50px;
+	border-radius: 150px;
+	border: 3px solid #fff;
+	border-left-color: #fff;
+	border-top-color: #555;
+	border-bottom-color: #555;
+	border-right-color: #fff;
+	-webkit-animation: rotation 1s linear infinite;
+	-moz-animation: rotation 1s linear infinite;
+	-o-animation: rotation 1s linear infinite;
+	animation: rotation 1s linear infinite;
+}
+
+@-webkit-keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@-moz-keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@-o-keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@keyframes rotation {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-moz-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		-o-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+
+	50% {
+		-webkit-transform: rotate(180deg);
+		-moz-transform: rotate(180deg);
+		-ms-transform: rotate(180deg);
+		-o-transform: rotate(180deg);
+		transform: rotate(180deg);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		-moz-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		-o-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
+	color: #636363;
+}
+
+input:-moz-placeholder, textarea:-moz-placeholder {
+	color: #636363;
+}
+
+::-webkit-scrollbar {
+	height: 0px;
+	width: 4px;
+	background: transparent;
+	padding-right: 10;
+}
+
+::-webkit-scrollbar-thumb {
+	background: rgba(255, 255, 255, 0.05);
+	-webkit-border-radius: 1ex;
+}
+
+::-webkit-scrollbar-corner {
+	background: transparent;
+}
+
+.validation-error {
+	margin-top: 7px;
+	margin-bottom: 7px;
+	color: #AA7575;
+	font-size: 13px;
+}
+
+.onoffswitch {
+	position: relative;
+	width: 78px;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+}
+
+.onoffswitch-checkbox {
+	display: none;
+}
+
+.onoffswitch-label {
+	display: block;
+	overflow: hidden;
+	cursor: pointer;
+	border: 1px solid #3D3D3D;
+	border-radius: 0px;
+}
+
+.onoffswitch-inner {
+	width: 200%;
+	margin-left: -100%;
+	-moz-transition: margin 0.3s ease-in 0s;
+	-webkit-transition: margin 0.3s ease-in 0s;
+	-o-transition: margin 0.3s ease-in 0s;
+	transition: margin 0.3s ease-in 0s;
+}
+
+.onoffswitch-inner .on, .onoffswitch-inner .off {
+	float: left;
+	width: 50%;
+	height: 29px;
+	padding: 0;
+	line-height: 29px;
+	font-size: 17px;
+	color: white;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.onoffswitch-inner .on {
+	padding-left: 6px;
+	background-color: #2a2a2a;
+	color: #8B8B8B;
+}
+
+.onoffswitch-inner .off {
+	padding-right: 6px;
+	background-color: #101214;
+	color: #8B8B8B;
+	text-align: right;
+}
+
+.onoffswitch-switch {
+	width: 21px;
+	margin: 4px;
+	background: #A1A1A1;
+	border: 1px solid #3D3D3D;
+	border-radius: 0px;
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	right: 47px;
+	-moz-transition: all 0.3s ease-in 0s;
+	-webkit-transition: all 0.3s ease-in 0s;
+	-o-transition: all 0.3s ease-in 0s;
+	transition: all 0.3s ease-in 0s;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+	margin-left: 0;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+	right: 0px;
+	background-color: #FF9900;
+}
+
+.code-window {
+	z-index: 5000;
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	background-color: #2a2a2a;
+}
+
+.code-window-footer {
+	height: 64px;
+	position: absolute;
+	right: 0;
+	bottom: 0;
+	line-height: 64px;
+	padding-right: 20px;
+	padding-left: 20px;
+}
+
+.code-window-header {
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: 20px;
+	line-height: 1.1em;
+	font-weight: 200;
+}
+
+@media screen and (max-width : 800px) {
+	.code-window-header {
+		font-size: 11px;
+	}
+}
+
+.code-mirror-wrapper {
+	width: 100%;
+	position: absolute;
+	bottom: 64px;
+	top: 100px;
+	left: 0;
+}
+
+.CodeMirror {
+	width: 100%;
+	height: 100% !important;
+}
+
diff --git a/WebSites/errors/403/lib/css/thirdparty/codemirror-ambiance.css b/WebSites/errors/403/lib/css/thirdparty/codemirror-ambiance.css
new file mode 100644
index 0000000..48ba091
--- /dev/null
+++ b/WebSites/errors/403/lib/css/thirdparty/codemirror-ambiance.css
@@ -0,0 +1,74 @@
+/* ambiance theme for codemirror */
+
+/* Color scheme */
+
+.cm-s-ambiance .cm-keyword { color: #cda869; }
+.cm-s-ambiance .cm-atom { color: #CF7EA9; }
+.cm-s-ambiance .cm-number { color: #78CF8A; }
+.cm-s-ambiance .cm-def { color: #aac6e3; }
+.cm-s-ambiance .cm-variable { color: #ffb795; }
+.cm-s-ambiance .cm-variable-2 { color: #eed1b3; }
+.cm-s-ambiance .cm-variable-3 { color: #faded3; }
+.cm-s-ambiance .cm-property { color: #eed1b3; }
+.cm-s-ambiance .cm-operator {color: #fa8d6a;}
+.cm-s-ambiance .cm-comment { color: #555; font-style:italic; }
+.cm-s-ambiance .cm-string { color: #8f9d6a; }
+.cm-s-ambiance .cm-string-2 { color: #9d937c; }
+.cm-s-ambiance .cm-meta { color: #D2A8A1; }
+.cm-s-ambiance .cm-qualifier { color: yellow; }
+.cm-s-ambiance .cm-builtin { color: #9999cc; }
+.cm-s-ambiance .cm-bracket { color: #24C2C7; }
+.cm-s-ambiance .cm-tag { color: #fee4ff }
+.cm-s-ambiance .cm-attribute {  color: #9B859D; }
+.cm-s-ambiance .cm-header {color: blue;}
+.cm-s-ambiance .cm-quote { color: #24C2C7; }
+.cm-s-ambiance .cm-hr { color: pink; }
+.cm-s-ambiance .cm-link { color: #F4C20B; }
+.cm-s-ambiance .cm-special { color: #FF9D00; }
+.cm-s-ambiance .cm-error { color: #AF2018; }
+
+.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; }
+.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; }
+
+.cm-s-ambiance .CodeMirror-selected {
+  background: rgba(255, 255, 255, 0.15);
+}
+.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected {
+  background: rgba(255, 255, 255, 0.10);
+}
+
+/* Editor styling */
+
+.cm-s-ambiance.CodeMirror {
+  line-height: 1.40em;
+  color: #E6E1DC;
+  background-color: #202020;
+  -webkit-box-shadow: inset 0 0 10px black;
+  -moz-box-shadow: inset 0 0 10px black;
+  box-shadow: inset 0 0 10px black;
+}
+
+.cm-s-ambiance .CodeMirror-gutters {
+  background: #3D3D3D;
+  border-right: 1px solid #4D4D4D;
+  box-shadow: 0 10px 20px black;
+}
+
+.cm-s-ambiance .CodeMirror-linenumber {
+  text-shadow: 0px 1px 1px #4d4d4d;
+  color: #222;
+  padding: 0 5px;
+}
+
+.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor {
+  border-left: 1px solid #7991E8;
+}
+
+.cm-s-ambiance .CodeMirror-activeline-background {
+  background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);
+}
+
+.cm-s-ambiance.CodeMirror,
+.cm-s-ambiance .CodeMirror-gutters {
+  background-image: url("data:image/png;base64,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");
+}
diff --git a/WebSites/errors/403/lib/css/thirdparty/codemirror.css b/WebSites/errors/403/lib/css/thirdparty/codemirror.css
new file mode 100644
index 0000000..098a317
--- /dev/null
+++ b/WebSites/errors/403/lib/css/thirdparty/codemirror.css
@@ -0,0 +1,272 @@
+/* BASICS */
+
+.CodeMirror {
+  /* Set height, width, borders, and global font properties here */
+  font-family: monospace;
+  height: 300px;
+}
+.CodeMirror-scroll {
+  /* Set scrolling behaviour here */
+  overflow: auto;
+}
+
+/* PADDING */
+
+.CodeMirror-lines {
+  padding: 4px 0; /* Vertical padding around content */
+}
+.CodeMirror pre {
+  padding: 0 4px; /* Horizontal padding of content */
+}
+
+.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+  background-color: white; /* The little square between H and V scrollbars */
+}
+
+/* GUTTER */
+
+.CodeMirror-gutters {
+  border-right: 1px solid #ddd;
+  background-color: #f7f7f7;
+  white-space: nowrap;
+}
+.CodeMirror-linenumbers {}
+.CodeMirror-linenumber {
+  padding: 0 3px 0 5px;
+  min-width: 20px;
+  text-align: right;
+  color: #999;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+/* CURSOR */
+
+.CodeMirror div.CodeMirror-cursor {
+  border-left: 1px solid black;
+}
+/* Shown when moving in bi-directional text */
+.CodeMirror div.CodeMirror-secondarycursor {
+  border-left: 1px solid silver;
+}
+.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
+  width: auto;
+  border: 0;
+  background: #7e7;
+}
+/* Can style cursor different in overwrite (non-insert) mode */
+div.CodeMirror-overwrite div.CodeMirror-cursor {}
+
+.cm-tab { display: inline-block; }
+
+.CodeMirror-ruler {
+  border-left: 1px solid #ccc;
+  position: absolute;
+}
+
+/* DEFAULT THEME */
+
+.cm-s-default .cm-keyword {color: #708;}
+.cm-s-default .cm-atom {color: #219;}
+.cm-s-default .cm-number {color: #164;}
+.cm-s-default .cm-def {color: #00f;}
+.cm-s-default .cm-variable,
+.cm-s-default .cm-punctuation,
+.cm-s-default .cm-property,
+.cm-s-default .cm-operator {}
+.cm-s-default .cm-variable-2 {color: #05a;}
+.cm-s-default .cm-variable-3 {color: #085;}
+.cm-s-default .cm-comment {color: #a50;}
+.cm-s-default .cm-string {color: #a11;}
+.cm-s-default .cm-string-2 {color: #f50;}
+.cm-s-default .cm-meta {color: #555;}
+.cm-s-default .cm-qualifier {color: #555;}
+.cm-s-default .cm-builtin {color: #30a;}
+.cm-s-default .cm-bracket {color: #997;}
+.cm-s-default .cm-tag {color: #170;}
+.cm-s-default .cm-attribute {color: #00c;}
+.cm-s-default .cm-header {color: blue;}
+.cm-s-default .cm-quote {color: #090;}
+.cm-s-default .cm-hr {color: #999;}
+.cm-s-default .cm-link {color: #00c;}
+
+.cm-negative {color: #d44;}
+.cm-positive {color: #292;}
+.cm-header, .cm-strong {font-weight: bold;}
+.cm-em {font-style: italic;}
+.cm-link {text-decoration: underline;}
+
+.cm-s-default .cm-error {color: #f00;}
+.cm-invalidchar {color: #f00;}
+
+div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
+div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
+.CodeMirror-activeline-background {background: #e8f2ff;}
+
+/* STOP */
+
+/* The rest of this file contains styles related to the mechanics of
+   the editor. You probably shouldn't touch them. */
+
+.CodeMirror {
+  line-height: 1;
+  position: relative;
+  overflow: hidden;
+  background: white;
+  color: black;
+}
+
+.CodeMirror-scroll {
+  /* 30px is the magic margin used to hide the element's real scrollbars */
+  /* See overflow: hidden in .CodeMirror */
+  margin-bottom: -30px; margin-right: -30px;
+  padding-bottom: 30px;
+  height: 100%;
+  outline: none; /* Prevent dragging from highlighting the element */
+  position: relative;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.CodeMirror-sizer {
+  position: relative;
+  border-right: 30px solid transparent;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+/* The fake, visible scrollbars. Used to force redraw during scrolling
+   before actuall scrolling happens, thus preventing shaking and
+   flickering artifacts. */
+.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+  position: absolute;
+  z-index: 6;
+  display: none;
+}
+.CodeMirror-vscrollbar {
+  right: 0; top: 0;
+  overflow-x: hidden;
+  overflow-y: scroll;
+}
+.CodeMirror-hscrollbar {
+  bottom: 0; left: 0;
+  overflow-y: hidden;
+  overflow-x: scroll;
+}
+.CodeMirror-scrollbar-filler {
+  right: 0; bottom: 0;
+}
+.CodeMirror-gutter-filler {
+  left: 0; bottom: 0;
+}
+
+.CodeMirror-gutters {
+  position: absolute; left: 0; top: 0;
+  padding-bottom: 30px;
+  z-index: 3;
+}
+.CodeMirror-gutter {
+  white-space: normal;
+  height: 100%;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  padding-bottom: 30px;
+  margin-bottom: -32px;
+  display: inline-block;
+  /* Hack to make IE7 behave */
+  *zoom:1;
+  *display:inline;
+}
+.CodeMirror-gutter-elt {
+  position: absolute;
+  cursor: default;
+  z-index: 4;
+}
+
+.CodeMirror-lines {
+  cursor: text;
+}
+.CodeMirror pre {
+  /* Reset some styles that the rest of the page might have set */
+  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
+  border-width: 0;
+  background: transparent;
+  font-family: inherit;
+  font-size: inherit;
+  margin: 0;
+  white-space: pre;
+  word-wrap: normal;
+  line-height: inherit;
+  color: inherit;
+  z-index: 2;
+  position: relative;
+  overflow: visible;
+}
+.CodeMirror-wrap pre {
+  word-wrap: break-word;
+  white-space: pre-wrap;
+  word-break: normal;
+}
+
+.CodeMirror-linebackground {
+  position: absolute;
+  left: 0; right: 0; top: 0; bottom: 0;
+  z-index: 0;
+}
+
+.CodeMirror-linewidget {
+  position: relative;
+  z-index: 2;
+  overflow: auto;
+}
+
+.CodeMirror-widget {}
+
+.CodeMirror-wrap .CodeMirror-scroll {
+  overflow-x: hidden;
+}
+
+.CodeMirror-measure {
+  position: absolute;
+  width: 100%;
+  height: 0;
+  overflow: hidden;
+  visibility: hidden;
+}
+.CodeMirror-measure pre { position: static; }
+
+.CodeMirror div.CodeMirror-cursor {
+  position: absolute;
+  border-right: none;
+  width: 0;
+}
+
+div.CodeMirror-cursors {
+  visibility: hidden;
+  position: relative;
+  z-index: 1;
+}
+.CodeMirror-focused div.CodeMirror-cursors {
+  visibility: visible;
+}
+
+.CodeMirror-selected { background: #d9d9d9; }
+.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
+.CodeMirror-crosshair { cursor: crosshair; }
+
+.cm-searching {
+  background: #ffa;
+  background: rgba(255, 255, 0, .4);
+}
+
+/* IE7 hack to prevent it from returning funny offsetTops on the spans */
+.CodeMirror span { *vertical-align: text-bottom; }
+
+/* Used to force a border model for a node */
+.cm-force-border { padding-right: .1px; }
+
+@media print {
+  /* Hide the cursor when printing */
+  .CodeMirror div.CodeMirror-cursors {
+    visibility: hidden;
+  }
+}
diff --git a/WebSites/errors/403/lib/css/thirdparty/jquery.gridster.min.css b/WebSites/errors/403/lib/css/thirdparty/jquery.gridster.min.css
new file mode 100755
index 0000000..2152310
--- /dev/null
+++ b/WebSites/errors/403/lib/css/thirdparty/jquery.gridster.min.css
@@ -0,0 +1,2 @@
+/*! gridster.js - v0.1.0 - 2013-06-14 - * http://gridster.net/ - Copyright (c) 2013 ducksboard; Licensed MIT */
+.gridster{position:relative}.gridster>*{margin:0 auto;-webkit-transition:height .4s;-moz-transition:height .4s;-o-transition:height .4s;-ms-transition:height .4s;transition:height .4s}.gridster .gs_w{z-index:2;position:absolute}.ready .gs_w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s;-moz-transition:opacity .3s,left .3s,top .3s;-o-transition:opacity .3s,left .3s,top .3s;transition:opacity .3s,left .3s,top .3s}.ready .gs_w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-moz-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-o-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;transition:opacity .3s,left .3s,top .3s,width .3s,height .3s}.gridster .preview-holder{z-index:1;position:absolute;background-color:#fff;border-color:#fff;opacity:.3}.gridster .player-revert{z-index:10!important;-webkit-transition:left .3s,top .3s!important;-moz-transition:left .3s,top .3s!important;-o-transition:left .3s,top .3s!important;transition:left .3s,top .3s!important}.gridster .dragging{z-index:10!important;-webkit-transition:all 0s!important;-moz-transition:all 0s!important;-o-transition:all 0s!important;transition:all 0s!important}
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/js/freeboard/DatasourceModel.js b/WebSites/errors/403/lib/js/freeboard/DatasourceModel.js
new file mode 100644
index 0000000..7d384ae
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/DatasourceModel.js
@@ -0,0 +1,107 @@
+DatasourceModel = function(theFreeboardModel, datasourcePlugins) {
+	var self = this;
+
+	function disposeDatasourceInstance()
+	{
+		if(!_.isUndefined(self.datasourceInstance))
+		{
+			if(_.isFunction(self.datasourceInstance.onDispose))
+			{
+				self.datasourceInstance.onDispose();
+			}
+
+			self.datasourceInstance = undefined;
+		}
+	}
+
+	this.name = ko.observable();
+	this.latestData = ko.observable();
+	this.settings = ko.observable({});
+	this.settings.subscribe(function(newValue)
+	{
+		if(!_.isUndefined(self.datasourceInstance) && _.isFunction(self.datasourceInstance.onSettingsChanged))
+		{
+			self.datasourceInstance.onSettingsChanged(newValue);
+		}
+	});
+
+	this.updateCallback = function(newData)
+	{
+		theFreeboardModel.processDatasourceUpdate(self, newData);
+
+		self.latestData(newData);
+
+		var now = new Date();
+		self.last_updated(now.toLocaleTimeString());
+	}
+
+	this.type = ko.observable();
+	this.type.subscribe(function(newValue)
+	{
+		disposeDatasourceInstance();
+
+		if((newValue in datasourcePlugins) && _.isFunction(datasourcePlugins[newValue].newInstance))
+		{
+			var datasourceType = datasourcePlugins[newValue];
+
+			function finishLoad()
+			{
+				datasourceType.newInstance(self.settings(), function(datasourceInstance)
+				{
+
+					self.datasourceInstance = datasourceInstance;
+					datasourceInstance.updateNow();
+
+				}, self.updateCallback);
+			}
+
+			// Do we need to load any external scripts?
+			if(datasourceType.external_scripts)
+			{
+				head.js(datasourceType.external_scripts.slice(0), finishLoad); // Need to clone the array because head.js adds some weird functions to it
+			}
+			else
+			{
+				finishLoad();
+			}
+		}
+	});
+
+	this.last_updated = ko.observable("never");
+	this.last_error = ko.observable();
+
+	this.serialize = function()
+	{
+		return {
+			name    : self.name(),
+			type    : self.type(),
+			settings: self.settings()
+		};
+	}
+
+	this.deserialize = function(object)
+	{
+		self.settings(object.settings);
+		self.name(object.name);
+		self.type(object.type);
+	}
+
+	this.getDataRepresentation = function(dataPath)
+	{
+		var valueFunction = new Function("data", "return " + dataPath + ";");
+		return valueFunction.call(undefined, self.latestData());
+	}
+
+	this.updateNow = function()
+	{
+		if(!_.isUndefined(self.datasourceInstance) && _.isFunction(self.datasourceInstance.updateNow))
+		{
+			self.datasourceInstance.updateNow();
+		}
+	}
+
+	this.dispose = function()
+	{
+		disposeDatasourceInstance();
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/DeveloperConsole.js b/WebSites/errors/403/lib/js/freeboard/DeveloperConsole.js
new file mode 100644
index 0000000..2255554
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/DeveloperConsole.js
@@ -0,0 +1,95 @@
+DeveloperConsole = function(theFreeboardModel)
+{
+	function showDeveloperConsole()
+	{
+		var pluginScriptsInputs = [];
+		var container = $('<div></div>');
+		var addScript = $('<div class="table-operation text-button">ADD</div>');
+		var table = $('<table class="table table-condensed sub-table"></table>');
+
+		table.append($('<thead style=""><tr><th>Plugin Script URL</th></tr></thead>'));
+
+		var tableBody = $("<tbody></tbody>");
+
+		table.append(tableBody);
+
+		container.append($("<p>Here you can add references to other scripts to load datasource or widget plugins.</p>"))
+			.append(table)
+			.append(addScript)
+            .append('<p>To learn how to build plugins for freeboard, please visit <a target="_blank" href="http://freeboard.github.io/freeboard/docs/plugin_example.html">http://freeboard.github.io/freeboard/docs/plugin_example.html</a></p>');
+
+		function refreshScript(scriptURL)
+		{
+			$('script[src="' + scriptURL + '"]').remove();
+		}
+
+		function addNewScriptRow(scriptURL)
+		{
+			var tableRow = $('<tr></tr>');
+			var tableOperations = $('<ul class="board-toolbar"></ul>');
+			var scriptInput = $('<input class="table-row-value" style="width:100%;" type="text">');
+			var deleteOperation = $('<li><i class="icon-trash icon-white"></i></li>').click(function(e){
+				pluginScriptsInputs = _.without(pluginScriptsInputs, scriptInput);
+				tableRow.remove();
+			});
+
+			pluginScriptsInputs.push(scriptInput);
+
+			if(scriptURL)
+			{
+				scriptInput.val(scriptURL);
+			}
+
+			tableOperations.append(deleteOperation);
+			tableBody
+				.append(tableRow
+				.append($('<td></td>').append(scriptInput))
+					.append($('<td class="table-row-operation">').append(tableOperations)));
+		}
+
+		_.each(theFreeboardModel.plugins(), function(pluginSource){
+
+			addNewScriptRow(pluginSource);
+
+		});
+
+		addScript.click(function(e)
+		{
+			addNewScriptRow();
+		});
+
+		new DialogBox(container, "Developer Console", "OK", null, function(){
+
+			// Unload our previous scripts
+			_.each(theFreeboardModel.plugins(), function(pluginSource){
+
+				$('script[src^="' + pluginSource + '"]').remove();
+
+			});
+
+			theFreeboardModel.plugins.removeAll();
+
+			_.each(pluginScriptsInputs, function(scriptInput){
+
+				var scriptURL = scriptInput.val();
+
+				if(scriptURL && scriptURL.length > 0)
+				{
+					theFreeboardModel.addPluginSource(scriptURL);
+
+					// Load the script with a cache buster
+					head.js(scriptURL + "?" + Date.now());
+				}
+			});
+
+		});
+	}
+
+	// Public API
+	return {
+		showDeveloperConsole : function()
+		{
+			showDeveloperConsole();
+		}
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/DialogBox.js b/WebSites/errors/403/lib/js/freeboard/DialogBox.js
new file mode 100644
index 0000000..18fea8b
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/DialogBox.js
@@ -0,0 +1,55 @@
+function DialogBox(contentElement, title, okTitle, cancelTitle, okCallback)
+{
+	var modal_width = 900;
+
+	// Initialize our modal overlay
+	var overlay = $('<div id="modal_overlay" style="display:none;"></div>');
+
+	var modalDialog = $('<div class="modal"></div>');
+
+	function closeModal()
+	{
+		overlay.fadeOut(200, function()
+		{
+			$(this).remove();
+		});
+	}
+
+	// Create our header
+	modalDialog.append('<header><h2 class="title">' + title + "</h2></header>");
+
+	$('<section></section>').appendTo(modalDialog).append(contentElement);
+
+	// Create our footer
+	var footer = $('<footer></footer>').appendTo(modalDialog);
+
+	if(okTitle)
+	{
+		$('<span id="dialog-ok" class="text-button">' + okTitle + '</span>').appendTo(footer).click(function()
+		{
+			var hold = false;
+
+			if(_.isFunction(okCallback))
+			{
+				hold = okCallback();
+			}
+
+			if(!hold)
+			{
+				closeModal();
+			}
+		});
+	}
+
+	if(cancelTitle)
+	{
+		$('<span id="dialog-cancel" class="text-button">' + cancelTitle + '</span>').appendTo(footer).click(function()
+		{
+			closeModal();
+		});
+	}
+
+	overlay.append(modalDialog);
+	$("body").append(overlay);
+	overlay.fadeIn(200);
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/FreeboardModel.js b/WebSites/errors/403/lib/js/freeboard/FreeboardModel.js
new file mode 100644
index 0000000..c96eba4
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/FreeboardModel.js
@@ -0,0 +1,411 @@
+function FreeboardModel(datasourcePlugins, widgetPlugins, freeboardUI)
+{
+	var self = this;
+
+	var SERIALIZATION_VERSION = 1;
+
+	this.version = 0;
+	this.isEditing = ko.observable(false);
+	this.allow_edit = ko.observable(false);
+	this.allow_edit.subscribe(function(newValue)
+	{
+		if(newValue)
+		{
+			$("#main-header").show();
+		}
+		else
+		{
+			$("#main-header").hide();
+		}
+	});
+
+	this.header_image = ko.observable();
+	this.plugins = ko.observableArray();
+	this.datasources = ko.observableArray();
+	this.panes = ko.observableArray();
+	this.datasourceData = {};
+	this.processDatasourceUpdate = function(datasourceModel, newData)
+	{
+		var datasourceName = datasourceModel.name();
+
+		self.datasourceData[datasourceName] = newData;
+
+		_.each(self.panes(), function(pane)
+		{
+			_.each(pane.widgets(), function(widget)
+			{
+				widget.processDatasourceUpdate(datasourceName);
+			});
+		});
+	}
+
+	this._datasourceTypes = ko.observable();
+	this.datasourceTypes = ko.computed({
+		read: function()
+		{
+			self._datasourceTypes();
+
+			var returnTypes = [];
+
+			_.each(datasourcePlugins, function(datasourcePluginType)
+			{
+				var typeName = datasourcePluginType.type_name;
+				var displayName = typeName;
+
+				if(!_.isUndefined(datasourcePluginType.display_name))
+				{
+					displayName = datasourcePluginType.display_name;
+				}
+
+				returnTypes.push({
+					name        : typeName,
+					display_name: displayName
+				});
+			});
+
+			return returnTypes;
+		}
+	});
+
+	this._widgetTypes = ko.observable();
+	this.widgetTypes = ko.computed({
+		read: function()
+		{
+			self._widgetTypes();
+
+			var returnTypes = [];
+
+			_.each(widgetPlugins, function(widgetPluginType)
+			{
+				var typeName = widgetPluginType.type_name;
+				var displayName = typeName;
+
+				if(!_.isUndefined(widgetPluginType.display_name))
+				{
+					displayName = widgetPluginType.display_name;
+				}
+
+				returnTypes.push({
+					name        : typeName,
+					display_name: displayName
+				});
+			});
+
+			return returnTypes;
+		}
+	});
+
+	this.addPluginSource = function(pluginSource)
+	{
+		if(pluginSource && self.plugins.indexOf(pluginSource) == -1)
+		{
+			self.plugins.push(pluginSource);
+		}
+	}
+
+	this.serialize = function()
+	{
+		var panes = [];
+
+		_.each(self.panes(), function(pane)
+		{
+			panes.push(pane.serialize());
+		});
+
+		var datasources = [];
+
+		_.each(self.datasources(), function(datasource)
+		{
+			datasources.push(datasource.serialize());
+		});
+
+		return {
+			version     : SERIALIZATION_VERSION,
+			header_image: self.header_image(),
+			allow_edit  : self.allow_edit(),
+			plugins     : self.plugins(),
+			panes       : panes,
+			datasources : datasources,
+			columns     : freeboardUI.getUserColumns()
+		};
+	}
+
+	this.deserialize = function(object, finishedCallback)
+	{
+		self.clearDashboard();
+
+		function finishLoad()
+		{
+			freeboardUI.setUserColumns(object.columns);
+
+			if(!_.isUndefined(object.allow_edit))
+			{
+				self.allow_edit(object.allow_edit);
+			}
+			else
+			{
+				self.allow_edit(true);
+			}
+			self.version = object.version || 0;
+			self.header_image(object.header_image);
+
+			_.each(object.datasources, function(datasourceConfig)
+			{
+				var datasource = new DatasourceModel(self, datasourcePlugins);
+				datasource.deserialize(datasourceConfig);
+				self.addDatasource(datasource);
+			});
+
+			var sortedPanes = _.sortBy(object.panes, function(pane){
+				return freeboardUI.getPositionForScreenSize(pane).row;
+			});
+
+			_.each(sortedPanes, function(paneConfig)
+			{
+				var pane = new PaneModel(self, widgetPlugins);
+				pane.deserialize(paneConfig);
+				self.panes.push(pane);
+			});
+
+			if(self.allow_edit() && self.panes().length == 0)
+			{
+				self.setEditing(true);
+			}
+
+			if(_.isFunction(finishedCallback))
+			{
+				finishedCallback();
+			}
+
+			freeboardUI.processResize(true);
+		}
+
+		// This could have been self.plugins(object.plugins), but for some weird reason head.js was causing a function to be added to the list of plugins.
+		_.each(object.plugins, function(plugin)
+		{
+			self.addPluginSource(plugin);
+		});
+
+		// Load any plugins referenced in this definition
+		if(_.isArray(object.plugins) && object.plugins.length > 0)
+		{
+			head.js(object.plugins, function()
+			{
+				finishLoad();
+			});
+		}
+		else
+		{
+			finishLoad();
+		}
+	}
+
+	this.clearDashboard = function()
+	{
+		freeboardUI.removeAllPanes();
+
+		_.each(self.datasources(), function(datasource)
+		{
+			datasource.dispose();
+		});
+
+		_.each(self.panes(), function(pane)
+		{
+			pane.dispose();
+		});
+
+		self.plugins.removeAll();
+		self.datasources.removeAll();
+		self.panes.removeAll();
+	}
+
+	this.loadDashboard = function(dashboardData, callback)
+	{
+		freeboardUI.showLoadingIndicator(true);
+		self.deserialize(dashboardData, function()
+		{
+			freeboardUI.showLoadingIndicator(false);
+
+			if(_.isFunction(callback))
+			{
+				callback();
+			}
+
+        freeboard.emit("dashboard_loaded");
+		});
+	}
+
+	this.loadDashboardFromLocalFile = function()
+	{
+		// Check for the various File API support.
+		if(window.File && window.FileReader && window.FileList && window.Blob)
+		{
+			var input = document.createElement('input');
+			input.type = "file";
+			$(input).on("change", function(event)
+			{
+				var files = event.target.files;
+
+				if(files && files.length > 0)
+				{
+					var file = files[0];
+					var reader = new FileReader();
+
+					reader.addEventListener("load", function(fileReaderEvent)
+					{
+
+						var textFile = fileReaderEvent.target;
+						var jsonObject = JSON.parse(textFile.result);
+
+
+						self.loadDashboard(jsonObject);
+						self.setEditing(false);
+					});
+
+					reader.readAsText(file);
+				}
+
+			});
+			$(input).trigger("click");
+		}
+		else
+		{
+			alert('Unable to load a file in this browser.');
+		}
+	}
+
+	this.saveDashboardClicked = function(){
+		var target = $(event.currentTarget);
+		var siblingsShown = target.data('siblings-shown') || false;
+		if(!siblingsShown){
+			$(event.currentTarget).siblings('label').fadeIn('slow');
+		}else{
+			$(event.currentTarget).siblings('label').fadeOut('slow');
+		}
+		target.data('siblings-shown', !siblingsShown);
+	}
+
+	this.saveDashboard = function(_thisref, event)
+	{
+		var pretty = $(event.currentTarget).data('pretty');
+		var contentType = 'application/octet-stream';
+		var a = document.createElement('a');
+		if(pretty){
+			var blob = new Blob([JSON.stringify(self.serialize(), null, '\t')], {'type': contentType});
+		}else{
+			var blob = new Blob([JSON.stringify(self.serialize())], {'type': contentType});
+		}
+		document.body.appendChild(a);
+		a.href = window.URL.createObjectURL(blob);
+		a.download = "dashboard.json";
+		a.target="_self";
+		a.click();
+	}
+
+	this.addDatasource = function(datasource)
+	{
+		self.datasources.push(datasource);
+	}
+
+	this.deleteDatasource = function(datasource)
+	{
+		delete self.datasourceData[datasource.name()];
+		datasource.dispose();
+		self.datasources.remove(datasource);
+	}
+
+	this.createPane = function()
+	{
+		var newPane = new PaneModel(self, widgetPlugins);
+		self.addPane(newPane);
+	}
+
+	this.addGridColumnLeft = function()
+	{
+		freeboardUI.addGridColumnLeft();
+	}
+
+	this.addGridColumnRight = function()
+	{
+		freeboardUI.addGridColumnRight();
+	}
+
+	this.subGridColumnLeft = function()
+	{
+		freeboardUI.subGridColumnLeft();
+	}
+
+	this.subGridColumnRight = function()
+	{
+		freeboardUI.subGridColumnRight();
+	}
+
+	this.addPane = function(pane)
+	{
+		self.panes.push(pane);
+	}
+
+	this.deletePane = function(pane)
+	{
+		pane.dispose();
+		self.panes.remove(pane);
+	}
+
+	this.deleteWidget = function(widget)
+	{
+		ko.utils.arrayForEach(self.panes(), function(pane)
+		{
+			pane.widgets.remove(widget);
+		});
+
+		widget.dispose();
+	}
+
+	this.setEditing = function(editing, animate)
+	{
+		// Don't allow editing if it's not allowed
+		if(!self.allow_edit() && editing)
+		{
+			return;
+		}
+
+		self.isEditing(editing);
+
+		if(_.isUndefined(animate))
+		{
+			animate = true;
+		}
+
+		var animateLength = (animate) ? 250 : 0;
+		var barHeight = $("#admin-bar").outerHeight();
+
+		if(!editing)
+		{
+			$("#toggle-header-icon").addClass("icon-wrench").removeClass("icon-chevron-up");
+			$(".gridster .gs_w").css({cursor: "default"});
+			$("#main-header").animate({"top": "-" + barHeight + "px"}, animateLength);
+			$("#board-content").animate({"top": "20"}, animateLength);
+			$("#main-header").data().shown = false;
+			$(".sub-section").unbind();
+			freeboardUI.disableGrid();
+		}
+		else
+		{
+			$("#toggle-header-icon").addClass("icon-chevron-up").removeClass("icon-wrench");
+			$(".gridster .gs_w").css({cursor: "pointer"});
+			$("#main-header").animate({"top": "0px"}, animateLength);
+			$("#board-content").animate({"top": (barHeight + 20) + "px"}, animateLength);
+			$("#main-header").data().shown = true;
+			freeboardUI.attachWidgetEditIcons($(".sub-section"));
+			freeboardUI.enableGrid();
+		}
+
+		freeboardUI.showPaneEditIcons(editing, animate);
+	}
+
+	this.toggleEditing = function()
+	{
+		var editing = !self.isEditing();
+		self.setEditing(editing);
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/FreeboardUI.js b/WebSites/errors/403/lib/js/freeboard/FreeboardUI.js
new file mode 100644
index 0000000..078a9f3
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/FreeboardUI.js
@@ -0,0 +1,440 @@
+function FreeboardUI()
+{
+	var PANE_MARGIN = 10;
+	var PANE_WIDTH = 300;
+	var MIN_COLUMNS = 3;
+	var COLUMN_WIDTH = PANE_MARGIN + PANE_WIDTH + PANE_MARGIN;
+
+	var userColumns = MIN_COLUMNS;
+
+	var loadingIndicator = $('<div class="wrapperloading"><div class="loading up" ></div><div class="loading down"></div></div>');
+	var grid;
+
+	function processResize(layoutWidgets)
+	{
+		var maxDisplayableColumns = getMaxDisplayableColumnCount();
+		var repositionFunction = function(){};
+		if(layoutWidgets)
+		{
+			repositionFunction = function(index)
+			{
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var newPosition = getPositionForScreenSize(paneModel);
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(),
+					maxDisplayableColumns, grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+
+				paneModel.processSizeChange();
+			}
+		}
+
+		updateGridWidth(Math.min(maxDisplayableColumns, userColumns));
+
+		repositionGrid(repositionFunction);
+		updateGridColumnControls();
+	}
+
+	function addGridColumn(shift)
+	{
+		var num_cols = grid.cols + 1;
+		if(updateGridWidth(num_cols))
+		{
+			repositionGrid(function() {
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var prevColumnIndex = grid.cols > 1 ? grid.cols - 1 : 1;
+				var prevCol = paneModel.col[prevColumnIndex];
+				var prevRow = paneModel.row[prevColumnIndex];
+				var newPosition;
+				if(shift)
+				{
+					leftPreviewCol = true;
+					var newCol = prevCol < grid.cols ? prevCol + 1 : grid.cols;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				else
+				{
+					rightPreviewCol = true;
+					newPosition = {row: prevRow, col: prevCol};
+				}
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(), grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+			});
+		}
+		updateGridColumnControls();
+		userColumns = grid.cols;
+	}
+
+	function subtractGridColumn(shift)
+	{
+		var num_cols = grid.cols - 1;
+		if(updateGridWidth(num_cols))
+		{
+			repositionGrid(function() {
+				var paneElement = this;
+				var paneModel = ko.dataFor(paneElement);
+
+				var prevColumnIndex = grid.cols + 1;
+				var prevCol = paneModel.col[prevColumnIndex];
+				var prevRow = paneModel.row[prevColumnIndex];
+				var newPosition;
+				if(shift)
+				{
+					var newCol = prevCol > 1 ? prevCol - 1 : 1;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				else
+				{
+					var newCol = prevCol <= grid.cols ? prevCol : grid.cols;
+					newPosition = {row: prevRow, col: newCol};
+				}
+				$(paneElement).attr("data-sizex", Math.min(paneModel.col_width(), grid.cols))
+					.attr("data-row", newPosition.row)
+					.attr("data-col", newPosition.col);
+			});
+		}
+		updateGridColumnControls();
+		userColumns = grid.cols;
+	}
+
+	function updateGridColumnControls()
+	{
+		var col_controls = $(".column-tool");
+		var available_width = $("#board-content").width();
+		var max_columns = Math.floor(available_width / COLUMN_WIDTH);
+
+		if(grid.cols <= MIN_COLUMNS)
+		{
+			col_controls.addClass("min");
+		}
+		else
+		{
+			col_controls.removeClass("min");
+		}
+
+		if(grid.cols >= max_columns)
+		{
+			col_controls.addClass("max");
+		}
+		else
+		{
+			col_controls.removeClass("max");
+		}
+	}
+
+	function getMaxDisplayableColumnCount()
+	{
+		var available_width = $("#board-content").width();
+		return Math.floor(available_width / COLUMN_WIDTH);
+	}
+
+	function updateGridWidth(newCols)
+	{
+		if(newCols === undefined || newCols < MIN_COLUMNS)
+		{
+			newCols = MIN_COLUMNS;
+		}
+
+		var max_columns = getMaxDisplayableColumnCount();
+		if(newCols > max_columns)
+		{
+			newCols = max_columns;
+		}
+
+		// +newCols to account for scaling on zoomed browsers
+		var new_width = (COLUMN_WIDTH * newCols) + newCols;
+		$(".responsive-column-width").css("max-width", new_width);
+
+		if(newCols === grid.cols)
+		{
+			return false; 
+		}
+		else
+		{
+			return true;
+		}
+	}
+
+	function repositionGrid(repositionFunction)
+	{
+		var rootElement = grid.$el;
+
+		rootElement.find("> li").unbind().removeData();
+		$(".responsive-column-width").css("width", "");
+		grid.generate_grid_and_stylesheet();
+
+		rootElement.find("> li").each(repositionFunction);
+
+		grid.init();
+		$(".responsive-column-width").css("width", grid.cols * PANE_WIDTH + (grid.cols * PANE_MARGIN * 2));
+	}
+
+	function getUserColumns()
+	{
+		return userColumns;
+	}
+
+	function setUserColumns(numCols)
+	{
+		userColumns = Math.max(MIN_COLUMNS, numCols);
+	}
+
+	ko.bindingHandlers.grid = {
+		init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			// Initialize our grid
+			grid = $(element).gridster({
+				widget_margins        : [PANE_MARGIN, PANE_MARGIN],
+				widget_base_dimensions: [PANE_WIDTH, 10],
+				resize: {
+					enabled : false,
+					axes : "x"
+				}
+			}).data("gridster");
+
+			processResize(false)
+
+			grid.disable();
+		}
+	}
+
+	function addPane(element, viewModel, isEditing)
+	{
+		var position = getPositionForScreenSize(viewModel);
+		var col = position.col;
+		var row = position.row;
+		var width = Number(viewModel.width());
+		var height = Number(viewModel.getCalculatedHeight());
+
+		grid.add_widget(element, width, height, col, row);
+
+		if(isEditing)
+		{
+			showPaneEditIcons(true);
+		}
+
+		updatePositionForScreenSize(viewModel, row, col);
+
+		$(element).attrchange({
+			trackValues: true,
+			callback   : function(event)
+			{
+				if(event.attributeName == "data-row")
+				{
+                    updatePositionForScreenSize(viewModel, Number(event.newValue), undefined);
+				}
+				else if(event.attributeName == "data-col")
+				{
+                    updatePositionForScreenSize(viewModel, undefined, Number(event.newValue));
+				}
+			}
+		});
+	}
+
+	function updatePane(element, viewModel)
+	{
+		// If widget has been added or removed
+		var calculatedHeight = viewModel.getCalculatedHeight();
+
+		var elementHeight = Number($(element).attr("data-sizey"));
+		var elementWidth = Number($(element).attr("data-sizex"));
+
+		if(calculatedHeight != elementHeight || viewModel.col_width() !=  elementWidth)
+		{
+			grid.resize_widget($(element), viewModel.col_width(), calculatedHeight, function(){
+				grid.set_dom_grid_height();
+			});
+		}
+	}
+
+	function updatePositionForScreenSize(paneModel, row, col)
+	{
+		var displayCols = grid.cols;
+
+		if(!_.isUndefined(row)) paneModel.row[displayCols] = row;
+		if(!_.isUndefined(col)) paneModel.col[displayCols] = col;
+	}
+
+	function showLoadingIndicator(show)
+	{
+		if(show)
+		{
+			loadingIndicator.fadeOut(0).appendTo("body").fadeIn(500);
+		}
+		else
+		{
+	    		loadingIndicator.fadeOut(500).remove();
+		}
+	}
+
+	function showPaneEditIcons(show, animate)
+	{
+		if(_.isUndefined(animate))
+		{
+			animate = true;
+		}
+
+		var animateLength = (animate) ? 250 : 0;
+
+		if(show)
+		{
+			$(".pane-tools").fadeIn(animateLength);//.css("display", "block").animate({opacity: 1.0}, animateLength);
+			$("#column-tools").fadeIn(animateLength);
+		}
+		else
+		{
+			$(".pane-tools").fadeOut(animateLength);//.animate({opacity: 0.0}, animateLength).css("display", "none");//, function()
+			$("#column-tools").fadeOut(animateLength);
+		}
+	}
+
+	function attachWidgetEditIcons(element)
+	{
+		$(element).hover(function()
+		{
+			showWidgetEditIcons(this, true);
+		}, function()
+		{
+			showWidgetEditIcons(this, false);
+		});
+	}
+
+	function showWidgetEditIcons(element, show)
+	{
+		if(show)
+		{
+			$(element).find(".sub-section-tools").fadeIn(250);
+		}
+		else
+		{
+			$(element).find(".sub-section-tools").fadeOut(250);
+		}
+	}
+
+	function getPositionForScreenSize(paneModel)
+	{
+		var cols = grid.cols;
+
+		if(_.isNumber(paneModel.row) && _.isNumber(paneModel.col)) // Support for legacy format
+		{
+			var obj = {};
+			obj[cols] = paneModel.row;
+			paneModel.row = obj;
+
+
+			obj = {};
+			obj[cols] = paneModel.col;
+			paneModel.col = obj;
+		}
+
+		var newColumnIndex = 1;
+		var columnDiff = 1000;
+
+		for(var columnIndex in paneModel.col)
+		{
+			if(columnIndex == cols)	 // If we already have a position defined for this number of columns, return that position
+			{
+				return {row: paneModel.row[columnIndex], col: paneModel.col[columnIndex]};
+			}
+			else if(paneModel.col[columnIndex] > cols) // If it's greater than our display columns, put it in the last column
+			{
+				newColumnIndex = cols;
+			}
+			else // If it's less than, pick whichever one is closest
+			{
+				var delta = cols - columnIndex;
+
+				if(delta < columnDiff)
+				{
+					newColumnIndex = columnIndex;
+					columnDiff = delta;
+				}
+			}
+		}
+
+		if(newColumnIndex in paneModel.col && newColumnIndex in paneModel.row)
+		{
+			return {row: paneModel.row[newColumnIndex], col: paneModel.col[newColumnIndex]};
+		}
+
+		return {row:1,col:newColumnIndex};
+	}
+
+
+	// Public Functions
+	return {
+		showLoadingIndicator : function(show)
+		{
+			showLoadingIndicator(show);
+		},
+		showPaneEditIcons : function(show, animate)
+		{
+			showPaneEditIcons(show, animate);
+		},
+		attachWidgetEditIcons : function(element)
+		{
+			attachWidgetEditIcons(element);
+		},
+		getPositionForScreenSize : function(paneModel)
+		{
+			return getPositionForScreenSize(paneModel);
+		},
+		processResize : function(layoutWidgets)
+		{
+			processResize(layoutWidgets);
+		},
+		disableGrid : function()
+		{
+			grid.disable();
+		},
+		enableGrid : function()
+		{
+			grid.enable();
+		},
+		addPane : function(element, viewModel, isEditing)
+		{
+			addPane(element, viewModel, isEditing);
+		},
+		updatePane : function(element, viewModel)
+		{
+			updatePane(element, viewModel);
+		},
+		removePane : function(element)
+		{
+			grid.remove_widget(element);
+		},
+		removeAllPanes : function()
+		{
+			grid.remove_all_widgets();
+		},
+		addGridColumnLeft : function()
+		{
+			addGridColumn(true);
+		},
+		addGridColumnRight : function()
+		{
+			addGridColumn(false);
+		},
+		subGridColumnLeft : function()
+		{
+			subtractGridColumn(true);
+		},
+		subGridColumnRight : function()
+		{
+			subtractGridColumn(false);
+		},
+		getUserColumns : function()
+		{
+			return getUserColumns();
+		},
+		setUserColumns : function(numCols)
+		{
+			setUserColumns(numCols);
+		}
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/JSEditor.js b/WebSites/errors/403/lib/js/freeboard/JSEditor.js
new file mode 100644
index 0000000..b80c9b9
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/JSEditor.js
@@ -0,0 +1,63 @@
+JSEditor = function () {
+	var assetRoot = ""
+
+	function setAssetRoot(_assetRoot) {
+		assetRoot = _assetRoot;
+	}
+
+	function displayJSEditor(value, callback) {
+
+		var exampleText = "// Example: Convert temp from C to F and truncate to 2 decimal places.\n// return (datasources[\"MyDatasource\"].sensor.tempInF * 1.8 + 32).toFixed(2);";
+
+		// If value is empty, go ahead and suggest something
+		if (!value) {
+			value = exampleText;
+		}
+
+		var codeWindow = $('<div class="code-window"></div>');
+		var codeMirrorWrapper = $('<div class="code-mirror-wrapper"></div>');
+		var codeWindowFooter = $('<div class="code-window-footer"></div>');
+		var codeWindowHeader = $('<div class="code-window-header cm-s-ambiance">This javascript will be re-evaluated any time a datasource referenced here is updated, and the value you <code><span class="cm-keyword">return</span></code> will be displayed in the widget. You can assume this javascript is wrapped in a function of the form <code><span class="cm-keyword">function</span>(<span class="cm-def">datasources</span>)</code> where datasources is a collection of javascript objects (keyed by their name) corresponding to the most current data in a datasource.</div>');
+
+		codeWindow.append([codeWindowHeader, codeMirrorWrapper, codeWindowFooter]);
+
+		$("body").append(codeWindow);
+
+		var codeMirrorEditor = CodeMirror(codeMirrorWrapper.get(0),
+			{
+				value: value,
+				mode: "javascript",
+				theme: "ambiance",
+				indentUnit: 4,
+				lineNumbers: true,
+				matchBrackets: true,
+				autoCloseBrackets: true
+			}
+		);
+
+		var closeButton = $('<span id="dialog-cancel" class="text-button">Close</span>').click(function () {
+			if (callback) {
+				var newValue = codeMirrorEditor.getValue();
+
+				if (newValue === exampleText) {
+					newValue = "";
+				}
+
+				callback(newValue);
+				codeWindow.remove();
+			}
+		});
+
+		codeWindowFooter.append(closeButton);
+	}
+
+	// Public API
+	return {
+		displayJSEditor: function (value, callback) {
+			displayJSEditor(value, callback);
+		},
+		setAssetRoot: function (assetRoot) {
+			setAssetRoot(assetRoot)
+		}
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/PaneModel.js b/WebSites/errors/403/lib/js/freeboard/PaneModel.js
new file mode 100644
index 0000000..8b32482
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/PaneModel.js
@@ -0,0 +1,110 @@
+function PaneModel(theFreeboardModel, widgetPlugins) {
+	var self = this;
+
+	this.title = ko.observable();
+	this.width = ko.observable(1);
+	this.row = {};
+	this.col = {};
+
+	this.col_width = ko.observable(1);
+	this.col_width.subscribe(function(newValue)
+	{
+		self.processSizeChange();
+	});
+
+	this.widgets = ko.observableArray();
+
+	this.addWidget = function (widget) {
+		this.widgets.push(widget);
+	}
+
+	this.widgetCanMoveUp = function (widget) {
+		return (self.widgets.indexOf(widget) >= 1);
+	}
+
+	this.widgetCanMoveDown = function (widget) {
+		var i = self.widgets.indexOf(widget);
+
+		return (i < self.widgets().length - 1);
+	}
+
+	this.moveWidgetUp = function (widget) {
+		if (self.widgetCanMoveUp(widget)) {
+			var i = self.widgets.indexOf(widget);
+			var array = self.widgets();
+			self.widgets.splice(i - 1, 2, array[i], array[i - 1]);
+		}
+	}
+
+	this.moveWidgetDown = function (widget) {
+		if (self.widgetCanMoveDown(widget)) {
+			var i = self.widgets.indexOf(widget);
+			var array = self.widgets();
+			self.widgets.splice(i, 2, array[i + 1], array[i]);
+		}
+	}
+
+	this.processSizeChange = function()
+	{
+		// Give the animation a moment to complete. Really hacky.
+		// TODO: Make less hacky. Also, doesn't work when screen resizes.
+		setTimeout(function(){
+			_.each(self.widgets(), function (widget) {
+				widget.processSizeChange();
+			});
+		}, 1000);
+	}
+
+	this.getCalculatedHeight = function () {
+		var sumHeights = _.reduce(self.widgets(), function (memo, widget) {
+			return memo + widget.height();
+		}, 0);
+
+		sumHeights *= 6;
+		sumHeights += 3;
+
+		sumHeights *= 10;
+
+		var rows = Math.ceil((sumHeights + 20) / 30);
+
+		return Math.max(4, rows);
+	}
+
+	this.serialize = function () {
+		var widgets = [];
+
+		_.each(self.widgets(), function (widget) {
+			widgets.push(widget.serialize());
+		});
+
+		return {
+			title: self.title(),
+			width: self.width(),
+			row: self.row,
+			col: self.col,
+			col_width: Number(self.col_width()),
+			widgets: widgets
+		};
+	}
+
+	this.deserialize = function (object) {
+		self.title(object.title);
+		self.width(object.width);
+
+		self.row = object.row;
+		self.col = object.col;
+		self.col_width(object.col_width || 1);
+
+		_.each(object.widgets, function (widgetConfig) {
+			var widget = new WidgetModel(theFreeboardModel, widgetPlugins);
+			widget.deserialize(widgetConfig);
+			self.widgets.push(widget);
+		});
+	}
+
+	this.dispose = function () {
+		_.each(self.widgets(), function (widget) {
+			widget.dispose();
+		});
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/PluginEditor.js b/WebSites/errors/403/lib/js/freeboard/PluginEditor.js
new file mode 100644
index 0000000..4031376
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/PluginEditor.js
@@ -0,0 +1,543 @@
+PluginEditor = function(jsEditor, valueEditor)
+{
+	function _displayValidationError(settingName, errorMessage)
+	{
+		var errorElement = $('<div class="validation-error"></div>').html(errorMessage);
+		$("#setting-value-container-" + settingName).append(errorElement);
+	}
+
+	function _removeSettingsRows()
+	{
+		if($("#setting-row-instance-name").length)
+		{
+			$("#setting-row-instance-name").nextAll().remove();
+		}
+		else
+		{
+			$("#setting-row-plugin-types").nextAll().remove();
+		}
+	}
+
+	function _isNumerical(n)
+	{
+		return !isNaN(parseFloat(n)) && isFinite(n);
+	}
+
+	function _appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue, includeRemove)
+	{
+		var input = $('<textarea></textarea>');
+
+		if(settingDef.multi_input) {
+			input.change(function() {
+				var arrayInput = [];
+				$(valueCell).find('textarea').each(function() {
+					var thisVal = $(this).val();
+					if(thisVal) {
+						arrayInput = arrayInput.concat(thisVal);
+					}
+				});
+				newSettings.settings[settingDef.name] = arrayInput;
+			});
+		} else {
+			input.change(function() {
+				newSettings.settings[settingDef.name] = $(this).val();
+			});
+		}
+
+		if(currentValue) {
+			input.val(currentValue);
+		}
+
+		valueEditor.createValueEditor(input);
+
+		var datasourceToolbox = $('<ul class="board-toolbar datasource-input-suffix"></ul>');
+		var wrapperDiv = $('<div class="calculated-setting-row"></div>');
+		wrapperDiv.append(input).append(datasourceToolbox);
+
+		var datasourceTool = $('<li><i class="icon-plus icon-white"></i><label>DATASOURCE</label></li>')
+			.mousedown(function(e) {
+				e.preventDefault();
+				$(input).val("").focus().insertAtCaret("datasources[\"").trigger("freeboard-eval");
+			});
+		datasourceToolbox.append(datasourceTool);
+
+		var jsEditorTool = $('<li><i class="icon-fullscreen icon-white"></i><label>.JS EDITOR</label></li>')
+			.mousedown(function(e) {
+				e.preventDefault();
+				jsEditor.displayJSEditor(input.val(), function(result) {
+					input.val(result);
+					input.change();
+				});
+			});
+		datasourceToolbox.append(jsEditorTool);
+
+		if(includeRemove) {
+			var removeButton = $('<li class="remove-setting-row"><i class="icon-minus icon-white"></i><label></label></li>')
+				.mousedown(function(e) {
+					e.preventDefault();
+					wrapperDiv.remove();
+					$(valueCell).find('textarea:first').change();
+				});
+			datasourceToolbox.prepend(removeButton);
+		}
+
+		$(valueCell).append(wrapperDiv);
+	}
+
+	function createPluginEditor(title, pluginTypes, currentTypeName, currentSettingsValues, settingsSavedCallback)
+	{
+		var newSettings = {
+			type    : currentTypeName,
+			settings: {}
+		};
+
+		function createSettingRow(name, displayName)
+		{
+			var tr = $('<div id="setting-row-' + name + '" class="form-row"></div>').appendTo(form);
+
+			tr.append('<div class="form-label"><label class="control-label">' + displayName + '</label></div>');
+			return $('<div id="setting-value-container-' + name + '" class="form-value"></div>').appendTo(tr);
+		}
+
+		var selectedType;
+		var form = $('<div></div>');
+
+		var pluginDescriptionElement = $('<div id="plugin-description"></div>').hide();
+		form.append(pluginDescriptionElement);
+
+		function createSettingsFromDefinition(settingsDefs, typeaheadSource, typeaheadDataSegment)
+		{
+			_.each(settingsDefs, function(settingDef)
+			{
+				// Set a default value if one doesn't exist
+				if(!_.isUndefined(settingDef.default_value) && _.isUndefined(currentSettingsValues[settingDef.name]))
+				{
+					currentSettingsValues[settingDef.name] = settingDef.default_value;
+				}
+
+				var displayName = settingDef.name;
+
+				if(!_.isUndefined(settingDef.display_name))
+				{
+					displayName = settingDef.display_name;
+				}
+
+				var valueCell = createSettingRow(settingDef.name, displayName);
+
+				switch (settingDef.type)
+				{
+					case "array":
+					{
+						var subTableDiv = $('<div class="form-table-value-subtable"></div>').appendTo(valueCell);
+
+						var subTable = $('<table class="table table-condensed sub-table"></table>').appendTo(subTableDiv);
+						var subTableHead = $("<thead></thead>").hide().appendTo(subTable);
+						var subTableHeadRow = $("<tr></tr>").appendTo(subTableHead);
+						var subTableBody = $('<tbody></tbody>').appendTo(subTable);
+
+						var currentSubSettingValues = [];
+
+						// Create our headers
+						_.each(settingDef.settings, function(subSettingDef)
+						{
+							var subsettingDisplayName = subSettingDef.name;
+
+							if(!_.isUndefined(subSettingDef.display_name))
+							{
+								subsettingDisplayName = subSettingDef.display_name;
+							}
+
+							$('<th>' + subsettingDisplayName + '</th>').appendTo(subTableHeadRow);
+						});
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							currentSubSettingValues = currentSettingsValues[settingDef.name];
+						}
+
+						function processHeaderVisibility()
+						{
+							if(newSettings.settings[settingDef.name].length > 0)
+							{
+								subTableHead.show();
+							}
+							else
+							{
+								subTableHead.hide();
+							}
+						}
+
+						function createSubsettingRow(subsettingValue)
+						{
+							var subsettingRow = $('<tr></tr>').appendTo(subTableBody);
+
+							var newSetting = {};
+
+							if(!_.isArray(newSettings.settings[settingDef.name]))
+							{
+								newSettings.settings[settingDef.name] = [];
+							}
+
+							newSettings.settings[settingDef.name].push(newSetting);
+
+							_.each(settingDef.settings, function(subSettingDef)
+							{
+								var subsettingCol = $('<td></td>').appendTo(subsettingRow);
+								var subsettingValueString = "";
+
+								if(!_.isUndefined(subsettingValue[subSettingDef.name]))
+								{
+									subsettingValueString = subsettingValue[subSettingDef.name];
+								}
+
+								newSetting[subSettingDef.name] = subsettingValueString;
+
+								$('<input class="table-row-value" type="text">').appendTo(subsettingCol).val(subsettingValueString).change(function()
+								{
+									newSetting[subSettingDef.name] = $(this).val();
+								});
+							});
+
+							subsettingRow.append($('<td class="table-row-operation"></td>').append($('<ul class="board-toolbar"></ul>').append($('<li></li>').append($('<i class="icon-trash icon-white"></i>').click(function()
+							{
+								var subSettingIndex = newSettings.settings[settingDef.name].indexOf(newSetting);
+
+								if(subSettingIndex != -1)
+								{
+									newSettings.settings[settingDef.name].splice(subSettingIndex, 1);
+									subsettingRow.remove();
+									processHeaderVisibility();
+								}
+							})))));
+
+							subTableDiv.scrollTop(subTableDiv[0].scrollHeight);
+
+							processHeaderVisibility();
+						}
+
+						$('<div class="table-operation text-button">ADD</div>').appendTo(valueCell).click(function()
+						{
+							var newSubsettingValue = {};
+
+							_.each(settingDef.settings, function(subSettingDef)
+							{
+								newSubsettingValue[subSettingDef.name] = "";
+							});
+
+							createSubsettingRow(newSubsettingValue);
+						});
+
+						// Create our rows
+						_.each(currentSubSettingValues, function(currentSubSettingValue, subSettingIndex)
+						{
+							createSubsettingRow(currentSubSettingValue);
+						});
+
+						break;
+					}
+					case "boolean":
+					{
+						newSettings.settings[settingDef.name] = currentSettingsValues[settingDef.name];
+
+						var onOffSwitch = $('<div class="onoffswitch"><label class="onoffswitch-label" for="' + settingDef.name + '-onoff"><div class="onoffswitch-inner"><span class="on">YES</span><span class="off">NO</span></div><div class="onoffswitch-switch"></div></label></div>').appendTo(valueCell);
+
+						var input = $('<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="' + settingDef.name + '-onoff">').prependTo(onOffSwitch).change(function()
+						{
+							newSettings.settings[settingDef.name] = this.checked;
+						});
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							input.prop("checked", currentSettingsValues[settingDef.name]);
+						}
+
+						break;
+					}
+					case "option":
+					{
+						var defaultValue = currentSettingsValues[settingDef.name];
+
+						var input = $('<select></select>').appendTo($('<div class="styled-select"></div>').appendTo(valueCell)).change(function()
+						{
+							newSettings.settings[settingDef.name] = $(this).val();
+						});
+
+						_.each(settingDef.options, function(option)
+						{
+
+							var optionName;
+							var optionValue;
+
+							if(_.isObject(option))
+							{
+								optionName = option.name;
+								optionValue = option.value;
+							}
+							else
+							{
+								optionName = option;
+							}
+
+							if(_.isUndefined(optionValue))
+							{
+								optionValue = optionName;
+							}
+
+							if(_.isUndefined(defaultValue))
+							{
+								defaultValue = optionValue;
+							}
+
+							$("<option></option>").text(optionName).attr("value", optionValue).appendTo(input);
+						});
+
+						newSettings.settings[settingDef.name] = defaultValue;
+
+						if(settingDef.name in currentSettingsValues)
+						{
+							input.val(currentSettingsValues[settingDef.name]);
+						}
+
+						break;
+					}
+					default:
+					{
+						newSettings.settings[settingDef.name] = currentSettingsValues[settingDef.name];
+
+						if(settingDef.type == "calculated")
+						{
+							if(settingDef.name in currentSettingsValues) {
+								var currentValue = currentSettingsValues[settingDef.name];
+								if(settingDef.multi_input && _.isArray(currentValue)) {
+									var includeRemove = false;
+									for(var i=0; i<currentValue.length; i++) {
+										_appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue[i], includeRemove);
+										includeRemove = true;
+									}
+								} else {
+									_appendCalculatedSettingRow(valueCell, newSettings, settingDef, currentValue, false);
+								}
+							} else {
+								_appendCalculatedSettingRow(valueCell, newSettings, settingDef, null, false);
+							}
+
+							if(settingDef.multi_input) {
+								var inputAdder = $('<ul class="board-toolbar"><li class="add-setting-row"><i class="icon-plus icon-white"></i><label>ADD</label></li></ul>')
+									.mousedown(function(e) {
+										e.preventDefault();
+										_appendCalculatedSettingRow(valueCell, newSettings, settingDef, null, true);
+									});
+								$(valueCell).siblings('.form-label').append(inputAdder);
+							}
+						}
+						else
+						{
+							var input = $('<input type="text">').appendTo(valueCell).change(function()
+							{
+								if(settingDef.type == "number")
+								{
+									newSettings.settings[settingDef.name] = Number($(this).val());
+								}
+								else
+								{
+									newSettings.settings[settingDef.name] = $(this).val();
+								}
+							});
+
+							if(settingDef.name in currentSettingsValues)
+							{
+								input.val(currentSettingsValues[settingDef.name]);
+							}
+
+							if(typeaheadSource && settingDef.typeahead_data_field){
+								input.addClass('typeahead_data_field-' + settingDef.typeahead_data_field);
+							}
+
+							if(typeaheadSource && settingDef.typeahead_field){
+								var typeaheadValues = [];
+
+								input.keyup(function(event){
+									if(event.which >= 65 && event.which <= 91) {
+										input.trigger('change');
+									}
+								});
+
+								$(input).autocomplete({
+									source: typeaheadValues,
+									select: function(event, ui){
+										input.val(ui.item.value);
+										input.trigger('change');
+									}
+								});
+
+								input.change(function(event){
+									var value = input.val();
+									var source = _.template(typeaheadSource)({input: value});
+									$.get(source, function(data){
+										if(typeaheadDataSegment){
+											data = data[typeaheadDataSegment];
+										}
+										data  = _.select(data, function(elm){
+											return elm[settingDef.typeahead_field][0] == value[0];
+										});
+
+										typeaheadValues = _.map(data, function(elm){
+											return elm[settingDef.typeahead_field];
+										});
+										$(input).autocomplete("option", "source", typeaheadValues);
+
+										if(data.length == 1){
+											data = data[0];
+											//we found the one. let's use it to populate the other info
+											for(var field in data){
+												if(data.hasOwnProperty(field)){
+													var otherInput = $(_.template('input.typeahead_data_field-<%= field %>')({field: field}));
+													if(otherInput){
+														otherInput.val(data[field]);
+														if(otherInput.val() != input.val()) {
+															otherInput.trigger('change');
+														}
+													}
+												}
+											}
+										}
+									});
+								});
+							}
+						}
+
+						break;
+					}
+				}
+
+				if(!_.isUndefined(settingDef.suffix))
+				{
+					valueCell.append($('<div class="input-suffix">' + settingDef.suffix + '</div>'));
+				}
+
+				if(!_.isUndefined(settingDef.description))
+				{
+					valueCell.append($('<div class="setting-description">' + settingDef.description + '</div>'));
+				}
+			});
+		}
+
+
+		new DialogBox(form, title, "Save", "Cancel", function()
+		{
+			$(".validation-error").remove();
+
+			// Loop through each setting and validate it
+			for(var index = 0; index < selectedType.settings.length; index++)
+			{
+				var settingDef = selectedType.settings[index];
+
+				if(settingDef.required && (_.isUndefined(newSettings.settings[settingDef.name]) || newSettings.settings[settingDef.name] == ""))
+				{
+					_displayValidationError(settingDef.name, "This is required.");
+					return true;
+				}
+				else if(settingDef.type == "integer" && (newSettings.settings[settingDef.name] % 1 !== 0))
+				{
+					_displayValidationError(settingDef.name, "Must be a whole number.");
+					return true;
+				}
+				else if(settingDef.type == "number" && !_isNumerical(newSettings.settings[settingDef.name]))
+				{
+					_displayValidationError(settingDef.name, "Must be a number.");
+					return true;
+				}
+			}
+
+			if(_.isFunction(settingsSavedCallback))
+			{
+				settingsSavedCallback(newSettings);
+			}
+		});
+
+		// Create our body
+		var pluginTypeNames = _.keys(pluginTypes);
+		var typeSelect;
+
+		if(pluginTypeNames.length > 1)
+		{
+			var typeRow = createSettingRow("plugin-types", "Type");
+			typeSelect = $('<select></select>').appendTo($('<div class="styled-select"></div>').appendTo(typeRow));
+
+			typeSelect.append($("<option>Select a type...</option>").attr("value", "undefined"));
+
+			_.each(pluginTypes, function(pluginType)
+			{
+				typeSelect.append($("<option></option>").text(pluginType.display_name).attr("value", pluginType.type_name));
+			});
+
+			typeSelect.change(function()
+			{
+				newSettings.type = $(this).val();
+				newSettings.settings = {};
+
+				// Remove all the previous settings
+				_removeSettingsRows();
+
+				selectedType = pluginTypes[typeSelect.val()];
+
+				if(_.isUndefined(selectedType))
+				{
+					$("#setting-row-instance-name").hide();
+					$("#dialog-ok").hide();
+				}
+				else
+				{
+					$("#setting-row-instance-name").show();
+
+					if(selectedType.description && selectedType.description.length > 0)
+					{
+						pluginDescriptionElement.html(selectedType.description).show();
+					}
+					else
+					{
+						pluginDescriptionElement.hide();
+					}
+
+					$("#dialog-ok").show();
+					createSettingsFromDefinition(selectedType.settings, selectedType.typeahead_source, selectedType.typeahead_data_segment);
+				}
+			});
+		}
+		else if(pluginTypeNames.length == 1)
+		{
+			selectedType = pluginTypes[pluginTypeNames[0]];
+			newSettings.type = selectedType.type_name;
+			newSettings.settings = {};
+			createSettingsFromDefinition(selectedType.settings);
+		}
+
+		if(typeSelect)
+		{
+			if(_.isUndefined(currentTypeName))
+			{
+				$("#setting-row-instance-name").hide();
+				$("#dialog-ok").hide();
+			}
+			else
+			{
+				$("#dialog-ok").show();
+				typeSelect.val(currentTypeName).trigger("change");
+			}
+		}
+	}
+
+	// Public API
+	return {
+		createPluginEditor : function(
+			title,
+			pluginTypes,
+			currentInstanceName,
+			currentTypeName,
+			currentSettingsValues,
+			settingsSavedCallback)
+		{
+			createPluginEditor(title, pluginTypes, currentInstanceName, currentTypeName, currentSettingsValues, settingsSavedCallback);
+		}
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/ValueEditor.js b/WebSites/errors/403/lib/js/freeboard/ValueEditor.js
new file mode 100644
index 0000000..03843bc
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/ValueEditor.js
@@ -0,0 +1,346 @@
+ValueEditor = function(theFreeboardModel)
+{
+	var _veDatasourceRegex = new RegExp(".*datasources\\[\"([^\"]*)(\"\\])?(.*)$");
+
+	var dropdown = null;
+	var selectedOptionIndex = 0;
+	var _autocompleteOptions = [];
+	var currentValue = null;
+
+	var EXPECTED_TYPE = {
+		ANY : "any",
+		ARRAY : "array",
+		OBJECT : "object",
+		STRING : "string",
+		NUMBER : "number",
+		BOOLEAN : "boolean"
+	};
+
+	function _isPotentialTypeMatch(value, expectsType)
+	{
+		if(_.isArray(value) || _.isObject(value))
+		{
+			return true;
+		}
+		return _isTypeMatch(value, expectsType);
+	}
+
+	function _isTypeMatch(value, expectsType) {
+		switch(expectsType)
+		{
+		case EXPECTED_TYPE.ANY: return true;
+		case EXPECTED_TYPE.ARRAY: return _.isArray(value);
+		case EXPECTED_TYPE.OBJECT: return _.isObject(value);
+		case EXPECTED_TYPE.STRING: return _.isString(value);
+		case EXPECTED_TYPE.NUMBER: return _.isNumber(value);
+		case EXPECTED_TYPE.BOOLEAN: return _.isBoolean(value);
+		}
+	}
+
+	function _checkCurrentValueType(element, expectsType) {
+		$(element).parent().find(".validation-error").remove();
+		if(!_isTypeMatch(currentValue, expectsType)) {
+			$(element).parent().append("<div class='validation-error'>" +
+				"This field expects an expression that evaluates to type " +
+				expectsType + ".</div>");
+		}
+	}
+
+	function _resizeValueEditor(element)
+	{
+		var lineBreakCount = ($(element).val().match(/\n/g) || []).length;
+
+		var newHeight = Math.min(200, 20 * (lineBreakCount + 1));
+
+		$(element).css({height: newHeight + "px"});
+	}
+
+	function _autocompleteFromDatasource(inputString, datasources, expectsType)
+	{
+		var match = _veDatasourceRegex.exec(inputString);
+
+		var options = [];
+
+		if(match)
+		{
+			// Editor value is: datasources["; List all datasources
+			if(match[1] == "")
+			{
+				_.each(datasources, function(datasource)
+				{
+					options.push({value: datasource.name(), entity: undefined,
+						precede_char: "", follow_char: "\"]"});
+				});
+			}
+			// Editor value is a partial match for a datasource; list matching datasources
+			else if(match[1] != "" && _.isUndefined(match[2]))
+			{
+				var replacementString = match[1];
+
+				_.each(datasources, function(datasource)
+				{
+					var dsName = datasource.name();
+
+					if(dsName != replacementString && dsName.indexOf(replacementString) == 0)
+					{
+						options.push({value: dsName, entity: undefined,
+							precede_char: "", follow_char: "\"]"});
+					}
+				});
+			}
+			// Editor value matches a datasources; parse JSON in order to populate list
+			else
+			{
+				// We already have a datasource selected; find it
+				var datasource = _.find(datasources, function(datasource)
+				{
+					return (datasource.name() === match[1]);
+				});
+
+				if(!_.isUndefined(datasource))
+				{
+					var dataPath = "data";
+					var remainder = "";
+
+					// Parse the partial JSON selectors
+					if(!_.isUndefined(match[2]))
+					{
+						// Strip any incomplete field values, and store the remainder
+						var remainderIndex = match[3].lastIndexOf("]") + 1;
+						dataPath = dataPath + match[3].substring(0, remainderIndex);
+						remainder = match[3].substring(remainderIndex, match[3].length);
+						remainder = remainder.replace(/^[\[\"]*/, "");
+						remainder = remainder.replace(/[\"\]]*$/, "");
+					}
+
+					// Get the data for the last complete JSON field
+					var dataValue = datasource.getDataRepresentation(dataPath);
+					currentValue = dataValue;
+
+					// For arrays, list out the indices
+					if(_.isArray(dataValue))
+					{
+						for(var index = 0; index < dataValue.length; index++)
+						{
+							if(index.toString().indexOf(remainder) == 0)
+							{
+								var value = dataValue[index];
+								if(_isPotentialTypeMatch(value, expectsType))
+								{
+									options.push({value: index, entity: value,
+										precede_char: "[", follow_char: "]",
+										preview: value.toString()});
+								}
+							}
+						}
+					}
+					// For objects, list out the keys
+					else if(_.isObject(dataValue))
+					{
+						_.each(dataValue, function(value, name)
+						{
+							if(name.indexOf(remainder) == 0)
+							{
+								if(_isPotentialTypeMatch(value, expectsType))
+								{
+									options.push({value: name, entity: value,
+										precede_char: "[\"", follow_char: "\"]"});
+								}
+							}
+						});
+					}
+					// For everything else, do nothing (no further selection possible)
+					else
+					{
+						// no-op
+					}
+				}
+			}
+		}
+		_autocompleteOptions = options;
+	}
+
+	function _renderAutocompleteDropdown(element, expectsType)
+	{
+		var inputString = $(element).val().substring(0, $(element).getCaretPosition());
+
+		// Weird issue where the textarea box was putting in ASCII (nbsp) for spaces.
+		inputString = inputString.replace(String.fromCharCode(160), " ");
+
+		_autocompleteFromDatasource(inputString, theFreeboardModel.datasources(), expectsType);
+
+		if(_autocompleteOptions.length > 0)
+		{
+			if(!dropdown)
+			{
+				dropdown = $('<ul id="value-selector" class="value-dropdown"></ul>')
+					.insertAfter(element)
+					.width($(element).outerWidth() - 2)
+					.css("left", $(element).position().left)
+					.css("top", $(element).position().top + $(element).outerHeight() - 1);
+			}
+
+			dropdown.empty();
+			dropdown.scrollTop(0);
+
+			var selected = true;
+			selectedOptionIndex = 0;
+
+			_.each(_autocompleteOptions, function(option, index)
+			{
+				var li = _renderAutocompleteDropdownOption(element, inputString, option, index);
+				if(selected)
+				{
+					$(li).addClass("selected");
+					selected = false;
+				}
+			});
+		}
+		else
+		{
+			_checkCurrentValueType(element, expectsType);
+			$(element).next("ul#value-selector").remove();
+			dropdown = null;
+			selectedOptionIndex = -1;
+		}
+	}
+
+	function _renderAutocompleteDropdownOption(element, inputString, option, currentIndex)
+	{
+		var optionLabel = option.value;
+		if(option.preview)
+		{
+			optionLabel = optionLabel + "<span class='preview'>" + option.preview + "</span>";
+		}
+		var li = $('<li>' + optionLabel + '</li>').appendTo(dropdown)
+			.mouseenter(function()
+			{
+				$(this).trigger("freeboard-select");
+			})
+			.mousedown(function(event)
+			{
+				$(this).trigger("freeboard-insertValue");
+				event.preventDefault();
+			})
+			.data("freeboard-optionIndex", currentIndex)
+			.data("freeboard-optionValue", option.value)
+			.bind("freeboard-insertValue", function()
+			{
+				var optionValue = option.value;
+				optionValue = option.precede_char + optionValue + option.follow_char;
+
+				var replacementIndex = inputString.lastIndexOf("]");
+				if(replacementIndex != -1)
+				{
+					$(element).replaceTextAt(replacementIndex+1, $(element).val().length,
+						optionValue);
+				}
+				else
+				{
+					$(element).insertAtCaret(optionValue);
+				}
+
+				currentValue = option.entity;
+				$(element).triggerHandler("mouseup");
+			})
+			.bind("freeboard-select", function()
+			{
+				$(this).parent().find("li.selected").removeClass("selected");
+				$(this).addClass("selected");
+				selectedOptionIndex = $(this).data("freeboard-optionIndex");
+			});
+		return li;
+	}
+
+	function createValueEditor(element, expectsType)
+	{
+		$(element).addClass("calculated-value-input")
+			.bind("keyup mouseup freeboard-eval", function(event) {
+				// Ignore arrow keys and enter keys
+				if(dropdown && event.type == "keyup"
+					&& (event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 13))
+				{
+					event.preventDefault();
+					return;
+				}
+				_renderAutocompleteDropdown(element, expectsType);
+			})
+			.focus(function()
+			{
+				$(element).css({"z-index" : 3001});
+				_resizeValueEditor(element);
+			})
+			.focusout(function()
+			{
+				_checkCurrentValueType(element, expectsType);
+				$(element).css({
+					"height": "",
+					"z-index" : 3000
+				});
+				$(element).next("ul#value-selector").remove();
+				dropdown = null;
+				selectedOptionIndex = -1;
+			})
+			.bind("keydown", function(event)
+			{
+
+				if(dropdown)
+				{
+					if(event.keyCode == 38 || event.keyCode == 40) // Handle Arrow keys
+					{
+						event.preventDefault();
+
+						var optionItems = $(dropdown).find("li");
+
+						if(event.keyCode == 38) // Up Arrow
+						{
+							selectedOptionIndex--;
+						}
+						else if(event.keyCode == 40) // Down Arrow
+						{
+							selectedOptionIndex++;
+						}
+
+						if(selectedOptionIndex < 0)
+						{
+							selectedOptionIndex = optionItems.size() - 1;
+						}
+						else if(selectedOptionIndex >= optionItems.size())
+						{
+							selectedOptionIndex = 0;
+						}
+
+						var optionElement = $(optionItems).eq(selectedOptionIndex);
+
+						optionElement.trigger("freeboard-select");
+						$(dropdown).scrollTop($(optionElement).position().top);
+					}
+					else if(event.keyCode == 13) // Handle enter key
+					{
+						event.preventDefault();
+
+						if(selectedOptionIndex != -1)
+						{
+							$(dropdown).find("li").eq(selectedOptionIndex)
+								.trigger("freeboard-insertValue");
+						}
+					}
+				}
+			});
+	}
+
+	// Public API
+	return {
+		createValueEditor : function(element, expectsType)
+		{
+			if(expectsType)
+			{
+				createValueEditor(element, expectsType);
+			}
+			else {
+				createValueEditor(element, EXPECTED_TYPE.ANY);
+			}
+		},
+		EXPECTED_TYPE : EXPECTED_TYPE
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/WidgetModel.js b/WebSites/errors/403/lib/js/freeboard/WidgetModel.js
new file mode 100644
index 0000000..e683521
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/WidgetModel.js
@@ -0,0 +1,209 @@
+function WidgetModel(theFreeboardModel, widgetPlugins) {
+	function disposeWidgetInstance() {
+		if (!_.isUndefined(self.widgetInstance)) {
+			if (_.isFunction(self.widgetInstance.onDispose)) {
+				self.widgetInstance.onDispose();
+			}
+
+			self.widgetInstance = undefined;
+		}
+	}
+
+	var self = this;
+
+	this.datasourceRefreshNotifications = {};
+	this.calculatedSettingScripts = {};
+
+	this.title = ko.observable();
+	this.fillSize = ko.observable(false);
+
+	this.type = ko.observable();
+	this.type.subscribe(function (newValue) {
+		disposeWidgetInstance();
+
+		if ((newValue in widgetPlugins) && _.isFunction(widgetPlugins[newValue].newInstance)) {
+			var widgetType = widgetPlugins[newValue];
+
+			function finishLoad() {
+				widgetType.newInstance(self.settings(), function (widgetInstance) {
+
+					self.fillSize((widgetType.fill_size === true));
+					self.widgetInstance = widgetInstance;
+					self.shouldRender(true);
+					self._heightUpdate.valueHasMutated();
+
+				});
+			}
+
+			// Do we need to load any external scripts?
+			if (widgetType.external_scripts) {
+				head.js(widgetType.external_scripts.slice(0), finishLoad); // Need to clone the array because head.js adds some weird functions to it
+			}
+			else {
+				finishLoad();
+			}
+		}
+	});
+
+	this.settings = ko.observable({});
+	this.settings.subscribe(function (newValue) {
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onSettingsChanged)) {
+			self.widgetInstance.onSettingsChanged(newValue);
+		}
+
+		self.updateCalculatedSettings();
+		self._heightUpdate.valueHasMutated();
+	});
+
+	this.processDatasourceUpdate = function (datasourceName) {
+		var refreshSettingNames = self.datasourceRefreshNotifications[datasourceName];
+
+		if (_.isArray(refreshSettingNames)) {
+			_.each(refreshSettingNames, function (settingName) {
+				self.processCalculatedSetting(settingName);
+			});
+		}
+	}
+
+	this.callValueFunction = function (theFunction) {
+		return theFunction.call(undefined, theFreeboardModel.datasourceData);
+	}
+
+	this.processSizeChange = function () {
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onSizeChanged)) {
+			self.widgetInstance.onSizeChanged();
+		}
+	}
+
+	this.processCalculatedSetting = function (settingName) {
+		if (_.isFunction(self.calculatedSettingScripts[settingName])) {
+			var returnValue = undefined;
+
+			try {
+				returnValue = self.callValueFunction(self.calculatedSettingScripts[settingName]);
+			}
+			catch (e) {
+				var rawValue = self.settings()[settingName];
+
+				// If there is a reference error and the value just contains letters and numbers, then
+				if (e instanceof ReferenceError && (/^\w+$/).test(rawValue)) {
+					returnValue = rawValue;
+				}
+			}
+
+			if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.onCalculatedValueChanged) && !_.isUndefined(returnValue)) {
+				try {
+					self.widgetInstance.onCalculatedValueChanged(settingName, returnValue);
+				}
+				catch (e) {
+					console.log(e.toString());
+				}
+			}
+		}
+	}
+
+	this.updateCalculatedSettings = function () {
+		self.datasourceRefreshNotifications = {};
+		self.calculatedSettingScripts = {};
+
+		if (_.isUndefined(self.type())) {
+			return;
+		}
+
+		// Check for any calculated settings
+		var settingsDefs = widgetPlugins[self.type()].settings;
+		var datasourceRegex = new RegExp("datasources.([\\w_-]+)|datasources\\[['\"]([^'\"]+)", "g");
+		var currentSettings = self.settings();
+
+		_.each(settingsDefs, function (settingDef) {
+			if (settingDef.type == "calculated") {
+				var script = currentSettings[settingDef.name];
+
+				if (!_.isUndefined(script)) {
+
+					if(_.isArray(script)) {
+						script = "[" + script.join(",") + "]";
+					}
+
+					// If there is no return, add one
+					if ((script.match(/;/g) || []).length <= 1 && script.indexOf("return") == -1) {
+						script = "return " + script;
+					}
+
+					var valueFunction;
+
+ 					try {
+						valueFunction = new Function("datasources", script);
+					}
+					catch (e) {
+						var literalText = currentSettings[settingDef.name].replace(/"/g, '\\"').replace(/[\r\n]/g, ' \\\n');
+
+						// If the value function cannot be created, then go ahead and treat it as literal text
+						valueFunction = new Function("datasources", "return \"" + literalText + "\";");
+					}
+
+					self.calculatedSettingScripts[settingDef.name] = valueFunction;
+					self.processCalculatedSetting(settingDef.name);
+
+					// Are there any datasources we need to be subscribed to?
+					var matches;
+
+					while (matches = datasourceRegex.exec(script)) {
+						var dsName = (matches[1] || matches[2]);
+						var refreshSettingNames = self.datasourceRefreshNotifications[dsName];
+
+						if (_.isUndefined(refreshSettingNames)) {
+							refreshSettingNames = [];
+							self.datasourceRefreshNotifications[dsName] = refreshSettingNames;
+						}
+
+						if(_.indexOf(refreshSettingNames, settingDef.name) == -1) // Only subscribe to this notification once.
+						{
+							refreshSettingNames.push(settingDef.name);
+						}
+					}
+				}
+			}
+		});
+	}
+
+	this._heightUpdate = ko.observable();
+	this.height = ko.computed({
+		read: function () {
+			self._heightUpdate();
+
+			if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.getHeight)) {
+				return self.widgetInstance.getHeight();
+			}
+
+			return 1;
+		}
+	});
+
+	this.shouldRender = ko.observable(false);
+	this.render = function (element) {
+		self.shouldRender(false);
+		if (!_.isUndefined(self.widgetInstance) && _.isFunction(self.widgetInstance.render)) {
+			self.widgetInstance.render(element);
+			self.updateCalculatedSettings();
+		}
+	}
+
+	this.dispose = function () {
+
+	}
+
+	this.serialize = function () {
+		return {
+			title: self.title(),
+			type: self.type(),
+			settings: self.settings()
+		};
+	}
+
+	this.deserialize = function (object) {
+		self.title(object.title);
+		self.settings(object.settings);
+		self.type(object.type);
+	}
+}
diff --git a/WebSites/errors/403/lib/js/freeboard/freeboard.js b/WebSites/errors/403/lib/js/freeboard/freeboard.js
new file mode 100755
index 0000000..6d2aef4
--- /dev/null
+++ b/WebSites/errors/403/lib/js/freeboard/freeboard.js
@@ -0,0 +1,639 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+// Jquery plugin to watch for attribute changes
+(function($)
+{
+	function isDOMAttrModifiedSupported()
+	{
+		var p = document.createElement('p');
+		var flag = false;
+
+		if(p.addEventListener)
+		{
+			p.addEventListener('DOMAttrModified', function()
+			{
+				flag = true
+			}, false);
+		}
+		else if(p.attachEvent)
+		{
+			p.attachEvent('onDOMAttrModified', function()
+			{
+				flag = true
+			});
+		}
+		else
+		{
+			return false;
+		}
+
+		p.setAttribute('id', 'target');
+
+		return flag;
+	}
+
+	function checkAttributes(chkAttr, e)
+	{
+		if(chkAttr)
+		{
+			var attributes = this.data('attr-old-value');
+
+			if(e.attributeName.indexOf('style') >= 0)
+			{
+				if(!attributes['style'])
+				{
+					attributes['style'] = {};
+				} //initialize
+				var keys = e.attributeName.split('.');
+				e.attributeName = keys[0];
+				e.oldValue = attributes['style'][keys[1]]; //old value
+				e.newValue = keys[1] + ':' + this.prop("style")[$.camelCase(keys[1])]; //new value
+				attributes['style'][keys[1]] = e.newValue;
+			}
+			else
+			{
+				e.oldValue = attributes[e.attributeName];
+				e.newValue = this.attr(e.attributeName);
+				attributes[e.attributeName] = e.newValue;
+			}
+
+			this.data('attr-old-value', attributes); //update the old value object
+		}
+	}
+
+	//initialize Mutation Observer
+	var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+
+	$.fn.attrchange = function(o)
+	{
+
+		var cfg = {
+			trackValues: false,
+			callback   : $.noop
+		};
+
+		//for backward compatibility
+		if(typeof o === "function")
+		{
+			cfg.callback = o;
+		}
+		else
+		{
+			$.extend(cfg, o);
+		}
+
+		if(cfg.trackValues)
+		{ //get attributes old value
+			$(this).each(function(i, el)
+			{
+				var attributes = {};
+				for(var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++)
+				{
+					attr = attrs.item(i);
+					attributes[attr.nodeName] = attr.value;
+				}
+
+				$(this).data('attr-old-value', attributes);
+			});
+		}
+
+		if(MutationObserver)
+		{ //Modern Browsers supporting MutationObserver
+			/*
+			 Mutation Observer is still new and not supported by all browsers.
+			 http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1622.html
+			 */
+			var mOptions = {
+				subtree          : false,
+				attributes       : true,
+				attributeOldValue: cfg.trackValues
+			};
+
+			var observer = new MutationObserver(function(mutations)
+			{
+				mutations.forEach(function(e)
+				{
+					var _this = e.target;
+
+					//get new value if trackValues is true
+					if(cfg.trackValues)
+					{
+						/**
+						 * @KNOWN_ISSUE: The new value is buggy for STYLE attribute as we don't have
+						 * any additional information on which style is getting updated.
+						 * */
+						e.newValue = $(_this).attr(e.attributeName);
+					}
+
+					cfg.callback.call(_this, e);
+				});
+			});
+
+			return this.each(function()
+			{
+				observer.observe(this, mOptions);
+			});
+		}
+		else if(isDOMAttrModifiedSupported())
+		{ //Opera
+			//Good old Mutation Events but the performance is no good
+			//http://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/
+			return this.on('DOMAttrModified', function(event)
+			{
+				if(event.originalEvent)
+				{
+					event = event.originalEvent;
+				} //jQuery normalization is not required for us
+				event.attributeName = event.attrName; //property names to be consistent with MutationObserver
+				event.oldValue = event.prevValue; //property names to be consistent with MutationObserver
+				cfg.callback.call(this, event);
+			});
+		}
+		else if('onpropertychange' in document.body)
+		{ //works only in IE
+			return this.on('propertychange', function(e)
+			{
+				e.attributeName = window.event.propertyName;
+				//to set the attr old value
+				checkAttributes.call($(this), cfg.trackValues, e);
+				cfg.callback.call(this, e);
+			});
+		}
+
+		return this;
+	}
+})(jQuery);
+
+(function(jQuery) {
+
+    jQuery.eventEmitter = {
+        _JQInit: function() {
+            this._JQ = jQuery(this);
+        },
+        emit: function(evt, data) {
+            !this._JQ && this._JQInit();
+            this._JQ.trigger(evt, data);
+        },
+        once: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.one(evt, handler);
+        },
+        on: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.bind(evt, handler);
+        },
+        off: function(evt, handler) {
+            !this._JQ && this._JQInit();
+            this._JQ.unbind(evt, handler);
+        }
+    };
+
+}(jQuery));
+
+var freeboard = (function()
+{
+	var datasourcePlugins = {};
+	var widgetPlugins = {};
+
+	var freeboardUI = new FreeboardUI();
+	var theFreeboardModel = new FreeboardModel(datasourcePlugins, widgetPlugins, freeboardUI);
+
+	var jsEditor = new JSEditor();
+	var valueEditor = new ValueEditor(theFreeboardModel);
+	var pluginEditor = new PluginEditor(jsEditor, valueEditor);
+
+	var developerConsole = new DeveloperConsole(theFreeboardModel);
+
+	var currentStyle = {
+		values: {
+			"font-family": '"HelveticaNeue-UltraLight", "Helvetica Neue Ultra Light", "Helvetica Neue", sans-serif',
+			"color"      : "#d3d4d4",
+			"font-weight": 100
+		}
+	};
+
+	ko.bindingHandlers.pluginEditor = {
+		init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			var options = ko.unwrap(valueAccessor());
+
+			var types = {};
+			var settings = undefined;
+			var title = "";
+
+			if(options.type == 'datasource')
+			{
+				types = datasourcePlugins;
+				title = "Datasource";
+			}
+			else if(options.type == 'widget')
+			{
+				types = widgetPlugins;
+				title = "Widget";
+			}
+			else if(options.type == 'pane')
+			{
+				title = "Pane";
+			}
+
+			$(element).click(function(event)
+			{
+				if(options.operation == 'delete')
+				{
+					var phraseElement = $('<p>Are you sure you want to delete this ' + title + '?</p>');
+					new DialogBox(phraseElement, "Confirm Delete", "Yes", "No", function()
+					{
+
+						if(options.type == 'datasource')
+						{
+							theFreeboardModel.deleteDatasource(viewModel);
+						}
+						else if(options.type == 'widget')
+						{
+							theFreeboardModel.deleteWidget(viewModel);
+						}
+						else if(options.type == 'pane')
+						{
+							theFreeboardModel.deletePane(viewModel);
+						}
+
+					});
+				}
+				else
+				{
+					var instanceType = undefined;
+
+					if(options.type == 'datasource')
+					{
+						if(options.operation == 'add')
+						{
+							settings = {};
+						}
+						else
+						{
+							instanceType = viewModel.type();
+							settings = viewModel.settings();
+							settings.name = viewModel.name();
+						}
+					}
+					else if(options.type == 'widget')
+					{
+						if(options.operation == 'add')
+						{
+							settings = {};
+						}
+						else
+						{
+							instanceType = viewModel.type();
+							settings = viewModel.settings();
+						}
+					}
+					else if(options.type == 'pane')
+					{
+						settings = {};
+
+						if(options.operation == 'edit')
+						{
+							settings.title = viewModel.title();
+							settings.col_width = viewModel.col_width();
+						}
+
+						types = {
+							settings: {
+								settings: [
+									{
+										name        : "title",
+										display_name: "Title",
+										type        : "text"
+									},
+									{
+										name : "col_width",
+										display_name : "Columns",
+										type : "integer",
+										default_value : 1,
+										required : true
+									}
+								]
+							}
+						}
+					}
+
+					pluginEditor.createPluginEditor(title, types, instanceType, settings, function(newSettings)
+					{
+						if(options.operation == 'add')
+						{
+							if(options.type == 'datasource')
+							{
+								var newViewModel = new DatasourceModel(theFreeboardModel, datasourcePlugins);
+								theFreeboardModel.addDatasource(newViewModel);
+
+								newViewModel.name(newSettings.settings.name);
+								delete newSettings.settings.name;
+
+								newViewModel.settings(newSettings.settings);
+								newViewModel.type(newSettings.type);
+							}
+							else if(options.type == 'widget')
+							{
+								var newViewModel = new WidgetModel(theFreeboardModel, widgetPlugins);
+								newViewModel.settings(newSettings.settings);
+								newViewModel.type(newSettings.type);
+
+								viewModel.widgets.push(newViewModel);
+
+								freeboardUI.attachWidgetEditIcons(element);
+							}
+						}
+						else if(options.operation == 'edit')
+						{
+							if(options.type == 'pane')
+							{
+								viewModel.title(newSettings.settings.title);
+								viewModel.col_width(newSettings.settings.col_width);
+								freeboardUI.processResize(false);
+							}
+							else
+							{
+								if(options.type == 'datasource')
+								{
+									viewModel.name(newSettings.settings.name);
+									delete newSettings.settings.name;
+								}
+
+								viewModel.type(newSettings.type);
+								viewModel.settings(newSettings.settings);
+							}
+						}
+					});
+				}
+			});
+		}
+	}
+
+	ko.virtualElements.allowedBindings.datasourceTypeSettings = true;
+	ko.bindingHandlers.datasourceTypeSettings = {
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			processPluginSettings(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
+		}
+	}
+
+	ko.bindingHandlers.pane = {
+		init  : function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(theFreeboardModel.isEditing())
+			{
+				$(element).css({cursor: "pointer"});
+			}
+
+			freeboardUI.addPane(element, viewModel, bindingContext.$root.isEditing());
+		},
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			// If pane has been removed
+			if(theFreeboardModel.panes.indexOf(viewModel) == -1)
+			{
+				freeboardUI.removePane(element);
+			}
+			freeboardUI.updatePane(element, viewModel);
+		}
+	}
+
+	ko.bindingHandlers.widget = {
+		init  : function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(theFreeboardModel.isEditing())
+			{
+				freeboardUI.attachWidgetEditIcons($(element).parent());
+			}
+		},
+		update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
+		{
+			if(viewModel.shouldRender())
+			{
+				$(element).empty();
+				viewModel.render(element);
+			}
+		}
+	}
+
+	function getParameterByName(name)
+	{
+		name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
+		var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search);
+		return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
+	}
+
+	$(function()
+	{ //DOM Ready
+		// Show the loading indicator when we first load
+		freeboardUI.showLoadingIndicator(true);
+
+        var resizeTimer;
+
+        function resizeEnd()
+        {
+            freeboardUI.processResize(true);
+        }
+
+        $(window).resize(function() {
+            clearTimeout(resizeTimer);
+            resizeTimer = setTimeout(resizeEnd, 500);
+        });
+
+	});
+
+	// PUBLIC FUNCTIONS
+	return {
+		initialize          : function(allowEdit, finishedCallback)
+		{
+			ko.applyBindings(theFreeboardModel);
+
+			// Check to see if we have a query param called load. If so, we should load that dashboard initially
+			// var freeboardLocation = getParameterByName("load");
+			var freeboardLocation = "dashboard.json";
+
+			if(freeboardLocation != "")
+			{
+				$.ajax({
+					url    : freeboardLocation,
+					success: function(data)
+					{
+						theFreeboardModel.loadDashboard(data);
+
+						if(_.isFunction(finishedCallback))
+						{
+							finishedCallback();
+						}
+					}
+				});
+			}
+			else
+			{
+				theFreeboardModel.allow_edit(allowEdit);
+				theFreeboardModel.setEditing(allowEdit);
+
+				freeboardUI.showLoadingIndicator(false);
+				if(_.isFunction(finishedCallback))
+				{
+					finishedCallback();
+				}
+
+                freeboard.emit("initialized");
+			}
+		},
+		newDashboard        : function()
+		{
+			theFreeboardModel.loadDashboard({allow_edit: true});
+		},
+		loadDashboard       : function(configuration, callback)
+		{
+			theFreeboardModel.loadDashboard(configuration, callback);
+		},
+		serialize           : function()
+		{
+			return theFreeboardModel.serialize();
+		},
+		setEditing          : function(editing, animate)
+		{
+			theFreeboardModel.setEditing(editing, animate);
+		},
+		isEditing           : function()
+		{
+			return theFreeboardModel.isEditing();
+		},
+		loadDatasourcePlugin: function(plugin)
+		{
+			if(_.isUndefined(plugin.display_name))
+			{
+				plugin.display_name = plugin.type_name;
+			}
+
+            // Add a required setting called name to the beginning
+            plugin.settings.unshift({
+                name : "name",
+                display_name : "Name",
+                type : "text",
+                required : true
+            });
+
+
+			theFreeboardModel.addPluginSource(plugin.source);
+			datasourcePlugins[plugin.type_name] = plugin;
+			theFreeboardModel._datasourceTypes.valueHasMutated();
+		},
+        resize : function()
+        {
+            freeboardUI.processResize(true);
+        },
+		loadWidgetPlugin    : function(plugin)
+		{
+			if(_.isUndefined(plugin.display_name))
+			{
+				plugin.display_name = plugin.type_name;
+			}
+
+			theFreeboardModel.addPluginSource(plugin.source);
+			widgetPlugins[plugin.type_name] = plugin;
+			theFreeboardModel._widgetTypes.valueHasMutated();
+		},
+		// To be used if freeboard is going to load dynamic assets from a different root URL
+		setAssetRoot        : function(assetRoot)
+		{
+			jsEditor.setAssetRoot(assetRoot);
+		},
+		addStyle            : function(selector, rules)
+		{
+			var styleString = selector + "{" + rules + "}";
+
+			var styleElement = $("style#fb-styles");
+
+			if(styleElement.length == 0)
+			{
+				styleElement = $('<style id="fb-styles" type="text/css"></style>');
+				$("head").append(styleElement);
+			}
+
+			if(styleElement[0].styleSheet)
+			{
+				styleElement[0].styleSheet.cssText += styleString;
+			}
+			else
+			{
+				styleElement.text(styleElement.text() + styleString);
+			}
+		},
+		showLoadingIndicator: function(show)
+		{
+			freeboardUI.showLoadingIndicator(show);
+		},
+		showDialog          : function(contentElement, title, okTitle, cancelTitle, okCallback)
+		{
+			new DialogBox(contentElement, title, okTitle, cancelTitle, okCallback);
+		},
+        getDatasourceSettings : function(datasourceName)
+        {
+            var datasources = theFreeboardModel.datasources();
+
+            // Find the datasource with the name specified
+            var datasource = _.find(datasources, function(datasourceModel){
+                return (datasourceModel.name() === datasourceName);
+            });
+
+            if(datasource)
+            {
+                return datasource.settings();
+            }
+            else
+            {
+                return null;
+            }
+        },
+        setDatasourceSettings : function(datasourceName, settings)
+        {
+            var datasources = theFreeboardModel.datasources();
+
+            // Find the datasource with the name specified
+            var datasource = _.find(datasources, function(datasourceModel){
+                return (datasourceModel.name() === datasourceName);
+            });
+
+            if(!datasource)
+            {
+                console.log("Datasource not found");
+                return;
+            }
+
+            var combinedSettings = _.defaults(settings, datasource.settings());
+            datasource.settings(combinedSettings);
+        },
+		getStyleString      : function(name)
+		{
+			var returnString = "";
+
+			_.each(currentStyle[name], function(value, name)
+			{
+				returnString = returnString + name + ":" + value + ";";
+			});
+
+			return returnString;
+		},
+		getStyleObject      : function(name)
+		{
+			return currentStyle[name];
+		},
+		showDeveloperConsole : function()
+		{
+			developerConsole.showDeveloperConsole();
+		}
+	};
+}());
+
+$.extend(freeboard, jQuery.eventEmitter);
diff --git a/WebSites/errors/403/lib/js/thirdparty/codemirror.js b/WebSites/errors/403/lib/js/thirdparty/codemirror.js
new file mode 100644
index 0000000..7987f47
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/codemirror.js
@@ -0,0 +1,21 @@
+/* CodeMirror - Minified & Bundled
+   Generated on 4/30/2014 with http://codemirror.net/doc/compress.html
+   Version: HEAD
+
+   CodeMirror Library:
+   - codemirror.js
+   Modes:
+   - javascript.js
+   Add-ons:
+   - closebrackets.js
+   - continuecomment.js
+   - javascript-hint.js
+   - matchbrackets.js
+   - show-hint.js
+ */
+
+!function(a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else{if("function"==typeof define&&define.amd)return define([],a);this.CodeMirror=a()}}(function(){"use strict";function y(a,c){if(!(this instanceof y))return new y(a,c);this.options=c=c||{},Eg(Zd,c,!1),M(c);var d=c.value;"string"==typeof d&&(d=new yf(d,c.mode)),this.doc=d;var e=this.display=new z(a,d);e.wrapper.CodeMirror=this,I(this),G(this),c.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),c.autofocus&&!q&&Qc(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new ug},b&&setTimeout(Fg(Pc,this,!0),20),Tc(this),Xg();var f=this;zc(this,function(){f.curOp.forceUpdate=!0,Cf(f,d),c.autofocus&&!q||Qg()==e.input?setTimeout(Fg(vd,f),20):wd(f);for(var a in $d)$d.hasOwnProperty(a)&&$d[a](f,c[a],ae);for(var b=0;b<ee.length;++b)ee[b](f)})}function z(a,b){var d=this,e=d.input=Lg("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none");h?e.style.width="1000px":e.setAttribute("wrap","off"),p&&(e.style.border="1px solid black"),e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck","false"),d.inputDiv=Lg("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;"),d.scrollbarH=Lg("div",[Lg("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar"),d.scrollbarV=Lg("div",[Lg("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),d.scrollbarFiller=Lg("div",null,"CodeMirror-scrollbar-filler"),d.gutterFiller=Lg("div",null,"CodeMirror-gutter-filler"),d.lineDiv=Lg("div",null,"CodeMirror-code"),d.selectionDiv=Lg("div",null,null,"position: relative; z-index: 1"),d.cursorDiv=Lg("div",null,"CodeMirror-cursors"),d.measure=Lg("div",null,"CodeMirror-measure"),d.lineMeasure=Lg("div",null,"CodeMirror-measure"),d.lineSpace=Lg("div",[d.measure,d.lineMeasure,d.selectionDiv,d.cursorDiv,d.lineDiv],null,"position: relative; outline: none"),d.mover=Lg("div",[Lg("div",[d.lineSpace],"CodeMirror-lines")],null,"position: relative"),d.sizer=Lg("div",[d.mover],"CodeMirror-sizer"),d.heightForcer=Lg("div",null,null,"position: absolute; height: "+pg+"px; width: 1px;"),d.gutters=Lg("div",null,"CodeMirror-gutters"),d.lineGutter=null,d.scroller=Lg("div",[d.sizer,d.heightForcer,d.gutters],"CodeMirror-scroll"),d.scroller.setAttribute("tabIndex","-1"),d.wrapper=Lg("div",[d.inputDiv,d.scrollbarH,d.scrollbarV,d.scrollbarFiller,d.gutterFiller,d.scroller],"CodeMirror"),c&&(d.gutters.style.zIndex=-1,d.scroller.style.paddingRight=0),p&&(e.style.width="0px"),h||(d.scroller.draggable=!0),m&&(d.inputDiv.style.height="1px",d.inputDiv.style.position="absolute"),c&&(d.scrollbarH.style.minHeight=d.scrollbarV.style.minWidth="18px"),a.appendChild?a.appendChild(d.wrapper):a(d.wrapper),d.viewFrom=d.viewTo=b.first,d.view=[],d.externalMeasured=null,d.viewOffset=0,d.lastSizeC=0,d.updateLineNumbers=null,d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null,d.prevInput="",d.alignWidgets=!1,d.pollingFast=!1,d.poll=new ug,d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null,d.inaccurateSelection=!1,d.maxLine=null,d.maxLineLength=0,d.maxLineChanged=!1,d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null,d.shift=!1,d.selForContextMenu=null}function A(a){a.doc.mode=y.getMode(a.options,a.doc.modeOption),B(a)}function B(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)}),a.doc.frontier=a.doc.first,Sb(a,100),a.state.modeGen++,a.curOp&&Fc(a)}function C(a){a.options.lineWrapping?(Tg(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth=""):(Sg(a.display.wrapper,"CodeMirror-wrap"),L(a)),E(a),Fc(a),ic(a),setTimeout(function(){O(a)},100)}function D(a){var b=uc(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/vc(a.display)-3);return function(e){if(Ue(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;g<e.widgets.length;g++)e.widgets[g].height&&(f+=e.widgets[g].height);return c?f+(Math.ceil(e.text.length/d)||1)*b:f+b}}function E(a){var b=a.doc,c=D(a);b.iter(function(a){var b=c(a);b!=a.height&&Gf(a,b)})}function F(a){var b=je[a.options.keyMap],c=b.style;a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-keymap-\S+/g,"")+(c?" cm-keymap-"+c:"")}function G(a){a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+a.options.theme.replace(/(^|\s)\s*/g," cm-s-"),ic(a)}function H(a){I(a),Fc(a),setTimeout(function(){Q(a)},20)}function I(a){var b=a.display.gutters,c=a.options.gutters;Ng(b);for(var d=0;d<c.length;++d){var e=c[d],f=b.appendChild(Lg("div",null,"CodeMirror-gutter "+e));"CodeMirror-linenumbers"==e&&(a.display.lineGutter=f,f.style.width=(a.display.lineNumWidth||1)+"px")}b.style.display=d?"":"none",J(a)}function J(a){var b=a.display.gutters.offsetWidth;a.display.sizer.style.marginLeft=b+"px",a.display.scrollbarH.style.left=a.options.fixedGutter?b+"px":0}function K(a){if(0==a.height)return 0;for(var c,b=a.text.length,d=a;c=Ne(d);){var e=c.find(0,!0);d=e.from.line,b+=e.from.ch-e.to.ch}for(d=a;c=Oe(d);){var e=c.find(0,!0);b-=d.text.length-e.from.ch,d=e.to.line,b+=d.text.length-e.to.ch}return b}function L(a){var b=a.display,c=a.doc;b.maxLine=Df(c,c.first),b.maxLineLength=K(b.maxLine),b.maxLineChanged=!0,c.iter(function(a){var c=K(a);c>b.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function M(a){var b=Bg(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]):b>-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function N(a){var b=a.display.scroller;return{clientHeight:b.clientHeight,barHeight:a.display.scrollbarV.clientHeight,scrollWidth:b.scrollWidth,clientWidth:b.clientWidth,barWidth:a.display.scrollbarH.clientWidth,docHeight:Math.round(a.doc.height+Xb(a.display))}}function O(a,b){b||(b=N(a));var c=a.display,d=b.docHeight+pg,e=b.scrollWidth>b.clientWidth,f=d>b.clientHeight;if(f?(c.scrollbarV.style.display="block",c.scrollbarV.style.bottom=e?_g(c.measure)+"px":"0",c.scrollbarV.firstChild.style.height=Math.max(0,d-b.clientHeight+(b.barHeight||c.scrollbarV.clientHeight))+"px"):(c.scrollbarV.style.display="",c.scrollbarV.firstChild.style.height="0"),e?(c.scrollbarH.style.display="block",c.scrollbarH.style.right=f?_g(c.measure)+"px":"0",c.scrollbarH.firstChild.style.width=b.scrollWidth-b.clientWidth+(b.barWidth||c.scrollbarH.clientWidth)+"px"):(c.scrollbarH.style.display="",c.scrollbarH.firstChild.style.width="0"),e&&f?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=c.scrollbarFiller.style.width=_g(c.measure)+"px"):c.scrollbarFiller.style.display="",e&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=_g(c.measure)+"px",c.gutterFiller.style.width=c.gutters.offsetWidth+"px"):c.gutterFiller.style.display="",!a.state.checkedOverlayScrollbar&&b.clientHeight>0){if(0===_g(c.measure)){var g=r&&!n?"12px":"18px";c.scrollbarV.style.minWidth=c.scrollbarH.style.minHeight=g;var h=function(b){cg(b)!=c.scrollbarV&&cg(b)!=c.scrollbarH&&Ac(a,Xc)(b)};eg(c.scrollbarV,"mousedown",h),eg(c.scrollbarH,"mousedown",h)}a.state.checkedOverlayScrollbar=!0}}function P(a,b,c){var d=c&&null!=c.top?c.top:a.scroller.scrollTop;d=Math.floor(d-Wb(a));var e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=If(b,d),g=If(b,e);if(c&&c.ensure){var h=c.ensure.from.line,i=c.ensure.to.line;if(f>h)return{from:h,to:If(b,Jf(Df(b,h))+a.wrapper.clientHeight)};if(Math.min(i,b.lastLine())>=g)return{from:If(b,Jf(Df(b,i))-a.wrapper.clientHeight),to:i}}return{from:f,to:g}}function Q(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=T(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g<c.length;g++)if(!c[g].hidden){a.options.fixedGutter&&c[g].gutter&&(c[g].gutter.style.left=f);var h=c[g].alignable;if(h)for(var i=0;i<h.length;i++)h[i].style.left=f}a.options.fixedGutter&&(b.gutters.style.left=d+e+"px")}}function R(a){if(!a.options.lineNumbers)return!1;var b=a.doc,c=S(a.options,b.first+b.size-1),d=a.display;if(c.length!=d.lineNumChars){var e=d.measure.appendChild(Lg("div",[Lg("div",c)],"CodeMirror-linenumber CodeMirror-gutter-elt")),f=e.firstChild.offsetWidth,g=e.offsetWidth-f;return d.lineGutter.style.width="",d.lineNumInnerWidth=Math.max(f,d.lineGutter.offsetWidth-g),d.lineNumWidth=d.lineNumInnerWidth+g,d.lineNumChars=d.lineNumInnerWidth?c.length:-1,d.lineGutter.style.width=d.lineNumWidth+"px",J(a),!0}return!1}function S(a,b){return String(a.lineNumberFormatter(b+a.firstLineNumber))}function T(a){return a.scroller.getBoundingClientRect().left-a.sizer.getBoundingClientRect().left}function U(a,b,c){for(var f,d=a.display.viewFrom,e=a.display.viewTo,g=P(a.display,a.doc,b),i=!0;;i=!1){var j=a.display.scroller.clientWidth;if(!V(a,g,c))break;f=!0,a.display.maxLineChanged&&!a.options.lineWrapping&&W(a);var k=N(a);if(Ob(a),X(a,k),O(a,k),h&&a.options.lineWrapping&&Y(a,k),i&&a.options.lineWrapping&&j!=a.display.scroller.clientWidth)c=!0;else if(c=!1,b&&null!=b.top&&(b={top:Math.min(k.docHeight-pg-k.clientHeight,b.top)}),g=P(a.display,a.doc,b),g.from>=a.display.viewFrom&&g.to<=a.display.viewTo)break}return a.display.updateLineNumbers=null,f&&(jg(a,"update",a),(a.display.viewFrom!=d||a.display.viewTo!=e)&&jg(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo)),f}function V(a,b,c){var d=a.display,e=a.doc;if(!d.wrapper.offsetWidth)return Hc(a),void 0;if(!(!c&&b.from>=d.viewFrom&&b.to<=d.viewTo&&0==Lc(a))){R(a)&&Hc(a);var f=_(a),g=e.first+e.size,h=Math.max(b.from-a.options.viewportMargin,e.first),i=Math.min(g,b.to+a.options.viewportMargin);d.viewFrom<h&&h-d.viewFrom<20&&(h=Math.max(e.first,d.viewFrom)),d.viewTo>i&&d.viewTo-i<20&&(i=Math.min(g,d.viewTo)),x&&(h=Se(a.doc,h),i=Te(a.doc,i));var j=h!=d.viewFrom||i!=d.viewTo||d.lastSizeC!=d.wrapper.clientHeight;Kc(a,h,i),d.viewOffset=Jf(Df(a.doc,d.viewFrom)),a.display.mover.style.top=d.viewOffset+"px";var k=Lc(a);if(j||0!=k||c){var l=Qg();return k>4&&(d.lineDiv.style.display="none"),ab(a,d.updateLineNumbers,f),k>4&&(d.lineDiv.style.display=""),l&&Qg()!=l&&l.offsetHeight&&l.focus(),Ng(d.cursorDiv),Ng(d.selectionDiv),j&&(d.lastSizeC=d.wrapper.clientHeight,Sb(a,400)),Z(a),!0}}}function W(a){var b=a.display,c=ac(a,b.maxLine,b.maxLine.text.length).left;b.maxLineChanged=!1;var d=Math.max(0,c+3),e=Math.max(0,b.sizer.offsetLeft+d+pg-b.scroller.clientWidth);b.sizer.style.minWidth=d+"px",e<a.doc.scrollLeft&&hd(a,Math.min(b.scroller.scrollLeft,e),!0)}function X(a,b){a.display.sizer.style.minHeight=a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=Math.max(b.docHeight,b.clientHeight-pg)+"px"}function Y(a,b){a.display.sizer.offsetWidth+a.display.gutters.offsetWidth<a.display.scroller.clientWidth-1&&(a.display.sizer.style.minHeight=a.display.heightForcer.style.top="0px",a.display.gutters.style.height=b.docHeight+"px")}function Z(a){for(var b=a.display,d=b.lineDiv.offsetTop,e=0;e<b.view.length;e++){var g,f=b.view[e];if(!f.hidden){if(c){var h=f.node.offsetTop+f.node.offsetHeight;g=h-d,d=h}else{var i=f.node.getBoundingClientRect();g=i.bottom-i.top}var j=f.line.height-g;if(2>g&&(g=uc(b)),(j>.001||-.001>j)&&(Gf(f.line,g),$(f.line),f.rest))for(var k=0;k<f.rest.length;k++)$(f.rest[k])}}}function $(a){if(a.widgets)for(var b=0;b<a.widgets.length;++b)a.widgets[b].height=a.widgets[b].node.offsetHeight}function _(a){for(var b=a.display,c={},d={},e=b.gutters.firstChild,f=0;e;e=e.nextSibling,++f)c[a.options.gutters[f]]=e.offsetLeft,d[a.options.gutters[f]]=e.offsetWidth;return{fixedPos:T(b),gutterTotalWidth:b.gutters.offsetWidth,gutterLeft:c,gutterWidth:d,wrapperWidth:b.wrapper.clientWidth}}function ab(a,b,c){function i(b){var c=b.nextSibling;return h&&r&&a.display.currentWheelTarget==b?b.style.display="none":b.parentNode.removeChild(b),c}for(var d=a.display,e=a.options.lineNumbers,f=d.lineDiv,g=f.firstChild,j=d.view,k=d.viewFrom,l=0;l<j.length;l++){var m=j[l];if(m.hidden);else if(m.node){for(;g!=m.node;)g=i(g);var o=e&&null!=b&&k>=b&&m.lineNumber;m.changes&&(Bg(m.changes,"gutter")>-1&&(o=!1),bb(a,m,k,c)),o&&(Ng(m.lineNumber),m.lineNumber.appendChild(document.createTextNode(S(a.options,k)))),g=m.node.nextSibling}else{var n=jb(a,m,k,c);f.insertBefore(n,g)}k+=m.size}for(;g;)g=i(g)}function bb(a,b,c,d){for(var e=0;e<b.changes.length;e++){var f=b.changes[e];"text"==f?fb(a,b):"gutter"==f?hb(a,b,c,d):"class"==f?gb(b):"widget"==f&&ib(b,d)}b.changes=null}function cb(a){return a.node==a.text&&(a.node=Lg("div",null,null,"position: relative"),a.text.parentNode&&a.text.parentNode.replaceChild(a.node,a.text),a.node.appendChild(a.text),c&&(a.node.style.zIndex=2)),a.node}function db(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;if(b&&(b+=" CodeMirror-linebackground"),a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=cb(a);a.background=c.insertBefore(Lg("div",null,b),c.firstChild)}}function eb(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):mf(a,b)}function fb(a,b){var c=b.text.className,d=eb(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,gb(b)):c&&(b.text.className=c)}function gb(a){db(a),a.line.wrapClass?cb(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");var b=a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass;a.text.className=b||""}function hb(a,b,c,d){b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null);var e=b.line.gutterMarkers;if(a.options.lineNumbers||e){var f=cb(b),g=b.gutter=f.insertBefore(Lg("div",null,"CodeMirror-gutter-wrapper","position: absolute; left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px"),b.text);if(!a.options.lineNumbers||e&&e["CodeMirror-linenumbers"]||(b.lineNumber=g.appendChild(Lg("div",S(a.options,c),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+a.display.lineNumInnerWidth+"px"))),e)for(var h=0;h<a.options.gutters.length;++h){var i=a.options.gutters[h],j=e.hasOwnProperty(i)&&e[i];j&&g.appendChild(Lg("div",[j],"CodeMirror-gutter-elt","left: "+d.gutterLeft[i]+"px; width: "+d.gutterWidth[i]+"px"))}}}function ib(a,b){a.alignable&&(a.alignable=null);for(var d,c=a.node.firstChild;c;c=d){var d=c.nextSibling;"CodeMirror-linewidget"==c.className&&a.node.removeChild(c)}kb(a,b)}function jb(a,b,c,d){var e=eb(a,b);return b.text=b.node=e.pre,e.bgClass&&(b.bgClass=e.bgClass),e.textClass&&(b.textClass=e.textClass),gb(b),hb(a,b,c,d),kb(b,d),b.node}function kb(a,b){if(lb(a.line,a,b,!0),a.rest)for(var c=0;c<a.rest.length;c++)lb(a.rest[c],a,b,!1)}function lb(a,b,c,d){if(a.widgets)for(var e=cb(b),f=0,g=a.widgets;f<g.length;++f){var h=g[f],i=Lg("div",[h.node],"CodeMirror-linewidget");h.handleMouseEvents||(i.ignoreEvents=!0),mb(h,i,b,c),d&&h.above?e.insertBefore(i,b.gutter||b.text):e.appendChild(i),jg(h,"redraw")}}function mb(a,b,c,d){if(a.noHScroll){(c.alignable||(c.alignable=[])).push(b);var e=d.wrapperWidth;b.style.left=d.fixedPos+"px",a.coverGutter||(e-=d.gutterTotalWidth,b.style.paddingLeft=d.gutterTotalWidth+"px"),b.style.width=e+"px"}a.coverGutter&&(b.style.zIndex=5,b.style.position="relative",a.noHScroll||(b.style.marginLeft=-d.gutterTotalWidth+"px"))}function pb(a){return nb(a.line,a.ch)}function qb(a,b){return ob(a,b)<0?b:a}function rb(a,b){return ob(a,b)<0?a:b}function sb(a,b){this.ranges=a,this.primIndex=b}function tb(a,b){this.anchor=a,this.head=b}function ub(a,b){var c=a[b];a.sort(function(a,b){return ob(a.from(),b.from())}),b=Bg(a,c);for(var d=1;d<a.length;d++){var e=a[d],f=a[d-1];if(ob(f.to(),e.from())>=0){var g=rb(f.from(),e.from()),h=qb(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;b>=d&&--b,a.splice(--d,2,new tb(i?h:g,i?g:h))}}return new sb(a,b)}function vb(a,b){return new sb([new tb(a,b||a)],0)}function wb(a,b){return Math.max(a.first,Math.min(b,a.first+a.size-1))}function xb(a,b){if(b.line<a.first)return nb(a.first,0);var c=a.first+a.size-1;return b.line>c?nb(c,Df(a,c).text.length):yb(b,Df(a,b.line).text.length)}function yb(a,b){var c=a.ch;return null==c||c>b?nb(a.line,b):0>c?nb(a.line,0):a}function zb(a,b){return b>=a.first&&b<a.first+a.size}function Ab(a,b){for(var c=[],d=0;d<b.length;d++)c[d]=xb(a,b[d]);return c}function Bb(a,b,c,d){if(a.cm&&a.cm.display.shift||a.extend){var e=b.anchor;if(d){var f=ob(c,e)<0;f!=ob(d,e)<0?(e=c,c=d):f!=ob(c,d)<0&&(c=d)}return new tb(e,c)}return new tb(d||c,c)}function Cb(a,b,c,d){Ib(a,new sb([Bb(a,a.sel.primary(),b,c)],0),d)}function Db(a,b,c){for(var d=[],e=0;e<a.sel.ranges.length;e++)d[e]=Bb(a,a.sel.ranges[e],b[e],null);var f=ub(d,a.sel.primIndex);Ib(a,f,c)}function Eb(a,b,c,d){var e=a.sel.ranges.slice(0);e[b]=c,Ib(a,ub(e,a.sel.primIndex),d)}function Fb(a,b,c,d){Ib(a,vb(b,c),d)}function Gb(a,b){var c={ranges:b.ranges,update:function(b){this.ranges=[];for(var c=0;c<b.length;c++)this.ranges[c]=new tb(xb(a,b[c].anchor),xb(a,b[c].head))}};return gg(a,"beforeSelectionChange",a,c),a.cm&&gg(a.cm,"beforeSelectionChange",a.cm,c),c.ranges!=b.ranges?ub(c.ranges,c.ranges.length-1):b}function Hb(a,b,c){var d=a.history.done,e=zg(d);e&&e.ranges?(d[d.length-1]=b,Jb(a,b,c)):Ib(a,b,c)}function Ib(a,b,c){Jb(a,b,c),Rf(a,a.sel,a.cm?a.cm.curOp.id:0/0,c)}function Jb(a,b,c){(ng(a,"beforeSelectionChange")||a.cm&&ng(a.cm,"beforeSelectionChange"))&&(b=Gb(a,b));var d=ob(b.primary().head,a.sel.primary().head)<0?-1:1;Kb(a,Mb(a,b,d,!0)),c&&c.scroll===!1||!a.cm||Rd(a.cm)}function Kb(a,b){b.equals(a.sel)||(a.sel=b,a.cm&&(a.cm.curOp.updateInput=a.cm.curOp.selectionChanged=!0,mg(a.cm)),jg(a,"cursorActivity",a))}function Lb(a){Kb(a,Mb(a,a.sel,null,!1),rg)}function Mb(a,b,c,d){for(var e,f=0;f<b.ranges.length;f++){var g=b.ranges[f],h=Nb(a,g.anchor,c,d),i=Nb(a,g.head,c,d);(e||h!=g.anchor||i!=g.head)&&(e||(e=b.ranges.slice(0,f)),e[f]=new tb(h,i))}return e?ub(e,b.primIndex):b}function Nb(a,b,c,d){var e=!1,f=b,g=c||1;a.cantEdit=!1;a:for(;;){var h=Df(a,f.line);if(h.markedSpans)for(var i=0;i<h.markedSpans.length;++i){var j=h.markedSpans[i],k=j.marker;if((null==j.from||(k.inclusiveLeft?j.from<=f.ch:j.from<f.ch))&&(null==j.to||(k.inclusiveRight?j.to>=f.ch:j.to>f.ch))){if(d&&(gg(k,"beforeCursorEnter"),k.explicitlyCleared)){if(h.markedSpans){--i;continue}break}if(!k.atomic)continue;var l=k.find(0>g?-1:1);if(0==ob(l,f)&&(l.ch+=g,l.ch<0?l=l.line>a.first?xb(a,nb(l.line-1)):null:l.ch>h.text.length&&(l=l.line<a.first+a.size-1?nb(l.line+1,0):null),!l)){if(e)return d?(a.cantEdit=!0,nb(a.first,0)):Nb(a,b,c,!0);e=!0,l=b,g=-g}f=l;continue a}}return f}}function Ob(a){for(var b=a.display,c=a.doc,d=document.createDocumentFragment(),e=document.createDocumentFragment(),f=0;f<c.sel.ranges.length;f++){var g=c.sel.ranges[f],h=g.empty();(h||a.options.showCursorWhenSelecting)&&Pb(a,g,d),h||Qb(a,g,e)}if(a.options.moveInputWithCursor){var i=oc(a,c.sel.primary().head,"div"),j=b.wrapper.getBoundingClientRect(),k=b.lineDiv.getBoundingClientRect(),l=Math.max(0,Math.min(b.wrapper.clientHeight-10,i.top+k.top-j.top)),m=Math.max(0,Math.min(b.wrapper.clientWidth-10,i.left+k.left-j.left));b.inputDiv.style.top=l+"px",b.inputDiv.style.left=m+"px"}Og(b.cursorDiv,d),Og(b.selectionDiv,e)}function Pb(a,b,c){var d=oc(a,b.head,"div"),e=c.appendChild(Lg("div","\xa0","CodeMirror-cursor"));if(e.style.left=d.left+"px",e.style.top=d.top+"px",e.style.height=Math.max(0,d.bottom-d.top)*a.options.cursorHeight+"px",d.other){var f=c.appendChild(Lg("div","\xa0","CodeMirror-cursor CodeMirror-secondarycursor"));f.style.display="",f.style.left=d.other.left+"px",f.style.top=d.other.top+"px",f.style.height=.85*(d.other.bottom-d.other.top)+"px"}}function Qb(a,b,c){function j(a,b,c,d){0>b&&(b=0),b=Math.round(b),d=Math.round(d),f.appendChild(Lg("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?i-a:c)+"px; height: "+(d-b)+"px"))}function k(b,c,d){function m(c,d){return nc(a,nb(b,c),"div",f,d)}var k,l,f=Df(e,b),g=f.text.length;return ih(Kf(f),c||0,null==d?g:d,function(a,b,e){var n,o,p,f=m(a,"left");if(a==b)n=f,o=p=f.left;else{if(n=m(b-1,"right"),"rtl"==e){var q=f;f=n,n=q}o=f.left,p=n.right}null==c&&0==a&&(o=h),n.top-f.top>3&&(j(o,f.top,null,f.bottom),o=h,f.bottom<n.top&&j(o,f.bottom,null,n.top)),null==d&&b==g&&(p=i),(!k||f.top<k.top||f.top==k.top&&f.left<k.left)&&(k=f),(!l||n.bottom>l.bottom||n.bottom==l.bottom&&n.right>l.right)&&(l=n),h+1>o&&(o=h),j(o,n.top,p-o,n.bottom)}),{start:k,end:l}}var d=a.display,e=a.doc,f=document.createDocumentFragment(),g=Yb(a.display),h=g.left,i=d.lineSpace.offsetWidth-g.right,l=b.from(),m=b.to();if(l.line==m.line)k(l.line,l.ch,m.ch);else{var n=Df(e,l.line),o=Df(e,m.line),p=Qe(n)==Qe(o),q=k(l.line,l.ch,p?n.text.length+1:null).end,r=k(m.line,p?0:null,m.ch).start;p&&(q.top<r.top-2?(j(q.right,q.top,null,q.bottom),j(h,r.top,r.left,r.bottom)):j(q.right,q.top,r.left-q.right,q.bottom)),q.bottom<r.top&&j(h,q.bottom,null,r.top)}c.appendChild(f)}function Rb(a){if(a.state.focused){var b=a.display;clearInterval(b.blinker);var c=!0;b.cursorDiv.style.visibility="",a.options.cursorBlinkRate>0&&(b.blinker=setInterval(function(){b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate))}}function Sb(a,b){a.doc.mode.startState&&a.doc.frontier<a.display.viewTo&&a.state.highlight.set(b,Fg(Tb,a))}function Tb(a){var b=a.doc;if(b.frontier<b.first&&(b.frontier=b.first),!(b.frontier>=a.display.viewTo)){var c=+new Date+a.options.workTime,d=ge(b.mode,Vb(a,b.frontier));zc(a,function(){b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(e){if(b.frontier>=a.display.viewFrom){var f=e.styles,g=ff(a,e,d,!0);e.styles=g.styles,g.classes?e.styleClasses=g.classes:e.styleClasses&&(e.styleClasses=null);for(var h=!f||f.length!=e.styles.length,i=0;!h&&i<f.length;++i)h=f[i]!=e.styles[i];h&&Gc(a,b.frontier,"text"),e.stateAfter=ge(b.mode,d)}else hf(a,e.text,d),e.stateAfter=0==b.frontier%5?ge(b.mode,d):null;return++b.frontier,+new Date>c?(Sb(a,a.options.workDelay),!0):void 0})})}}function Ub(a,b,c){for(var d,e,f=a.doc,g=c?-1:b-(a.doc.mode.innerMode?1e3:100),h=b;h>g;--h){if(h<=f.first)return f.first;var i=Df(f,h-1);if(i.stateAfter&&(!c||h<=f.frontier))return h;var j=vg(i.text,null,a.options.tabSize);(null==e||d>j)&&(e=h-1,d=j)}return e}function Vb(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0;var f=Ub(a,b,c),g=f>d.first&&Df(d,f-1).stateAfter;return g=g?ge(d.mode,g):he(d.mode),d.iter(f,b,function(c){hf(a,c.text,g);var h=f==b-1||0==f%5||f>=e.viewFrom&&f<e.viewTo;c.stateAfter=h?ge(d.mode,g):null,++f}),c&&(d.frontier=f),g}function Wb(a){return a.lineSpace.offsetTop}function Xb(a){return a.mover.offsetHeight-a.lineSpace.offsetHeight}function Yb(a){if(a.cachedPaddingH)return a.cachedPaddingH;var b=Og(a.measure,Lg("pre","x")),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d={left:parseInt(c.paddingLeft),right:parseInt(c.paddingRight)};return isNaN(d.left)||isNaN(d.right)||(a.cachedPaddingH=d),d}function Zb(a,b,c){var d=a.options.lineWrapping,e=d&&a.display.scroller.clientWidth;if(!b.measure.heights||d&&b.measure.width!=e){var f=b.measure.heights=[];if(d){b.measure.width=e;for(var g=b.text.firstChild.getClientRects(),h=0;h<g.length-1;h++){var i=g[h],j=g[h+1];Math.abs(i.bottom-j.bottom)>2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function $b(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;d<a.rest.length;d++)if(a.rest[d]==b)return{map:a.measure.maps[d],cache:a.measure.caches[d]};for(var d=0;d<a.rest.length;d++)if(Hf(a.rest[d])>c)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}}function _b(a,b){b=Qe(b);var c=Hf(b),d=a.display.externalMeasured=new Dc(a.doc,b,c);d.lineN=c;var e=d.built=mf(a,d);return d.text=e.pre,Og(a.display.lineMeasure,e.pre),d}function ac(a,b,c,d){return dc(a,cc(a,b),c,d)}function bc(a,b){if(b>=a.display.viewFrom&&b<a.display.viewTo)return a.display.view[Ic(a,b)];var c=a.display.externalMeasured;return c&&b>=c.lineN&&b<c.lineN+c.size?c:void 0}function cc(a,b){var c=Hf(b),d=bc(a,c);d&&!d.text?d=null:d&&d.changes&&bb(a,d,c,_(a)),d||(d=_b(a,b));var e=$b(d,b,c);return{line:b,view:d,rect:null,map:e.map,cache:e.cache,before:e.before,hasHeights:!1}}function dc(a,b,c,d){b.before&&(c=-1);var f,e=c+(d||"");return b.cache.hasOwnProperty(e)?f=b.cache[e]:(b.rect||(b.rect=b.view.text.getBoundingClientRect()),b.hasHeights||(Zb(a,b.view,b.rect),b.hasHeights=!0),f=fc(a,b,c,d),f.bogus||(b.cache[e]=f)),{left:f.left,right:f.right,top:f.top,bottom:f.bottom}}function fc(a,b,c,e){for(var h,i,j,k,f=b.map,l=0;l<f.length;l+=3){var m=f[l],n=f[l+1];if(m>c?(i=0,j=1,k="left"):n>c?(i=c-m,j=i+1):(l==f.length-3||c==n&&f[l+3]>c)&&(j=n-m,i=j-1,c>=n&&(k="right")),null!=i){if(h=f[l+2],m==n&&e==(h.insertLeft?"left":"right")&&(k=e),"left"==e&&0==i)for(;l&&f[l-2]==f[l-3]&&f[l-1].insertLeft;)h=f[(l-=3)+2],k="left";if("right"==e&&i==n-m)for(;l<f.length-3&&f[l+3]==f[l+4]&&!f[l+5].insertLeft;)h=f[(l+=3)+2],k="right";break}}var o;if(3==h.nodeType){for(;i&&Kg(b.line.text.charAt(m+i));)--i;for(;n>m+j&&Kg(b.line.text.charAt(m+j));)++j;if(d&&0==i&&j==n-m)o=h.parentNode.getBoundingClientRect();else if(g&&a.options.lineWrapping){var p=Mg(h,i,j).getClientRects();o=p.length?p["right"==e?p.length-1:0]:ec}else o=Mg(h,i,j).getBoundingClientRect()||ec}else{i>0&&(k=e="right");var p;o=a.options.lineWrapping&&(p=h.getClientRects()).length>1?p["right"==e?p.length-1:0]:h.getBoundingClientRect()}if(d&&!i&&(!o||!o.left&&!o.right)){var q=h.parentNode.getClientRects()[0];o=q?{left:q.left,right:q.left+vc(a.display),top:q.top,bottom:q.bottom}:ec}for(var r,s=(o.bottom+o.top)/2-b.rect.top,t=b.view.measure.heights,l=0;l<t.length-1&&!(s<t[l]);l++);r=l?t[l-1]:0,s=t[l];var u={left:("right"==k?o.right:o.left)-b.rect.left,right:("left"==k?o.left:o.right)-b.rect.left,top:r,bottom:s};return o.left||o.right||(u.bogus=!0),u}function gc(a){if(a.measure&&(a.measure.cache={},a.measure.heights=null,a.rest))for(var b=0;b<a.rest.length;b++)a.measure.caches[b]={}}function hc(a){a.display.externalMeasure=null,Ng(a.display.lineMeasure);for(var b=0;b<a.display.view.length;b++)gc(a.display.view[b])}function ic(a){hc(a),a.display.cachedCharWidth=a.display.cachedTextHeight=a.display.cachedPaddingH=null,a.options.lineWrapping||(a.display.maxLineChanged=!0),a.display.lineNumChars=null}function jc(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function kc(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function lc(a,b,c,d){if(b.widgets)for(var e=0;e<b.widgets.length;++e)if(b.widgets[e].above){var f=Ye(b.widgets[e]);c.top+=f,c.bottom+=f}if("line"==d)return c;d||(d="local");var g=Jf(b);if("local"==d?g+=Wb(a.display):g-=a.display.viewOffset,"page"==d||"window"==d){var h=a.display.lineSpace.getBoundingClientRect();g+=h.top+("window"==d?0:kc());var i=h.left+("window"==d?0:jc());c.left+=i,c.right+=i}return c.top+=g,c.bottom+=g,c}function mc(a,b,c){if("div"==c)return b;var d=b.left,e=b.top;if("page"==c)d-=jc(),e-=kc();else if("local"==c||!c){var f=a.display.sizer.getBoundingClientRect();d+=f.left,e+=f.top}var g=a.display.lineSpace.getBoundingClientRect();return{left:d-g.left,top:e-g.top}}function nc(a,b,c,d,e){return d||(d=Df(a.doc,b.line)),lc(a,d,ac(a,d,b.ch,e),c)}function oc(a,b,c,d,e){function f(b,f){var g=dc(a,e,b,f?"right":"left");return f?g.left=g.right:g.right=g.left,lc(a,d,g,c)}function g(a,b){var c=h[b],d=c.level%2;return a==jh(c)&&b&&c.level<h[b-1].level?(c=h[--b],a=kh(c)-(c.level%2?0:1),d=!0):a==kh(c)&&b<h.length-1&&c.level<h[b+1].level&&(c=h[++b],a=jh(c)-c.level%2,d=!1),d&&a==c.to&&a>c.from?f(a-1):f(a,d)}d=d||Df(a.doc,b.line),e||(e=cc(a,d));var h=Kf(d),i=b.ch;if(!h)return f(i);var j=rh(h,i),k=g(i,j);return null!=qh&&(k.other=g(i,qh)),k}function pc(a,b){var c=0,b=xb(a.doc,b);a.options.lineWrapping||(c=vc(a.display)*b.ch);var d=Df(a.doc,b.line),e=Jf(d)+Wb(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function qc(a,b,c,d){var e=nb(a,b);return e.xRel=d,c&&(e.outside=!0),e}function rc(a,b,c){var d=a.doc;if(c+=a.display.viewOffset,0>c)return qc(d.first,0,!0,-1);var e=If(d,c),f=d.first+d.size-1;if(e>f)return qc(d.first+d.size-1,Df(d,f).text.length,!0,1);0>b&&(b=0);for(var g=Df(d,e);;){var h=sc(a,g,e,b,c),i=Oe(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=Hf(g=j.to.line)}}function sc(a,b,c,d,e){function j(d){var e=oc(a,nb(c,d),"line",b,i);return g=!0,f>e.bottom?e.left-h:f<e.top?e.left+h:(g=!1,e.left)}var f=e-Jf(b),g=!1,h=2*a.display.wrapper.clientWidth,i=cc(a,b),k=Kf(b),l=b.text.length,m=lh(b),n=mh(b),o=j(m),p=g,q=j(n),r=g;if(d>q)return qc(c,n,r,1);for(;;){if(k?n==m||n==th(b,m,1):1>=n-m){for(var s=o>d||q-d>=d-o?m:n,t=d-(s==m?o:q);Kg(b.text.charAt(s));)++s;var u=qc(c,s,s==m?p:r,-1>t?-1:t>1?1:0);return u}var v=Math.ceil(l/2),w=m+v;if(k){w=m;for(var x=0;v>x;++x)w=th(b,w,1)}var y=j(w);y>d?(n=w,q=y,(r=g)&&(q+=1e3),l=v):(m=w,o=y,p=g,l-=v)}}function uc(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==tc){tc=Lg("pre");for(var b=0;49>b;++b)tc.appendChild(document.createTextNode("x")),tc.appendChild(Lg("br"));tc.appendChild(document.createTextNode("x"))}Og(a.measure,tc);var c=tc.offsetHeight/50;return c>3&&(a.cachedTextHeight=c),Ng(a.measure),c||1}function vc(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=Lg("span","xxxxxxxxxx"),c=Lg("pre",[b]);Og(a.measure,c);var d=b.getBoundingClientRect(),e=(d.right-d.left)/10;return e>2&&(a.cachedCharWidth=e),e||10}function xc(a){a.curOp={viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++wc},ig++||(hg=[])}function yc(a){var b=a.curOp,c=a.doc,d=a.display;if(a.curOp=null,b.updateMaxLine&&L(a),b.viewChanged||b.forceUpdate||null!=b.scrollTop||b.scrollToPos&&(b.scrollToPos.from.line<d.viewFrom||b.scrollToPos.to.line>=d.viewTo)||d.maxLineChanged&&a.options.lineWrapping){var e=U(a,{top:b.scrollTop,ensure:b.scrollToPos},b.forceUpdate);a.display.scroller.offsetHeight&&(a.doc.scrollTop=a.display.scroller.scrollTop)}if(!e&&b.selectionChanged&&Ob(a),e||b.startHeight==a.doc.height||O(a),null!=b.scrollTop&&d.scroller.scrollTop!=b.scrollTop){var f=Math.max(0,Math.min(d.scroller.scrollHeight-d.scroller.clientHeight,b.scrollTop));d.scroller.scrollTop=d.scrollbarV.scrollTop=c.scrollTop=f}if(null!=b.scrollLeft&&d.scroller.scrollLeft!=b.scrollLeft){var g=Math.max(0,Math.min(d.scroller.scrollWidth-d.scroller.clientWidth,b.scrollLeft));d.scroller.scrollLeft=d.scrollbarH.scrollLeft=c.scrollLeft=g,Q(a)}if(b.scrollToPos){var h=Nd(a,xb(a.doc,b.scrollToPos.from),xb(a.doc,b.scrollToPos.to),b.scrollToPos.margin);b.scrollToPos.isCursor&&a.state.focused&&Md(a,h)}b.selectionChanged&&Rb(a),a.state.focused&&b.updateInput&&Pc(a,b.typing);var i=b.maybeHiddenMarkers,j=b.maybeUnhiddenMarkers;if(i)for(var k=0;k<i.length;++k)i[k].lines.length||gg(i[k],"hide");if(j)for(var k=0;k<j.length;++k)j[k].lines.length&&gg(j[k],"unhide");var l;if(--ig||(l=hg,hg=null),b.changeObjs&&gg(a,"changes",a,b.changeObjs),l)for(var k=0;k<l.length;++k)l[k]();if(b.cursorActivityHandlers)for(var k=0;k<b.cursorActivityHandlers.length;k++)b.cursorActivityHandlers[k](a)}function zc(a,b){if(a.curOp)return b();xc(a);try{return b()}finally{yc(a)}}function Ac(a,b){return function(){if(a.curOp)return b.apply(a,arguments);xc(a);try{return b.apply(a,arguments)}finally{yc(a)}}}function Bc(a){return function(){if(this.curOp)return a.apply(this,arguments);xc(this);try{return a.apply(this,arguments)}finally{yc(this)}}}function Cc(a){return function(){var b=this.cm;if(!b||b.curOp)return a.apply(this,arguments);xc(b);try{return a.apply(this,arguments)}finally{yc(b)
+}}}function Dc(a,b,c){this.line=b,this.rest=Re(b),this.size=this.rest?Hf(zg(this.rest))-c+1:1,this.node=this.text=null,this.hidden=Ue(a,b)}function Ec(a,b,c){for(var e,d=[],f=b;c>f;f=e){var g=new Dc(a.doc,Df(a.doc,f),f);e=f+g.size,d.push(g)}return d}function Fc(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var e=a.display;if(d&&c<e.viewTo&&(null==e.updateLineNumbers||e.updateLineNumbers>b)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)x&&Se(a.doc,b)<e.viewTo&&Hc(a);else if(c<=e.viewFrom)x&&Te(a.doc,c+d)>e.viewFrom?Hc(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)Hc(a);else if(b<=e.viewFrom){var f=Jc(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):Hc(a)}else if(c>=e.viewTo){var f=Jc(a,b,b,-1);f?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):Hc(a)}else{var g=Jc(a,b,b,-1),h=Jc(a,c,c+d,1);g&&h?(e.view=e.view.slice(0,g.index).concat(Ec(a,g.lineN,h.lineN)).concat(e.view.slice(h.index)),e.viewTo+=d):Hc(a)}var i=e.externalMeasured;i&&(c<i.lineN?i.lineN+=d:b<i.lineN+i.size&&(e.externalMeasured=null))}function Gc(a,b,c){a.curOp.viewChanged=!0;var d=a.display,e=a.display.externalMeasured;if(e&&b>=e.lineN&&b<e.lineN+e.size&&(d.externalMeasured=null),!(b<d.viewFrom||b>=d.viewTo)){var f=d.view[Ic(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);-1==Bg(g,c)&&g.push(c)}}}function Hc(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Ic(a,b){if(b>=a.display.viewTo)return null;if(b-=a.display.viewFrom,0>b)return null;for(var c=a.display.view,d=0;d<c.length;d++)if(b-=c[d].size,0>b)return d}function Jc(a,b,c,d){var f,e=Ic(a,b),g=a.display.view;if(!x)return{index:e,lineN:c};for(var h=0,i=a.display.viewFrom;e>h;h++)i+=g[h].size;if(i!=b){if(d>0){if(e==g.length-1)return null;f=i+g[e].size-b,e++}else f=i-b;b+=f,c+=f}for(;Se(a.doc,c)!=c;){if(e==(0>d?0:g.length-1))return null;c+=d*g[e-(0>d?1:0)].size,e+=d}return{index:e,lineN:c}}function Kc(a,b,c){var d=a.display,e=d.view;0==e.length||b>=d.viewTo||c<=d.viewFrom?(d.view=Ec(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=Ec(a,b,d.viewFrom).concat(d.view):d.viewFrom<b&&(d.view=d.view.slice(Ic(a,b))),d.viewFrom=b,d.viewTo<c?d.view=d.view.concat(Ec(a,d.viewTo,c)):d.viewTo>c&&(d.view=d.view.slice(0,Ic(a,c)))),d.viewTo=c}function Lc(a){for(var b=a.display.view,c=0,d=0;d<b.length;d++){var e=b[d];e.hidden||e.node&&!e.changes||++c}return c}function Mc(a){a.display.pollingFast||a.display.poll.set(a.options.pollInterval,function(){Oc(a),a.state.focused&&Mc(a)})}function Nc(a){function c(){var d=Oc(a);d||b?(a.display.pollingFast=!1,Mc(a)):(b=!0,a.display.poll.set(60,c))}var b=!1;a.display.pollingFast=!0,a.display.poll.set(20,c)}function Oc(a){var b=a.display.input,c=a.display.prevInput,e=a.doc;if(!a.state.focused||fh(b)&&!c||Sc(a)||a.options.disableInput)return!1;a.state.pasteIncoming&&a.state.fakedLastChar&&(b.value=b.value.substring(0,b.value.length-1),a.state.fakedLastChar=!1);var f=b.value;if(f==c&&!a.somethingSelected())return!1;if(g&&!d&&a.display.inputHasSelection===f)return Pc(a),!1;var h=!a.curOp;h&&xc(a),a.display.shift=!1,8203!=f.charCodeAt(0)||e.sel!=a.display.selForContextMenu||c||(c="\u200b");for(var i=0,j=Math.min(c.length,f.length);j>i&&c.charCodeAt(i)==f.charCodeAt(i);)++i;for(var k=f.slice(i),l=eh(k),m=a.state.pasteIncoming&&l.length>1&&e.sel.ranges.length==l.length,n=e.sel.ranges.length-1;n>=0;n--){var o=e.sel.ranges[n],p=o.from(),q=o.to();i<c.length?p=nb(p.line,p.ch-(c.length-i)):a.state.overwrite&&o.empty()&&!a.state.pasteIncoming&&(q=nb(q.line,Math.min(Df(e,q.line).text.length,q.ch+zg(l).length)));var r=a.curOp.updateInput,s={from:p,to:q,text:m?[l[n]]:l,origin:a.state.pasteIncoming?"paste":a.state.cutIncoming?"cut":"+input"};if(Fd(a.doc,s),jg(a,"inputRead",a,s),k&&!a.state.pasteIncoming&&a.options.electricChars&&a.options.smartIndent&&o.head.ch<100&&(!n||e.sel.ranges[n-1].head.line!=o.head.line)){var t=a.getModeAt(o.head);if(t.electricChars){for(var u=0;u<t.electricChars.length;u++)if(k.indexOf(t.electricChars.charAt(u))>-1){Td(a,o.head.line,"smart");break}}else if(t.electricInput){var v=zd(s);t.electricInput.test(Df(e,v.line).text.slice(0,v.ch))&&Td(a,o.head.line,"smart")}}}return Rd(a),a.curOp.updateInput=r,a.curOp.typing=!0,f.length>1e3||f.indexOf("\n")>-1?b.value=a.display.prevInput="":a.display.prevInput=f,h&&yc(a),a.state.pasteIncoming=a.state.cutIncoming=!1,!0}function Pc(a,b){var c,e,f=a.doc;if(a.somethingSelected()){a.display.prevInput="";var h=f.sel.primary();c=gh&&(h.to().line-h.from().line>100||(e=a.getSelection()).length>1e3);var i=c?"-":e||a.getSelection();a.display.input.value=i,a.state.focused&&Ag(a.display.input),g&&!d&&(a.display.inputHasSelection=i)}else b||(a.display.prevInput=a.display.input.value="",g&&!d&&(a.display.inputHasSelection=null));a.display.inaccurateSelection=c}function Qc(a){"nocursor"==a.options.readOnly||q&&Qg()==a.display.input||a.display.input.focus()}function Rc(a){a.state.focused||(Qc(a),vd(a))}function Sc(a){return a.options.readOnly||a.doc.cantEdit}function Tc(a){function e(){a.state.focused&&setTimeout(Fg(Qc,a),0)}function f(b){lg(a,b)||bg(b)}function i(b){if(a.somethingSelected())c.inaccurateSelection&&(c.prevInput="",c.inaccurateSelection=!1,c.input.value=a.getSelection(),Ag(c.input));else{for(var d="",e=[],f=0;f<a.doc.sel.ranges.length;f++){var g=a.doc.sel.ranges[f].head.line,h={anchor:nb(g,0),head:nb(g+1,0)};e.push(h),d+=a.getRange(h.anchor,h.head)}"cut"==b.type?a.setSelections(e,null,rg):(c.prevInput="",c.input.value=d,Ag(c.input))}"cut"==b.type&&(a.state.cutIncoming=!0)}var c=a.display;eg(c.scroller,"mousedown",Ac(a,Xc)),b?eg(c.scroller,"dblclick",Ac(a,function(b){if(!lg(a,b)){var c=Wc(a,b);if(c&&!cd(a,b)&&!Vc(a.display,b)){$f(b);var d=Yd(a.doc,c);Cb(a.doc,d.anchor,d.head)}}})):eg(c.scroller,"dblclick",function(b){lg(a,b)||$f(b)}),eg(c.lineSpace,"selectstart",function(a){Vc(c,a)||$f(a)}),v||eg(c.scroller,"contextmenu",function(b){xd(a,b)}),eg(c.scroller,"scroll",function(){c.scroller.clientHeight&&(gd(a,c.scroller.scrollTop),hd(a,c.scroller.scrollLeft,!0),gg(a,"scroll",a))}),eg(c.scrollbarV,"scroll",function(){c.scroller.clientHeight&&gd(a,c.scrollbarV.scrollTop)}),eg(c.scrollbarH,"scroll",function(){c.scroller.clientHeight&&hd(a,c.scrollbarH.scrollLeft)}),eg(c.scroller,"mousewheel",function(b){kd(a,b)}),eg(c.scroller,"DOMMouseScroll",function(b){kd(a,b)}),eg(c.scrollbarH,"mousedown",e),eg(c.scrollbarV,"mousedown",e),eg(c.wrapper,"scroll",function(){c.wrapper.scrollTop=c.wrapper.scrollLeft=0}),eg(c.input,"keyup",Ac(a,td)),eg(c.input,"input",function(){g&&!d&&a.display.inputHasSelection&&(a.display.inputHasSelection=null),Nc(a)}),eg(c.input,"keydown",Ac(a,rd)),eg(c.input,"keypress",Ac(a,ud)),eg(c.input,"focus",Fg(vd,a)),eg(c.input,"blur",Fg(wd,a)),a.options.dragDrop&&(eg(c.scroller,"dragstart",function(b){fd(a,b)}),eg(c.scroller,"dragenter",f),eg(c.scroller,"dragover",f),eg(c.scroller,"drop",Ac(a,ed))),eg(c.scroller,"paste",function(b){Vc(c,b)||(a.state.pasteIncoming=!0,Qc(a),Nc(a))}),eg(c.input,"paste",function(){if(h&&!a.state.fakedLastChar&&!(new Date-a.state.lastMiddleDown<200)){var b=c.input.selectionStart,d=c.input.selectionEnd;c.input.value+="$",c.input.selectionStart=b,c.input.selectionEnd=d,a.state.fakedLastChar=!0}a.state.pasteIncoming=!0,Nc(a)}),eg(c.input,"cut",i),eg(c.input,"copy",i),m&&eg(c.sizer,"mouseup",function(){Qg()==c.input&&c.input.blur(),Qc(a)})}function Uc(a){var b=a.display;b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,a.setSize()}function Vc(a,b){for(var c=cg(b);c!=a.wrapper;c=c.parentNode)if(!c||c.ignoreEvents||c.parentNode==a.sizer&&c!=a.mover)return!0}function Wc(a,b,c,d){var e=a.display;if(!c){var f=cg(b);if(f==e.scrollbarH||f==e.scrollbarV||f==e.scrollbarFiller||f==e.gutterFiller)return null}var g,h,i=e.lineSpace.getBoundingClientRect();try{g=b.clientX-i.left,h=b.clientY-i.top}catch(b){return null}var k,j=rc(a,g,h);if(d&&1==j.xRel&&(k=Df(a.doc,j.line).text).length==j.ch){var l=vg(k,k.length,a.options.tabSize)-k.length;j=nb(j.line,Math.max(0,Math.round((g-Yb(a.display).left)/vc(a.display))-l))}return j}function Xc(a){if(!lg(this,a)){var b=this,c=b.display;if(c.shift=a.shiftKey,Vc(c,a))return h||(c.scroller.draggable=!1,setTimeout(function(){c.scroller.draggable=!0},100)),void 0;if(!cd(b,a)){var d=Wc(b,a);switch(window.focus(),dg(a)){case 1:d?$c(b,a,d):cg(a)==c.scroller&&$f(a);break;case 2:h&&(b.state.lastMiddleDown=+new Date),d&&Cb(b.doc,d),setTimeout(Fg(Qc,b),20),$f(a);break;case 3:v&&xd(b,a)}}}}function $c(a,b,c){setTimeout(Fg(Rc,a),0);var e,d=+new Date;Zc&&Zc.time>d-400&&0==ob(Zc.pos,c)?e="triple":Yc&&Yc.time>d-400&&0==ob(Yc.pos,c)?(e="double",Zc={time:d,pos:c}):(e="single",Yc={time:d,pos:c});var f=a.doc.sel,g=r?b.metaKey:b.ctrlKey;a.options.dragDrop&&Zg&&!g&&!Sc(a)&&"single"==e&&f.contains(c)>-1&&f.somethingSelected()?_c(a,b,c):ad(a,b,c,e,g)}function _c(a,c,e){var f=a.display,g=Ac(a,function(i){h&&(f.scroller.draggable=!1),a.state.draggingText=!1,fg(document,"mouseup",g),fg(f.scroller,"drop",g),Math.abs(c.clientX-i.clientX)+Math.abs(c.clientY-i.clientY)<10&&($f(i),Cb(a.doc,e),Qc(a),b&&!d&&setTimeout(function(){document.body.focus(),Qc(a)},20))});h&&(f.scroller.draggable=!0),a.state.draggingText=g,f.scroller.dragDrop&&f.scroller.dragDrop(),eg(document,"mouseup",g),eg(f.scroller,"drop",g)}function ad(a,b,c,d,f){function p(b){if(0!=ob(o,b))if(o=b,"rect"==d){for(var e=[],f=a.options.tabSize,g=vg(Df(i,c.line).text,c.ch,f),h=vg(Df(i,b.line).text,b.ch,f),m=Math.min(g,h),n=Math.max(g,h),p=Math.min(c.line,b.line),q=Math.min(a.lastLine(),Math.max(c.line,b.line));q>=p;p++){var r=Df(i,p).text,s=wg(r,m,f);m==n?e.push(new tb(nb(p,s),nb(p,s))):r.length>s&&e.push(new tb(nb(p,s),nb(p,wg(r,n,f))))}e.length||e.push(new tb(c,c)),Ib(i,ub(l.ranges.slice(0,k).concat(e),k),sg)}else{var t=j,u=t.anchor,v=b;if("single"!=d){if("double"==d)var w=Yd(i,b);else var w=new tb(nb(b.line,0),xb(i,nb(b.line+1,0)));ob(w.anchor,u)>0?(v=w.head,u=rb(t.from(),w.anchor)):(v=w.anchor,u=qb(t.to(),w.head))}var e=l.ranges.slice(0);e[k]=new tb(xb(i,u),v),Ib(i,ub(e,k),sg)}}function s(b){var c=++r,e=Wc(a,b,!0,"rect"==d);if(e)if(0!=ob(e,o)){Rc(a),p(e);var f=P(h,i);(e.line>=f.to||e.line<f.from)&&setTimeout(Ac(a,function(){r==c&&s(b)}),150)}else{var g=b.clientY<q.top?-20:b.clientY>q.bottom?20:0;g&&setTimeout(Ac(a,function(){r==c&&(h.scroller.scrollTop+=g,s(b))}),50)}}function t(b){r=1/0,$f(b),Qc(a),fg(document,"mousemove",u),fg(document,"mouseup",v),i.history.lastSelOrigin=null}var h=a.display,i=a.doc;$f(b);var j,k,l=i.sel;if(f&&!b.shiftKey?(k=i.sel.contains(c),j=k>-1?i.sel.ranges[k]:new tb(c,c)):j=i.sel.primary(),b.altKey)d="rect",f||(j=new tb(c,c)),c=Wc(a,b,!0,!0),k=-1;else if("double"==d){var m=Yd(i,c);j=a.display.shift||i.extend?Bb(i,j,m.anchor,m.head):m}else if("triple"==d){var n=new tb(nb(c.line,0),xb(i,nb(c.line+1,0)));j=a.display.shift||i.extend?Bb(i,j,n.anchor,n.head):n}else j=Bb(i,j,c);f?k>-1?Eb(i,k,j,sg):(k=i.sel.ranges.length,Ib(i,ub(i.sel.ranges.concat([j]),k),{scroll:!1,origin:"*mouse"})):(k=0,Ib(i,new sb([j],0),sg),l=i.sel);var o=c,q=h.wrapper.getBoundingClientRect(),r=0,u=Ac(a,function(a){(g&&!e?a.buttons:dg(a))?s(a):t(a)}),v=Ac(a,t);eg(document,"mousemove",u),eg(document,"mouseup",v)}function bd(a,b,c,d,e){try{var f=b.clientX,g=b.clientY}catch(b){return!1}if(f>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&$f(b);var h=a.display,i=h.lineDiv.getBoundingClientRect();if(g>i.bottom||!ng(a,c))return ag(b);g-=i.top-h.viewOffset;for(var j=0;j<a.options.gutters.length;++j){var k=h.gutters.childNodes[j];if(k&&k.getBoundingClientRect().right>=f){var l=If(a.doc,g),m=a.options.gutters[j];return e(a,c,a,l,m,b),ag(b)}}}function cd(a,b){return bd(a,b,"gutterClick",!0,jg)}function ed(a){var b=this;if(!lg(b,a)&&!Vc(b.display,a)){$f(a),g&&(dd=+new Date);var c=Wc(b,a,!0),d=a.dataTransfer.files;if(c&&!Sc(b))if(d&&d.length&&window.FileReader&&window.File)for(var e=d.length,f=Array(e),h=0,i=function(a,d){var g=new FileReader;g.onload=Ac(b,function(){if(f[d]=g.result,++h==e){c=xb(b.doc,c);var a={from:c,to:c,text:eh(f.join("\n")),origin:"paste"};Fd(b.doc,a),Hb(b.doc,vb(c,zd(a)))}}),g.readAsText(a)},j=0;e>j;++j)i(d[j],j);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return b.state.draggingText(a),setTimeout(Fg(Qc,b),20),void 0;try{var f=a.dataTransfer.getData("Text");if(f){var k=b.state.draggingText&&b.listSelections();if(Jb(b.doc,vb(c,c)),k)for(var j=0;j<k.length;++j)Ld(b.doc,"",k[j].anchor,k[j].head,"drag");b.replaceSelection(f,"around","paste"),Qc(b)}}catch(a){}}}}function fd(a,b){if(g&&(!a.state.draggingText||+new Date-dd<100))return bg(b),void 0;if(!lg(a,b)&&!Vc(a.display,b)&&(b.dataTransfer.setData("Text",a.getSelection()),b.dataTransfer.setDragImage&&!l)){var c=Lg("img",null,null,"position: fixed; left: 0; top: 0;");c.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",k&&(c.width=c.height=1,a.display.wrapper.appendChild(c),c._top=c.offsetTop),b.dataTransfer.setDragImage(c,0,0),k&&c.parentNode.removeChild(c)}}function gd(b,c){Math.abs(b.doc.scrollTop-c)<2||(b.doc.scrollTop=c,a||U(b,{top:c}),b.display.scroller.scrollTop!=c&&(b.display.scroller.scrollTop=c),b.display.scrollbarV.scrollTop!=c&&(b.display.scrollbarV.scrollTop=c),a&&U(b),Sb(b,100))}function hd(a,b,c){(c?b==a.doc.scrollLeft:Math.abs(a.doc.scrollLeft-b)<2)||(b=Math.min(b,a.display.scroller.scrollWidth-a.display.scroller.clientWidth),a.doc.scrollLeft=b,Q(a),a.display.scroller.scrollLeft!=b&&(a.display.scroller.scrollLeft=b),a.display.scrollbarH.scrollLeft!=b&&(a.display.scrollbarH.scrollLeft=b))}function kd(b,c){var d=c.wheelDeltaX,e=c.wheelDeltaY;null==d&&c.detail&&c.axis==c.HORIZONTAL_AXIS&&(d=c.detail),null==e&&c.detail&&c.axis==c.VERTICAL_AXIS?e=c.detail:null==e&&(e=c.wheelDelta);var f=b.display,g=f.scroller;if(d&&g.scrollWidth>g.clientWidth||e&&g.scrollHeight>g.clientHeight){if(e&&r&&h)a:for(var i=c.target,j=f.view;i!=g;i=i.parentNode)for(var l=0;l<j.length;l++)if(j[l].node==i){b.display.currentWheelTarget=i;break a}if(d&&!a&&!k&&null!=jd)return e&&gd(b,Math.max(0,Math.min(g.scrollTop+e*jd,g.scrollHeight-g.clientHeight))),hd(b,Math.max(0,Math.min(g.scrollLeft+d*jd,g.scrollWidth-g.clientWidth))),$f(c),f.wheelStartX=null,void 0;if(e&&null!=jd){var m=e*jd,n=b.doc.scrollTop,o=n+f.wrapper.clientHeight;0>m?n=Math.max(0,n+m-50):o=Math.min(b.doc.height,o+m+50),U(b,{top:n,bottom:o})}20>id&&(null==f.wheelStartX?(f.wheelStartX=g.scrollLeft,f.wheelStartY=g.scrollTop,f.wheelDX=d,f.wheelDY=e,setTimeout(function(){if(null!=f.wheelStartX){var a=g.scrollLeft-f.wheelStartX,b=g.scrollTop-f.wheelStartY,c=b&&f.wheelDY&&b/f.wheelDY||a&&f.wheelDX&&a/f.wheelDX;f.wheelStartX=f.wheelStartY=null,c&&(jd=(jd*id+c)/(id+1),++id)}},200)):(f.wheelDX+=d,f.wheelDY+=e))}}function ld(a,b,c){if("string"==typeof b&&(b=ie[b],!b))return!1;a.display.pollingFast&&Oc(a)&&(a.display.pollingFast=!1);var d=a.display.shift,e=!1;try{Sc(a)&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=qg}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function md(a){var b=a.state.keyMaps.slice(0);return a.options.extraKeys&&b.push(a.options.extraKeys),b.push(a.options.keyMap),b}function od(a,b){var c=ke(a.options.keyMap),d=c.auto;clearTimeout(nd),d&&!me(b)&&(nd=setTimeout(function(){ke(a.options.keyMap)==c&&(a.options.keyMap=d.call?d.call(null,a):d,F(a))},50));var e=ne(b,!0),f=!1;if(!e)return!1;var g=md(a);return f=b.shiftKey?le("Shift-"+e,g,function(b){return ld(a,b,!0)})||le(e,g,function(b){return("string"==typeof b?/^go[A-Z]/.test(b):b.motion)?ld(a,b):void 0}):le(e,g,function(b){return ld(a,b)}),f&&($f(b),Rb(a),jg(a,"keyHandled",a,e,b)),f}function pd(a,b,c){var d=le("'"+c+"'",md(a),function(b){return ld(a,b,!0)});return d&&($f(b),Rb(a),jg(a,"keyHandled",a,"'"+c+"'",b)),d}function rd(a){var c=this;if(Rc(c),!lg(c,a)){b&&27==a.keyCode&&(a.returnValue=!1);var d=a.keyCode;c.display.shift=16==d||a.shiftKey;var e=od(c,a);k&&(qd=e?d:null,!e&&88==d&&!gh&&(r?a.metaKey:a.ctrlKey)&&c.replaceSelection("",null,"cut")),18!=d||/\bCodeMirror-crosshair\b/.test(c.display.lineDiv.className)||sd(c)}}function sd(a){function c(a){18!=a.keyCode&&a.altKey||(Sg(b,"CodeMirror-crosshair"),fg(document,"keyup",c),fg(document,"mouseover",c))}var b=a.display.lineDiv;Tg(b,"CodeMirror-crosshair"),eg(document,"keyup",c),eg(document,"mouseover",c)}function td(a){lg(this,a)||16==a.keyCode&&(this.doc.sel.shift=!1)}function ud(a){var b=this;if(!lg(b,a)){var c=a.keyCode,e=a.charCode;if(k&&c==qd)return qd=null,$f(a),void 0;if(!(k&&(!a.which||a.which<10)||m)||!od(b,a)){var f=String.fromCharCode(null==e?c:e);pd(b,a,f)||(g&&!d&&(b.display.inputHasSelection=null),Nc(b))}}}function vd(a){"nocursor"!=a.options.readOnly&&(a.state.focused||(gg(a,"focus",a),a.state.focused=!0,Tg(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(Pc(a),h&&setTimeout(Fg(Pc,a,!0),0))),Mc(a),Rb(a))}function wd(a){a.state.focused&&(gg(a,"blur",a),a.state.focused=!1,Sg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150)}function xd(a,b){function j(){if(null!=c.input.selectionStart){var b=a.somethingSelected(),d=c.input.value="\u200b"+(b?c.input.value:"");c.prevInput=b?"":"\u200b",c.input.selectionStart=1,c.input.selectionEnd=d.length}}function l(){if(c.inputDiv.style.position="relative",c.input.style.cssText=i,d&&(c.scrollbarV.scrollTop=c.scroller.scrollTop=f),Mc(a),null!=c.input.selectionStart){(!g||d)&&j();var b=0,e=function(){c.selForContextMenu==a.doc.sel&&0==c.input.selectionStart?Ac(a,ie.selectAll)(a):b++<10?c.detectingSelectAll=setTimeout(e,500):Pc(a)};c.detectingSelectAll=setTimeout(e,200)}}if(!lg(a,b,"contextmenu")){var c=a.display;if(!Vc(c,b)&&!yd(a,b)){var e=Wc(a,b),f=c.scroller.scrollTop;if(e&&!k){var h=a.options.resetSelectionOnContextMenu;h&&-1==a.doc.sel.contains(e)&&Ac(a,Ib)(a.doc,vb(e),rg);var i=c.input.style.cssText;if(c.inputDiv.style.position="absolute",c.input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(b.clientY-5)+"px; left: "+(b.clientX-5)+"px; z-index: 1000; background: "+(g?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",Qc(a),Pc(a),a.somethingSelected()||(c.input.value=c.prevInput=" "),c.selForContextMenu=a.doc.sel,clearTimeout(c.detectingSelectAll),g&&!d&&j(),v){bg(b);var m=function(){fg(window,"mouseup",m),setTimeout(l,20)};eg(window,"mouseup",m)}else setTimeout(l,50)}}}}function yd(a,b){return ng(a,"gutterContextMenu")?bd(a,b,"gutterContextMenu",!1,gg):!1}function Ad(a,b){if(ob(a,b.from)<0)return a;if(ob(a,b.to)<=0)return zd(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=zd(b).ch-b.to.ch),nb(c,d)}function Bd(a,b){for(var c=[],d=0;d<a.sel.ranges.length;d++){var e=a.sel.ranges[d];c.push(new tb(Ad(e.anchor,b),Ad(e.head,b)))}return ub(c,a.sel.primIndex)}function Cd(a,b,c){return a.line==b.line?nb(c.line,a.ch-b.ch+c.ch):nb(c.line+(a.line-b.line),a.ch)}function Dd(a,b,c){for(var d=[],e=nb(a.first,0),f=e,g=0;g<b.length;g++){var h=b[g],i=Cd(h.from,e,f),j=Cd(zd(h),e,f);if(e=h.to,f=j,"around"==c){var k=a.sel.ranges[g],l=ob(k.head,k.anchor)<0;d[g]=new tb(l?j:i,l?i:j)}else d[g]=new tb(i,i)}return new sb(d,a.sel.primIndex)}function Ed(a,b,c){var d={canceled:!1,from:b.from,to:b.to,text:b.text,origin:b.origin,cancel:function(){this.canceled=!0}};return c&&(d.update=function(b,c,d,e){b&&(this.from=xb(a,b)),c&&(this.to=xb(a,c)),d&&(this.text=d),void 0!==e&&(this.origin=e)}),gg(a,"beforeChange",a,d),a.cm&&gg(a.cm,"beforeChange",a.cm,d),d.canceled?null:{from:d.from,to:d.to,text:d.text,origin:d.origin}}function Fd(a,b,c){if(a.cm){if(!a.cm.curOp)return Ac(a.cm,Fd)(a,b,c);if(a.cm.state.suppressEdits)return}if(!(ng(a,"beforeChange")||a.cm&&ng(a.cm,"beforeChange"))||(b=Ed(a,b,!0))){var d=w&&!c&&Ge(a,b.from,b.to);if(d)for(var e=d.length-1;e>=0;--e)Gd(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text});else Gd(a,b)}}function Gd(a,b){if(1!=b.text.length||""!=b.text[0]||0!=ob(b.from,b.to)){var c=Bd(a,b);Pf(a,b,c,a.cm?a.cm.curOp.id:0/0),Jd(a,b,c,De(a,b));var d=[];Bf(a,function(a,c){c||-1!=Bg(d,a.history)||(Zf(a.history,b),d.push(a.history)),Jd(a,b,null,De(a,b))})}}function Hd(a,b,c){if(!a.cm||!a.cm.state.suppressEdits){for(var e,d=a.history,f=a.sel,g="undo"==b?d.done:d.undone,h="undo"==b?d.undone:d.done,i=0;i<g.length&&(e=g[i],c?!e.ranges||e.equals(a.sel):e.ranges);i++);if(i!=g.length){for(d.lastOrigin=d.lastSelOrigin=null;e=g.pop(),e.ranges;){if(Sf(e,h),c&&!e.equals(a.sel))return Ib(a,e,{clearRedo:!1}),void 0;f=e}var j=[];Sf(f,h),h.push({changes:j,generation:d.generation}),d.generation=e.generation||++d.maxGeneration;for(var k=ng(a,"beforeChange")||a.cm&&ng(a.cm,"beforeChange"),i=e.changes.length-1;i>=0;--i){var l=e.changes[i];if(l.origin=b,k&&!Ed(a,l,!1))return g.length=0,void 0;j.push(Mf(a,l));var m=i?Bd(a,l,null):zg(g);Jd(a,l,m,Fe(a,l)),!i&&a.cm&&a.cm.scrollIntoView(l);var n=[];Bf(a,function(a,b){b||-1!=Bg(n,a.history)||(Zf(a.history,l),n.push(a.history)),Jd(a,l,null,Fe(a,l))})}}}}function Id(a,b){if(0!=b&&(a.first+=b,a.sel=new sb(Cg(a.sel.ranges,function(a){return new tb(nb(a.anchor.line+b,a.anchor.ch),nb(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){Fc(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;d<c.viewTo;d++)Gc(a.cm,d,"gutter")}}function Jd(a,b,c,d){if(a.cm&&!a.cm.curOp)return Ac(a.cm,Jd)(a,b,c,d);if(b.to.line<a.first)return Id(a,b.text.length-1-(b.to.line-b.from.line)),void 0;if(!(b.from.line>a.lastLine())){if(b.from.line<a.first){var e=b.text.length-1-(a.first-b.from.line);Id(a,e),b={from:nb(a.first,0),to:nb(b.to.line+e,b.to.ch),text:[zg(b.text)],origin:b.origin}}var f=a.lastLine();b.to.line>f&&(b={from:b.from,to:nb(f,Df(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=Ef(a,b.from,b.to),c||(c=Bd(a,b,null)),a.cm?Kd(a.cm,b,d):uf(a,b,d),Jb(a,c,rg)}}function Kd(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping||(i=Hf(Qe(Df(d,f.line))),d.iter(i,g.line+1,function(a){return a==e.maxLine?(h=!0,!0):void 0})),d.sel.contains(b.from,b.to)>-1&&mg(a),uf(d,b,c,D(a)),a.options.lineWrapping||(d.iter(i,f.line+b.text.length,function(a){var b=K(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,h=!1)}),h&&(a.curOp.updateMaxLine=!0)),d.frontier=Math.min(d.frontier,f.line),Sb(a,400);var j=b.text.length-(g.line-f.line)-1;f.line!=g.line||1!=b.text.length||tf(a.doc,b)?Fc(a,f.line,g.line+1,j):Gc(a,f.line,"text");var k=ng(a,"changes"),l=ng(a,"change");if(l||k){var m={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin};l&&jg(a,"change",a,m),k&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(m)}a.display.selForContextMenu=null}function Ld(a,b,c,d,e){if(d||(d=c),ob(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=eh(b)),Fd(a,{from:c,to:d,text:b,origin:e})}function Md(a,b){var c=a.display,d=c.sizer.getBoundingClientRect(),e=null;if(b.top+d.top<0?e=!0:b.bottom+d.top>(window.innerHeight||document.documentElement.clientHeight)&&(e=!1),null!=e&&!o){var f=Lg("div","\u200b",null,"position: absolute; top: "+(b.top-c.viewOffset-Wb(a.display))+"px; height: "+(b.bottom-b.top+pg)+"px; left: "+b.left+"px; width: 2px;");a.display.lineSpace.appendChild(f),f.scrollIntoView(e),a.display.lineSpace.removeChild(f)}}function Nd(a,b,c,d){for(null==d&&(d=0);;){var e=!1,f=oc(a,b),g=c&&c!=b?oc(a,c):f,h=Pd(a,Math.min(f.left,g.left),Math.min(f.top,g.top)-d,Math.max(f.left,g.left),Math.max(f.bottom,g.bottom)+d),i=a.doc.scrollTop,j=a.doc.scrollLeft;if(null!=h.scrollTop&&(gd(a,h.scrollTop),Math.abs(a.doc.scrollTop-i)>1&&(e=!0)),null!=h.scrollLeft&&(hd(a,h.scrollLeft),Math.abs(a.doc.scrollLeft-j)>1&&(e=!0)),!e)return f}}function Od(a,b,c,d,e){var f=Pd(a,b,c,d,e);null!=f.scrollTop&&gd(a,f.scrollTop),null!=f.scrollLeft&&hd(a,f.scrollLeft)}function Pd(a,b,c,d,e){var f=a.display,g=uc(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=f.scroller.clientHeight-pg,j={},k=a.doc.height+Xb(f),l=g>c,m=e>k-g;if(h>c)j.scrollTop=l?0:c;else if(e>h+i){var n=Math.min(c,(m?k:e)-i);n!=h&&(j.scrollTop=n)}var o=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft,p=f.scroller.clientWidth-pg;b+=f.gutters.offsetWidth,d+=f.gutters.offsetWidth;var q=f.gutters.offsetWidth,r=q+10>b;return o+q>b||r?(r&&(b=0),j.scrollLeft=Math.max(0,b-10-q)):d>p+o-3&&(j.scrollLeft=d+10-p),j}function Qd(a,b,c){(null!=b||null!=c)&&Sd(a),null!=b&&(a.curOp.scrollLeft=(null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b),null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c)}function Rd(a){Sd(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?nb(b.line,b.ch-1):b,d=nb(b.line,b.ch+1)),a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function Sd(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=pc(a,b.from),d=pc(a,b.to),e=Pd(a,Math.min(c.left,d.left),Math.min(c.top,d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);a.scrollTo(e.scrollLeft,e.scrollTop)}}function Td(a,b,c,d){var f,e=a.doc;null==c&&(c="add"),"smart"==c&&(a.doc.mode.indent?f=Vb(a,b):c="prev");var g=a.options.tabSize,h=Df(e,b),i=vg(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var k,j=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(k=a.doc.mode.indent(f,h.text.slice(j.length),h.text),k==qg)){if(!d)return;c="prev"}}else k=0,c="not";"prev"==c?k=b>e.first?vg(Df(e,b-1).text,null,g):0:"add"==c?k=i+a.options.indentUnit:"subtract"==c?k=i-a.options.indentUnit:"number"==typeof c&&(k=i+c),k=Math.max(0,k);var l="",m=0;if(a.options.indentWithTabs)for(var n=Math.floor(k/g);n;--n)m+=g,l+="	";if(k>m&&(l+=yg(k-m)),l!=j)Ld(a.doc,l,nb(b,0),nb(b,j.length),"+input");else for(var n=0;n<e.sel.ranges.length;n++){var o=e.sel.ranges[n];if(o.head.line==b&&o.head.ch<j.length){var m=nb(b,j.length);Eb(e,n,new tb(m,m));break}}h.stateAfter=null}function Ud(a,b,c,d){var e=b,f=b,g=a.doc;return"number"==typeof b?f=Df(g,wb(g,b)):e=Hf(b),null==e?null:(d(f,e)&&Gc(a,e,c),f)}function Vd(a,b){for(var c=a.doc.sel.ranges,d=[],e=0;e<c.length;e++){for(var f=b(c[e]);d.length&&ob(f.from,zg(d).to)<=0;){var g=d.pop();if(ob(g.from,f.from)<0){f.from=g.from;break}}d.push(f)}zc(a,function(){for(var b=d.length-1;b>=0;b--)Ld(a.doc,"",d[b].from,d[b].to,"+delete");Rd(a)})}function Wd(a,b,c,d,e){function k(){var b=f+c;return b<a.first||b>=a.first+a.size?j=!1:(f=b,i=Df(a,b))}function l(a){var b=(e?th:uh)(i,g,c,!0);if(null==b){if(a||!k())return j=!1;g=e?(0>c?mh:lh)(i):0>c?i.text.length:0}else g=b;return!0}var f=b.line,g=b.ch,h=c,i=Df(a,f),j=!0;if("char"==d)l();else if("column"==d)l(!0);else if("word"==d||"group"==d)for(var m=null,n="group"==d,o=!0;!(0>c)||l(!o);o=!1){var p=i.text.charAt(g)||"\n",q=Hg(p)?"w":n&&"\n"==p?"n":!n||/\s/.test(p)?null:"p";if(!n||o||q||(q="s"),m&&m!=q){0>c&&(c=1,l());break}if(q&&(m=q),c>0&&!l(!o))break}var r=Nb(a,nb(f,g),h,!0);return j||(r.hitSide=!0),r}function Xd(a,b,c,d){var g,e=a.doc,f=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);g=b.top+c*(h-(0>c?1.5:.5)*uc(a.display))}else"line"==d&&(g=c>0?b.bottom+3:b.top-3);for(;;){var i=rc(a,f,g);if(!i.outside)break;if(0>c?0>=g:g>=e.height){i.hitSide=!0;break}g+=5*c}return i}function Yd(a,b){var c=Df(a,b.line).text,d=b.ch,e=b.ch;if(c){(b.xRel<0||e==c.length)&&d?--d:++e;for(var f=c.charAt(d),g=Hg(f)?Hg:/\s/.test(f)?function(a){return/\s/.test(a)}:function(a){return!/\s/.test(a)&&!Hg(a)};d>0&&g(c.charAt(d-1));)--d;for(;e<c.length&&g(c.charAt(e));)++e}return new tb(nb(b.line,d),nb(b.line,e))}function _d(a,b,c,d){y.defaults[a]=b,c&&($d[a]=d?function(a,b,d){d!=ae&&c(a,b,d)}:c)}function ke(a){return"string"==typeof a?je[a]:a}function re(a,b,c,d,e){if(d&&d.shared)return te(a,b,c,d,e);if(a.cm&&!a.cm.curOp)return Ac(a.cm,re)(a,b,c,d,e);var f=new pe(a,e),g=ob(b,c);if(d&&Eg(d,f,!1),g>0||0==g&&f.clearWhenEmpty!==!1)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=Lg("span",[f.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||(f.widgetNode.ignoreEvents=!0),d.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(Pe(a,b.line,b,c,f)||b.line!=c.line&&Pe(a,c.line,b,c,f))throw new Error("Inserting collapsed marker partially overlapping an existing one");x=!0}f.addToHistory&&Pf(a,{from:b,to:c,origin:"markText"},a.sel,0/0);var j,h=b.line,i=a.cm;if(a.iter(h,c.line+1,function(a){i&&f.collapsed&&!i.options.lineWrapping&&Qe(a)==i.display.maxLine&&(j=!0),f.collapsed&&h!=b.line&&Gf(a,0),Ae(a,new xe(f,h==b.line?b.ch:null,h==c.line?c.ch:null)),++h}),f.collapsed&&a.iter(b.line,c.line+1,function(b){Ue(a,b)&&Gf(b,0)}),f.clearOnEnter&&eg(f,"beforeCursorEnter",function(){f.clear()}),f.readOnly&&(w=!0,(a.history.done.length||a.history.undone.length)&&a.clearHistory()),f.collapsed&&(f.id=++qe,f.atomic=!0),i){if(j&&(i.curOp.updateMaxLine=!0),f.collapsed)Fc(i,b.line,c.line+1);else if(f.className||f.title||f.startStyle||f.endStyle)for(var k=b.line;k<=c.line;k++)Gc(i,k,"text");f.atomic&&Lb(i.doc),jg(i,"markerAdded",i,f)}return f}function te(a,b,c,d,e){d=Eg(d),d.shared=!1;var f=[re(a,b,c,d,e)],g=f[0],h=d.widgetNode;return Bf(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(re(a,xb(a,b),xb(a,c),d,e));for(var i=0;i<a.linked.length;++i)if(a.linked[i].isParent)return;g=zg(f)}),new se(f,g)}function ue(a){return a.findMarks(nb(a.first,0),a.clipPos(nb(a.lastLine())),function(a){return a.parent})}function ve(a,b){for(var c=0;c<b.length;c++){var d=b[c],e=d.find(),f=a.clipPos(e.from),g=a.clipPos(e.to);if(ob(f,g)){var h=re(a,f,g,d.primary,d.primary.type);d.markers.push(h),h.parent=d}}}function we(a){for(var b=0;b<a.length;b++){var c=a[b],d=[c.primary.doc];Bf(c.primary.doc,function(a){d.push(a)});for(var e=0;e<c.markers.length;e++){var f=c.markers[e];-1==Bg(d,f.doc)&&(f.parent=null,c.markers.splice(e--,1))}}}function xe(a,b,c){this.marker=a,this.from=b,this.to=c}function ye(a,b){if(a)for(var c=0;c<a.length;++c){var d=a[c];if(d.marker==b)return d}}function ze(a,b){for(var c,d=0;d<a.length;++d)a[d]!=b&&(c||(c=[])).push(a[d]);return c}function Ae(a,b){a.markedSpans=a.markedSpans?a.markedSpans.concat([b]):[b],b.marker.attachLine(a)}function Be(a,b,c){if(a)for(var e,d=0;d<a.length;++d){var f=a[d],g=f.marker,h=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);if(h||f.from==b&&"bookmark"==g.type&&(!c||!f.marker.insertLeft)){var i=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);(e||(e=[])).push(new xe(g,f.from,i?null:f.to))}}return e}function Ce(a,b,c){if(a)for(var e,d=0;d<a.length;++d){var f=a[d],g=f.marker,h=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);(e||(e=[])).push(new xe(g,i?null:f.from-b,null==f.to?null:f.to-b))}}return e}function De(a,b){var c=zb(a,b.from.line)&&Df(a,b.from.line).markedSpans,d=zb(a,b.to.line)&&Df(a,b.to.line).markedSpans;if(!c&&!d)return null;var e=b.from.ch,f=b.to.ch,g=0==ob(b.from,b.to),h=Be(c,e,g),i=Ce(d,f,g),j=1==b.text.length,k=zg(b.text).length+(j?e:0);if(h)for(var l=0;l<h.length;++l){var m=h[l];if(null==m.to){var n=ye(i,m.marker);n?j&&(m.to=null==n.to?null:n.to+k):m.to=e}}if(i)for(var l=0;l<i.length;++l){var m=i[l];if(null!=m.to&&(m.to+=k),null==m.from){var n=ye(h,m.marker);n||(m.from=k,j&&(h||(h=[])).push(m))}else m.from+=k,j&&(h||(h=[])).push(m)}h&&(h=Ee(h)),i&&i!=h&&(i=Ee(i));var o=[h];if(!j){var q,p=b.text.length-2;if(p>0&&h)for(var l=0;l<h.length;++l)null==h[l].to&&(q||(q=[])).push(new xe(h[l].marker,null,null));for(var l=0;p>l;++l)o.push(q);o.push(i)}return o}function Ee(a){for(var b=0;b<a.length;++b){var c=a[b];null!=c.from&&c.from==c.to&&c.marker.clearWhenEmpty!==!1&&a.splice(b--,1)}return a.length?a:null}function Fe(a,b){var c=Vf(a,b),d=De(a,b);if(!c)return d;if(!d)return c;for(var e=0;e<c.length;++e){var f=c[e],g=d[e];if(f&&g)a:for(var h=0;h<g.length;++h){for(var i=g[h],j=0;j<f.length;++j)if(f[j].marker==i.marker)continue a;
+f.push(i)}else g&&(c[e]=g)}return c}function Ge(a,b,c){var d=null;if(a.iter(b.line,c.line+1,function(a){if(a.markedSpans)for(var b=0;b<a.markedSpans.length;++b){var c=a.markedSpans[b].marker;!c.readOnly||d&&-1!=Bg(d,c)||(d||(d=[])).push(c)}}),!d)return null;for(var e=[{from:b,to:c}],f=0;f<d.length;++f)for(var g=d[f],h=g.find(0),i=0;i<e.length;++i){var j=e[i];if(!(ob(j.to,h.from)<0||ob(j.from,h.to)>0)){var k=[i,1],l=ob(j.from,h.from),m=ob(j.to,h.to);(0>l||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(m>0||!g.inclusiveRight&&!m)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-1}}return e}function He(a){var b=a.markedSpans;if(b){for(var c=0;c<b.length;++c)b[c].marker.detachLine(a);a.markedSpans=null}}function Ie(a,b){if(b){for(var c=0;c<b.length;++c)b[c].marker.attachLine(a);a.markedSpans=b}}function Je(a){return a.inclusiveLeft?-1:0}function Ke(a){return a.inclusiveRight?1:0}function Le(a,b){var c=a.lines.length-b.lines.length;if(0!=c)return c;var d=a.find(),e=b.find(),f=ob(d.from,e.from)||Je(a)-Je(b);if(f)return-f;var g=ob(d.to,e.to)||Ke(a)-Ke(b);return g?g:b.id-a.id}function Me(a,b){var d,c=x&&a.markedSpans;if(c)for(var e,f=0;f<c.length;++f)e=c[f],e.marker.collapsed&&null==(b?e.from:e.to)&&(!d||Le(d,e.marker)<0)&&(d=e.marker);return d}function Ne(a){return Me(a,!0)}function Oe(a){return Me(a,!1)}function Pe(a,b,c,d,e){var f=Df(a,b),g=x&&f.markedSpans;if(g)for(var h=0;h<g.length;++h){var i=g[h];if(i.marker.collapsed){var j=i.marker.find(0),k=ob(j.from,c)||Je(i.marker)-Je(e),l=ob(j.to,d)||Ke(i.marker)-Ke(e);if(!(k>=0&&0>=l||0>=k&&l>=0)&&(0>=k&&(ob(j.to,c)||Ke(i.marker)-Je(e))>0||k>=0&&(ob(j.from,d)||Je(i.marker)-Ke(e))<0))return!0}}}function Qe(a){for(var b;b=Ne(a);)a=b.find(-1,!0).line;return a}function Re(a){for(var b,c;b=Oe(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function Se(a,b){var c=Df(a,b),d=Qe(c);return c==d?b:Hf(d)}function Te(a,b){if(b>a.lastLine())return b;var d,c=Df(a,b);if(!Ue(a,c))return b;for(;d=Oe(c);)c=d.find(1,!0).line;return Hf(c)+1}function Ue(a,b){var c=x&&b.markedSpans;if(c)for(var d,e=0;e<c.length;++e)if(d=c[e],d.marker.collapsed){if(null==d.from)return!0;if(!d.marker.widgetNode&&0==d.from&&d.marker.inclusiveLeft&&Ve(a,b,d))return!0}}function Ve(a,b,c){if(null==c.to){var d=c.marker.find(1,!0);return Ve(a,d.line,ye(d.line.markedSpans,c.marker))}if(c.marker.inclusiveRight&&c.to==b.text.length)return!0;for(var e,f=0;f<b.markedSpans.length;++f)if(e=b.markedSpans[f],e.marker.collapsed&&!e.marker.widgetNode&&e.from==c.to&&(null==e.to||e.to!=c.from)&&(e.marker.inclusiveLeft||c.marker.inclusiveRight)&&Ve(a,b,e))return!0}function Xe(a,b,c){Jf(b)<(a.curOp&&a.curOp.scrollTop||a.doc.scrollTop)&&Qd(a,null,c)}function Ye(a){return null!=a.height?a.height:(Pg(document.body,a.node)||Og(a.cm.display.measure,Lg("div",[a.node],null,"position: relative")),a.height=a.node.offsetHeight)}function Ze(a,b,c,d){var e=new We(a,c,d);return e.noHScroll&&(a.display.alignWidgets=!0),Ud(a,b,"widget",function(b){var c=b.widgets||(b.widgets=[]);if(null==e.insertAt?c.push(e):c.splice(Math.min(c.length-1,Math.max(0,e.insertAt)),0,e),e.line=b,!Ue(a.doc,b)){var d=Jf(b)<a.doc.scrollTop;Gf(b,b.height+Ye(e)),d&&Qd(a,null,e.height),a.curOp.forceUpdate=!0}return!0}),e}function _e(a,b,c,d){a.text=b,a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null),null!=a.order&&(a.order=null),He(a),Ie(a,c);var e=d?d(a):1;e!=a.height&&Gf(a,e)}function af(a){a.parent=null,He(a)}function bf(a,b){if(a)for(;;){var c=a.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!c)break;a=a.slice(0,c.index)+a.slice(c.index+c[0].length);var d=c[1]?"bgClass":"textClass";null==b[d]?b[d]=c[2]:new RegExp("(?:^|s)"+c[2]+"(?:$|s)").test(b[d])||(b[d]+=" "+c[2])}return a}function cf(a,b){if(a.blankLine)return a.blankLine(b);if(a.innerMode){var c=y.innerMode(a,b);return c.mode.blankLine?c.mode.blankLine(c.state):void 0}}function df(a,b,c){for(var d=0;10>d;d++){var e=a.token(b,c);if(b.pos>b.start)return e}throw new Error("Mode "+a.name+" failed to advance stream.")}function ef(a,b,c,d,e,f,g){var h=c.flattenSpans;null==h&&(h=a.options.flattenSpans);var l,i=0,j=null,k=new oe(b,a.options.tabSize);for(""==b&&bf(cf(c,d),f);!k.eol();){if(k.pos>a.options.maxHighlightLength?(h=!1,g&&hf(a,b,d,k.pos),k.pos=b.length,l=null):l=bf(df(c,k,d),f),a.options.addModeClass){var m=y.innerMode(c,d).mode.name;m&&(l="m-"+(l?m+" "+l:m))}h&&j==l||(i<k.start&&e(k.start,j),i=k.start,j=l),k.start=k.pos}for(;i<k.pos;){var n=Math.min(k.pos,i+5e4);e(n,j),i=n}}function ff(a,b,c,d){var e=[a.state.modeGen],f={};ef(a,b.text,a.doc.mode,c,function(a,b){e.push(a,b)},f,d);for(var g=0;g<a.state.overlays.length;++g){var h=a.state.overlays[g],i=1,j=0;ef(a,b.text,h.mode,!0,function(a,b){for(var c=i;a>j;){var d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"cm-overlay "+b),i=c+2;else for(;i>c;c+=2){var f=e[c+1];e[c+1]=(f?f+" ":"")+"cm-overlay "+b}},f)}return{styles:e,classes:f.bgClass||f.textClass?f:null}}function gf(a,b){if(!b.styles||b.styles[0]!=a.state.modeGen){var c=ff(a,b,b.stateAfter=Vb(a,Hf(b)));b.styles=c.styles,c.classes?b.styleClasses=c.classes:b.styleClasses&&(b.styleClasses=null)}return b.styles}function hf(a,b,c,d){var e=a.doc.mode,f=new oe(b,a.options.tabSize);for(f.start=f.pos=d||0,""==b&&cf(e,c);!f.eol()&&f.pos<=a.options.maxHighlightLength;)df(e,f,c),f.start=f.pos}function lf(a,b){if(!a||/^\s*$/.test(a))return null;var c=b.addModeClass?kf:jf;return c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function mf(a,b){var c=Lg("span",null,null,h?"padding-right: .1px":null),d={pre:Lg("pre",[c]),content:c,col:0,pos:0,cm:a};b.measure={};for(var e=0;e<=(b.rest?b.rest.length:0);e++){var i,f=e?b.rest[e-1]:b.line;d.pos=0,d.addToken=of,(g||h)&&a.getOption("lineWrapping")&&(d.addToken=pf(d.addToken)),dh(a.display.measure)&&(i=Kf(f))&&(d.addToken=qf(d.addToken,i)),d.map=[],sf(f,d,gf(a,f)),f.styleClasses&&(f.styleClasses.bgClass&&(d.bgClass=Ug(f.styleClasses.bgClass,d.bgClass||"")),f.styleClasses.textClass&&(d.textClass=Ug(f.styleClasses.textClass,d.textClass||""))),0==d.map.length&&d.map.push(0,0,d.content.appendChild(bh(a.display.measure))),0==e?(b.measure.map=d.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(d.map),(b.measure.caches||(b.measure.caches=[])).push({}))}return gg(a,"renderLine",a,b.line,d.pre),d}function nf(a){var b=Lg("span","\u2022","cm-invalidchar");return b.title="\\u"+a.charCodeAt(0).toString(16),b}function of(a,b,c,e,f,g){if(b){var h=a.cm.options.specialChars,i=!1;if(h.test(b))for(var j=document.createDocumentFragment(),k=0;;){h.lastIndex=k;var l=h.exec(b),m=l?l.index-k:b.length-k;if(m){var n=document.createTextNode(b.slice(k,k+m));d?j.appendChild(Lg("span",[n])):j.appendChild(n),a.map.push(a.pos,a.pos+m,n),a.col+=m,a.pos+=m}if(!l)break;if(k+=m+1,"	"==l[0]){var o=a.cm.options.tabSize,p=o-a.col%o,n=j.appendChild(Lg("span",yg(p),"cm-tab"));a.col+=p}else{var n=a.cm.options.specialCharPlaceholder(l[0]);d?j.appendChild(Lg("span",[n])):j.appendChild(n),a.col+=1}a.map.push(a.pos,a.pos+1,n),a.pos++}else{a.col+=b.length;var j=document.createTextNode(b);a.map.push(a.pos,a.pos+b.length,j),d&&(i=!0),a.pos+=b.length}if(c||e||f||i){var q=c||"";e&&(q+=e),f&&(q+=f);var r=Lg("span",[j],q);return g&&(r.title=g),a.content.appendChild(r)}a.content.appendChild(j)}}function pf(a){function b(a){for(var b=" ",c=0;c<a.length-2;++c)b+=c%2?" ":"\xa0";return b+=" "}return function(c,d,e,f,g,h){a(c,d.replace(/ {3,}/g,b),e,f,g,h)}}function qf(a,b){return function(c,d,e,f,g,h){e=e?e+" cm-force-border":"cm-force-border";for(var i=c.pos,j=i+d.length;;){for(var k=0;k<b.length;k++){var l=b[k];if(l.to>i&&l.from<=i)break}if(l.to>=j)return a(c,d,e,f,g,h);a(c,d.slice(0,l.to-i),e,f,null,h),f=null,d=d.slice(l.to-i),i=l.to}}}function rf(a,b,c,d){var e=!d&&c.widgetNode;e&&(a.map.push(a.pos,a.pos+b,e),a.content.appendChild(e)),a.pos+=b}function sf(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var k,m,n,o,p,q,h=e.length,i=0,g=1,j="",l=0;;){if(l==i){m=n=o=p="",q=null,l=1/0;for(var r=[],s=0;s<d.length;++s){var t=d[s],u=t.marker;t.from<=i&&(null==t.to||t.to>i)?(null!=t.to&&l>t.to&&(l=t.to,n=""),u.className&&(m+=" "+u.className),u.startStyle&&t.from==i&&(o+=" "+u.startStyle),u.endStyle&&t.to==l&&(n+=" "+u.endStyle),u.title&&!p&&(p=u.title),u.collapsed&&(!q||Le(q.marker,u)<0)&&(q=t)):t.from>i&&l>t.from&&(l=t.from),"bookmark"==u.type&&t.from==i&&u.widgetNode&&r.push(u)}if(q&&(q.from||0)==i&&(rf(b,(null==q.to?h+1:q.to)-i,q.marker,null==q.from),null==q.to))return;if(!q&&r.length)for(var s=0;s<r.length;++s)rf(b,0,r[s])}if(i>=h)break;for(var v=Math.min(h,l);;){if(j){var w=i+j.length;if(!q){var x=w>v?j.slice(0,v-i):j;b.addToken(b,x,k?k+m:m,o,i+x.length==l?n:"",p)}if(w>=v){j=j.slice(v-i),i=v;break}i=w,o=""}j=e.slice(f,f=c[g++]),k=lf(c[g++],b.cm.options)}}else for(var g=1;g<c.length;g+=2)b.addToken(b,e.slice(f,f=c[g]),lf(c[g+1],b.cm.options))}function tf(a,b){return 0==b.from.ch&&0==b.to.ch&&""==zg(b.text)&&(!a.cm||a.cm.options.wholeLineUpdateBefore)}function uf(a,b,c,d){function e(a){return c?c[a]:null}function f(a,c,e){_e(a,c,e,d),jg(a,"change",a,b)}var g=b.from,h=b.to,i=b.text,j=Df(a,g.line),k=Df(a,h.line),l=zg(i),m=e(i.length-1),n=h.line-g.line;if(tf(a,b)){for(var o=0,p=[];o<i.length-1;++o)p.push(new $e(i[o],e(o),d));f(k,k.text,m),n&&a.remove(g.line,n),p.length&&a.insert(g.line,p)}else if(j==k)if(1==i.length)f(j,j.text.slice(0,g.ch)+l+j.text.slice(h.ch),m);else{for(var p=[],o=1;o<i.length-1;++o)p.push(new $e(i[o],e(o),d));p.push(new $e(l+j.text.slice(h.ch),m,d)),f(j,j.text.slice(0,g.ch)+i[0],e(0)),a.insert(g.line+1,p)}else if(1==i.length)f(j,j.text.slice(0,g.ch)+i[0]+k.text.slice(h.ch),e(0)),a.remove(g.line+1,n);else{f(j,j.text.slice(0,g.ch)+i[0],e(0)),f(k,l+k.text.slice(h.ch),m);for(var o=1,p=[];o<i.length-1;++o)p.push(new $e(i[o],e(o),d));n>1&&a.remove(g.line+1,n-1),a.insert(g.line+1,p)}jg(a,"change",a,b)}function vf(a){this.lines=a,this.parent=null;for(var b=0,c=0;b<a.length;++b)a[b].parent=this,c+=a[b].height;this.height=c}function wf(a){this.children=a;for(var b=0,c=0,d=0;d<a.length;++d){var e=a[d];b+=e.chunkSize(),c+=e.height,e.parent=this}this.size=b,this.height=c,this.parent=null}function Bf(a,b,c){function d(a,e,f){if(a.linked)for(var g=0;g<a.linked.length;++g){var h=a.linked[g];if(h.doc!=e){var i=f&&h.sharedHist;(!c||i)&&(b(h.doc,i),d(h.doc,a,i))}}}d(a,null,!0)}function Cf(a,b){if(b.cm)throw new Error("This document is already in use.");a.doc=b,b.cm=a,E(a),A(a),a.options.lineWrapping||L(a),a.options.mode=b.modeOption,Fc(a)}function Df(a,b){if(b-=a.first,0>b||b>=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(f>b){c=e;break}b-=f}return c.lines[b]}function Ef(a,b,c){var d=[],e=b.line;return a.iter(b.line,c.line+1,function(a){var f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e}),d}function Ff(a,b,c){var d=[];return a.iter(b,c,function(a){d.push(a.text)}),d}function Gf(a,b){var c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function Hf(a){if(null==a.parent)return null;for(var b=a.parent,c=Bg(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return c+b.first}function If(a,b){var c=a.first;a:do{for(var d=0;d<a.children.length;++d){var e=a.children[d],f=e.height;if(f>b){a=e;continue a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var d=0;d<a.lines.length;++d){var g=a.lines[d],h=g.height;if(h>b)break;b-=h}return c+d}function Jf(a){a=Qe(a);for(var b=0,c=a.parent,d=0;d<c.lines.length;++d){var e=c.lines[d];if(e==a)break;b+=e.height}for(var f=c.parent;f;c=f,f=c.parent)for(var d=0;d<f.children.length;++d){var g=f.children[d];if(g==c)break;b+=g.height}return b}function Kf(a){var b=a.order;return null==b&&(b=a.order=vh(a.text)),b}function Lf(a){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=a||1}function Mf(a,b){var c={from:pb(b.from),to:zd(b),text:Ef(a,b.from,b.to)};return Tf(a,c,b.from.line,b.to.line+1),Bf(a,function(a){Tf(a,c,b.from.line,b.to.line+1)},!0),c}function Nf(a){for(;a.length;){var b=zg(a);if(!b.ranges)break;a.pop()}}function Of(a,b){return b?(Nf(a.done),zg(a.done)):a.done.length&&!zg(a.done).ranges?zg(a.done):a.done.length>1&&!a.done[a.done.length-2].ranges?(a.done.pop(),zg(a.done)):void 0}function Pf(a,b,c,d){var e=a.history;e.undone.length=0;var g,f=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>f-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(g=Of(e,e.lastOp==d))){var h=zg(g.changes);0==ob(b.from,b.to)&&0==ob(b.from,h.to)?h.to=zd(b):g.changes.push(Mf(a,b))}else{var i=zg(e.done);for(i&&i.ranges||Sf(a.sel,e.done),g={changes:[Mf(a,b)],generation:e.generation},e.done.push(g);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=f,e.lastOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,h||gg(a,"historyAdded")}function Qf(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function Rf(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||Qf(a,f,zg(e.done),b))?e.done[e.done.length-1]=b:Sf(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastOp=c,d&&d.clearRedo!==!1&&Nf(e.undone)}function Sf(a,b){var c=zg(b);c&&c.ranges&&c.equals(a)||b.push(a)}function Tf(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function Uf(a){if(!a)return null;for(var c,b=0;b<a.length;++b)a[b].marker.explicitlyCleared?c||(c=a.slice(0,b)):c&&c.push(a[b]);return c?c.length?c:null:a}function Vf(a,b){var c=b["spans_"+a.id];if(!c)return null;for(var d=0,e=[];d<b.text.length;++d)e.push(Uf(c[d]));return e}function Wf(a,b,c){for(var d=0,e=[];d<a.length;++d){var f=a[d];if(f.ranges)e.push(c?sb.prototype.deepCopy.call(f):f);else{var g=f.changes,h=[];e.push({changes:h});for(var i=0;i<g.length;++i){var k,j=g[i];if(h.push({from:j.from,to:j.to,text:j.text}),b)for(var l in j)(k=l.match(/^spans_(\d+)$/))&&Bg(b,Number(k[1]))>-1&&(zg(h)[l]=j[l],delete j[l])}}}return e}function Xf(a,b,c,d){c<a.line?a.line+=d:b<a.line&&(a.line=b,a.ch=0)}function Yf(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e],g=!0;if(f.ranges){f.copied||(f=a[e]=f.deepCopy(),f.copied=!0);for(var h=0;h<f.ranges.length;h++)Xf(f.ranges[h].anchor,b,c,d),Xf(f.ranges[h].head,b,c,d)}else{for(var h=0;h<f.changes.length;++h){var i=f.changes[h];if(c<i.from.line)i.from=nb(i.from.line+d,i.from.ch),i.to=nb(i.to.line+d,i.to.ch);else if(b<=i.to.line){g=!1;break}}g||(a.splice(0,e+1),e=0)}}}function Zf(a,b){var c=b.from.line,d=b.to.line,e=b.text.length-(d-c)-1;Yf(a.done,c,d,e),Yf(a.undone,c,d,e)}function ag(a){return null!=a.defaultPrevented?a.defaultPrevented:0==a.returnValue}function cg(a){return a.target||a.srcElement}function dg(a){var b=a.which;return null==b&&(1&a.button?b=1:2&a.button?b=3:4&a.button&&(b=2)),r&&a.ctrlKey&&1==b&&(b=3),b}function jg(a,b){function e(a){return function(){a.apply(null,d)}}var c=a._handlers&&a._handlers[b];if(c){var d=Array.prototype.slice.call(arguments,2);hg||(++ig,hg=[],setTimeout(kg,0));for(var f=0;f<c.length;++f)hg.push(e(c[f]))}}function kg(){--ig;var a=hg;hg=null;for(var b=0;b<a.length;++b)a[b]()}function lg(a,b,c){return gg(a,c||b.type,a,b),ag(b)||b.codemirrorIgnore}function mg(a){var b=a._handlers&&a._handlers.cursorActivity;if(b)for(var c=a.curOp.cursorActivityHandlers||(a.curOp.cursorActivityHandlers=[]),d=0;d<b.length;++d)-1==Bg(c,b[d])&&c.push(b[d])}function ng(a,b){var c=a._handlers&&a._handlers[b];return c&&c.length>0}function og(a){a.prototype.on=function(a,b){eg(this,a,b)},a.prototype.off=function(a,b){fg(this,a,b)}}function ug(){this.id=null}function wg(a,b,c){for(var d=0,e=0;;){var f=a.indexOf("	",d);-1==f&&(f=a.length);var g=f-d;if(f==a.length||e+g>=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}}function yg(a){for(;xg.length<=a;)xg.push(zg(xg)+" ");return xg[a]}function zg(a){return a[a.length-1]}function Bg(a,b){for(var c=0;c<a.length;++c)if(a[c]==b)return c;return-1}function Cg(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=b(a[d],d);return c}function Dg(a,b){var c;if(Object.create)c=Object.create(a);else{var d=function(){};d.prototype=a,c=new d}return b&&Eg(b,c),c}function Eg(a,b,c){b||(b={});for(var d in a)!a.hasOwnProperty(d)||c===!1&&b.hasOwnProperty(d)||(b[d]=a[d]);return b}function Fg(a){var b=Array.prototype.slice.call(arguments,1);return function(){return a.apply(null,b)}}function Ig(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function Kg(a){return a.charCodeAt(0)>=768&&Jg.test(a)}function Lg(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f<b.length;++f)e.appendChild(b[f]);return e}function Ng(a){for(var b=a.childNodes.length;b>0;--b)a.removeChild(a.firstChild);return a}function Og(a,b){return Ng(a).appendChild(b)}function Pg(a,b){if(a.contains)return a.contains(b);for(;b=b.parentNode;)if(b==a)return!0}function Qg(){return document.activeElement}function Rg(a){return new RegExp("\\b"+a+"\\b\\s*")}function Sg(a,b){var c=Rg(b);c.test(a.className)&&(a.className=a.className.replace(c,""))}function Tg(a,b){Rg(b).test(a.className)||(a.className+=" "+b)}function Ug(a,b){for(var c=a.split(" "),d=0;d<c.length;d++)c[d]&&!Rg(c[d]).test(b)&&(b+=" "+c[d]);return b}function Vg(a){if(document.body.getElementsByClassName)for(var b=document.body.getElementsByClassName("CodeMirror"),c=0;c<b.length;c++){var d=b[c].CodeMirror;d&&a(d)}}function Xg(){Wg||(Yg(),Wg=!0)}function Yg(){var a;eg(window,"resize",function(){null==a&&(a=setTimeout(function(){a=null,$g=null,Vg(Uc)},100))}),eg(window,"blur",function(){Vg(wd)})}function _g(a){if(null!=$g)return $g;var b=Lg("div",null,null,"width: 50px; height: 50px; overflow-x: scroll");return Og(a,b),b.offsetWidth&&($g=b.offsetHeight-b.clientHeight),$g||0}function bh(a){if(null==ah){var b=Lg("span","\u200b");Og(a,Lg("span",[b,document.createTextNode("x")])),0!=a.firstChild.offsetHeight&&(ah=b.offsetWidth<=1&&b.offsetHeight>2&&!c)}return ah?Lg("span","\u200b"):Lg("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px")}function dh(a){if(null!=ch)return ch;var b=Og(a,document.createTextNode("A\u062eA")),c=Mg(b,0,1).getBoundingClientRect();if(c.left==c.right)return!1;var d=Mg(b,1,2).getBoundingClientRect();return ch=d.right-c.right<3}function ih(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;f<a.length;++f){var g=a[f];(g.from<c&&g.to>b||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function jh(a){return a.level%2?a.to:a.from}function kh(a){return a.level%2?a.from:a.to}function lh(a){var b=Kf(a);return b?jh(b[0]):0}function mh(a){var b=Kf(a);return b?kh(zg(b)):a.text.length}function nh(a,b){var c=Df(a.doc,b),d=Qe(c);d!=c&&(b=Hf(d));var e=Kf(d),f=e?e[0].level%2?mh(d):lh(d):0;return nb(b,f)}function oh(a,b){for(var c,d=Df(a.doc,b);c=Oe(d);)d=c.find(1,!0).line,b=null;var e=Kf(d),f=e?e[0].level%2?lh(d):mh(d):d.text.length;return nb(null==b?Hf(d):b,f)}function ph(a,b,c){var d=a[0].level;return b==d?!0:c==d?!1:c>b}function rh(a,b){qh=null;for(var d,c=0;c<a.length;++c){var e=a[c];if(e.from<b&&e.to>b)return c;if(e.from==b||e.to==b){if(null!=d)return ph(a,e.level,a[d].level)?(e.from!=e.to&&(qh=d),c):(e.from!=e.to&&(qh=c),d);d=c}}return d}function sh(a,b,c,d){if(!d)return b+c;do b+=c;while(b>0&&Kg(a.text.charAt(b)));return b}function th(a,b,c,d){var e=Kf(a);if(!e)return uh(a,b,c,d);for(var f=rh(e,b),g=e[f],h=sh(a,b,g.level%2?-c:c,d);;){if(h>g.from&&h<g.to)return h;if(h==g.from||h==g.to)return rh(e,h)==f?h:(g=e[f+=c],c>0==g.level%2?g.to:g.from);if(g=e[f+=c],!g)return null;h=c>0==g.level%2?sh(a,g.to,-1,d):sh(a,g.from,1,d)}}function uh(a,b,c,d){var e=b+c;if(d)for(;e>0&&Kg(a.text.charAt(e));)e+=c;return 0>e||e>a.text.length?null:e}var a=/gecko\/\d/i.test(navigator.userAgent),b=/MSIE \d/.test(navigator.userAgent),c=b&&(null==document.documentMode||document.documentMode<8),d=b&&(null==document.documentMode||document.documentMode<9),e=b&&(null==document.documentMode||document.documentMode<10),f=/Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent),g=b||f,h=/WebKit\//.test(navigator.userAgent),i=h&&/Qt\/\d+\.\d+/.test(navigator.userAgent),j=/Chrome\//.test(navigator.userAgent),k=/Opera\//.test(navigator.userAgent),l=/Apple Computer/.test(navigator.vendor),m=/KHTML\//.test(navigator.userAgent),n=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),o=/PhantomJS/.test(navigator.userAgent),p=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),q=p||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),r=p||/Mac/.test(navigator.platform),s=/win/i.test(navigator.platform),t=k&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);t&&(t=Number(t[1])),t&&t>=15&&(k=!1,h=!0);var u=r&&(i||k&&(null==t||12.11>t)),v=a||g&&!d,w=!1,x=!1,nb=y.Pos=function(a,b){return this instanceof nb?(this.line=a,this.ch=b,void 0):new nb(a,b)},ob=y.cmpPos=function(a,b){return a.line-b.line||a.ch-b.ch};sb.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var b=0;b<this.ranges.length;b++){var c=this.ranges[b],d=a.ranges[b];if(0!=ob(c.anchor,d.anchor)||0!=ob(c.head,d.head))return!1}return!0},deepCopy:function(){for(var a=[],b=0;b<this.ranges.length;b++)a[b]=new tb(pb(this.ranges[b].anchor),pb(this.ranges[b].head));return new sb(a,this.primIndex)},somethingSelected:function(){for(var a=0;a<this.ranges.length;a++)if(!this.ranges[a].empty())return!0;return!1},contains:function(a,b){b||(b=a);for(var c=0;c<this.ranges.length;c++){var d=this.ranges[c];if(ob(b,d.from())>=0&&ob(a,d.to())<=0)return c}return-1}},tb.prototype={from:function(){return rb(this.anchor,this.head)},to:function(){return qb(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var tc,Yc,Zc,ec={left:0,right:0,top:0,bottom:0},wc=0,dd=0,id=0,jd=null;g?jd=-.53:a?jd=15:j?jd=-.7:l&&(jd=-1/3);var nd,qd=null,zd=y.changeEnd=function(a){return a.text?nb(a.from.line+a.text.length-1,zg(a.text).length+(1==a.text.length?a.from.ch:0)):a.to};y.prototype={constructor:y,focus:function(){window.focus(),Qc(this),Nc(this)},setOption:function(a,b){var c=this.options,d=c[a];(c[a]!=b||"mode"==a)&&(c[a]=b,$d.hasOwnProperty(a)&&Ac(this,$d[a])(this,b,d))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](a)},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;c<b.length;++c)if(b[c]==a||"string"!=typeof b[c]&&b[c].name==a)return b.splice(c,1),!0},addOverlay:Bc(function(a,b){var c=a.token?a:y.getMode(this.options,a);if(c.startState)throw new Error("Overlays may not be stateful.");this.state.overlays.push({mode:c,modeSpec:a,opaque:b&&b.opaque}),this.state.modeGen++,Fc(this)}),removeOverlay:Bc(function(a){for(var b=this.state.overlays,c=0;c<b.length;++c){var d=b[c].modeSpec;if(d==a||"string"==typeof a&&d.name==a)return b.splice(c,1),this.state.modeGen++,Fc(this),void 0}}),indentLine:Bc(function(a,b,c){"string"!=typeof b&&"number"!=typeof b&&(b=null==b?this.options.smartIndent?"smart":"prev":b?"add":"subtract"),zb(this.doc,a)&&Td(this,a,b,c)}),indentSelection:Bc(function(a){for(var b=this.doc.sel.ranges,c=-1,d=0;d<b.length;d++){var e=b[d];if(e.empty())e.head.line>c&&(Td(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&Rd(this));else{var f=Math.max(c,e.from().line),g=e.to();c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var h=f;c>h;++h)Td(this,h,a)}}}),getTokenAt:function(a,b){var c=this.doc;a=xb(c,a);for(var d=Vb(this,a.line,b),e=this.doc.mode,f=Df(c,a.line),g=new oe(f.text,this.options.tabSize);g.pos<a.ch&&!g.eol();){g.start=g.pos;var h=df(e,g,d)}return{start:g.start,end:g.pos,string:g.current(),type:h||null,state:d}},getTokenTypeAt:function(a){a=xb(this.doc,a);var f,b=gf(this,Df(this.doc,a.line)),c=0,d=(b.length-1)/2,e=a.ch;if(0==e)f=b[2];else for(;;){var g=c+d>>1;if((g?b[2*g-1]:0)>=e)d=g;else{if(!(b[2*g+1]<e)){f=b[2*g+2];break}c=g+1}}var h=f?f.indexOf("cm-overlay "):-1;return 0>h?f:0==h?null:f.slice(0,h-1)},getModeAt:function(a){var b=this.doc.mode;return b.innerMode?y.innerMode(b,this.getTokenAt(a).state).mode:b},getHelper:function(a,b){return this.getHelpers(a,b)[0]},getHelpers:function(a,b){var c=[];if(!fe.hasOwnProperty(b))return fe;var d=fe[b],e=this.getModeAt(a);if("string"==typeof e[b])d[e[b]]&&c.push(d[e[b]]);else if(e[b])for(var f=0;f<e[b].length;f++){var g=d[e[b][f]];g&&c.push(g)}else e.helperType&&d[e.helperType]?c.push(d[e.helperType]):d[e.name]&&c.push(d[e.name]);for(var f=0;f<d._global.length;f++){var h=d._global[f];h.pred(e,this)&&-1==Bg(c,h.val)&&c.push(h.val)}return c},getStateAfter:function(a,b){var c=this.doc;return a=wb(c,null==a?c.first+c.size-1:a),Vb(this,a+1,b)},cursorCoords:function(a,b){var c,d=this.doc.sel.primary();return c=null==a?d.head:"object"==typeof a?xb(this.doc,a):a?d.from():d.to(),oc(this,c,b||"page")},charCoords:function(a,b){return nc(this,xb(this.doc,a),b||"page")},coordsChar:function(a,b){return a=mc(this,a,b||"page"),rc(this,a.left,a.top)},lineAtHeight:function(a,b){return a=mc(this,{top:a,left:0},b||"page").top,If(this.doc,a+this.display.viewOffset)},heightAtLine:function(a,b){var c=!1,d=this.doc.first+this.doc.size-1;a<this.doc.first?a=this.doc.first:a>d&&(a=d,c=!0);var e=Df(this.doc,a);return lc(this,e,{top:0,left:0},b||"page").top+(c?this.doc.height-Jf(e):0)},defaultTextHeight:function(){return uc(this.display)},defaultCharWidth:function(){return vc(this.display)},setGutterMarker:Bc(function(a,b,c){return Ud(this,a,"gutter",function(a){var d=a.gutterMarkers||(a.gutterMarkers={});return d[b]=c,!c&&Ig(d)&&(a.gutterMarkers=null),!0})}),clearGutter:Bc(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){c.gutterMarkers&&c.gutterMarkers[a]&&(c.gutterMarkers[a]=null,Gc(b,d,"gutter"),Ig(c.gutterMarkers)&&(c.gutterMarkers=null)),++d})}),addLineClass:Bc(function(a,b,c){return Ud(this,a,"class",function(a){var d="text"==b?"textClass":"background"==b?"bgClass":"wrapClass";if(a[d]){if(new RegExp("(?:^|\\s)"+c+"(?:$|\\s)").test(a[d]))return!1;a[d]+=" "+c}else a[d]=c;return!0})}),removeLineClass:Bc(function(a,b,c){return Ud(this,a,"class",function(a){var d="text"==b?"textClass":"background"==b?"bgClass":"wrapClass",e=a[d];if(!e)return!1;if(null==c)a[d]=null;else{var f=e.match(new RegExp("(?:^|\\s+)"+c+"(?:$|\\s+)"));if(!f)return!1;var g=f.index+f[0].length;a[d]=e.slice(0,f.index)+(f.index&&g!=e.length?" ":"")+e.slice(g)||null}return!0})}),addLineWidget:Bc(function(a,b,c){return Ze(this,a,b,c)}),removeLineWidget:function(a){a.clear()},lineInfo:function(a){if("number"==typeof a){if(!zb(this.doc,a))return null;var b=a;if(a=Df(this.doc,a),!a)return null}else{var b=Hf(a);if(null==b)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=oc(this,xb(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&Od(this,h,g,h+b.offsetWidth,g+b.offsetHeight)},triggerOnKeyDown:Bc(rd),triggerOnKeyPress:Bc(ud),triggerOnKeyUp:Bc(td),execCommand:function(a){return ie.hasOwnProperty(a)?ie[a](this):void 0},findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);for(var f=0,g=xb(this.doc,a);b>f&&(g=Wd(this.doc,g,e,c,d),!g.hitSide);++f);return g},moveH:Bc(function(a,b){var c=this;c.extendSelectionsBy(function(d){return c.display.shift||c.doc.extend||d.empty()?Wd(c.doc,d.head,a,b,c.options.rtlMoveVisually):0>a?d.from():d.to()},tg)}),deleteH:Bc(function(a,b){var c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):Vd(this,function(c){var e=Wd(d,c.head,a,b,!1);return 0>a?{from:e,to:c.head}:{from:c.head,to:e}})}),findPosV:function(a,b,c,d){var e=1,f=d;0>b&&(e=-1,b=-b);for(var g=0,h=xb(this.doc,a);b>g;++g){var i=oc(this,h,"div");if(null==f?f=i.left:i.left=f,h=Xd(this,i,e,c),h.hitSide)break}return h},moveV:Bc(function(a,b){var c=this,d=this.doc,e=[],f=!c.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy(function(g){if(f)return 0>a?g.from():g.to();var h=oc(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var i=Xd(c,h,a,b);return"page"==b&&g==d.sel.primary()&&Qd(c,null,nc(c,i,"div").top-h.top),i},tg),e.length)for(var g=0;g<d.sel.ranges.length;g++)d.sel.ranges[g].goalColumn=e[g]}),toggleOverwrite:function(a){(null==a||a!=this.state.overwrite)&&((this.state.overwrite=!this.state.overwrite)?Tg(this.display.cursorDiv,"CodeMirror-overwrite"):Sg(this.display.cursorDiv,"CodeMirror-overwrite"),gg(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return Qg()==this.display.input},scrollTo:Bc(function(a,b){(null!=a||null!=b)&&Sd(this),null!=a&&(this.curOp.scrollLeft=a),null!=b&&(this.curOp.scrollTop=b)}),getScrollInfo:function(){var a=this.display.scroller,b=pg;return{left:a.scrollLeft,top:a.scrollTop,height:a.scrollHeight-b,width:a.scrollWidth-b,clientHeight:a.clientHeight-b,clientWidth:a.clientWidth-b}},scrollIntoView:Bc(function(a,b){if(null==a?(a={from:this.doc.sel.primary().head,to:null},null==b&&(b=this.options.cursorScrollMargin)):"number"==typeof a?a={from:nb(a,0),to:null}:null==a.from&&(a={from:a,to:null}),a.to||(a.to=a.from),a.margin=b||0,null!=a.from.line)Sd(this),this.curOp.scrollToPos=a;else{var c=Pd(this,Math.min(a.from.left,a.to.left),Math.min(a.from.top,a.to.top)-a.margin,Math.max(a.from.right,a.to.right),Math.max(a.from.bottom,a.to.bottom)+a.margin);this.scrollTo(c.scrollLeft,c.scrollTop)}}),setSize:Bc(function(a,b){function c(a){return"number"==typeof a||/^\d+$/.test(String(a))?a+"px":a}null!=a&&(this.display.wrapper.style.width=c(a)),null!=b&&(this.display.wrapper.style.height=c(b)),this.options.lineWrapping&&hc(this),this.curOp.forceUpdate=!0,gg(this,"refresh",this)}),operation:function(a){return zc(this,a)},refresh:Bc(function(){var a=this.display.cachedTextHeight;Fc(this),this.curOp.forceUpdate=!0,ic(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),J(this),(null==a||Math.abs(a-uc(this.display))>.5)&&E(this),gg(this,"refresh",this)}),swapDoc:Bc(function(a){var b=this.doc;return b.cm=null,Cf(this,a),ic(this),Pc(this),this.scrollTo(a.scrollLeft,a.scrollTop),jg(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},og(y);var Zd=y.defaults={},$d=y.optionHandlers={},ae=y.Init={toString:function(){return"CodeMirror.Init"}};_d("value","",function(a,b){a.setValue(b)},!0),_d("mode",null,function(a,b){a.doc.modeOption=b,A(a)
+},!0),_d("indentUnit",2,A,!0),_d("indentWithTabs",!1),_d("smartIndent",!0),_d("tabSize",4,function(a){B(a),ic(a),Fc(a)},!0),_d("specialChars",/[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g,function(a,b){a.options.specialChars=new RegExp(b.source+(b.test("	")?"":"|	"),"g"),a.refresh()},!0),_d("specialCharPlaceholder",nf,function(a){a.refresh()},!0),_d("electricChars",!0),_d("rtlMoveVisually",!s),_d("wholeLineUpdateBefore",!0),_d("theme","default",function(a){G(a),H(a)},!0),_d("keyMap","default",F),_d("extraKeys",null),_d("lineWrapping",!1,C,!0),_d("gutters",[],function(a){M(a.options),H(a)},!0),_d("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?T(a.display)+"px":"0",a.refresh()},!0),_d("coverGutterNextToScrollbar",!1,O,!0),_d("lineNumbers",!1,function(a){M(a.options),H(a)},!0),_d("firstLineNumber",1,H,!0),_d("lineNumberFormatter",function(a){return a},H,!0),_d("showCursorWhenSelecting",!1,Ob,!0),_d("resetSelectionOnContextMenu",!0),_d("readOnly",!1,function(a,b){"nocursor"==b?(wd(a),a.display.input.blur(),a.display.disabled=!0):(a.display.disabled=!1,b||Pc(a))}),_d("disableInput",!1,function(a,b){b||Pc(a)},!0),_d("dragDrop",!0),_d("cursorBlinkRate",530),_d("cursorScrollMargin",0),_d("cursorHeight",1),_d("workTime",100),_d("workDelay",100),_d("flattenSpans",!0,B,!0),_d("addModeClass",!1,B,!0),_d("pollInterval",100),_d("undoDepth",200,function(a,b){a.doc.history.undoDepth=b}),_d("historyEventDelay",1250),_d("viewportMargin",10,function(a){a.refresh()},!0),_d("maxHighlightLength",1e4,B,!0),_d("moveInputWithCursor",!0,function(a,b){b||(a.display.inputDiv.style.top=a.display.inputDiv.style.left=0)}),_d("tabindex",null,function(a,b){a.display.input.tabIndex=b||""}),_d("autofocus",null);var be=y.modes={},ce=y.mimeModes={};y.defineMode=function(a,b){if(y.defaults.mode||"null"==a||(y.defaults.mode=a),arguments.length>2){b.dependencies=[];for(var c=2;c<arguments.length;++c)b.dependencies.push(arguments[c])}be[a]=b},y.defineMIME=function(a,b){ce[a]=b},y.resolveMode=function(a){if("string"==typeof a&&ce.hasOwnProperty(a))a=ce[a];else if(a&&"string"==typeof a.name&&ce.hasOwnProperty(a.name)){var b=ce[a.name];"string"==typeof b&&(b={name:b}),a=Dg(b,a),a.name=b.name}else if("string"==typeof a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return y.resolveMode("application/xml");return"string"==typeof a?{name:a}:a||{name:"null"}},y.getMode=function(a,b){var b=y.resolveMode(b),c=be[b.name];if(!c)return y.getMode(a,"text/plain");var d=c(a,b);if(de.hasOwnProperty(b.name)){var e=de[b.name];for(var f in e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var f in b.modeProps)d[f]=b.modeProps[f];return d},y.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}}),y.defineMIME("text/plain","null");var de=y.modeExtensions={};y.extendMode=function(a,b){var c=de.hasOwnProperty(a)?de[a]:de[a]={};Eg(b,c)},y.defineExtension=function(a,b){y.prototype[a]=b},y.defineDocExtension=function(a,b){yf.prototype[a]=b},y.defineOption=_d;var ee=[];y.defineInitHook=function(a){ee.push(a)};var fe=y.helpers={};y.registerHelper=function(a,b,c){fe.hasOwnProperty(a)||(fe[a]=y[a]={_global:[]}),fe[a][b]=c},y.registerGlobalHelper=function(a,b,c,d){y.registerHelper(a,b,d),fe[a]._global.push({pred:c,val:d})};var ge=y.copyState=function(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c},he=y.startState=function(a,b,c){return a.startState?a.startState(b,c):!0};y.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state,a=c.mode}return c||{mode:a,state:b}};var ie=y.commands={selectAll:function(a){a.setSelection(nb(a.firstLine(),0),nb(a.lastLine()),rg)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),rg)},killLine:function(a){Vd(a,function(b){if(b.empty()){var c=Df(a.doc,b.head.line).text.length;return b.head.ch==c&&b.head.line<a.lastLine()?{from:b.head,to:nb(b.head.line+1,0)}:{from:b.head,to:nb(b.head.line,c)}}return{from:b.from(),to:b.to()}})},deleteLine:function(a){Vd(a,function(b){return{from:nb(b.from().line,0),to:xb(a.doc,nb(b.to().line+1,0))}})},delLineLeft:function(a){Vd(a,function(a){return{from:nb(a.from().line,0),to:a.from()}})},undo:function(a){a.undo()},redo:function(a){a.redo()},undoSelection:function(a){a.undoSelection()},redoSelection:function(a){a.redoSelection()},goDocStart:function(a){a.extendSelection(nb(a.firstLine(),0))},goDocEnd:function(a){a.extendSelection(nb(a.lastLine()))},goLineStart:function(a){a.extendSelectionsBy(function(b){return nh(a,b.head.line)},tg)},goLineStartSmart:function(a){a.extendSelectionsBy(function(b){var c=nh(a,b.head.line),d=a.getLineHandle(c.line),e=Kf(d);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.head.line==c.line&&b.head.ch<=f&&b.head.ch;return nb(c.line,g?0:f)}return c},tg)},goLineEnd:function(a){a.extendSelectionsBy(function(b){return oh(a,b.head.line)},tg)},goLineRight:function(a){a.extendSelectionsBy(function(b){var c=a.charCoords(b.head,"div").top+5;return a.coordsChar({left:a.display.lineDiv.offsetWidth+100,top:c},"div")},tg)},goLineLeft:function(a){a.extendSelectionsBy(function(b){var c=a.charCoords(b.head,"div").top+5;return a.coordsChar({left:0,top:c},"div")},tg)},goLineUp:function(a){a.moveV(-1,"line")},goLineDown:function(a){a.moveV(1,"line")},goPageUp:function(a){a.moveV(-1,"page")},goPageDown:function(a){a.moveV(1,"page")},goCharLeft:function(a){a.moveH(-1,"char")},goCharRight:function(a){a.moveH(1,"char")},goColumnLeft:function(a){a.moveH(-1,"column")},goColumnRight:function(a){a.moveH(1,"column")},goWordLeft:function(a){a.moveH(-1,"word")},goGroupRight:function(a){a.moveH(1,"group")},goGroupLeft:function(a){a.moveH(-1,"group")},goWordRight:function(a){a.moveH(1,"word")},delCharBefore:function(a){a.deleteH(-1,"char")},delCharAfter:function(a){a.deleteH(1,"char")},delWordBefore:function(a){a.deleteH(-1,"word")},delWordAfter:function(a){a.deleteH(1,"word")},delGroupBefore:function(a){a.deleteH(-1,"group")},delGroupAfter:function(a){a.deleteH(1,"group")},indentAuto:function(a){a.indentSelection("smart")},indentMore:function(a){a.indentSelection("add")},indentLess:function(a){a.indentSelection("subtract")},insertTab:function(a){a.replaceSelection("	")},insertSoftTab:function(a){for(var b=[],c=a.listSelections(),d=a.options.tabSize,e=0;e<c.length;e++){var f=c[e].from(),g=vg(a.getLine(f.line),f.ch,d);b.push(new Array(d-g%d+1).join(" "))}a.replaceSelections(b)},defaultTab:function(a){a.somethingSelected()?a.indentSelection("add"):a.execCommand("insertTab")},transposeChars:function(a){zc(a,function(){for(var b=a.listSelections(),c=0;c<b.length;c++){var d=b[c].head,e=Df(a.doc,d.line).text;d.ch>0&&d.ch<e.length-1&&a.replaceRange(e.charAt(d.ch)+e.charAt(d.ch-1),nb(d.line,d.ch-1),nb(d.line,d.ch+1))}})},newlineAndIndent:function(a){zc(a,function(){for(var b=a.listSelections().length,c=0;b>c;c++){var d=a.listSelections()[c];a.replaceRange("\n",d.anchor,d.head,"+input"),a.indentLine(d.from().line+1,null,!0),Rd(a)}})},toggleOverwrite:function(a){a.toggleOverwrite()}},je=y.keyMap={};je.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},je.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-Up":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Down":"goDocEnd","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},je.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineStart","Cmd-Right":"goLineEnd","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delLineLeft","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection",fallthrough:["basic","emacsy"]},je.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},je["default"]=r?je.macDefault:je.pcDefault;var le=y.lookupKey=function(a,b,c){function d(b){b=ke(b);var e=b[a];if(e===!1)return"stop";if(null!=e&&c(e))return!0;if(b.nofallthrough)return"stop";var f=b.fallthrough;if(null==f)return!1;if("[object Array]"!=Object.prototype.toString.call(f))return d(f);for(var g=0;g<f.length;++g){var h=d(f[g]);if(h)return h}return!1}for(var e=0;e<b.length;++e){var f=d(b[e]);if(f)return"stop"!=f}},me=y.isModifierKey=function(a){var b=hh[a.keyCode];return"Ctrl"==b||"Alt"==b||"Shift"==b||"Mod"==b},ne=y.keyName=function(a,b){if(k&&34==a.keyCode&&a["char"])return!1;var c=hh[a.keyCode];return null==c||a.altGraphKey?!1:(a.altKey&&(c="Alt-"+c),(u?a.metaKey:a.ctrlKey)&&(c="Ctrl-"+c),(u?a.ctrlKey:a.metaKey)&&(c="Cmd-"+c),!b&&a.shiftKey&&(c="Shift-"+c),c)};y.fromTextArea=function(a,b){function d(){a.value=i.getValue()}if(b||(b={}),b.value=a.value,!b.tabindex&&a.tabindex&&(b.tabindex=a.tabindex),!b.placeholder&&a.placeholder&&(b.placeholder=a.placeholder),null==b.autofocus){var c=Qg();b.autofocus=c==a||null!=a.getAttribute("autofocus")&&c==document.body}if(a.form&&(eg(a.form,"submit",d),!b.leaveSubmitMethodAlone)){var e=a.form,f=e.submit;try{var g=e.submit=function(){d(),e.submit=f,e.submit(),e.submit=g}}catch(h){}}a.style.display="none";var i=y(function(b){a.parentNode.insertBefore(b,a.nextSibling)},b);return i.save=d,i.getTextArea=function(){return a},i.toTextArea=function(){d(),a.parentNode.removeChild(i.getWrapperElement()),a.style.display="",a.form&&(fg(a.form,"submit",d),"function"==typeof a.form.submit&&(a.form.submit=f))},i};var oe=y.StringStream=function(a,b){this.pos=this.start=0,this.string=a,this.tabSize=b||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};oe.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.pos<this.string.length?this.string.charAt(this.pos++):void 0},eat:function(a){var b=this.string.charAt(this.pos);if("string"==typeof a)var c=b==a;else var c=b&&(a.test?a.test(b):a(b));return c?(++this.pos,b):void 0},eatWhile:function(a){for(var b=this.pos;this.eat(a););return this.pos>b},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);return b>-1?(this.pos=b,!0):void 0},backUp:function(a){this.pos-=a},column:function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=vg(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?vg(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return vg(this.string,null,this.tabSize)-(this.lineStart?vg(this.string,this.lineStart,this.tabSize):0)},match:function(a,b,c){if("string"!=typeof a){var f=this.string.slice(this.pos).match(a);return f&&f.index>0?null:(f&&b!==!1&&(this.pos+=f[0].length),f)}var d=function(a){return c?a.toLowerCase():a},e=this.string.substr(this.pos,a.length);return d(e)==d(a)?(b!==!1&&(this.pos+=a.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}}};var pe=y.TextMarker=function(a,b){this.lines=[],this.type=b,this.doc=a};og(pe),pe.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b=a&&!a.curOp;if(b&&xc(a),ng(this,"clear")){var c=this.find();c&&jg(this,"clear",c.from,c.to)}for(var d=null,e=null,f=0;f<this.lines.length;++f){var g=this.lines[f],h=ye(g.markedSpans,this);a&&!this.collapsed?Gc(a,Hf(g),"text"):a&&(null!=h.to&&(e=Hf(g)),null!=h.from&&(d=Hf(g))),g.markedSpans=ze(g.markedSpans,h),null==h.from&&this.collapsed&&!Ue(this.doc,g)&&a&&Gf(g,uc(a.display))}if(a&&this.collapsed&&!a.options.lineWrapping)for(var f=0;f<this.lines.length;++f){var i=Qe(this.lines[f]),j=K(i);j>a.display.maxLineLength&&(a.display.maxLine=i,a.display.maxLineLength=j,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&Fc(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&Lb(a.doc)),a&&jg(a,"markerCleared",a,this),b&&yc(a),this.parent&&this.parent.clear()}},pe.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var c,d,e=0;e<this.lines.length;++e){var f=this.lines[e],g=ye(f.markedSpans,this);if(null!=g.from&&(c=nb(b?f:Hf(f),g.from),-1==a))return c;if(null!=g.to&&(d=nb(b?f:Hf(f),g.to),1==a))return d}return c&&{from:c,to:d}},pe.prototype.changed=function(){var a=this.find(-1,!0),b=this,c=this.doc.cm;a&&c&&zc(c,function(){var d=a.line,e=Hf(a.line),f=bc(c,e);if(f&&(gc(f),c.curOp.selectionChanged=c.curOp.forceUpdate=!0),c.curOp.updateMaxLine=!0,!Ue(b.doc,d)&&null!=b.height){var g=b.height;b.height=null;var h=Ye(b)-g;h&&Gf(d,d.height+h)}})},pe.prototype.attachLine=function(a){if(!this.lines.length&&this.doc.cm){var b=this.doc.cm.curOp;b.maybeHiddenMarkers&&-1!=Bg(b.maybeHiddenMarkers,this)||(b.maybeUnhiddenMarkers||(b.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(a)},pe.prototype.detachLine=function(a){if(this.lines.splice(Bg(this.lines,a),1),!this.lines.length&&this.doc.cm){var b=this.doc.cm.curOp;(b.maybeHiddenMarkers||(b.maybeHiddenMarkers=[])).push(this)}};var qe=0,se=y.SharedTextMarker=function(a,b){this.markers=a,this.primary=b;for(var c=0;c<a.length;++c)a[c].parent=this};og(se),se.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var a=0;a<this.markers.length;++a)this.markers[a].clear();jg(this,"clear")}},se.prototype.find=function(a,b){return this.primary.find(a,b)};var We=y.LineWidget=function(a,b,c){if(c)for(var d in c)c.hasOwnProperty(d)&&(this[d]=c[d]);this.cm=a,this.node=b};og(We),We.prototype.clear=function(){var a=this.cm,b=this.line.widgets,c=this.line,d=Hf(c);if(null!=d&&b){for(var e=0;e<b.length;++e)b[e]==this&&b.splice(e--,1);b.length||(c.widgets=null);var f=Ye(this);zc(a,function(){Xe(a,c,-f),Gc(a,d,"widget"),Gf(c,Math.max(0,c.height-f))})}},We.prototype.changed=function(){var a=this.height,b=this.cm,c=this.line;this.height=null;var d=Ye(this)-a;d&&zc(b,function(){b.curOp.forceUpdate=!0,Xe(b,c,d),Gf(c,c.height+d)})};var $e=y.Line=function(a,b,c){this.text=a,Ie(this,b),this.height=c?c(this):1};og($e),$e.prototype.lineNo=function(){return Hf(this)};var jf={},kf={};vf.prototype={chunkSize:function(){return this.lines.length},removeInner:function(a,b){for(var c=a,d=a+b;d>c;++c){var e=this.lines[c];this.height-=e.height,af(e),jg(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var d=0;d<b.length;++d)b[d].parent=this},iterN:function(a,b,c){for(var d=a+b;d>a;++a)if(c(this.lines[a]))return!0}},wf.prototype={chunkSize:function(){return this.size},removeInner:function(a,b){this.size-=b;for(var c=0;c<this.children.length;++c){var d=this.children[c],e=d.chunkSize();if(e>a){var f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof vf))){var h=[];this.collapse(h),this.children=[new vf(h)],this.children[0].parent=this}},collapse:function(a){for(var b=0;b<this.children.length;++b)this.children[b].collapse(a)},insertInner:function(a,b,c){this.size+=b.length,this.height+=c;for(var d=0;d<this.children.length;++d){var e=this.children[d],f=e.chunkSize();if(f>=a){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(;e.lines.length>50;){var g=e.lines.splice(e.lines.length-25,25),h=new vf(g);e.height-=h.height,this.children.splice(d+1,0,h),h.parent=this}this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),c=new wf(b);if(a.parent){a.size-=c.size,a.height-=c.height;var e=Bg(a.parent.children,a);a.parent.children.splice(e+1,0,c)}else{var d=new wf(a.children);d.parent=a,a.children=[d,c],a=d}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;d<this.children.length;++d){var e=this.children[d],f=e.chunkSize();if(f>a){var g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else a-=f}}};var xf=0,yf=y.Doc=function(a,b,c){if(!(this instanceof yf))return new yf(a,b,c);null==c&&(c=0),wf.call(this,[new vf([new $e("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=c;var d=nb(c,0);this.sel=vb(d),this.history=new Lf(null),this.id=++xf,this.modeOption=b,"string"==typeof a&&(a=eh(a)),uf(this,{from:d,to:d,text:a}),Ib(this,vb(d),rg)};yf.prototype=Dg(wf.prototype,{constructor:yf,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var c=0,d=0;d<b.length;++d)c+=b[d].height;this.insertInner(a-this.first,b,c)},remove:function(a,b){this.removeInner(a-this.first,b)},getValue:function(a){var b=Ff(this,this.first,this.first+this.size);return a===!1?b:b.join(a||"\n")},setValue:Cc(function(a){var b=nb(this.first,0),c=this.first+this.size-1;Fd(this,{from:b,to:nb(c,Df(this,c).text.length),text:eh(a),origin:"setValue"},!0),Ib(this,vb(b))}),replaceRange:function(a,b,c,d){b=xb(this,b),c=c?xb(this,c):b,Ld(this,a,b,c,d)},getRange:function(a,b,c){var d=Ef(this,xb(this,a),xb(this,b));return c===!1?d:d.join(c||"\n")},getLine:function(a){var b=this.getLineHandle(a);return b&&b.text},getLineHandle:function(a){return zb(this,a)?Df(this,a):void 0},getLineNumber:function(a){return Hf(a)},getLineHandleVisualStart:function(a){return"number"==typeof a&&(a=Df(this,a)),Qe(a)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(a){return xb(this,a)},getCursor:function(a){var c,b=this.sel.primary();return c=null==a||"head"==a?b.head:"anchor"==a?b.anchor:"end"==a||"to"==a||a===!1?b.to():b.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Cc(function(a,b,c){Fb(this,xb(this,"number"==typeof a?nb(a,b||0):a),null,c)}),setSelection:Cc(function(a,b,c){Fb(this,xb(this,a),xb(this,b||a),c)}),extendSelection:Cc(function(a,b,c){Cb(this,xb(this,a),b&&xb(this,b),c)}),extendSelections:Cc(function(a,b){Db(this,Ab(this,a,b))}),extendSelectionsBy:Cc(function(a,b){Db(this,Cg(this.sel.ranges,a),b)}),setSelections:Cc(function(a,b,c){if(a.length){for(var d=0,e=[];d<a.length;d++)e[d]=new tb(xb(this,a[d].anchor),xb(this,a[d].head));null==b&&(b=Math.min(a.length-1,this.sel.primIndex)),Ib(this,ub(e,b),c)}}),addSelection:Cc(function(a,b,c){var d=this.sel.ranges.slice(0);d.push(new tb(xb(this,a),xb(this,b||a))),Ib(this,ub(d,d.length-1),c)}),getSelection:function(a){for(var c,b=this.sel.ranges,d=0;d<b.length;d++){var e=Ef(this,b[d].from(),b[d].to());c=c?c.concat(e):e}return a===!1?c:c.join(a||"\n")},getSelections:function(a){for(var b=[],c=this.sel.ranges,d=0;d<c.length;d++){var e=Ef(this,c[d].from(),c[d].to());a!==!1&&(e=e.join(a||"\n")),b[d]=e}return b},replaceSelection:function(a,b,c){for(var d=[],e=0;e<this.sel.ranges.length;e++)d[e]=a;this.replaceSelections(d,b,c||"+input")},replaceSelections:Cc(function(a,b,c){for(var d=[],e=this.sel,f=0;f<e.ranges.length;f++){var g=e.ranges[f];d[f]={from:g.from(),to:g.to(),text:eh(a[f]),origin:c}}for(var h=b&&"end"!=b&&Dd(this,d,b),f=d.length-1;f>=0;f--)Fd(this,d[f]);h?Hb(this,h):this.cm&&Rd(this.cm)}),undo:Cc(function(){Hd(this,"undo")}),redo:Cc(function(){Hd(this,"redo")}),undoSelection:Cc(function(){Hd(this,"undo",!0)}),redoSelection:Cc(function(){Hd(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d<a.done.length;d++)a.done[d].ranges||++b;for(var d=0;d<a.undone.length;d++)a.undone[d].ranges||++c;return{undo:b,redo:c}},clearHistory:function(){this.history=new Lf(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(a){return a&&(this.history.lastOp=this.history.lastOrigin=null),this.history.generation},isClean:function(a){return this.history.generation==(a||this.cleanGeneration)},getHistory:function(){return{done:Wf(this.history.done),undone:Wf(this.history.undone)}},setHistory:function(a){var b=this.history=new Lf(this.history.maxGeneration);b.done=Wf(a.done.slice(0),null,!0),b.undone=Wf(a.undone.slice(0),null,!0)},markText:function(a,b,c){return re(this,xb(this,a),xb(this,b),c,"range")},setBookmark:function(a,b){var c={replacedWith:b&&(null==b.nodeType?b.widget:b),insertLeft:b&&b.insertLeft,clearWhenEmpty:!1,shared:b&&b.shared};return a=xb(this,a),re(this,a,a,c,"bookmark")},findMarksAt:function(a){a=xb(this,a);var b=[],c=Df(this,a.line).markedSpans;if(c)for(var d=0;d<c.length;++d){var e=c[d];(null==e.from||e.from<=a.ch)&&(null==e.to||e.to>=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=xb(this,a),b=xb(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;h<g.length;h++){var i=g[h];e==a.line&&a.ch>i.to||null==i.from&&e!=a.line||e==b.line&&i.from>b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;d<c.length;++d)null!=c[d].from&&a.push(c[d].marker)}),a},posFromIndex:function(a){var b,c=this.first;return this.iter(function(d){var e=d.text.length+1;return e>a?(b=a,!0):(a-=e,++c,void 0)}),xb(this,nb(c,b))},indexFromPos:function(a){a=xb(this,a);var b=a.ch;return a.line<this.first||a.ch<0?0:(this.iter(this.first,a.line,function(a){b+=a.text.length+1}),b)},copy:function(a){var b=new yf(Ff(this,this.first,this.first+this.size),this.modeOption,this.first);return b.scrollTop=this.scrollTop,b.scrollLeft=this.scrollLeft,b.sel=this.sel,b.extend=!1,a&&(b.history.undoDepth=this.history.undoDepth,b.setHistory(this.getHistory())),b},linkedDoc:function(a){a||(a={});var b=this.first,c=this.first+this.size;null!=a.from&&a.from>b&&(b=a.from),null!=a.to&&a.to<c&&(c=a.to);var d=new yf(Ff(this,b,c),a.mode||this.modeOption,b);return a.sharedHist&&(d.history=this.history),(this.linked||(this.linked=[])).push({doc:d,sharedHist:a.sharedHist}),d.linked=[{doc:this,isParent:!0,sharedHist:a.sharedHist}],ve(d,ue(this)),d},unlinkDoc:function(a){if(a instanceof y&&(a=a.doc),this.linked)for(var b=0;b<this.linked.length;++b){var c=this.linked[b];if(c.doc==a){this.linked.splice(b,1),a.unlinkDoc(this),we(ue(this));break}}if(a.history==this.history){var d=[a.id];Bf(a,function(a){d.push(a.id)},!0),a.history=new Lf(null),a.history.done=Wf(this.history.done,d),a.history.undone=Wf(this.history.undone,d)}},iterLinkedDocs:function(a){Bf(this,a)},getMode:function(){return this.mode},getEditor:function(){return this.cm}}),yf.prototype.eachLine=yf.prototype.iter;var zf="iter insert remove copy getEditor".split(" ");for(var Af in yf.prototype)yf.prototype.hasOwnProperty(Af)&&Bg(zf,Af)<0&&(y.prototype[Af]=function(a){return function(){return a.apply(this.doc,arguments)}}(yf.prototype[Af]));og(yf);var hg,$f=y.e_preventDefault=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},_f=y.e_stopPropagation=function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},bg=y.e_stop=function(a){$f(a),_f(a)},eg=y.on=function(a,b,c){if(a.addEventListener)a.addEventListener(b,c,!1);else if(a.attachEvent)a.attachEvent("on"+b,c);else{var d=a._handlers||(a._handlers={}),e=d[b]||(d[b]=[]);e.push(c)}},fg=y.off=function(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,!1);else if(a.detachEvent)a.detachEvent("on"+b,c);else{var d=a._handlers&&a._handlers[b];if(!d)return;for(var e=0;e<d.length;++e)if(d[e]==c){d.splice(e,1);break}}},gg=y.signal=function(a,b){var c=a._handlers&&a._handlers[b];if(c)for(var d=Array.prototype.slice.call(arguments,2),e=0;e<c.length;++e)c[e].apply(null,d)},ig=0,pg=30,qg=y.Pass={toString:function(){return"CodeMirror.Pass"}},rg={scroll:!1},sg={origin:"*mouse"},tg={origin:"+move"};ug.prototype.set=function(a,b){clearTimeout(this.id),this.id=setTimeout(b,a)};var vg=y.countColumn=function(a,b,c,d,e){null==b&&(b=a.search(/[^\s\u00a0]/),-1==b&&(b=a.length));for(var f=d||0,g=e||0;;){var h=a.indexOf("	",f);if(0>h||h>=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}},xg=[""],Ag=function(a){a.select()};p?Ag=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:g&&(Ag=function(a){try{a.select()}catch(b){}}),[].indexOf&&(Bg=function(a,b){return a.indexOf(b)}),[].map&&(Cg=function(a,b){return a.map(b)});var Mg,Gg=/[\u00df\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Hg=y.isWordChar=function(a){return/\w/.test(a)||a>"\x80"&&(a.toUpperCase()!=a.toLowerCase()||Gg.test(a))},Jg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;Mg=document.createRange?function(a,b,c){var d=document.createRange();return d.setEnd(a,c),d.setStart(a,b),d}:function(a,b,c){var d=document.body.createTextRange();return d.moveToElementText(a.parentNode),d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d},b&&(Qg=function(){try{return document.activeElement}catch(a){return document.body}});var $g,ah,ch,Wg=!1,Zg=function(){if(d)return!1;var a=Lg("div");return"draggable"in a||"dragDrop"in a}(),eh=y.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;d>=b;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)},fh=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return b&&b.parentElement()==a?0!=b.compareEndPoints("StartToEnd",b):!1},gh=function(){var a=Lg("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),"function"==typeof a.oncopy)}(),hh={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};y.keyNames=hh,function(){for(var a=0;10>a;a++)hh[a+48]=hh[a+96]=String(a);for(var a=65;90>=a;a++)hh[a]=String.fromCharCode(a);for(var a=1;12>=a;a++)hh[a+111]=hh[a+63235]="F"+a}();var qh,vh=function(){function c(c){return 247>=c?a.charAt(c):c>=1424&&1524>=c?"R":c>=1536&&1773>=c?b.charAt(c-1536):c>=1774&&2220>=c?"r":c>=8192&&8203>=c?"w":8204==c?"b":"L"}function j(a,b,c){this.level=a,this.from=b,this.to=c}var a="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",b="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",d=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,e=/[stwN]/,f=/[LRr]/,g=/[Lb1n]/,h=/[1n]/,i="L";return function(a){if(!d.test(a))return!1;for(var m,b=a.length,k=[],l=0;b>l;++l)k.push(m=c(a.charCodeAt(l)));for(var l=0,n=i;b>l;++l){var m=k[l];"m"==m?k[l]=n:n=m}for(var l=0,o=i;b>l;++l){var m=k[l];"1"==m&&"r"==o?k[l]="n":f.test(m)&&(o=m,"r"==m&&(k[l]="R"))}for(var l=1,n=k[0];b-1>l;++l){var m=k[l];"+"==m&&"1"==n&&"1"==k[l+1]?k[l]="1":","!=m||n!=k[l+1]||"1"!=n&&"n"!=n||(k[l]=n),n=m}for(var l=0;b>l;++l){var m=k[l];if(","==m)k[l]="N";else if("%"==m){for(var p=l+1;b>p&&"%"==k[p];++p);for(var q=l&&"!"==k[l-1]||b>p&&"1"==k[p]?"1":"N",r=l;p>r;++r)k[r]=q;l=p-1}}for(var l=0,o=i;b>l;++l){var m=k[l];"L"==o&&"1"==m?k[l]="L":f.test(m)&&(o=m)}for(var l=0;b>l;++l)if(e.test(k[l])){for(var p=l+1;b>p&&e.test(k[p]);++p);for(var s="L"==(l?k[l-1]:i),t="L"==(b>p?k[p]:i),q=s||t?"L":"R",r=l;p>r;++r)k[r]=q;l=p-1}for(var v,u=[],l=0;b>l;)if(g.test(k[l])){var w=l;for(++l;b>l&&g.test(k[l]);++l);u.push(new j(0,w,l))}else{var x=l,y=u.length;for(++l;b>l&&"L"!=k[l];++l);for(var r=x;l>r;)if(h.test(k[r])){r>x&&u.splice(y,0,new j(1,x,r));var z=r;for(++r;l>r&&h.test(k[r]);++r);u.splice(y,0,new j(2,z,r)),x=r
+}else++r;l>x&&u.splice(y,0,new j(1,x,l))}return 1==u[0].level&&(v=a.match(/^\s+/))&&(u[0].from=v[0].length,u.unshift(new j(0,0,v[0].length))),1==zg(u).level&&(v=a.match(/\s+$/))&&(zg(u).to-=v[0].length,u.push(new j(0,b-v[0].length,b))),u[0].level!=zg(u).level&&u.push(new j(u[0].level,b,b)),u}}();return y.version="4.1.1",y}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";a.defineMode("javascript",function(b,c){function l(a){for(var c,b=!1,d=!1;null!=(c=a.next());){if(!b){if("/"==c&&!d)return;"["==c?d=!0:d&&"]"==c&&(d=!1)}b=!b&&"\\"==c}}function o(a,b,c){return m=a,n=c,b}function p(a,b){var c=a.next();if('"'==c||"'"==c)return b.tokenize=q(c),b.tokenize(a,b);if("."==c&&a.match(/^\d+(?:[eE][+\-]?\d+)?/))return o("number","number");if("."==c&&a.match(".."))return o("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(c))return o(c);if("="==c&&a.eat(">"))return o("=>","operator");if("0"==c&&a.eat(/x/i))return a.eatWhile(/[\da-f]/i),o("number","number");if(/\d/.test(c))return a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),o("number","number");if("/"==c)return a.eat("*")?(b.tokenize=r,r(a,b)):a.eat("/")?(a.skipToEnd(),o("comment","comment")):"operator"==b.lastType||"keyword c"==b.lastType||"sof"==b.lastType||/^[\[{}\(,;:]$/.test(b.lastType)?(l(a),a.eatWhile(/[gimy]/),o("regexp","string-2")):(a.eatWhile(j),o("operator","operator",a.current()));if("`"==c)return b.tokenize=s,s(a,b);if("#"==c)return a.skipToEnd(),o("error","error");if(j.test(c))return a.eatWhile(j),o("operator","operator",a.current());a.eatWhile(/[\w\$_]/);var d=a.current(),e=i.propertyIsEnumerable(d)&&i[d];return e&&"."!=b.lastType?o(e.type,e.style,d):o("variable","variable",d)}function q(a){return function(b,c){var e,d=!1;if(f&&"@"==b.peek()&&b.match(k))return c.tokenize=p,o("jsonld-keyword","meta");for(;null!=(e=b.next())&&(e!=a||d);)d=!d&&"\\"==e;return d||(c.tokenize=p),o("string","string")}}function r(a,b){for(var d,c=!1;d=a.next();){if("/"==d&&c){b.tokenize=p;break}c="*"==d}return o("comment","comment")}function s(a,b){for(var d,c=!1;null!=(d=a.next());){if(!c&&("`"==d||"$"==d&&a.eat("{"))){b.tokenize=p;break}c=!c&&"\\"==d}return o("quasi","string-2",a.current())}function u(a,b){b.fatArrowAt&&(b.fatArrowAt=null);var c=a.string.indexOf("=>",a.start);if(!(0>c)){for(var d=0,e=!1,f=c-1;f>=0;--f){var g=a.string.charAt(f),h=t.indexOf(g);if(h>=0&&3>h){if(!d){++f;break}if(0==--d)break}else if(h>=3&&6>h)++d;else if(/[$\w]/.test(g))e=!0;else if(e&&!d){++f;break}}e&&!d&&(b.fatArrowAt=f)}}function w(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,null!=d&&(this.align=d)}function x(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0;for(var d=a.context;d;d=d.prev)for(var c=d.vars;c;c=c.next)if(c.name==b)return!0}function y(a,b,c,d,e){var f=a.cc;for(z.state=a,z.stream=e,z.marked=null,z.cc=f,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);;){var h=f.length?f.pop():g?K:J;if(h(c,d)){for(;f.length&&f[f.length-1].lex;)f.pop()();return z.marked?z.marked:"variable"==c&&x(a,d)?"variable-2":b}}}function A(){for(var a=arguments.length-1;a>=0;a--)z.cc.push(arguments[a])}function B(){return A.apply(null,arguments),!0}function C(a){function b(b){for(var c=b;c;c=c.next)if(c.name==a)return!0;return!1}var d=z.state;if(d.context){if(z.marked="def",b(d.localVars))return;d.localVars={name:a,next:d.localVars}}else{if(b(d.globalVars))return;c.globalVars&&(d.globalVars={name:a,next:d.globalVars})}}function E(){z.state.context={prev:z.state.context,vars:z.state.localVars},z.state.localVars=D}function F(){z.state.localVars=z.state.context.vars,z.state.context=z.state.context.prev}function G(a,b){var c=function(){var c=z.state,d=c.indented;"stat"==c.lexical.type&&(d=c.lexical.indented),c.lexical=new w(d,z.stream.column(),a,null,c.lexical,b)};return c.lex=!0,c}function H(){var a=z.state;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function I(a){function b(c){return c==a?B():";"==a?A():B(b)}return b}function J(a,b){return"var"==a?B(G("vardef",b.length),db,I(";"),H):"keyword a"==a?B(G("form"),K,J,H):"keyword b"==a?B(G("form"),J,H):"{"==a?B(G("}"),ab,H):";"==a?B():"if"==a?("else"==z.state.lexical.info&&z.state.cc[z.state.cc.length-1]==H&&z.state.cc.pop()(),B(G("form"),K,J,H,ib)):"function"==a?B(ob):"for"==a?B(G("form"),jb,J,H):"variable"==a?B(G("stat"),V):"switch"==a?B(G("form"),K,G("}","switch"),I("{"),ab,H,H):"case"==a?B(K,I(":")):"default"==a?B(I(":")):"catch"==a?B(G("form"),E,I("("),pb,I(")"),J,H,F):"module"==a?B(G("form"),E,tb,F,H):"class"==a?B(G("form"),qb,sb,H):"export"==a?B(G("form"),ub,H):"import"==a?B(G("form"),vb,H):A(G("stat"),K,I(";"),H)}function K(a){return M(a,!1)}function L(a){return M(a,!0)}function M(a,b){if(z.state.fatArrowAt==z.stream.start){var c=b?U:T;if("("==a)return B(E,G(")"),$(eb,")"),H,I("=>"),c,F);if("variable"==a)return A(E,eb,I("=>"),c,F)}var d=b?Q:P;return v.hasOwnProperty(a)?B(d):"function"==a?B(ob,d):"keyword c"==a?B(b?O:N):"("==a?B(G(")"),N,Ab,I(")"),H,d):"operator"==a||"spread"==a?B(b?L:K):"["==a?B(G("]"),yb,H,d):"{"==a?_(X,"}",null,d):"quasi"==a?A(R,d):B()}function N(a){return a.match(/[;\}\)\],]/)?A():A(K)}function O(a){return a.match(/[;\}\)\],]/)?A():A(L)}function P(a,b){return","==a?B(K):Q(a,b,!1)}function Q(a,b,c){var d=0==c?P:Q,e=0==c?K:L;return"=>"==b?B(E,c?U:T,F):"operator"==a?/\+\+|--/.test(b)?B(d):"?"==b?B(K,I(":"),e):B(e):"quasi"==a?A(R,d):";"!=a?"("==a?_(L,")","call",d):"."==a?B(W,d):"["==a?B(G("]"),N,I("]"),H,d):void 0:void 0}function R(a,b){return"quasi"!=a?A():"${"!=b.slice(b.length-2)?B(R):B(K,S)}function S(a){return"}"==a?(z.marked="string-2",z.state.tokenize=s,B(R)):void 0}function T(a){return u(z.stream,z.state),"{"==a?A(J):A(K)}function U(a){return u(z.stream,z.state),"{"==a?A(J):A(L)}function V(a){return":"==a?B(H,J):A(P,I(";"),H)}function W(a){return"variable"==a?(z.marked="property",B()):void 0}function X(a,b){if("variable"==a){if(z.marked="property","get"==b||"set"==b)return B(Y)}else if("number"==a||"string"==a)z.marked=f?"property":a+" property";else if("["==a)return B(K,I("]"),Z);return v.hasOwnProperty(a)?B(Z):void 0}function Y(a){return"variable"!=a?A(Z):(z.marked="property",B(ob))}function Z(a){return":"==a?B(L):"("==a?A(ob):void 0}function $(a,b){function c(d){if(","==d){var e=z.state.lexical;return"call"==e.info&&(e.pos=(e.pos||0)+1),B(a,c)}return d==b?B():B(I(b))}return function(d){return d==b?B():A(a,c)}}function _(a,b,c){for(var d=3;d<arguments.length;d++)z.cc.push(arguments[d]);return B(G(b,c),$(a,b),H)}function ab(a){return"}"==a?B():A(J,ab)}function bb(a){return h&&":"==a?B(cb):void 0}function cb(a){return"variable"==a?(z.marked="variable-3",B()):void 0}function db(){return A(eb,bb,gb,hb)}function eb(a,b){return"variable"==a?(C(b),B()):"["==a?_(eb,"]"):"{"==a?_(fb,"}"):void 0}function fb(a,b){return"variable"!=a||z.stream.match(/^\s*:/,!1)?("variable"==a&&(z.marked="property"),B(I(":"),eb,gb)):(C(b),B(gb))}function gb(a,b){return"="==b?B(L):void 0}function hb(a){return","==a?B(db):void 0}function ib(a,b){return"keyword b"==a&&"else"==b?B(G("form","else"),J,H):void 0}function jb(a){return"("==a?B(G(")"),kb,I(")"),H):void 0}function kb(a){return"var"==a?B(db,I(";"),mb):";"==a?B(mb):"variable"==a?B(lb):A(K,I(";"),mb)}function lb(a,b){return"in"==b||"of"==b?(z.marked="keyword",B(K)):B(P,mb)}function mb(a,b){return";"==a?B(nb):"in"==b||"of"==b?(z.marked="keyword",B(K)):A(K,I(";"),nb)}function nb(a){")"!=a&&B(K)}function ob(a,b){return"*"==b?(z.marked="keyword",B(ob)):"variable"==a?(C(b),B(ob)):"("==a?B(E,G(")"),$(pb,")"),H,J,F):void 0}function pb(a){return"spread"==a?B(pb):A(eb,bb)}function qb(a,b){return"variable"==a?(C(b),B(rb)):void 0}function rb(a,b){return"extends"==b?B(K):void 0}function sb(a){return"{"==a?_(X,"}"):void 0}function tb(a,b){return"string"==a?B(J):"variable"==a?(C(b),B(xb)):void 0}function ub(a,b){return"*"==b?(z.marked="keyword",B(xb,I(";"))):"default"==b?(z.marked="keyword",B(K,I(";"))):A(J)}function vb(a){return"string"==a?B():A(wb,xb)}function wb(a,b){return"{"==a?_(wb,"}"):("variable"==a&&C(b),B())}function xb(a,b){return"from"==b?(z.marked="keyword",B(K)):void 0}function yb(a){return"]"==a?B():A(L,zb)}function zb(a){return"for"==a?A(Ab,I("]")):","==a?B($(L,"]")):A($(L,"]"))}function Ab(a){return"for"==a?B(jb,Ab):"if"==a?B(K,Ab):void 0}var m,n,d=b.indentUnit,e=c.statementIndent,f=c.jsonld,g=c.json||f,h=c.typescript,i=function(){function a(a){return{type:a,style:"keyword"}}var b=a("keyword a"),c=a("keyword b"),d=a("keyword c"),e=a("operator"),f={type:"atom",style:"atom"},g={"if":a("if"),"while":b,"with":b,"else":c,"do":c,"try":c,"finally":c,"return":d,"break":d,"continue":d,"new":d,"delete":d,"throw":d,"debugger":d,"var":a("var"),"const":a("var"),let:a("var"),"function":a("function"),"catch":a("catch"),"for":a("for"),"switch":a("switch"),"case":a("case"),"default":a("default"),"in":e,"typeof":e,"instanceof":e,"true":f,"false":f,"null":f,undefined:f,NaN:f,Infinity:f,"this":a("this"),module:a("module"),"class":a("class"),"super":a("atom"),yield:d,"export":a("export"),"import":a("import"),"extends":d};if(h){var i={type:"variable",style:"variable-3"},j={"interface":a("interface"),"extends":a("extends"),constructor:a("constructor"),"public":a("public"),"private":a("private"),"protected":a("protected"),"static":a("static"),string:i,number:i,bool:i,any:i};for(var k in j)g[k]=j[k]}return g}(),j=/[+\-*&%=<>!?|~^]/,k=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,t="([{}])",v={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0},z={state:null,column:null,marked:null,cc:null},D={name:"this",next:{name:"arguments"}};return H.lex=!0,{startState:function(a){var b={tokenize:p,lastType:"sof",cc:[],lexical:new w((a||0)-d,0,"block",!1),localVars:c.localVars,context:c.localVars&&{vars:c.localVars},indented:0};return c.globalVars&&"object"==typeof c.globalVars&&(b.globalVars=c.globalVars),b},token:function(a,b){if(a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation(),u(a,b)),b.tokenize!=r&&a.eatSpace())return null;var c=b.tokenize(a,b);return"comment"==m?c:(b.lastType="operator"!=m||"++"!=n&&"--"!=n?m:"incdec",y(b,c,m,n,a))},indent:function(b,f){if(b.tokenize==r)return a.Pass;if(b.tokenize!=p)return 0;var g=f&&f.charAt(0),h=b.lexical;if(!/^\s*else\b/.test(f))for(var i=b.cc.length-1;i>=0;--i){var j=b.cc[i];if(j==H)h=h.prev;else if(j!=ib)break}"stat"==h.type&&"}"==g&&(h=h.prev),e&&")"==h.type&&"stat"==h.prev.type&&(h=h.prev);var k=h.type,l=g==k;return"vardef"==k?h.indented+("operator"==b.lastType||","==b.lastType?h.info+1:0):"form"==k&&"{"==g?h.indented:"form"==k?h.indented+d:"stat"==k?h.indented+("operator"==b.lastType||","==b.lastType?e||d:0):"switch"!=h.info||l||0==c.doubleIndentSwitch?h.align?h.column+(l?0:1):h.indented+(l?0:d):h.indented+(/^(?:case|default)\b/.test(f)?d:2*d)},electricChars:":{}",blockCommentStart:g?null:"/*",blockCommentEnd:g?null:"*/",lineComment:g?null:"//",fold:"brace",helperType:g?"json":"javascript",jsonldMode:f,jsonMode:g}}),a.defineMIME("text/javascript","javascript"),a.defineMIME("text/ecmascript","javascript"),a.defineMIME("application/javascript","javascript"),a.defineMIME("application/ecmascript","javascript"),a.defineMIME("application/json",{name:"javascript",json:!0}),a.defineMIME("application/x-json",{name:"javascript",json:!0}),a.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),a.defineMIME("text/typescript",{name:"javascript",typescript:!0}),a.defineMIME("application/typescript",{name:"javascript",typescript:!0})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function f(a,b){var c=a.getRange(e(b.line,b.ch-1),e(b.line,b.ch+1));return 2==c.length?c:null}function g(b){for(var c={name:"autoCloseBrackets",Backspace:function(c){if(c.getOption("disableInput"))return a.Pass;for(var d=c.listSelections(),g=0;g<d.length;g++){if(!d[g].empty())return a.Pass;var h=f(c,d[g].head);if(!h||0!=b.indexOf(h)%2)return a.Pass}for(var g=d.length-1;g>=0;g--){var i=d[g].head;c.replaceRange("",e(i.line,i.ch-1),e(i.line,i.ch+1))}}},g="",h=0;h<b.length;h+=2)!function(b,f){b!=f&&(g+=f),c["'"+b+"'"]=function(c){if(c.getOption("disableInput"))return a.Pass;for(var i,j,h=c.listSelections(),k=0;k<h.length;k++){var n,l=h[k],m=l.head;if("'"==b&&"comment"==c.getTokenTypeAt(m))return a.Pass;var j=c.getRange(m,e(m.line,m.ch+1));if(l.empty())if(b==f&&j==f)n=c.getRange(m,e(m.line,m.ch+3))==b+b+b?"skipThree":"skip";else if(b==f&&m.ch>1&&c.getRange(e(m.line,m.ch-2),m)==b+b&&(m.ch<=2||c.getRange(e(m.line,m.ch-3),e(m.line,m.ch-2))!=b))n="addFour";else{if(b==f&&a.isWordChar(j))return a.Pass;if(!(c.getLine(m.line).length==m.ch||g.indexOf(j)>=0||d.test(j)))return a.Pass;n="both"}else n="surround";if(i){if(i!=n)return a.Pass}else i=n}c.operation(function(){if("skip"==i)c.execCommand("goCharRight");else if("skipThree"==i)for(var a=0;3>a;a++)c.execCommand("goCharRight");else if("surround"==i){for(var d=c.getSelections(),a=0;a<d.length;a++)d[a]=b+d[a]+f;c.replaceSelections(d,"around")}else"both"==i?(c.replaceSelection(b+f,null),c.execCommand("goCharLeft")):"addFour"==i&&(c.replaceSelection(b+b+b+b,"before"),c.execCommand("goCharRight"))})},b!=f&&(c["'"+f+"'"]=function(b){for(var c=b.listSelections(),d=0;d<c.length;d++){var g=c[d];if(!g.empty()||b.getRange(g.head,e(g.head.line,g.head.ch+1))!=f)return a.Pass}b.execCommand("goCharRight")})}(b.charAt(h),b.charAt(h+1));return c}function h(b){return function(c){if(c.getOption("disableInput"))return a.Pass;for(var d=c.listSelections(),e=0;e<d.length;e++){if(!d[e].empty())return a.Pass;var g=f(c,d[e].head);if(!g||0!=b.indexOf(g)%2)return a.Pass}c.operation(function(){c.replaceSelection("\n\n",null),c.execCommand("goCharLeft"),d=c.listSelections();for(var a=0;a<d.length;a++){var b=d[a].head.line;c.indentLine(b,null,!0),c.indentLine(b+1,null,!0)}})}}var b="()[]{}''\"\"",c="[]{}",d=/\s/,e=a.Pos;a.defineOption("autoCloseBrackets",!1,function(d,e,f){if(f!=a.Init&&f&&d.removeKeyMap("autoCloseBrackets"),e){var i=b,j=c;"string"==typeof e?i=e:"object"==typeof e&&(null!=e.pairs&&(i=e.pairs),null!=e.explode&&(j=e.explode));var k=g(i);j&&(k.Enter=h(j)),d.addKeyMap(k)}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function d(b){if(b.getOption("disableInput"))return a.Pass;for(var d,c=b.listSelections(),f=[],g=0;g<c.length;g++){var h=c[g].head,i=b.getTokenAt(h);if("comment"!=i.type)return a.Pass;var j=a.innerMode(b.getMode(),i.state).mode;if(d){if(d!=j)return a.Pass}else d=j;var k=null;if(d.blockCommentStart&&d.blockCommentContinue){var n,l=i.string.indexOf(d.blockCommentEnd),m=b.getRange(a.Pos(h.line,0),a.Pos(h.line,i.end));if(-1!=l&&l==i.string.length-d.blockCommentEnd.length&&h.ch>=l);else if(0==i.string.indexOf(d.blockCommentStart)){if(k=m.slice(0,i.start),!/^\s*$/.test(k)){k="";for(var o=0;o<i.start;++o)k+=" "}}else-1!=(n=m.indexOf(d.blockCommentContinue))&&n+d.blockCommentContinue.length>i.start&&/^\s*$/.test(m.slice(0,n))&&(k=m.slice(0,n));null!=k&&(k+=d.blockCommentContinue)}if(null==k&&d.lineComment&&e(b)){var p=b.getLine(h.line),n=p.indexOf(d.lineComment);n>-1&&(k=p.slice(0,n),/\S/.test(k)?k=null:k+=d.lineComment+p.slice(n+d.lineComment.length).match(/^\s*/)[0])}if(null==k)return a.Pass;f[g]="\n"+k}b.operation(function(){for(var a=c.length-1;a>=0;a--)b.replaceRange(f[a],c[a].from(),c[a].to(),"+insert")})}function e(a){var b=a.getOption("continueComments");return b&&"object"==typeof b?b.continueLineComment!==!1:!0}for(var b=["clike","css","javascript"],c=0;c<b.length;++c)a.extendMode(b[c],{blockCommentContinue:" * "});a.defineOption("continueComments",null,function(b,c,e){if(e&&e!=a.Init&&b.removeKeyMap("continueComment"),c){var f="Enter";"string"==typeof c?f=c:"object"==typeof c&&c.key&&(f=c.key);var g={name:"continueComment"};g[f]=d,b.addKeyMap(g)}})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function c(a,b){for(var c=0,d=a.length;d>c;++c)b(a[c])}function d(a,b){if(!Array.prototype.indexOf){for(var c=a.length;c--;)if(a[c]===b)return!0;return!1}return-1!=a.indexOf(b)}function e(c,d,e,f){var g=c.getCursor(),h=e(c,g),i=h;if(!/\b(?:string|comment)\b/.test(h.type)){for(h.state=a.innerMode(c.getMode(),h.state).state,/^[\w$_]*$/.test(h.string)||(h=i={start:g.ch,end:g.ch,string:"",state:h.state,type:"."==h.string?"property":null});"property"==i.type;){if(i=e(c,b(g.line,i.start)),"."!=i.string)return;if(i=e(c,b(g.line,i.start)),!j)var j=[];j.push(i)}return{list:n(h,j,d,f),from:b(g.line,h.start),to:b(g.line,h.end)}}}function f(a,b){return e(a,l,function(a,b){return a.getTokenAt(b)},b)}function g(a,b){var c=a.getTokenAt(b);return b.ch==c.start+1&&"."==c.string.charAt(0)?(c.end=c.start,c.string=".",c.type="property"):/^\.[\w$_]*$/.test(c.string)&&(c.type="property",c.start++,c.string=c.string.replace(/\./,"")),c}function h(a,b){return e(a,m,g,b)}function n(a,b,e,f){function l(a){0!=a.lastIndexOf(h,0)||d(g,a)||g.push(a)}function m(a){"string"==typeof a?c(i,l):a instanceof Array?c(j,l):a instanceof Function&&c(k,l);for(var b in a)l(b)}var g=[],h=a.string;if(b&&b.length){var o,n=b.pop();for(n.type&&0===n.type.indexOf("variable")?(f&&f.additionalContext&&(o=f.additionalContext[n.string]),o=o||window[n.string]):"string"==n.type?o="":"atom"==n.type?o=1:"function"==n.type&&(null==window.jQuery||"$"!=n.string&&"jQuery"!=n.string||"function"!=typeof window.jQuery?null!=window._&&"_"==n.string&&"function"==typeof window._&&(o=window._()):o=window.jQuery());null!=o&&b.length;)o=o[b.pop().string];null!=o&&m(o)}else{for(var p=a.state.localVars;p;p=p.next)l(p.name);for(var p=a.state.globalVars;p;p=p.next)l(p.name);m(window),c(e,l)}return g}var b=a.Pos;a.registerHelper("hint","javascript",f),a.registerHelper("hint","coffeescript",h);var i="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),j="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),k="prototype apply call bind".split(" "),l="break case catch continue debugger default delete do else false finally for function if in instanceof new null return switch throw true try typeof var void while with".split(" "),m="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ")}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){function e(a,b,e,g){var h=a.getLineHandle(b.line),i=b.ch-1,j=i>=0&&d[h.text.charAt(i)]||d[h.text.charAt(++i)];if(!j)return null;var k=">"==j.charAt(1)?1:-1;if(e&&k>0!=(i==b.ch))return null;var l=a.getTokenTypeAt(c(b.line,i+1)),m=f(a,c(b.line,i+(k>0?1:0)),k,l||null,g);return null==m?null:{from:c(b.line,i),to:m&&m.pos,match:m&&m.ch==j.charAt(0),forward:k>0}}function f(a,b,e,f,g){for(var h=g&&g.maxScanLineLength||1e4,i=g&&g.maxScanLines||1e3,j=[],k=g&&g.bracketRegex?g.bracketRegex:/[(){}[\]]/,l=e>0?Math.min(b.line+i,a.lastLine()+1):Math.max(a.firstLine()-1,b.line-i),m=b.line;m!=l;m+=e){var n=a.getLine(m);if(n){var o=e>0?0:n.length-1,p=e>0?n.length:-1;if(!(n.length>h))for(m==b.line&&(o=b.ch-(0>e?1:0));o!=p;o+=e){var q=n.charAt(o);if(k.test(q)&&(void 0===f||a.getTokenTypeAt(c(m,o+1))==f)){var r=d[q];if(">"==r.charAt(1)==e>0)j.push(q);else{if(!j.length)return{pos:c(m,o),ch:q};j.pop()}}}}}return m-e==(e>0?a.lastLine():a.firstLine())?!1:null}function g(a,d,f){for(var g=a.state.matchBrackets.maxHighlightLineLength||1e3,h=[],i=a.listSelections(),j=0;j<i.length;j++){var k=i[j].empty()&&e(a,i[j].head,!1,f);if(k&&a.getLine(k.from.line).length<=g){var l=k.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";h.push(a.markText(k.from,c(k.from.line,k.from.ch+1),{className:l})),k.to&&a.getLine(k.to.line).length<=g&&h.push(a.markText(k.to,c(k.to.line,k.to.ch+1),{className:l}))}}if(h.length){b&&a.state.focused&&a.display.input.focus();var m=function(){a.operation(function(){for(var a=0;a<h.length;a++)h[a].clear()})};if(!d)return m;setTimeout(m,800)}}function i(a){a.operation(function(){h&&(h(),h=null),h=g(a,!1,a.state.matchBrackets)})}var b=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),c=a.Pos,d={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},h=null;a.defineOption("matchBrackets",!1,function(b,c,d){d&&d!=a.Init&&b.off("cursorActivity",i),c&&(b.state.matchBrackets="object"==typeof c?c:{},b.on("cursorActivity",i))}),a.defineExtension("matchBrackets",function(){g(this,!0)}),a.defineExtension("findMatchingBracket",function(a,b,c){return e(this,a,b,c)}),a.defineExtension("scanForBracket",function(a,b,c,d){return f(this,a,b,c,d)})}),function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function d(a,b,c){this.cm=a,this.getHints=b,this.options=c,this.widget=this.onClose=null}function e(a){return"string"==typeof a?a:a.text}function f(a,b){function e(a,e){var f;f="string"!=typeof e?function(a){return e(a,b)}:c.hasOwnProperty(e)?c[e]:e,d[a]=f}var c={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(-b.menuSize()+1,!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},d=a.customKeys?{}:c;if(a.customKeys)for(var f in a.customKeys)a.customKeys.hasOwnProperty(f)&&e(f,a.customKeys[f]);if(a.extraKeys)for(var f in a.extraKeys)a.extraKeys.hasOwnProperty(f)&&e(f,a.extraKeys[f]);return d}function g(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function h(d,h){this.completion=d,this.data=h;var i=this,j=d.cm,k=d.options,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=k.getDefaultSelection?k.getDefaultSelection(j,k,h):0;for(var m=h.list,n=0;n<m.length;++n){var o=l.appendChild(document.createElement("li")),p=m[n],q=b+(n!=this.selectedHint?"":" "+c);null!=p.className&&(q=p.className+" "+q),o.className=q,p.render?p.render(o,h,p):o.appendChild(document.createTextNode(p.displayText||e(p))),o.hintId=n}var r=j.cursorCoords(k.alignWithWord!==!1?h.from:null),s=r.left,t=r.bottom,u=!0;l.style.left=s+"px",l.style.top=t+"px";var v=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),w=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);(k.container||document.body).appendChild(l);var x=l.getBoundingClientRect(),y=x.bottom-w;if(y>0){var z=x.bottom-x.top,A=x.top-(r.bottom-r.top);if(A-z>0)l.style.top=(t=A-z)+"px",u=!1;else if(z>w){l.style.height=w-5+"px",l.style.top=(t=r.bottom-x.top)+"px";var B=j.getCursor();h.from.ch!=B.ch&&(r=j.cursorCoords(B),l.style.left=(s=r.left)+"px",x=l.getBoundingClientRect())}}var C=x.left-v;if(C>0&&(x.right-x.left>v&&(l.style.width=v-5+"px",C-=x.right-x.left-v),l.style.left=(s=r.left-C)+"px"),j.addKeyMap(this.keyMap=f(k,{moveFocus:function(a,b){i.changeActive(i.selectedHint+a,b)},setFocus:function(a){i.changeActive(a)},menuSize:function(){return i.screenAmount()},length:m.length,close:function(){d.close()},pick:function(){i.pick()},data:h})),k.closeOnUnfocus!==!1){var D;j.on("blur",this.onBlur=function(){D=setTimeout(function(){d.close()},100)}),j.on("focus",this.onFocus=function(){clearTimeout(D)})}var E=j.getScrollInfo();return j.on("scroll",this.onScroll=function(){var a=j.getScrollInfo(),b=j.getWrapperElement().getBoundingClientRect(),c=t+E.top-a.top,e=c-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return u||(e+=l.offsetHeight),e<=b.top||e>=b.bottom?d.close():(l.style.top=c+"px",l.style.left=s+E.left-a.left+"px",void 0)}),a.on(l,"dblclick",function(a){var b=g(l,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),i.pick())}),a.on(l,"click",function(a){var b=g(l,a.target||a.srcElement);b&&null!=b.hintId&&(i.changeActive(b.hintId),k.completeOnSingleClick&&i.pick())}),a.on(l,"mousedown",function(){setTimeout(function(){j.focus()},20)}),a.signal(h,"select",m[0],l.firstChild),!0}var b="CodeMirror-hint",c="CodeMirror-hint-active";a.showHint=function(b,c,e){if(!(b.listSelections().length>1||b.somethingSelected())){if(null==c){if(e&&e.async)return;c=a.hint.auto}b.state.completionActive&&b.state.completionActive.close();var f=b.state.completionActive=new d(b,c,e||{});return a.signal(b,"startCompletion",b),f.options.async?(c(b,function(a){f.showHints(a)},f.options),void 0):f.showHints(c(b,f.options))}},d.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.widget&&this.widget.close(),this.onClose&&this.onClose(),a.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(b,c){var d=b.list[c];d.hint?d.hint(this.cm,b,d):this.cm.replaceRange(e(d),d.from||b.from,d.to||b.to,"complete"),a.signal(b,"pick",d),this.close()},showHints:function(a){return a&&a.list.length&&this.active()?(0!=this.options.completeSingle&&1==a.list.length?this.pick(a,0):this.showWidget(a),void 0):this.close()},showWidget:function(b){function l(){e||(e=!0,d.close(),d.cm.off("cursorActivity",p),b&&a.signal(b,"close"))}function m(){e||(a.signal(b,"update"),d.options.async?d.getHints(d.cm,n,d.options):n(d.getHints(d.cm,d.options)))}function n(a){if(b=a,!e){if(!b||!b.list.length)return l();d.widget&&d.widget.close(),d.widget=new h(d,b)}}function o(){c&&(k(c),c=0)}function p(){o();var a=d.cm.getCursor(),b=d.cm.getLine(a.line);a.line!=g.line||b.length-a.ch!=i-g.ch||a.ch<g.ch||d.cm.somethingSelected()||a.ch&&f.test(b.charAt(a.ch-1))?d.close():(c=j(m),d.widget&&d.widget.close())}this.widget=new h(this,b),a.signal(b,"shown");var e,c=0,d=this,f=this.options.closeCharacters||/[\s()\[\]{};:>,]/,g=this.cm.getCursor(),i=this.cm.getLine(g.line).length,j=window.requestAnimationFrame||function(a){return setTimeout(a,1e3/60)},k=window.cancelAnimationFrame||clearTimeout;this.cm.on("cursorActivity",p),this.onClose=l}},h.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var a=this.completion.cm;this.completion.options.closeOnUnfocus!==!1&&(a.off("blur",this.onBlur),a.off("focus",this.onFocus)),a.off("scroll",this.onScroll)}},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(b,d){if(b>=this.data.list.length?b=d?this.data.list.length-1:0:0>b&&(b=d?0:this.data.list.length-1),this.selectedHint!=b){var e=this.hints.childNodes[this.selectedHint];e.className=e.className.replace(" "+c,""),e=this.hints.childNodes[this.selectedHint=b],e.className+=" "+c,e.offsetTop<this.hints.scrollTop?this.hints.scrollTop=e.offsetTop-3:e.offsetTop+e.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=e.offsetTop+e.offsetHeight-this.hints.clientHeight+3),a.signal(this.data,"select",this.data.list[this.selectedHint],e)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},a.registerHelper("hint","auto",function(b,c){var e,d=b.getHelpers(b.getCursor(),"hint");if(d.length)for(var f=0;f<d.length;f++){var g=d[f](b,c);if(g&&g.list.length)return g}else if(e=b.getHelper(b.getCursor(),"hintWords")){if(e)return a.hint.fromList(b,{words:e})}else if(a.hint.anyword)return a.hint.anyword(b,c)}),a.registerHelper("hint","fromList",function(b,c){for(var d=b.getCursor(),e=b.getTokenAt(d),f=[],g=0;g<c.words.length;g++){var h=c.words[g];h.slice(0,e.string.length)==e.string&&f.push(h)}return f.length?{list:f,from:a.Pos(d.line,e.start),to:a.Pos(d.line,e.end)}:void 0}),a.commands.autocomplete=a.showHint});
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/js/thirdparty/head.js b/WebSites/errors/403/lib/js/thirdparty/head.js
new file mode 100755
index 0000000..a6b8765
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/head.js
@@ -0,0 +1,9 @@
+/*! head.core - v1.0.2 */
+(function(n,t){"use strict";function r(n){a[a.length]=n}function k(n){var t=new RegExp(" ?\\b"+n+"\\b");c.className=c.className.replace(t,"")}function p(n,t){for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}function tt(){var t,e,f,o;c.className=c.className.replace(/ (w-|eq-|gt-|gte-|lt-|lte-|portrait|no-portrait|landscape|no-landscape)\d+/g,"");t=n.innerWidth||c.clientWidth;e=n.outerWidth||n.screen.width;u.screen.innerWidth=t;u.screen.outerWidth=e;r("w-"+t);p(i.screens,function(n){t>n?(i.screensCss.gt&&r("gt-"+n),i.screensCss.gte&&r("gte-"+n)):t<n?(i.screensCss.lt&&r("lt-"+n),i.screensCss.lte&&r("lte-"+n)):t===n&&(i.screensCss.lte&&r("lte-"+n),i.screensCss.eq&&r("e-q"+n),i.screensCss.gte&&r("gte-"+n))});f=n.innerHeight||c.clientHeight;o=n.outerHeight||n.screen.height;u.screen.innerHeight=f;u.screen.outerHeight=o;u.feature("portrait",f>t);u.feature("landscape",f<t)}function it(){n.clearTimeout(b);b=n.setTimeout(tt,50)}var y=n.document,rt=n.navigator,ut=n.location,c=y.documentElement,a=[],i={screens:[240,320,480,640,768,800,1024,1280,1440,1680,1920],screensCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!1},browsers:[{ie:{min:6,max:11}}],browserCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!0},html5:!0,page:"-page",section:"-section",head:"head"},v,u,s,w,o,h,l,d,f,g,nt,e,b;if(n.head_conf)for(v in n.head_conf)n.head_conf[v]!==t&&(i[v]=n.head_conf[v]);u=n[i.head]=function(){u.ready.apply(null,arguments)};u.feature=function(n,t,i){return n?(Object.prototype.toString.call(t)==="[object Function]"&&(t=t.call()),r((t?"":"no-")+n),u[n]=!!t,i||(k("no-"+n),k(n),u.feature()),u):(c.className+=" "+a.join(" "),a=[],u)};u.feature("js",!0);s=rt.userAgent.toLowerCase();w=/mobile|android|kindle|silk|midp|phone|(windows .+arm|touch)/.test(s);u.feature("mobile",w,!0);u.feature("desktop",!w,!0);s=/(chrome|firefox)[ \/]([\w.]+)/.exec(s)||/(iphone|ipad|ipod)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(android)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(webkit|opera)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(msie) ([\w.]+)/.exec(s)||/(trident).+rv:(\w.)+/.exec(s)||[];o=s[1];h=parseFloat(s[2]);switch(o){case"msie":case"trident":o="ie";h=y.documentMode||h;break;case"firefox":o="ff";break;case"ipod":case"ipad":case"iphone":o="ios";break;case"webkit":o="safari"}for(u.browser={name:o,version:h},u.browser[o]=!0,l=0,d=i.browsers.length;l<d;l++)for(f in i.browsers[l])if(o===f)for(r(f),g=i.browsers[l][f].min,nt=i.browsers[l][f].max,e=g;e<=nt;e++)h>e?(i.browserCss.gt&&r("gt-"+f+e),i.browserCss.gte&&r("gte-"+f+e)):h<e?(i.browserCss.lt&&r("lt-"+f+e),i.browserCss.lte&&r("lte-"+f+e)):h===e&&(i.browserCss.lte&&r("lte-"+f+e),i.browserCss.eq&&r("eq-"+f+e),i.browserCss.gte&&r("gte-"+f+e));else r("no-"+f);r(o);r(o+parseInt(h,10));i.html5&&o==="ie"&&h<9&&p("abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|progress|section|summary|time|video".split("|"),function(n){y.createElement(n)});p(ut.pathname.split("/"),function(n,u){if(this.length>2&&this[u+1]!==t)u&&r(this.slice(u,u+1).join("-").toLowerCase()+i.section);else{var f=n||"index",e=f.indexOf(".");e>0&&(f=f.substring(0,e));c.id=f.toLowerCase()+i.page;u||r("root"+i.section)}});u.screen={height:n.screen.height,width:n.screen.width};tt();b=0;n.addEventListener?n.addEventListener("resize",it,!1):n.attachEvent("onresize",it)})(window);
+/*! head.css3 - v1.0.0 */
+(function(n,t){"use strict";function a(n){for(var r in n)if(i[n[r]]!==t)return!0;return!1}function r(n){var t=n.charAt(0).toUpperCase()+n.substr(1),i=(n+" "+c.join(t+" ")+t).split(" ");return!!a(i)}var h=n.document,o=h.createElement("i"),i=o.style,s=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),c="Webkit Moz O ms Khtml".split(" "),l=n.head_conf&&n.head_conf.head||"head",u=n[l],f={gradient:function(){var n="background-image:";return i.cssText=(n+s.join("gradient(linear,left top,right bottom,from(#9f9),to(#fff));"+n)+s.join("linear-gradient(left top,#eee,#fff);"+n)).slice(0,-n.length),!!i.backgroundImage},rgba:function(){return i.cssText="background-color:rgba(0,0,0,0.5)",!!i.backgroundColor},opacity:function(){return o.style.opacity===""},textshadow:function(){return i.textShadow===""},multiplebgs:function(){i.cssText="background:url(https://),url(https://),red url(https://)";var n=(i.background||"").match(/url/g);return Object.prototype.toString.call(n)==="[object Array]"&&n.length===3},boxshadow:function(){return r("boxShadow")},borderimage:function(){return r("borderImage")},borderradius:function(){return r("borderRadius")},cssreflections:function(){return r("boxReflect")},csstransforms:function(){return r("transform")},csstransitions:function(){return r("transition")},touch:function(){return"ontouchstart"in n},retina:function(){return n.devicePixelRatio>1},fontface:function(){var t=u.browser.name,n=u.browser.version;switch(t){case"ie":return n>=9;case"chrome":return n>=13;case"ff":return n>=6;case"ios":return n>=5;case"android":return!1;case"webkit":return n>=5.1;case"opera":return n>=10;default:return!1}}};for(var e in f)f[e]&&u.feature(e,f[e].call(),!0);u.feature()})(window);
+/*! head.load - v1.0.3 */
+(function(n,t){"use strict";function w(){}function u(n,t){if(n){typeof n=="object"&&(n=[].slice.call(n));for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}}function it(n,i){var r=Object.prototype.toString.call(i).slice(8,-1);return i!==t&&i!==null&&r===n}function s(n){return it("Function",n)}function a(n){return it("Array",n)}function et(n){var i=n.split("/"),t=i[i.length-1],r=t.indexOf("?");return r!==-1?t.substring(0,r):t}function f(n){(n=n||w,n._done)||(n(),n._done=1)}function ot(n,t,r,u){var f=typeof n=="object"?n:{test:n,success:!t?!1:a(t)?t:[t],failure:!r?!1:a(r)?r:[r],callback:u||w},e=!!f.test;return e&&!!f.success?(f.success.push(f.callback),i.load.apply(null,f.success)):e||!f.failure?u():(f.failure.push(f.callback),i.load.apply(null,f.failure)),i}function v(n){var t={},i,r;if(typeof n=="object")for(i in n)!n[i]||(t={name:i,url:n[i]});else t={name:et(n),url:n};return(r=c[t.name],r&&r.url===t.url)?r:(c[t.name]=t,t)}function y(n){n=n||c;for(var t in n)if(n.hasOwnProperty(t)&&n[t].state!==l)return!1;return!0}function st(n){n.state=ft;u(n.onpreload,function(n){n.call()})}function ht(n){n.state===t&&(n.state=nt,n.onpreload=[],rt({url:n.url,type:"cache"},function(){st(n)}))}function ct(){var n=arguments,t=n[n.length-1],r=[].slice.call(n,1),f=r[0];return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(f?(u(r,function(n){s(n)||!n||ht(v(n))}),b(v(n[0]),s(f)?f:function(){i.load.apply(null,r)})):b(v(n[0])),i)}function lt(){var n=arguments,t=n[n.length-1],r={};return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(u(n,function(n){n!==t&&(n=v(n),r[n.name]=n)}),u(n,function(n){n!==t&&(n=v(n),b(n,function(){y(r)&&f(t)}))}),i)}function b(n,t){if(t=t||w,n.state===l){t();return}if(n.state===tt){i.ready(n.name,t);return}if(n.state===nt){n.onpreload.push(function(){b(n,t)});return}n.state=tt;rt(n,function(){n.state=l;t();u(h[n.name],function(n){f(n)});o&&y()&&u(h.ALL,function(n){f(n)})})}function at(n){n=n||"";var t=n.split("?")[0].split(".");return t[t.length-1].toLowerCase()}function rt(t,i){function e(t){t=t||n.event;u.onload=u.onreadystatechange=u.onerror=null;i()}function o(f){f=f||n.event;(f.type==="load"||/loaded|complete/.test(u.readyState)&&(!r.documentMode||r.documentMode<9))&&(n.clearTimeout(t.errorTimeout),n.clearTimeout(t.cssTimeout),u.onload=u.onreadystatechange=u.onerror=null,i())}function s(){if(t.state!==l&&t.cssRetries<=20){for(var i=0,f=r.styleSheets.length;i<f;i++)if(r.styleSheets[i].href===u.href){o({type:"load"});return}t.cssRetries++;t.cssTimeout=n.setTimeout(s,250)}}var u,h,f;i=i||w;h=at(t.url);h==="css"?(u=r.createElement("link"),u.type="text/"+(t.type||"css"),u.rel="stylesheet",u.href=t.url,t.cssRetries=0,t.cssTimeout=n.setTimeout(s,500)):(u=r.createElement("script"),u.type="text/"+(t.type||"javascript"),u.src=t.url);u.onload=u.onreadystatechange=o;u.onerror=e;u.async=!1;u.defer=!1;t.errorTimeout=n.setTimeout(function(){e({type:"timeout"})},7e3);f=r.head||r.getElementsByTagName("head")[0];f.insertBefore(u,f.lastChild)}function vt(){for(var t,u=r.getElementsByTagName("script"),n=0,f=u.length;n<f;n++)if(t=u[n].getAttribute("data-headjs-load"),!!t){i.load(t);return}}function yt(n,t){var v,p,e;return n===r?(o?f(t):d.push(t),i):(s(n)&&(t=n,n="ALL"),a(n))?(v={},u(n,function(n){v[n]=c[n];i.ready(n,function(){y(v)&&f(t)})}),i):typeof n!="string"||!s(t)?i:(p=c[n],p&&p.state===l||n==="ALL"&&y()&&o)?(f(t),i):(e=h[n],e?e.push(t):e=h[n]=[t],i)}function e(){if(!r.body){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(e,50);return}o||(o=!0,vt(),u(d,function(n){f(n)}))}function k(){r.addEventListener?(r.removeEventListener("DOMContentLoaded",k,!1),e()):r.readyState==="complete"&&(r.detachEvent("onreadystatechange",k),e())}var r=n.document,d=[],h={},c={},ut="async"in r.createElement("script")||"MozAppearance"in r.documentElement.style||n.opera,o,g=n.head_conf&&n.head_conf.head||"head",i=n[g]=n[g]||function(){i.ready.apply(null,arguments)},nt=1,ft=2,tt=3,l=4,p;if(r.readyState==="complete")e();else if(r.addEventListener)r.addEventListener("DOMContentLoaded",k,!1),n.addEventListener("load",e,!1);else{r.attachEvent("onreadystatechange",k);n.attachEvent("onload",e);p=!1;try{p=!n.frameElement&&r.documentElement}catch(wt){}p&&p.doScroll&&function pt(){if(!o){try{p.doScroll("left")}catch(t){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(pt,50);return}e()}}()}i.load=i.js=ut?lt:ct;i.test=ot;i.ready=yt;i.ready(r,function(){y()&&u(h.ALL,function(n){f(n)});i.feature&&i.feature("domloaded",!0)})})(window);
+/*
+//# sourceMappingURL=head.min.js.map
+*/
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/js/thirdparty/jquery-ui.js b/WebSites/errors/403/lib/js/thirdparty/jquery-ui.js
new file mode 100755
index 0000000..2ede99f
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/jquery-ui.js
@@ -0,0 +1,15003 @@
+/*! jQuery UI - v1.10.3 - 2013-05-03
+* http://jqueryui.com
+* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function( $, undefined ) {
+
+var uuid = 0,
+	runiqueId = /^ui-id-\d+$/;
+
+// $.ui might exist from components with no dependencies, e.g., $.ui.position
+$.ui = $.ui || {};
+
+$.extend( $.ui, {
+	version: "1.10.3",
+
+	keyCode: {
+		BACKSPACE: 8,
+		COMMA: 188,
+		DELETE: 46,
+		DOWN: 40,
+		END: 35,
+		ENTER: 13,
+		ESCAPE: 27,
+		HOME: 36,
+		LEFT: 37,
+		NUMPAD_ADD: 107,
+		NUMPAD_DECIMAL: 110,
+		NUMPAD_DIVIDE: 111,
+		NUMPAD_ENTER: 108,
+		NUMPAD_MULTIPLY: 106,
+		NUMPAD_SUBTRACT: 109,
+		PAGE_DOWN: 34,
+		PAGE_UP: 33,
+		PERIOD: 190,
+		RIGHT: 39,
+		SPACE: 32,
+		TAB: 9,
+		UP: 38
+	}
+});
+
+// plugins
+$.fn.extend({
+	focus: (function( orig ) {
+		return function( delay, fn ) {
+			return typeof delay === "number" ?
+				this.each(function() {
+					var elem = this;
+					setTimeout(function() {
+						$( elem ).focus();
+						if ( fn ) {
+							fn.call( elem );
+						}
+					}, delay );
+				}) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.focus ),
+
+	scrollParent: function() {
+		var scrollParent;
+		if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
+			scrollParent = this.parents().filter(function() {
+				return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		} else {
+			scrollParent = this.parents().filter(function() {
+				return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		}
+
+		return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
+	},
+
+	zIndex: function( zIndex ) {
+		if ( zIndex !== undefined ) {
+			return this.css( "zIndex", zIndex );
+		}
+
+		if ( this.length ) {
+			var elem = $( this[ 0 ] ), position, value;
+			while ( elem.length && elem[ 0 ] !== document ) {
+				// Ignore z-index if position is set to a value where z-index is ignored by the browser
+				// This makes behavior of this function consistent across browsers
+				// WebKit always returns auto if the element is positioned
+				position = elem.css( "position" );
+				if ( position === "absolute" || position === "relative" || position === "fixed" ) {
+					// IE returns 0 when zIndex is not specified
+					// other browsers return a string
+					// we ignore the case of nested elements with an explicit value of 0
+					// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
+					value = parseInt( elem.css( "zIndex" ), 10 );
+					if ( !isNaN( value ) && value !== 0 ) {
+						return value;
+					}
+				}
+				elem = elem.parent();
+			}
+		}
+
+		return 0;
+	},
+
+	uniqueId: function() {
+		return this.each(function() {
+			if ( !this.id ) {
+				this.id = "ui-id-" + (++uuid);
+			}
+		});
+	},
+
+	removeUniqueId: function() {
+		return this.each(function() {
+			if ( runiqueId.test( this.id ) ) {
+				$( this ).removeAttr( "id" );
+			}
+		});
+	}
+});
+
+// selectors
+function focusable( element, isTabIndexNotNaN ) {
+	var map, mapName, img,
+		nodeName = element.nodeName.toLowerCase();
+	if ( "area" === nodeName ) {
+		map = element.parentNode;
+		mapName = map.name;
+		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+			return false;
+		}
+		img = $( "img[usemap=#" + mapName + "]" )[0];
+		return !!img && visible( img );
+	}
+	return ( /input|select|textarea|button|object/.test( nodeName ) ?
+		!element.disabled :
+		"a" === nodeName ?
+			element.href || isTabIndexNotNaN :
+			isTabIndexNotNaN) &&
+		// the element and all of its ancestors must be visible
+		visible( element );
+}
+
+function visible( element ) {
+	return $.expr.filters.visible( element ) &&
+		!$( element ).parents().addBack().filter(function() {
+			return $.css( this, "visibility" ) === "hidden";
+		}).length;
+}
+
+$.extend( $.expr[ ":" ], {
+	data: $.expr.createPseudo ?
+		$.expr.createPseudo(function( dataName ) {
+			return function( elem ) {
+				return !!$.data( elem, dataName );
+			};
+		}) :
+		// support: jQuery <1.8
+		function( elem, i, match ) {
+			return !!$.data( elem, match[ 3 ] );
+		},
+
+	focusable: function( element ) {
+		return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
+	},
+
+	tabbable: function( element ) {
+		var tabIndex = $.attr( element, "tabindex" ),
+			isTabIndexNaN = isNaN( tabIndex );
+		return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
+	}
+});
+
+// support: jQuery <1.8
+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
+	$.each( [ "Width", "Height" ], function( i, name ) {
+		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+			type = name.toLowerCase(),
+			orig = {
+				innerWidth: $.fn.innerWidth,
+				innerHeight: $.fn.innerHeight,
+				outerWidth: $.fn.outerWidth,
+				outerHeight: $.fn.outerHeight
+			};
+
+		function reduce( elem, size, border, margin ) {
+			$.each( side, function() {
+				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+				if ( border ) {
+					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+				}
+				if ( margin ) {
+					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+				}
+			});
+			return size;
+		}
+
+		$.fn[ "inner" + name ] = function( size ) {
+			if ( size === undefined ) {
+				return orig[ "inner" + name ].call( this );
+			}
+
+			return this.each(function() {
+				$( this ).css( type, reduce( this, size ) + "px" );
+			});
+		};
+
+		$.fn[ "outer" + name] = function( size, margin ) {
+			if ( typeof size !== "number" ) {
+				return orig[ "outer" + name ].call( this, size );
+			}
+
+			return this.each(function() {
+				$( this).css( type, reduce( this, size, true, margin ) + "px" );
+			});
+		};
+	});
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
+if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
+	$.fn.removeData = (function( removeData ) {
+		return function( key ) {
+			if ( arguments.length ) {
+				return removeData.call( this, $.camelCase( key ) );
+			} else {
+				return removeData.call( this );
+			}
+		};
+	})( $.fn.removeData );
+}
+
+
+
+
+
+// deprecated
+$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
+
+$.support.selectstart = "onselectstart" in document.createElement( "div" );
+$.fn.extend({
+	disableSelection: function() {
+		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
+			".ui-disableSelection", function( event ) {
+				event.preventDefault();
+			});
+	},
+
+	enableSelection: function() {
+		return this.unbind( ".ui-disableSelection" );
+	}
+});
+
+$.extend( $.ui, {
+	// $.ui.plugin is deprecated. Use $.widget() extensions instead.
+	plugin: {
+		add: function( module, option, set ) {
+			var i,
+				proto = $.ui[ module ].prototype;
+			for ( i in set ) {
+				proto.plugins[ i ] = proto.plugins[ i ] || [];
+				proto.plugins[ i ].push( [ option, set[ i ] ] );
+			}
+		},
+		call: function( instance, name, args ) {
+			var i,
+				set = instance.plugins[ name ];
+			if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
+				return;
+			}
+
+			for ( i = 0; i < set.length; i++ ) {
+				if ( instance.options[ set[ i ][ 0 ] ] ) {
+					set[ i ][ 1 ].apply( instance.element, args );
+				}
+			}
+		}
+	},
+
+	// only used by resizable
+	hasScroll: function( el, a ) {
+
+		//If overflow is hidden, the element might have extra content, but the user wants to hide it
+		if ( $( el ).css( "overflow" ) === "hidden") {
+			return false;
+		}
+
+		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
+			has = false;
+
+		if ( el[ scroll ] > 0 ) {
+			return true;
+		}
+
+		// TODO: determine which cases actually cause this to happen
+		// if the element doesn't have the scroll set, see if it's possible to
+		// set the scroll
+		el[ scroll ] = 1;
+		has = ( el[ scroll ] > 0 );
+		el[ scroll ] = 0;
+		return has;
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var uuid = 0,
+	slice = Array.prototype.slice,
+	_cleanData = $.cleanData;
+$.cleanData = function( elems ) {
+	for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+		try {
+			$( elem ).triggerHandler( "remove" );
+		// http://bugs.jquery.com/ticket/8235
+		} catch( e ) {}
+	}
+	_cleanData( elems );
+};
+
+$.widget = function( name, base, prototype ) {
+	var fullName, existingConstructor, constructor, basePrototype,
+		// proxiedPrototype allows the provided prototype to remain unmodified
+		// so that it can be used as a mixin for multiple panes (#8876)
+		proxiedPrototype = {},
+		namespace = name.split( "." )[ 0 ];
+
+	name = name.split( "." )[ 1 ];
+	fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	// create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+		// allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+	// extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+		// copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+		// track panes that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	});
+
+	basePrototype = new base();
+	// we need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = (function() {
+			var _super = function() {
+					return base.prototype[ prop ].apply( this, arguments );
+				},
+				_superApply = function( args ) {
+					return base.prototype[ prop ].apply( this, args );
+				};
+			return function() {
+				var __super = this._super,
+					__superApply = this._superApply,
+					returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		})();
+	});
+	constructor.prototype = $.widget.extend( basePrototype, {
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for panes that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	});
+
+	// If this widget is being redefined then we need to find all panes that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+		});
+		// remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+};
+
+$.widget.extend = function( target ) {
+	var input = slice.call( arguments, 1 ),
+		inputIndex = 0,
+		inputLength = input.length,
+		key,
+		value;
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string",
+			args = slice.call( arguments, 1 ),
+			returnValue = this;
+
+		// allow multiple hashes to be passed on init
+		options = !isMethodCall && args.length ?
+			$.widget.extend.apply( null, [ options ].concat(args) ) :
+			options;
+
+		if ( isMethodCall ) {
+			this.each(function() {
+				var methodValue,
+					instance = $.data( this, fullName );
+				if ( !instance ) {
+					return $.error( "cannot call methods on " + name + " prior to initialization; " +
+						"attempted to call method '" + options + "'" );
+				}
+				if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+					return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+				}
+				methodValue = instance[ options ].apply( instance, args );
+				if ( methodValue !== instance && methodValue !== undefined ) {
+					returnValue = methodValue && methodValue.jquery ?
+						returnValue.pushStack( methodValue.get() ) :
+						methodValue;
+					return false;
+				}
+			});
+		} else {
+			this.each(function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} )._init();
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			});
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+	options: {
+		disabled: false,
+
+		// callbacks
+		create: null
+	},
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = uuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			});
+			this.document = $( element.style ?
+				// element within the document
+				element.ownerDocument :
+				// element is window or document
+				element.document || element );
+			this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+		}
+
+		this._create();
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+	_getCreateOptions: $.noop,
+	_getCreateEventData: $.noop,
+	_create: $.noop,
+	_init: $.noop,
+
+	destroy: function() {
+		this._destroy();
+		// we can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.unbind( this.eventNamespace )
+			// 1.9 BC for #7810
+			// TODO remove dual storage
+			.removeData( this.widgetName )
+			.removeData( this.widgetFullName )
+			// support: jquery <1.6.3
+			// http://bugs.jquery.com/ticket/9413
+			.removeData( $.camelCase( this.widgetFullName ) );
+		this.widget()
+			.unbind( this.eventNamespace )
+			.removeAttr( "aria-disabled" )
+			.removeClass(
+				this.widgetFullName + "-disabled " +
+				"ui-state-disabled" );
+
+		// clean up events and states
+		this.bindings.unbind( this.eventNamespace );
+		this.hoverable.removeClass( "ui-state-hover" );
+		this.focusable.removeClass( "ui-state-focus" );
+	},
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key,
+			parts,
+			curOption,
+			i;
+
+		if ( arguments.length === 0 ) {
+			// don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+			// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( value === undefined ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( value === undefined ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+	_setOption: function( key, value ) {
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this.widget()
+				.toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
+				.attr( "aria-disabled", value );
+			this.hoverable.removeClass( "ui-state-hover" );
+			this.focusable.removeClass( "ui-state-focus" );
+		}
+
+		return this;
+	},
+
+	enable: function() {
+		return this._setOption( "disabled", false );
+	},
+	disable: function() {
+		return this._setOption( "disabled", true );
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement,
+			instance = this;
+
+		// no suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// no element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			// accept selectors, DOM elements
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+				// allow panes to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+							$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^(\w+)\s*(.*)$/ ),
+				eventName = match[1] + instance.eventNamespace,
+				selector = match[2];
+			if ( selector ) {
+				delegateElement.delegate( selector, eventName, handlerProxy );
+			} else {
+				element.bind( eventName, handlerProxy );
+			}
+		});
+	},
+
+	_off: function( element, eventName ) {
+		eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+		element.unbind( eventName ).undelegate( eventName );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-hover" );
+			}
+		});
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-focus" );
+			}
+		});
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig,
+			callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+		// the original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+		var hasOptions,
+			effectName = !options ?
+				method :
+				options === true || typeof options === "number" ?
+					defaultEffect :
+					options.effect || defaultEffect;
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue(function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			});
+		}
+	};
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var mouseHandled = false;
+$( document ).mouseup( function() {
+	mouseHandled = false;
+});
+
+$.widget("ui.mouse", {
+	version: "1.10.3",
+	options: {
+		cancel: "input,textarea,button,select,option",
+		distance: 1,
+		delay: 0
+	},
+	_mouseInit: function() {
+		var that = this;
+
+		this.element
+			.bind("mousedown."+this.widgetName, function(event) {
+				return that._mouseDown(event);
+			})
+			.bind("click."+this.widgetName, function(event) {
+				if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
+					$.removeData(event.target, that.widgetName + ".preventClickEvent");
+					event.stopImmediatePropagation();
+					return false;
+				}
+			});
+
+		this.started = false;
+	},
+
+	// TODO: make sure destroying one instance of mouse doesn't mess with
+	// other instances of mouse
+	_mouseDestroy: function() {
+		this.element.unbind("."+this.widgetName);
+		if ( this._mouseMoveDelegate ) {
+			$(document)
+				.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+				.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+		}
+	},
+
+	_mouseDown: function(event) {
+		// don't let more than one widget handle mouseStart
+		if( mouseHandled ) { return; }
+
+		// we may have missed mouseup (out of window)
+		(this._mouseStarted && this._mouseUp(event));
+
+		this._mouseDownEvent = event;
+
+		var that = this,
+			btnIsLeft = (event.which === 1),
+			// event.target.nodeName works around a bug in IE 8 with
+			// disabled inputs (#7620)
+			elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
+		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
+			return true;
+		}
+
+		this.mouseDelayMet = !this.options.delay;
+		if (!this.mouseDelayMet) {
+			this._mouseDelayTimer = setTimeout(function() {
+				that.mouseDelayMet = true;
+			}, this.options.delay);
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted = (this._mouseStart(event) !== false);
+			if (!this._mouseStarted) {
+				event.preventDefault();
+				return true;
+			}
+		}
+
+		// Click event may never have fired (Gecko & Opera)
+		if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
+			$.removeData(event.target, this.widgetName + ".preventClickEvent");
+		}
+
+		// these delegates are required to keep context
+		this._mouseMoveDelegate = function(event) {
+			return that._mouseMove(event);
+		};
+		this._mouseUpDelegate = function(event) {
+			return that._mouseUp(event);
+		};
+		$(document)
+			.bind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.bind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		event.preventDefault();
+
+		mouseHandled = true;
+		return true;
+	},
+
+	_mouseMove: function(event) {
+		// IE mouseup check - mouseup happened when mouse was out of window
+		if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
+			return this._mouseUp(event);
+		}
+
+		if (this._mouseStarted) {
+			this._mouseDrag(event);
+			return event.preventDefault();
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted =
+				(this._mouseStart(this._mouseDownEvent, event) !== false);
+			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
+		}
+
+		return !this._mouseStarted;
+	},
+
+	_mouseUp: function(event) {
+		$(document)
+			.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		if (this._mouseStarted) {
+			this._mouseStarted = false;
+
+			if (event.target === this._mouseDownEvent.target) {
+				$.data(event.target, this.widgetName + ".preventClickEvent", true);
+			}
+
+			this._mouseStop(event);
+		}
+
+		return false;
+	},
+
+	_mouseDistanceMet: function(event) {
+		return (Math.max(
+				Math.abs(this._mouseDownEvent.pageX - event.pageX),
+				Math.abs(this._mouseDownEvent.pageY - event.pageY)
+			) >= this.options.distance
+		);
+	},
+
+	_mouseDelayMet: function(/* event */) {
+		return this.mouseDelayMet;
+	},
+
+	// These are placeholder methods, to be overriden by extending plugin
+	_mouseStart: function(/* event */) {},
+	_mouseDrag: function(/* event */) {},
+	_mouseStop: function(/* event */) {},
+	_mouseCapture: function(/* event */) { return true; }
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.widget("ui.draggable", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "drag",
+	options: {
+		addClasses: true,
+		appendTo: "parent",
+		axis: false,
+		connectToSortable: false,
+		containment: false,
+		cursor: "auto",
+		cursorAt: false,
+		grid: false,
+		handle: false,
+		helper: "original",
+		iframeFix: false,
+		opacity: false,
+		refreshPositions: false,
+		revert: false,
+		revertDuration: 500,
+		scope: "default",
+		scroll: true,
+		scrollSensitivity: 20,
+		scrollSpeed: 20,
+		snap: false,
+		snapMode: "both",
+		snapTolerance: 20,
+		stack: false,
+		zIndex: false,
+
+		// callbacks
+		drag: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) {
+			this.element[0].style.position = "relative";
+		}
+		if (this.options.addClasses){
+			this.element.addClass("ui-draggable");
+		}
+		if (this.options.disabled){
+			this.element.addClass("ui-draggable-disabled");
+		}
+
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function(event) {
+
+		var o = this.options;
+
+		// among others, prevent a drag on a resizable-handle
+		if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
+			return false;
+		}
+
+		//Quit if we're not on a valid handle
+		this.handle = this._getHandle(event);
+		if (!this.handle) {
+			return false;
+		}
+
+		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
+			$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>")
+			.css({
+				width: this.offsetWidth+"px", height: this.offsetHeight+"px",
+				position: "absolute", opacity: "0.001", zIndex: 1000
+			})
+			.css($(this).offset())
+			.appendTo("body");
+		});
+
+		return true;
+
+	},
+
+	_mouseStart: function(event) {
+
+		var o = this.options;
+
+		//Create and append the visible helper
+		this.helper = this._createHelper(event);
+
+		this.helper.addClass("ui-draggable-dragging");
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		//If ddmanager is used for droppables, set the global draggable
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.current = this;
+		}
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Store the helper's css position
+		this.cssPosition = this.helper.css( "position" );
+		this.scrollParent = this.helper.scrollParent();
+		this.offsetParent = this.helper.offsetParent();
+		this.offsetParentCssPosition = this.offsetParent.css( "position" );
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.positionAbs = this.element.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		//Reset scroll cache
+		this.offset.scroll = false;
+
+		$.extend(this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
+		});
+
+		//Generate the original position
+		this.originalPosition = this.position = this._generatePosition(event);
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
+
+		//Set a containment if given in the options
+		this._setContainment();
+
+		//Trigger event + callbacks
+		if(this._trigger("start", event) === false) {
+			this._clear();
+			return false;
+		}
+
+		//Recache the helper size
+		this._cacheHelperProportions();
+
+		//Prepare the droppable offsets
+		if ($.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(this, event);
+		}
+
+
+		this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStart(this, event);
+		}
+
+		return true;
+	},
+
+	_mouseDrag: function(event, noPropagation) {
+		// reset any necessary cached properties (see #5009)
+		if ( this.offsetParentCssPosition === "fixed" ) {
+			this.offset.parent = this._getParentOffset();
+		}
+
+		//Compute the helpers position
+		this.position = this._generatePosition(event);
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		//Call plugins and callbacks and use the resulting position if something is returned
+		if (!noPropagation) {
+			var ui = this._uiHash();
+			if(this._trigger("drag", event, ui) === false) {
+				this._mouseUp({});
+				return false;
+			}
+			this.position = ui.position;
+		}
+
+		if(!this.options.axis || this.options.axis !== "y") {
+			this.helper[0].style.left = this.position.left+"px";
+		}
+		if(!this.options.axis || this.options.axis !== "x") {
+			this.helper[0].style.top = this.position.top+"px";
+		}
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.drag(this, event);
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		//If we are using droppables, inform the manager about the drop
+		var that = this,
+			dropped = false;
+		if ($.ui.ddmanager && !this.options.dropBehaviour) {
+			dropped = $.ui.ddmanager.drop(this, event);
+		}
+
+		//if a drop comes from outside (a sortable)
+		if(this.dropped) {
+			dropped = this.dropped;
+			this.dropped = false;
+		}
+
+		//if the original element is no longer in the DOM don't bother to continue (see #8269)
+		if ( this.options.helper === "original" && !$.contains( this.element[ 0 ].ownerDocument, this.element[ 0 ] ) ) {
+			return false;
+		}
+
+		if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
+			$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
+				if(that._trigger("stop", event) !== false) {
+					that._clear();
+				}
+			});
+		} else {
+			if(this._trigger("stop", event) !== false) {
+				this._clear();
+			}
+		}
+
+		return false;
+	},
+
+	_mouseUp: function(event) {
+		//Remove frame helpers
+		$("div.ui-draggable-iframeFix").each(function() {
+			this.parentNode.removeChild(this);
+		});
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
+		if( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStop(this, event);
+		}
+
+		return $.ui.mouse.prototype._mouseUp.call(this, event);
+	},
+
+	cancel: function() {
+
+		if(this.helper.is(".ui-draggable-dragging")) {
+			this._mouseUp({});
+		} else {
+			this._clear();
+		}
+
+		return this;
+
+	},
+
+	_getHandle: function(event) {
+		return this.options.handle ?
+			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
+			true;
+	},
+
+	_createHelper: function(event) {
+
+		var o = this.options,
+			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element);
+
+		if(!helper.parents("body").length) {
+			helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
+		}
+
+		if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
+			helper.css("position", "absolute");
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function(obj) {
+		if (typeof obj === "string") {
+			obj = obj.split(" ");
+		}
+		if ($.isArray(obj)) {
+			obj = {left: +obj[0], top: +obj[1] || 0};
+		}
+		if ("left" in obj) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ("right" in obj) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ("top" in obj) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ("bottom" in obj) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+		//Get the offsetParent and cache its position
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
+		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
+		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		//This needs to be actually done for all browsers, since pageX/pageY includes this information
+		//Ugly IE fix
+		if((this.offsetParent[0] === document.body) ||
+			(this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
+			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if(this.cssPosition === "relative") {
+			var p = this.element.position();
+			return {
+				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
+				left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
+			};
+		} else {
+			return { top: 0, left: 0 };
+		}
+
+	},
+
+	_cacheMargins: function() {
+		this.margins = {
+			left: (parseInt(this.element.css("marginLeft"),10) || 0),
+			top: (parseInt(this.element.css("marginTop"),10) || 0),
+			right: (parseInt(this.element.css("marginRight"),10) || 0),
+			bottom: (parseInt(this.element.css("marginBottom"),10) || 0)
+		};
+	},
+
+	_cacheHelperProportions: function() {
+		this.helperProportions = {
+			width: this.helper.outerWidth(),
+			height: this.helper.outerHeight()
+		};
+	},
+
+	_setContainment: function() {
+
+		var over, c, ce,
+			o = this.options;
+
+		if ( !o.containment ) {
+			this.containment = null;
+			return;
+		}
+
+		if ( o.containment === "window" ) {
+			this.containment = [
+				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
+				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
+				$( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,
+				$( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
+			];
+			return;
+		}
+
+		if ( o.containment === "document") {
+			this.containment = [
+				0,
+				0,
+				$( document ).width() - this.helperProportions.width - this.margins.left,
+				( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
+			];
+			return;
+		}
+
+		if ( o.containment.constructor === Array ) {
+			this.containment = o.containment;
+			return;
+		}
+
+		if ( o.containment === "parent" ) {
+			o.containment = this.helper[ 0 ].parentNode;
+		}
+
+		c = $( o.containment );
+		ce = c[ 0 ];
+
+		if( !ce ) {
+			return;
+		}
+
+		over = c.css( "overflow" ) !== "hidden";
+
+		this.containment = [
+			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
+			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ) ,
+			( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right,
+			( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top  - this.margins.bottom
+		];
+		this.relative_container = c;
+	},
+
+	_convertPositionTo: function(d, pos) {
+
+		if(!pos) {
+			pos = this.position;
+		}
+
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent;
+
+		//Cache the scroll
+		if (!this.offset.scroll) {
+			this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()};
+		}
+
+		return {
+			top: (
+				pos.top	+																// The absolute mouse position
+				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top * mod -										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) * mod )
+			),
+			left: (
+				pos.left +																// The absolute mouse position
+				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) * mod )
+			)
+		};
+
+	},
+
+	_generatePosition: function(event) {
+
+		var containment, co, top, left,
+			o = this.options,
+			scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent,
+			pageX = event.pageX,
+			pageY = event.pageY;
+
+		//Cache the scroll
+		if (!this.offset.scroll) {
+			this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()};
+		}
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		// If we are not dragging yet, we won't check for options
+		if ( this.originalPosition ) {
+			if ( this.containment ) {
+				if ( this.relative_container ){
+					co = this.relative_container.offset();
+					containment = [
+						this.containment[ 0 ] + co.left,
+						this.containment[ 1 ] + co.top,
+						this.containment[ 2 ] + co.left,
+						this.containment[ 3 ] + co.top
+					];
+				}
+				else {
+					containment = this.containment;
+				}
+
+				if(event.pageX - this.offset.click.left < containment[0]) {
+					pageX = containment[0] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top < containment[1]) {
+					pageY = containment[1] + this.offset.click.top;
+				}
+				if(event.pageX - this.offset.click.left > containment[2]) {
+					pageX = containment[2] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top > containment[3]) {
+					pageY = containment[3] + this.offset.click.top;
+				}
+			}
+
+			if(o.grid) {
+				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
+				top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
+				pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
+
+				left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
+				pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
+			}
+
+		}
+
+		return {
+			top: (
+				pageY -																	// The absolute mouse position
+				this.offset.click.top	-												// Click offset (relative to the element)
+				this.offset.relative.top -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
+				( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top )
+			),
+			left: (
+				pageX -																	// The absolute mouse position
+				this.offset.click.left -												// Click offset (relative to the element)
+				this.offset.relative.left -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
+				( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left )
+			)
+		};
+
+	},
+
+	_clear: function() {
+		this.helper.removeClass("ui-draggable-dragging");
+		if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
+			this.helper.remove();
+		}
+		this.helper = null;
+		this.cancelHelperRemoval = false;
+	},
+
+	// From now on bulk stuff - mainly helpers
+
+	_trigger: function(type, event, ui) {
+		ui = ui || this._uiHash();
+		$.ui.plugin.call(this, type, [event, ui]);
+		//The absolute position has to be recalculated after plugins
+		if(type === "drag") {
+			this.positionAbs = this._convertPositionTo("absolute");
+		}
+		return $.Widget.prototype._trigger.call(this, type, event, ui);
+	},
+
+	plugins: {},
+
+	_uiHash: function() {
+		return {
+			helper: this.helper,
+			position: this.position,
+			originalPosition: this.originalPosition,
+			offset: this.positionAbs
+		};
+	}
+
+});
+
+$.ui.plugin.add("draggable", "connectToSortable", {
+	start: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), o = inst.options,
+			uiSortable = $.extend({}, ui, { item: inst.element });
+		inst.sortables = [];
+		$(o.connectToSortable).each(function() {
+			var sortable = $.data(this, "ui-sortable");
+			if (sortable && !sortable.options.disabled) {
+				inst.sortables.push({
+					instance: sortable,
+					shouldRevert: sortable.options.revert
+				});
+				sortable.refreshPositions();	// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
+				sortable._trigger("activate", event, uiSortable);
+			}
+		});
+
+	},
+	stop: function(event, ui) {
+
+		//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
+		var inst = $(this).data("ui-draggable"),
+			uiSortable = $.extend({}, ui, { item: inst.element });
+
+		$.each(inst.sortables, function() {
+			if(this.instance.isOver) {
+
+				this.instance.isOver = 0;
+
+				inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
+				this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
+
+				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid"
+				if(this.shouldRevert) {
+					this.instance.options.revert = this.shouldRevert;
+				}
+
+				//Trigger the stop of the sortable
+				this.instance._mouseStop(event);
+
+				this.instance.options.helper = this.instance.options._helper;
+
+				//If the helper has been the original item, restore properties in the sortable
+				if(inst.options.helper === "original") {
+					this.instance.currentItem.css({ top: "auto", left: "auto" });
+				}
+
+			} else {
+				this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
+				this.instance._trigger("deactivate", event, uiSortable);
+			}
+
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), that = this;
+
+		$.each(inst.sortables, function() {
+
+			var innermostIntersecting = false,
+				thisSortable = this;
+
+			//Copy over some variables to allow calling the sortable's native _intersectsWith
+			this.instance.positionAbs = inst.positionAbs;
+			this.instance.helperProportions = inst.helperProportions;
+			this.instance.offset.click = inst.offset.click;
+
+			if(this.instance._intersectsWith(this.instance.containerCache)) {
+				innermostIntersecting = true;
+				$.each(inst.sortables, function () {
+					this.instance.positionAbs = inst.positionAbs;
+					this.instance.helperProportions = inst.helperProportions;
+					this.instance.offset.click = inst.offset.click;
+					if (this !== thisSortable &&
+						this.instance._intersectsWith(this.instance.containerCache) &&
+						$.contains(thisSortable.instance.element[0], this.instance.element[0])
+					) {
+						innermostIntersecting = false;
+					}
+					return innermostIntersecting;
+				});
+			}
+
+
+			if(innermostIntersecting) {
+				//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
+				if(!this.instance.isOver) {
+
+					this.instance.isOver = 1;
+					//Now we fake the start of dragging for the sortable instance,
+					//by cloning the list group item, appending it to the sortable and using it as inst.currentItem
+					//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
+					this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true);
+					this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
+					this.instance.options.helper = function() { return ui.helper[0]; };
+
+					event.target = this.instance.currentItem[0];
+					this.instance._mouseCapture(event, true);
+					this.instance._mouseStart(event, true, true);
+
+					//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
+					this.instance.offset.click.top = inst.offset.click.top;
+					this.instance.offset.click.left = inst.offset.click.left;
+					this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
+					this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
+
+					inst._trigger("toSortable", event);
+					inst.dropped = this.instance.element; //draggable revert needs that
+					//hack so receive/update callbacks work (mostly)
+					inst.currentItem = inst.element;
+					this.instance.fromOutside = inst;
+
+				}
+
+				//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
+				if(this.instance.currentItem) {
+					this.instance._mouseDrag(event);
+				}
+
+			} else {
+
+				//If it doesn't intersect with the sortable, and it intersected before,
+				//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
+				if(this.instance.isOver) {
+
+					this.instance.isOver = 0;
+					this.instance.cancelHelperRemoval = true;
+
+					//Prevent reverting on this forced stop
+					this.instance.options.revert = false;
+
+					// The out event needs to be triggered independently
+					this.instance._trigger("out", event, this.instance._uiHash(this.instance));
+
+					this.instance._mouseStop(event, true);
+					this.instance.options.helper = this.instance.options._helper;
+
+					//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
+					this.instance.currentItem.remove();
+					if(this.instance.placeholder) {
+						this.instance.placeholder.remove();
+					}
+
+					inst._trigger("fromSortable", event);
+					inst.dropped = false; //draggable revert needs that
+				}
+
+			}
+
+		});
+
+	}
+});
+
+$.ui.plugin.add("draggable", "cursor", {
+	start: function() {
+		var t = $("body"), o = $(this).data("ui-draggable").options;
+		if (t.css("cursor")) {
+			o._cursor = t.css("cursor");
+		}
+		t.css("cursor", o.cursor);
+	},
+	stop: function() {
+		var o = $(this).data("ui-draggable").options;
+		if (o._cursor) {
+			$("body").css("cursor", o._cursor);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "opacity", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("opacity")) {
+			o._opacity = t.css("opacity");
+		}
+		t.css("opacity", o.opacity);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._opacity) {
+			$(ui.helper).css("opacity", o._opacity);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "scroll", {
+	start: function() {
+		var i = $(this).data("ui-draggable");
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+			i.overflowOffset = i.scrollParent.offset();
+		}
+	},
+	drag: function( event ) {
+
+		var i = $(this).data("ui-draggable"), o = i.options, scrolled = false;
+
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+
+			if(!o.axis || o.axis !== "x") {
+				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
+				} else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
+				} else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
+				}
+			}
+
+		} else {
+
+			if(!o.axis || o.axis !== "x") {
+				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+				}
+			}
+
+		}
+
+		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(i, event);
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "snap", {
+	start: function() {
+
+		var i = $(this).data("ui-draggable"),
+			o = i.options;
+
+		i.snapElements = [];
+
+		$(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
+			var $t = $(this),
+				$o = $t.offset();
+			if(this !== i.element[0]) {
+				i.snapElements.push({
+					item: this,
+					width: $t.outerWidth(), height: $t.outerHeight(),
+					top: $o.top, left: $o.left
+				});
+			}
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var ts, bs, ls, rs, l, r, t, b, i, first,
+			inst = $(this).data("ui-draggable"),
+			o = inst.options,
+			d = o.snapTolerance,
+			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
+			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
+
+		for (i = inst.snapElements.length - 1; i >= 0; i--){
+
+			l = inst.snapElements[i].left;
+			r = l + inst.snapElements[i].width;
+			t = inst.snapElements[i].top;
+			b = t + inst.snapElements[i].height;
+
+			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {
+				if(inst.snapElements[i].snapping) {
+					(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+				}
+				inst.snapElements[i].snapping = false;
+				continue;
+			}
+
+			if(o.snapMode !== "inner") {
+				ts = Math.abs(t - y2) <= d;
+				bs = Math.abs(b - y1) <= d;
+				ls = Math.abs(l - x2) <= d;
+				rs = Math.abs(r - x1) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
+				}
+			}
+
+			first = (ts || bs || ls || rs);
+
+			if(o.snapMode !== "outer") {
+				ts = Math.abs(t - y1) <= d;
+				bs = Math.abs(b - y2) <= d;
+				ls = Math.abs(l - x1) <= d;
+				rs = Math.abs(r - x2) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
+				}
+			}
+
+			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
+				(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+			}
+			inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
+
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "stack", {
+	start: function() {
+		var min,
+			o = this.data("ui-draggable").options,
+			group = $.makeArray($(o.stack)).sort(function(a,b) {
+				return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
+			});
+
+		if (!group.length) { return; }
+
+		min = parseInt($(group[0]).css("zIndex"), 10) || 0;
+		$(group).each(function(i) {
+			$(this).css("zIndex", min + i);
+		});
+		this.css("zIndex", (min + group.length));
+	}
+});
+
+$.ui.plugin.add("draggable", "zIndex", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("zIndex")) {
+			o._zIndex = t.css("zIndex");
+		}
+		t.css("zIndex", o.zIndex);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._zIndex) {
+			$(ui.helper).css("zIndex", o._zIndex);
+		}
+	}
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+function isOverAxis( x, reference, size ) {
+	return ( x > reference ) && ( x < ( reference + size ) );
+}
+
+$.widget("ui.droppable", {
+	version: "1.10.3",
+	widgetEventPrefix: "drop",
+	options: {
+		accept: "*",
+		activeClass: false,
+		addClasses: true,
+		greedy: false,
+		hoverClass: false,
+		scope: "default",
+		tolerance: "intersect",
+
+		// callbacks
+		activate: null,
+		deactivate: null,
+		drop: null,
+		out: null,
+		over: null
+	},
+	_create: function() {
+
+		var o = this.options,
+			accept = o.accept;
+
+		this.isover = false;
+		this.isout = true;
+
+		this.accept = $.isFunction(accept) ? accept : function(d) {
+			return d.is(accept);
+		};
+
+		//Store the droppable's proportions
+		this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };
+
+		// Add the reference and positions to the manager
+		$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
+		$.ui.ddmanager.droppables[o.scope].push(this);
+
+		(o.addClasses && this.element.addClass("ui-droppable"));
+
+	},
+
+	_destroy: function() {
+		var i = 0,
+			drop = $.ui.ddmanager.droppables[this.options.scope];
+
+		for ( ; i < drop.length; i++ ) {
+			if ( drop[i] === this ) {
+				drop.splice(i, 1);
+			}
+		}
+
+		this.element.removeClass("ui-droppable ui-droppable-disabled");
+	},
+
+	_setOption: function(key, value) {
+
+		if(key === "accept") {
+			this.accept = $.isFunction(value) ? value : function(d) {
+				return d.is(value);
+			};
+		}
+		$.Widget.prototype._setOption.apply(this, arguments);
+	},
+
+	_activate: function(event) {
+		var draggable = $.ui.ddmanager.current;
+		if(this.options.activeClass) {
+			this.element.addClass(this.options.activeClass);
+		}
+		if(draggable){
+			this._trigger("activate", event, this.ui(draggable));
+		}
+	},
+
+	_deactivate: function(event) {
+		var draggable = $.ui.ddmanager.current;
+		if(this.options.activeClass) {
+			this.element.removeClass(this.options.activeClass);
+		}
+		if(draggable){
+			this._trigger("deactivate", event, this.ui(draggable));
+		}
+	},
+
+	_over: function(event) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return;
+		}
+
+		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.hoverClass) {
+				this.element.addClass(this.options.hoverClass);
+			}
+			this._trigger("over", event, this.ui(draggable));
+		}
+
+	},
+
+	_out: function(event) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return;
+		}
+
+		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.hoverClass) {
+				this.element.removeClass(this.options.hoverClass);
+			}
+			this._trigger("out", event, this.ui(draggable));
+		}
+
+	},
+
+	_drop: function(event,custom) {
+
+		var draggable = custom || $.ui.ddmanager.current,
+			childrenIntersection = false;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return false;
+		}
+
+		this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
+			var inst = $.data(this, "ui-droppable");
+			if(
+				inst.options.greedy &&
+				!inst.options.disabled &&
+				inst.options.scope === draggable.options.scope &&
+				inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) &&
+				$.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
+			) { childrenIntersection = true; return false; }
+		});
+		if(childrenIntersection) {
+			return false;
+		}
+
+		if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.activeClass) {
+				this.element.removeClass(this.options.activeClass);
+			}
+			if(this.options.hoverClass) {
+				this.element.removeClass(this.options.hoverClass);
+			}
+			this._trigger("drop", event, this.ui(draggable));
+			return this.element;
+		}
+
+		return false;
+
+	},
+
+	ui: function(c) {
+		return {
+			draggable: (c.currentItem || c.element),
+			helper: c.helper,
+			position: c.position,
+			offset: c.positionAbs
+		};
+	}
+
+});
+
+$.ui.intersect = function(draggable, droppable, toleranceMode) {
+
+	if (!droppable.offset) {
+		return false;
+	}
+
+	var draggableLeft, draggableTop,
+		x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
+		y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height,
+		l = droppable.offset.left, r = l + droppable.proportions.width,
+		t = droppable.offset.top, b = t + droppable.proportions.height;
+
+	switch (toleranceMode) {
+		case "fit":
+			return (l <= x1 && x2 <= r && t <= y1 && y2 <= b);
+		case "intersect":
+			return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half
+				x2 - (draggable.helperProportions.width / 2) < r && // Left Half
+				t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half
+				y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
+		case "pointer":
+			draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left);
+			draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top);
+			return isOverAxis( draggableTop, t, droppable.proportions.height ) && isOverAxis( draggableLeft, l, droppable.proportions.width );
+		case "touch":
+			return (
+				(y1 >= t && y1 <= b) ||	// Top edge touching
+				(y2 >= t && y2 <= b) ||	// Bottom edge touching
+				(y1 < t && y2 > b)		// Surrounded vertically
+			) && (
+				(x1 >= l && x1 <= r) ||	// Left edge touching
+				(x2 >= l && x2 <= r) ||	// Right edge touching
+				(x1 < l && x2 > r)		// Surrounded horizontally
+			);
+		default:
+			return false;
+		}
+
+};
+
+/*
+	This manager tracks offsets of draggables and droppables
+*/
+$.ui.ddmanager = {
+	current: null,
+	droppables: { "default": [] },
+	prepareOffsets: function(t, event) {
+
+		var i, j,
+			m = $.ui.ddmanager.droppables[t.options.scope] || [],
+			type = event ? event.type : null, // workaround for #2317
+			list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack();
+
+		droppablesLoop: for (i = 0; i < m.length; i++) {
+
+			//No disabled and non-accepted
+			if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) {
+				continue;
+			}
+
+			// Filter out elements in the current dragged item
+			for (j=0; j < list.length; j++) {
+				if(list[j] === m[i].element[0]) {
+					m[i].proportions.height = 0;
+					continue droppablesLoop;
+				}
+			}
+
+			m[i].visible = m[i].element.css("display") !== "none";
+			if(!m[i].visible) {
+				continue;
+			}
+
+			//Activate the droppable if used directly from draggables
+			if(type === "mousedown") {
+				m[i]._activate.call(m[i], event);
+			}
+
+			m[i].offset = m[i].element.offset();
+			m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
+
+		}
+
+	},
+	drop: function(draggable, event) {
+
+		var dropped = false;
+		// Create a copy of the droppables in case the list changes during the drop (#9116)
+		$.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() {
+
+			if(!this.options) {
+				return;
+			}
+			if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) {
+				dropped = this._drop.call(this, event) || dropped;
+			}
+
+			if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+				this.isout = true;
+				this.isover = false;
+				this._deactivate.call(this, event);
+			}
+
+		});
+		return dropped;
+
+	},
+	dragStart: function( draggable, event ) {
+		//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
+		draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
+			if( !draggable.options.refreshPositions ) {
+				$.ui.ddmanager.prepareOffsets( draggable, event );
+			}
+		});
+	},
+	drag: function(draggable, event) {
+
+		//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
+		if(draggable.options.refreshPositions) {
+			$.ui.ddmanager.prepareOffsets(draggable, event);
+		}
+
+		//Run through all droppables and check their positions based on specific tolerance options
+		$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
+
+			if(this.options.disabled || this.greedyChild || !this.visible) {
+				return;
+			}
+
+			var parentInstance, scope, parent,
+				intersects = $.ui.intersect(draggable, this, this.options.tolerance),
+				c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null);
+			if(!c) {
+				return;
+			}
+
+			if (this.options.greedy) {
+				// find droppable parents with same scope
+				scope = this.options.scope;
+				parent = this.element.parents(":data(ui-droppable)").filter(function () {
+					return $.data(this, "ui-droppable").options.scope === scope;
+				});
+
+				if (parent.length) {
+					parentInstance = $.data(parent[0], "ui-droppable");
+					parentInstance.greedyChild = (c === "isover");
+				}
+			}
+
+			// we just moved into a greedy child
+			if (parentInstance && c === "isover") {
+				parentInstance.isover = false;
+				parentInstance.isout = true;
+				parentInstance._out.call(parentInstance, event);
+			}
+
+			this[c] = true;
+			this[c === "isout" ? "isover" : "isout"] = false;
+			this[c === "isover" ? "_over" : "_out"].call(this, event);
+
+			// we just moved out of a greedy child
+			if (parentInstance && c === "isout") {
+				parentInstance.isout = false;
+				parentInstance.isover = true;
+				parentInstance._over.call(parentInstance, event);
+			}
+		});
+
+	},
+	dragStop: function( draggable, event ) {
+		draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
+		//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
+		if( !draggable.options.refreshPositions ) {
+			$.ui.ddmanager.prepareOffsets( draggable, event );
+		}
+	}
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+function num(v) {
+	return parseInt(v, 10) || 0;
+}
+
+function isNumber(value) {
+	return !isNaN(parseInt(value, 10));
+}
+
+$.widget("ui.resizable", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "resize",
+	options: {
+		alsoResize: false,
+		animate: false,
+		animateDuration: "slow",
+		animateEasing: "swing",
+		aspectRatio: false,
+		autoHide: false,
+		containment: false,
+		ghost: false,
+		grid: false,
+		handles: "e,s,se",
+		helper: false,
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 10,
+		minWidth: 10,
+		// See #7960
+		zIndex: 90,
+
+		// callbacks
+		resize: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		var n, i, handle, axis, hname,
+			that = this,
+			o = this.options;
+		this.element.addClass("ui-resizable");
+
+		$.extend(this, {
+			_aspectRatio: !!(o.aspectRatio),
+			aspectRatio: o.aspectRatio,
+			originalElement: this.element,
+			_proportionallyResizeElements: [],
+			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
+		});
+
+		//Wrap the element if it cannot hold child nodes
+		if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
+
+			//Create a wrapper element and set the wrapper to the new current internal element
+			this.element.wrap(
+				$("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
+					position: this.element.css("position"),
+					width: this.element.outerWidth(),
+					height: this.element.outerHeight(),
+					top: this.element.css("top"),
+					left: this.element.css("left")
+				})
+			);
+
+			//Overwrite the original this.element
+			this.element = this.element.parent().data(
+				"ui-resizable", this.element.data("ui-resizable")
+			);
+
+			this.elementIsWrapper = true;
+
+			//Move margins to the wrapper
+			this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
+			this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
+
+			//Prevent Safari textarea resize
+			this.originalResizeStyle = this.originalElement.css("resize");
+			this.originalElement.css("resize", "none");
+
+			//Push the actual element to our proportionallyResize internal array
+			this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" }));
+
+			// avoid IE jump (hard set the margin)
+			this.originalElement.css({ margin: this.originalElement.css("margin") });
+
+			// fix handlers offset
+			this._proportionallyResize();
+
+		}
+
+		this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" });
+		if(this.handles.constructor === String) {
+
+			if ( this.handles === "all") {
+				this.handles = "n,e,s,w,se,sw,ne,nw";
+			}
+
+			n = this.handles.split(",");
+			this.handles = {};
+
+			for(i = 0; i < n.length; i++) {
+
+				handle = $.trim(n[i]);
+				hname = "ui-resizable-"+handle;
+				axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
+
+				// Apply zIndex to all handles - see #7960
+				axis.css({ zIndex: o.zIndex });
+
+				//TODO : What's going on here?
+				if ("se" === handle) {
+					axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
+				}
+
+				//Insert into internal handles object and append to element
+				this.handles[handle] = ".ui-resizable-"+handle;
+				this.element.append(axis);
+			}
+
+		}
+
+		this._renderAxis = function(target) {
+
+			var i, axis, padPos, padWrapper;
+
+			target = target || this.element;
+
+			for(i in this.handles) {
+
+				if(this.handles[i].constructor === String) {
+					this.handles[i] = $(this.handles[i], this.element).show();
+				}
+
+				//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
+				if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
+
+					axis = $(this.handles[i], this.element);
+
+					//Checking the correct pad and border
+					padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
+
+					//The padding type i have to apply...
+					padPos = [ "padding",
+						/ne|nw|n/.test(i) ? "Top" :
+						/se|sw|s/.test(i) ? "Bottom" :
+						/^e$/.test(i) ? "Right" : "Left" ].join("");
+
+					target.css(padPos, padWrapper);
+
+					this._proportionallyResize();
+
+				}
+
+				//TODO: What's that good for? There's not anything to be executed left
+				if(!$(this.handles[i]).length) {
+					continue;
+				}
+			}
+		};
+
+		//TODO: make renderAxis a prototype function
+		this._renderAxis(this.element);
+
+		this._handles = $(".ui-resizable-handle", this.element)
+			.disableSelection();
+
+		//Matching axis name
+		this._handles.mouseover(function() {
+			if (!that.resizing) {
+				if (this.className) {
+					axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
+				}
+				//Axis, default = se
+				that.axis = axis && axis[1] ? axis[1] : "se";
+			}
+		});
+
+		//If we want to auto hide the elements
+		if (o.autoHide) {
+			this._handles.hide();
+			$(this.element)
+				.addClass("ui-resizable-autohide")
+				.mouseenter(function() {
+					if (o.disabled) {
+						return;
+					}
+					$(this).removeClass("ui-resizable-autohide");
+					that._handles.show();
+				})
+				.mouseleave(function(){
+					if (o.disabled) {
+						return;
+					}
+					if (!that.resizing) {
+						$(this).addClass("ui-resizable-autohide");
+						that._handles.hide();
+					}
+				});
+		}
+
+		//Initialize the mouse interaction
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+
+		this._mouseDestroy();
+
+		var wrapper,
+			_destroy = function(exp) {
+				$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
+					.removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove();
+			};
+
+		//TODO: Unwrap at same DOM position
+		if (this.elementIsWrapper) {
+			_destroy(this.element);
+			wrapper = this.element;
+			this.originalElement.css({
+				position: wrapper.css("position"),
+				width: wrapper.outerWidth(),
+				height: wrapper.outerHeight(),
+				top: wrapper.css("top"),
+				left: wrapper.css("left")
+			}).insertAfter( wrapper );
+			wrapper.remove();
+		}
+
+		this.originalElement.css("resize", this.originalResizeStyle);
+		_destroy(this.originalElement);
+
+		return this;
+	},
+
+	_mouseCapture: function(event) {
+		var i, handle,
+			capture = false;
+
+		for (i in this.handles) {
+			handle = $(this.handles[i])[0];
+			if (handle === event.target || $.contains(handle, event.target)) {
+				capture = true;
+			}
+		}
+
+		return !this.options.disabled && capture;
+	},
+
+	_mouseStart: function(event) {
+
+		var curleft, curtop, cursor,
+			o = this.options,
+			iniPos = this.element.position(),
+			el = this.element;
+
+		this.resizing = true;
+
+		// bugfix for http://dev.jquery.com/ticket/1749
+		if ( (/absolute/).test( el.css("position") ) ) {
+			el.css({ position: "absolute", top: el.css("top"), left: el.css("left") });
+		} else if (el.is(".ui-draggable")) {
+			el.css({ position: "absolute", top: iniPos.top, left: iniPos.left });
+		}
+
+		this._renderProxy();
+
+		curleft = num(this.helper.css("left"));
+		curtop = num(this.helper.css("top"));
+
+		if (o.containment) {
+			curleft += $(o.containment).scrollLeft() || 0;
+			curtop += $(o.containment).scrollTop() || 0;
+		}
+
+		//Store needed variables
+		this.offset = this.helper.offset();
+		this.position = { left: curleft, top: curtop };
+		this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalPosition = { left: curleft, top: curtop };
+		this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
+		this.originalMousePosition = { left: event.pageX, top: event.pageY };
+
+		//Aspect Ratio
+		this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
+
+		cursor = $(".ui-resizable-" + this.axis).css("cursor");
+		$("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
+
+		el.addClass("ui-resizable-resizing");
+		this._propagate("start", event);
+		return true;
+	},
+
+	_mouseDrag: function(event) {
+
+		//Increase performance, avoid regex
+		var data,
+			el = this.helper, props = {},
+			smp = this.originalMousePosition,
+			a = this.axis,
+			prevTop = this.position.top,
+			prevLeft = this.position.left,
+			prevWidth = this.size.width,
+			prevHeight = this.size.height,
+			dx = (event.pageX-smp.left)||0,
+			dy = (event.pageY-smp.top)||0,
+			trigger = this._change[a];
+
+		if (!trigger) {
+			return false;
+		}
+
+		// Calculate the attrs that will be change
+		data = trigger.apply(this, [event, dx, dy]);
+
+		// Put this in the mouseDrag handler since the user can start pressing shift while resizing
+		this._updateVirtualBoundaries(event.shiftKey);
+		if (this._aspectRatio || event.shiftKey) {
+			data = this._updateRatio(data, event);
+		}
+
+		data = this._respectSize(data, event);
+
+		this._updateCache(data);
+
+		// plugins callbacks need to be called first
+		this._propagate("resize", event);
+
+		if (this.position.top !== prevTop) {
+			props.top = this.position.top + "px";
+		}
+		if (this.position.left !== prevLeft) {
+			props.left = this.position.left + "px";
+		}
+		if (this.size.width !== prevWidth) {
+			props.width = this.size.width + "px";
+		}
+		if (this.size.height !== prevHeight) {
+			props.height = this.size.height + "px";
+		}
+		el.css(props);
+
+		if (!this._helper && this._proportionallyResizeElements.length) {
+			this._proportionallyResize();
+		}
+
+		// Call the user callback if the element was resized
+		if ( ! $.isEmptyObject(props) ) {
+			this._trigger("resize", event, this.ui());
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		this.resizing = false;
+		var pr, ista, soffseth, soffsetw, s, left, top,
+			o = this.options, that = this;
+
+		if(this._helper) {
+
+			pr = this._proportionallyResizeElements;
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName);
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height;
+			soffsetw = ista ? 0 : that.sizeDiff.width;
+
+			s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) };
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null;
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+			if (!o.animate) {
+				this.element.css($.extend(s, { top: top, left: left }));
+			}
+
+			that.helper.height(that.size.height);
+			that.helper.width(that.size.width);
+
+			if (this._helper && !o.animate) {
+				this._proportionallyResize();
+			}
+		}
+
+		$("body").css("cursor", "auto");
+
+		this.element.removeClass("ui-resizable-resizing");
+
+		this._propagate("stop", event);
+
+		if (this._helper) {
+			this.helper.remove();
+		}
+
+		return false;
+
+	},
+
+	_updateVirtualBoundaries: function(forceAspectRatio) {
+		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
+			o = this.options;
+
+		b = {
+			minWidth: isNumber(o.minWidth) ? o.minWidth : 0,
+			maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,
+			minHeight: isNumber(o.minHeight) ? o.minHeight : 0,
+			maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity
+		};
+
+		if(this._aspectRatio || forceAspectRatio) {
+			// We want to create an enclosing box whose aspect ration is the requested one
+			// First, compute the "projected" size for each dimension based on the aspect ratio and other dimension
+			pMinWidth = b.minHeight * this.aspectRatio;
+			pMinHeight = b.minWidth / this.aspectRatio;
+			pMaxWidth = b.maxHeight * this.aspectRatio;
+			pMaxHeight = b.maxWidth / this.aspectRatio;
+
+			if(pMinWidth > b.minWidth) {
+				b.minWidth = pMinWidth;
+			}
+			if(pMinHeight > b.minHeight) {
+				b.minHeight = pMinHeight;
+			}
+			if(pMaxWidth < b.maxWidth) {
+				b.maxWidth = pMaxWidth;
+			}
+			if(pMaxHeight < b.maxHeight) {
+				b.maxHeight = pMaxHeight;
+			}
+		}
+		this._vBoundaries = b;
+	},
+
+	_updateCache: function(data) {
+		this.offset = this.helper.offset();
+		if (isNumber(data.left)) {
+			this.position.left = data.left;
+		}
+		if (isNumber(data.top)) {
+			this.position.top = data.top;
+		}
+		if (isNumber(data.height)) {
+			this.size.height = data.height;
+		}
+		if (isNumber(data.width)) {
+			this.size.width = data.width;
+		}
+	},
+
+	_updateRatio: function( data ) {
+
+		var cpos = this.position,
+			csize = this.size,
+			a = this.axis;
+
+		if (isNumber(data.height)) {
+			data.width = (data.height * this.aspectRatio);
+		} else if (isNumber(data.width)) {
+			data.height = (data.width / this.aspectRatio);
+		}
+
+		if (a === "sw") {
+			data.left = cpos.left + (csize.width - data.width);
+			data.top = null;
+		}
+		if (a === "nw") {
+			data.top = cpos.top + (csize.height - data.height);
+			data.left = cpos.left + (csize.width - data.width);
+		}
+
+		return data;
+	},
+
+	_respectSize: function( data ) {
+
+		var o = this._vBoundaries,
+			a = this.axis,
+			ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
+			isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
+			dw = this.originalPosition.left + this.originalSize.width,
+			dh = this.position.top + this.size.height,
+			cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
+		if (isminw) {
+			data.width = o.minWidth;
+		}
+		if (isminh) {
+			data.height = o.minHeight;
+		}
+		if (ismaxw) {
+			data.width = o.maxWidth;
+		}
+		if (ismaxh) {
+			data.height = o.maxHeight;
+		}
+
+		if (isminw && cw) {
+			data.left = dw - o.minWidth;
+		}
+		if (ismaxw && cw) {
+			data.left = dw - o.maxWidth;
+		}
+		if (isminh && ch) {
+			data.top = dh - o.minHeight;
+		}
+		if (ismaxh && ch) {
+			data.top = dh - o.maxHeight;
+		}
+
+		// fixing jump error on top/left - bug #2330
+		if (!data.width && !data.height && !data.left && data.top) {
+			data.top = null;
+		} else if (!data.width && !data.height && !data.top && data.left) {
+			data.left = null;
+		}
+
+		return data;
+	},
+
+	_proportionallyResize: function() {
+
+		if (!this._proportionallyResizeElements.length) {
+			return;
+		}
+
+		var i, j, borders, paddings, prel,
+			element = this.helper || this.element;
+
+		for ( i=0; i < this._proportionallyResizeElements.length; i++) {
+
+			prel = this._proportionallyResizeElements[i];
+
+			if (!this.borderDif) {
+				this.borderDif = [];
+				borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")];
+				paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")];
+
+				for ( j = 0; j < borders.length; j++ ) {
+					this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 );
+				}
+			}
+
+			prel.css({
+				height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
+				width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
+			});
+
+		}
+
+	},
+
+	_renderProxy: function() {
+
+		var el = this.element, o = this.options;
+		this.elementOffset = el.offset();
+
+		if(this._helper) {
+
+			this.helper = this.helper || $("<div style='overflow:hidden;'></div>");
+
+			this.helper.addClass(this._helper).css({
+				width: this.element.outerWidth() - 1,
+				height: this.element.outerHeight() - 1,
+				position: "absolute",
+				left: this.elementOffset.left +"px",
+				top: this.elementOffset.top +"px",
+				zIndex: ++o.zIndex //TODO: Don't modify option
+			});
+
+			this.helper
+				.appendTo("body")
+				.disableSelection();
+
+		} else {
+			this.helper = this.element;
+		}
+
+	},
+
+	_change: {
+		e: function(event, dx) {
+			return { width: this.originalSize.width + dx };
+		},
+		w: function(event, dx) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { left: sp.left + dx, width: cs.width - dx };
+		},
+		n: function(event, dx, dy) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { top: sp.top + dy, height: cs.height - dy };
+		},
+		s: function(event, dx, dy) {
+			return { height: this.originalSize.height + dy };
+		},
+		se: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		sw: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		},
+		ne: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		nw: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		}
+	},
+
+	_propagate: function(n, event) {
+		$.ui.plugin.call(this, n, [event, this.ui()]);
+		(n !== "resize" && this._trigger(n, event, this.ui()));
+	},
+
+	plugins: {},
+
+	ui: function() {
+		return {
+			originalElement: this.originalElement,
+			element: this.element,
+			helper: this.helper,
+			position: this.position,
+			size: this.size,
+			originalSize: this.originalSize,
+			originalPosition: this.originalPosition
+		};
+	}
+
+});
+
+/*
+ * Resizable Extensions
+ */
+
+$.ui.plugin.add("resizable", "animate", {
+
+	stop: function( event ) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			pr = that._proportionallyResizeElements,
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName),
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height,
+			soffsetw = ista ? 0 : that.sizeDiff.width,
+			style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null,
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+		that.element.animate(
+			$.extend(style, top && left ? { top: top, left: left } : {}), {
+				duration: o.animateDuration,
+				easing: o.animateEasing,
+				step: function() {
+
+					var data = {
+						width: parseInt(that.element.css("width"), 10),
+						height: parseInt(that.element.css("height"), 10),
+						top: parseInt(that.element.css("top"), 10),
+						left: parseInt(that.element.css("left"), 10)
+					};
+
+					if (pr && pr.length) {
+						$(pr[0]).css({ width: data.width, height: data.height });
+					}
+
+					// propagating resize, and updating values for each animation step
+					that._updateCache(data);
+					that._propagate("resize", event);
+
+				}
+			}
+		);
+	}
+
+});
+
+$.ui.plugin.add("resizable", "containment", {
+
+	start: function() {
+		var element, p, co, ch, cw, width, height,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			el = that.element,
+			oc = o.containment,
+			ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
+
+		if (!ce) {
+			return;
+		}
+
+		that.containerElement = $(ce);
+
+		if (/document/.test(oc) || oc === document) {
+			that.containerOffset = { left: 0, top: 0 };
+			that.containerPosition = { left: 0, top: 0 };
+
+			that.parentData = {
+				element: $(document), left: 0, top: 0,
+				width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
+			};
+		}
+
+		// i'm a node, so compute top, left, right, bottom
+		else {
+			element = $(ce);
+			p = [];
+			$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
+
+			that.containerOffset = element.offset();
+			that.containerPosition = element.position();
+			that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
+
+			co = that.containerOffset;
+			ch = that.containerSize.height;
+			cw = that.containerSize.width;
+			width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw );
+			height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
+
+			that.parentData = {
+				element: ce, left: co.left, top: co.top, width: width, height: height
+			};
+		}
+	},
+
+	resize: function( event ) {
+		var woset, hoset, isParent, isOffsetRelative,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset, cp = that.position,
+			pRatio = that._aspectRatio || event.shiftKey,
+			cop = { top:0, left:0 }, ce = that.containerElement;
+
+		if (ce[0] !== document && (/static/).test(ce.css("position"))) {
+			cop = co;
+		}
+
+		if (cp.left < (that._helper ? co.left : 0)) {
+			that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+			that.position.left = o.helper ? co.left : 0;
+		}
+
+		if (cp.top < (that._helper ? co.top : 0)) {
+			that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+			that.position.top = that._helper ? co.top : 0;
+		}
+
+		that.offset.left = that.parentData.left+that.position.left;
+		that.offset.top = that.parentData.top+that.position.top;
+
+		woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width );
+		hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );
+
+		isParent = that.containerElement.get(0) === that.element.parent().get(0);
+		isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position"));
+
+		if(isParent && isOffsetRelative) {
+			woset -= that.parentData.left;
+		}
+
+		if (woset + that.size.width >= that.parentData.width) {
+			that.size.width = that.parentData.width - woset;
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+		}
+
+		if (hoset + that.size.height >= that.parentData.height) {
+			that.size.height = that.parentData.height - hoset;
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+		}
+	},
+
+	stop: function(){
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset,
+			cop = that.containerPosition,
+			ce = that.containerElement,
+			helper = $(that.helper),
+			ho = helper.offset(),
+			w = helper.outerWidth() - that.sizeDiff.width,
+			h = helper.outerHeight() - that.sizeDiff.height;
+
+		if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+		if (that._helper && !o.animate && (/static/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+	}
+});
+
+$.ui.plugin.add("resizable", "alsoResize", {
+
+	start: function () {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			_store = function (exp) {
+				$(exp).each(function() {
+					var el = $(this);
+					el.data("ui-resizable-alsoresize", {
+						width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
+						left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
+					});
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
+			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
+			else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
+		}else{
+			_store(o.alsoResize);
+		}
+	},
+
+	resize: function (event, ui) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			os = that.originalSize,
+			op = that.originalPosition,
+			delta = {
+				height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,
+				top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0
+			},
+
+			_alsoResize = function (exp, c) {
+				$(exp).each(function() {
+					var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
+						css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
+
+					$.each(css, function (i, prop) {
+						var sum = (start[prop]||0) + (delta[prop]||0);
+						if (sum && sum >= 0) {
+							style[prop] = sum || null;
+						}
+					});
+
+					el.css(style);
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
+			$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
+		}else{
+			_alsoResize(o.alsoResize);
+		}
+	},
+
+	stop: function () {
+		$(this).removeData("resizable-alsoresize");
+	}
+});
+
+$.ui.plugin.add("resizable", "ghost", {
+
+	start: function() {
+
+		var that = $(this).data("ui-resizable"), o = that.options, cs = that.size;
+
+		that.ghost = that.originalElement.clone();
+		that.ghost
+			.css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
+			.addClass("ui-resizable-ghost")
+			.addClass(typeof o.ghost === "string" ? o.ghost : "");
+
+		that.ghost.appendTo(that.helper);
+
+	},
+
+	resize: function(){
+		var that = $(this).data("ui-resizable");
+		if (that.ghost) {
+			that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width });
+		}
+	},
+
+	stop: function() {
+		var that = $(this).data("ui-resizable");
+		if (that.ghost && that.helper) {
+			that.helper.get(0).removeChild(that.ghost.get(0));
+		}
+	}
+
+});
+
+$.ui.plugin.add("resizable", "grid", {
+
+	resize: function() {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			cs = that.size,
+			os = that.originalSize,
+			op = that.originalPosition,
+			a = that.axis,
+			grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid,
+			gridX = (grid[0]||1),
+			gridY = (grid[1]||1),
+			ox = Math.round((cs.width - os.width) / gridX) * gridX,
+			oy = Math.round((cs.height - os.height) / gridY) * gridY,
+			newWidth = os.width + ox,
+			newHeight = os.height + oy,
+			isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
+			isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
+			isMinWidth = o.minWidth && (o.minWidth > newWidth),
+			isMinHeight = o.minHeight && (o.minHeight > newHeight);
+
+		o.grid = grid;
+
+		if (isMinWidth) {
+			newWidth = newWidth + gridX;
+		}
+		if (isMinHeight) {
+			newHeight = newHeight + gridY;
+		}
+		if (isMaxWidth) {
+			newWidth = newWidth - gridX;
+		}
+		if (isMaxHeight) {
+			newHeight = newHeight - gridY;
+		}
+
+		if (/^(se|s|e)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+		} else if (/^(ne)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+		} else if (/^(sw)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.left = op.left - ox;
+		} else {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+			that.position.left = op.left - ox;
+		}
+	}
+
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.widget("ui.selectable", $.ui.mouse, {
+	version: "1.10.3",
+	options: {
+		appendTo: "body",
+		autoRefresh: true,
+		distance: 0,
+		filter: "*",
+		tolerance: "touch",
+
+		// callbacks
+		selected: null,
+		selecting: null,
+		start: null,
+		stop: null,
+		unselected: null,
+		unselecting: null
+	},
+	_create: function() {
+		var selectees,
+			that = this;
+
+		this.element.addClass("ui-selectable");
+
+		this.dragged = false;
+
+		// cache selectee children based on filter
+		this.refresh = function() {
+			selectees = $(that.options.filter, that.element[0]);
+			selectees.addClass("ui-selectee");
+			selectees.each(function() {
+				var $this = $(this),
+					pos = $this.offset();
+				$.data(this, "selectable-item", {
+					element: this,
+					$element: $this,
+					left: pos.left,
+					top: pos.top,
+					right: pos.left + $this.outerWidth(),
+					bottom: pos.top + $this.outerHeight(),
+					startselected: false,
+					selected: $this.hasClass("ui-selected"),
+					selecting: $this.hasClass("ui-selecting"),
+					unselecting: $this.hasClass("ui-unselecting")
+				});
+			});
+		};
+		this.refresh();
+
+		this.selectees = selectees.addClass("ui-selectee");
+
+		this._mouseInit();
+
+		this.helper = $("<div class='ui-selectable-helper'></div>");
+	},
+
+	_destroy: function() {
+		this.selectees
+			.removeClass("ui-selectee")
+			.removeData("selectable-item");
+		this.element
+			.removeClass("ui-selectable ui-selectable-disabled");
+		this._mouseDestroy();
+	},
+
+	_mouseStart: function(event) {
+		var that = this,
+			options = this.options;
+
+		this.opos = [event.pageX, event.pageY];
+
+		if (this.options.disabled) {
+			return;
+		}
+
+		this.selectees = $(options.filter, this.element[0]);
+
+		this._trigger("start", event);
+
+		$(options.appendTo).append(this.helper);
+		// position helper (lasso)
+		this.helper.css({
+			"left": event.pageX,
+			"top": event.pageY,
+			"width": 0,
+			"height": 0
+		});
+
+		if (options.autoRefresh) {
+			this.refresh();
+		}
+
+		this.selectees.filter(".ui-selected").each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.startselected = true;
+			if (!event.metaKey && !event.ctrlKey) {
+				selectee.$element.removeClass("ui-selected");
+				selectee.selected = false;
+				selectee.$element.addClass("ui-unselecting");
+				selectee.unselecting = true;
+				// selectable UNSELECTING callback
+				that._trigger("unselecting", event, {
+					unselecting: selectee.element
+				});
+			}
+		});
+
+		$(event.target).parents().addBack().each(function() {
+			var doSelect,
+				selectee = $.data(this, "selectable-item");
+			if (selectee) {
+				doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");
+				selectee.$element
+					.removeClass(doSelect ? "ui-unselecting" : "ui-selected")
+					.addClass(doSelect ? "ui-selecting" : "ui-unselecting");
+				selectee.unselecting = !doSelect;
+				selectee.selecting = doSelect;
+				selectee.selected = doSelect;
+				// selectable (UN)SELECTING callback
+				if (doSelect) {
+					that._trigger("selecting", event, {
+						selecting: selectee.element
+					});
+				} else {
+					that._trigger("unselecting", event, {
+						unselecting: selectee.element
+					});
+				}
+				return false;
+			}
+		});
+
+	},
+
+	_mouseDrag: function(event) {
+
+		this.dragged = true;
+
+		if (this.options.disabled) {
+			return;
+		}
+
+		var tmp,
+			that = this,
+			options = this.options,
+			x1 = this.opos[0],
+			y1 = this.opos[1],
+			x2 = event.pageX,
+			y2 = event.pageY;
+
+		if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
+		if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }
+		this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
+
+		this.selectees.each(function() {
+			var selectee = $.data(this, "selectable-item"),
+				hit = false;
+
+			//prevent helper from being selected if appendTo: selectable
+			if (!selectee || selectee.element === that.element[0]) {
+				return;
+			}
+
+			if (options.tolerance === "touch") {
+				hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
+			} else if (options.tolerance === "fit") {
+				hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
+			}
+
+			if (hit) {
+				// SELECT
+				if (selectee.selected) {
+					selectee.$element.removeClass("ui-selected");
+					selectee.selected = false;
+				}
+				if (selectee.unselecting) {
+					selectee.$element.removeClass("ui-unselecting");
+					selectee.unselecting = false;
+				}
+				if (!selectee.selecting) {
+					selectee.$element.addClass("ui-selecting");
+					selectee.selecting = true;
+					// selectable SELECTING callback
+					that._trigger("selecting", event, {
+						selecting: selectee.element
+					});
+				}
+			} else {
+				// UNSELECT
+				if (selectee.selecting) {
+					if ((event.metaKey || event.ctrlKey) && selectee.startselected) {
+						selectee.$element.removeClass("ui-selecting");
+						selectee.selecting = false;
+						selectee.$element.addClass("ui-selected");
+						selectee.selected = true;
+					} else {
+						selectee.$element.removeClass("ui-selecting");
+						selectee.selecting = false;
+						if (selectee.startselected) {
+							selectee.$element.addClass("ui-unselecting");
+							selectee.unselecting = true;
+						}
+						// selectable UNSELECTING callback
+						that._trigger("unselecting", event, {
+							unselecting: selectee.element
+						});
+					}
+				}
+				if (selectee.selected) {
+					if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {
+						selectee.$element.removeClass("ui-selected");
+						selectee.selected = false;
+
+						selectee.$element.addClass("ui-unselecting");
+						selectee.unselecting = true;
+						// selectable UNSELECTING callback
+						that._trigger("unselecting", event, {
+							unselecting: selectee.element
+						});
+					}
+				}
+			}
+		});
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+		var that = this;
+
+		this.dragged = false;
+
+		$(".ui-unselecting", this.element[0]).each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.$element.removeClass("ui-unselecting");
+			selectee.unselecting = false;
+			selectee.startselected = false;
+			that._trigger("unselected", event, {
+				unselected: selectee.element
+			});
+		});
+		$(".ui-selecting", this.element[0]).each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.$element.removeClass("ui-selecting").addClass("ui-selected");
+			selectee.selecting = false;
+			selectee.selected = true;
+			selectee.startselected = true;
+			that._trigger("selected", event, {
+				selected: selectee.element
+			});
+		});
+		this._trigger("stop", event);
+
+		this.helper.remove();
+
+		return false;
+	}
+
+});
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+/*jshint loopfunc: true */
+
+function isOverAxis( x, reference, size ) {
+	return ( x > reference ) && ( x < ( reference + size ) );
+}
+
+function isFloating(item) {
+	return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display"));
+}
+
+$.widget("ui.sortable", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "sort",
+	ready: false,
+	options: {
+		appendTo: "parent",
+		axis: false,
+		connectWith: false,
+		containment: false,
+		cursor: "auto",
+		cursorAt: false,
+		dropOnEmpty: true,
+		forcePlaceholderSize: false,
+		forceHelperSize: false,
+		grid: false,
+		handle: false,
+		helper: "original",
+		items: "> *",
+		opacity: false,
+		placeholder: false,
+		revert: false,
+		scroll: true,
+		scrollSensitivity: 20,
+		scrollSpeed: 20,
+		scope: "default",
+		tolerance: "intersect",
+		zIndex: 1000,
+
+		// callbacks
+		activate: null,
+		beforeStop: null,
+		change: null,
+		deactivate: null,
+		out: null,
+		over: null,
+		receive: null,
+		remove: null,
+		sort: null,
+		start: null,
+		stop: null,
+		update: null
+	},
+	_create: function() {
+
+		var o = this.options;
+		this.containerCache = {};
+		this.element.addClass("ui-sortable");
+
+		//Get the items
+		this.refresh();
+
+		//Let's determine if the items are being displayed horizontally
+		this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false;
+
+		//Let's determine the parent's offset
+		this.offset = this.element.offset();
+
+		//Initialize mouse events for interaction
+		this._mouseInit();
+
+		//We're ready to go
+		this.ready = true;
+
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass("ui-sortable ui-sortable-disabled");
+		this._mouseDestroy();
+
+		for ( var i = this.items.length - 1; i >= 0; i-- ) {
+			this.items[i].item.removeData(this.widgetName + "-item");
+		}
+
+		return this;
+	},
+
+	_setOption: function(key, value){
+		if ( key === "disabled" ) {
+			this.options[ key ] = value;
+
+			this.widget().toggleClass( "ui-sortable-disabled", !!value );
+		} else {
+			// Don't call widget base _setOption for disable as it adds ui-state-disabled class
+			$.Widget.prototype._setOption.apply(this, arguments);
+		}
+	},
+
+	_mouseCapture: function(event, overrideHandle) {
+		var currentItem = null,
+			validHandle = false,
+			that = this;
+
+		if (this.reverting) {
+			return false;
+		}
+
+		if(this.options.disabled || this.options.type === "static") {
+			return false;
+		}
+
+		//We have to refresh the items data once first
+		this._refreshItems(event);
+
+		//Find out if the clicked node (or one of its parents) is a actual item in this.items
+		$(event.target).parents().each(function() {
+			if($.data(this, that.widgetName + "-item") === that) {
+				currentItem = $(this);
+				return false;
+			}
+		});
+		if($.data(event.target, that.widgetName + "-item") === that) {
+			currentItem = $(event.target);
+		}
+
+		if(!currentItem) {
+			return false;
+		}
+		if(this.options.handle && !overrideHandle) {
+			$(this.options.handle, currentItem).find("*").addBack().each(function() {
+				if(this === event.target) {
+					validHandle = true;
+				}
+			});
+			if(!validHandle) {
+				return false;
+			}
+		}
+
+		this.currentItem = currentItem;
+		this._removeCurrentsFromItems();
+		return true;
+
+	},
+
+	_mouseStart: function(event, overrideHandle, noActivation) {
+
+		var i, body,
+			o = this.options;
+
+		this.currentContainer = this;
+
+		//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
+		this.refreshPositions();
+
+		//Create and append the visible helper
+		this.helper = this._createHelper(event);
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Get the next scrolling parent
+		this.scrollParent = this.helper.scrollParent();
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.currentItem.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		$.extend(this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
+		});
+
+		// Only after we got the offset, we can change the helper's position to absolute
+		// TODO: Still need to figure out a way to make relative sorting possible
+		this.helper.css("position", "absolute");
+		this.cssPosition = this.helper.css("position");
+
+		//Generate the original position
+		this.originalPosition = this._generatePosition(event);
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
+
+		//Cache the former DOM position
+		this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
+
+		//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
+		if(this.helper[0] !== this.currentItem[0]) {
+			this.currentItem.hide();
+		}
+
+		//Create the placeholder
+		this._createPlaceholder();
+
+		//Set a containment if given in the options
+		if(o.containment) {
+			this._setContainment();
+		}
+
+		if( o.cursor && o.cursor !== "auto" ) { // cursor option
+			body = this.document.find( "body" );
+
+			// support: IE
+			this.storedCursor = body.css( "cursor" );
+			body.css( "cursor", o.cursor );
+
+			this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body );
+		}
+
+		if(o.opacity) { // opacity option
+			if (this.helper.css("opacity")) {
+				this._storedOpacity = this.helper.css("opacity");
+			}
+			this.helper.css("opacity", o.opacity);
+		}
+
+		if(o.zIndex) { // zIndex option
+			if (this.helper.css("zIndex")) {
+				this._storedZIndex = this.helper.css("zIndex");
+			}
+			this.helper.css("zIndex", o.zIndex);
+		}
+
+		//Prepare scrolling
+		if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
+			this.overflowOffset = this.scrollParent.offset();
+		}
+
+		//Call callbacks
+		this._trigger("start", event, this._uiHash());
+
+		//Recache the helper size
+		if(!this._preserveHelperProportions) {
+			this._cacheHelperProportions();
+		}
+
+
+		//Post "activate" events to possible containers
+		if( !noActivation ) {
+			for ( i = this.containers.length - 1; i >= 0; i-- ) {
+				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
+			}
+		}
+
+		//Prepare possible droppables
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.current = this;
+		}
+
+		if ($.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(this, event);
+		}
+
+		this.dragging = true;
+
+		this.helper.addClass("ui-sortable-helper");
+		this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
+		return true;
+
+	},
+
+	_mouseDrag: function(event) {
+		var i, item, itemElement, intersection,
+			o = this.options,
+			scrolled = false;
+
+		//Compute the helpers position
+		this.position = this._generatePosition(event);
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		if (!this.lastPositionAbs) {
+			this.lastPositionAbs = this.positionAbs;
+		}
+
+		//Do scrolling
+		if(this.options.scroll) {
+			if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
+
+				if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
+					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
+				} else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {
+					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
+				}
+
+				if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
+					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
+				} else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {
+					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
+				}
+
+			} else {
+
+				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+				}
+
+				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+				}
+
+			}
+
+			if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
+				$.ui.ddmanager.prepareOffsets(this, event);
+			}
+		}
+
+		//Regenerate the absolute position used for position checks
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		//Set the helper position
+		if(!this.options.axis || this.options.axis !== "y") {
+			this.helper[0].style.left = this.position.left+"px";
+		}
+		if(!this.options.axis || this.options.axis !== "x") {
+			this.helper[0].style.top = this.position.top+"px";
+		}
+
+		//Rearrange
+		for (i = this.items.length - 1; i >= 0; i--) {
+
+			//Cache variables and intersection, continue if no intersection
+			item = this.items[i];
+			itemElement = item.item[0];
+			intersection = this._intersectsWithPointer(item);
+			if (!intersection) {
+				continue;
+			}
+
+			// Only put the placeholder inside the current Container, skip all
+			// items form other containers. This works because when moving
+			// an item from one container to another the
+			// currentContainer is switched before the placeholder is moved.
+			//
+			// Without this moving items in "sub-sortables" can cause the placeholder to jitter
+			// beetween the outer and inner container.
+			if (item.instance !== this.currentContainer) {
+				continue;
+			}
+
+			// cannot intersect with itself
+			// no useless actions that have been done before
+			// no action if the item moved is the parent of the item checked
+			if (itemElement !== this.currentItem[0] &&
+				this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement &&
+				!$.contains(this.placeholder[0], itemElement) &&
+				(this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true)
+			) {
+
+				this.direction = intersection === 1 ? "down" : "up";
+
+				if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) {
+					this._rearrange(event, item);
+				} else {
+					break;
+				}
+
+				this._trigger("change", event, this._uiHash());
+				break;
+			}
+		}
+
+		//Post events to containers
+		this._contactContainers(event);
+
+		//Interconnect with droppables
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.drag(this, event);
+		}
+
+		//Call callbacks
+		this._trigger("sort", event, this._uiHash());
+
+		this.lastPositionAbs = this.positionAbs;
+		return false;
+
+	},
+
+	_mouseStop: function(event, noPropagation) {
+
+		if(!event) {
+			return;
+		}
+
+		//If we are using droppables, inform the manager about the drop
+		if ($.ui.ddmanager && !this.options.dropBehaviour) {
+			$.ui.ddmanager.drop(this, event);
+		}
+
+		if(this.options.revert) {
+			var that = this,
+				cur = this.placeholder.offset(),
+				axis = this.options.axis,
+				animation = {};
+
+			if ( !axis || axis === "x" ) {
+				animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft);
+			}
+			if ( !axis || axis === "y" ) {
+				animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop);
+			}
+			this.reverting = true;
+			$(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {
+				that._clear(event);
+			});
+		} else {
+			this._clear(event, noPropagation);
+		}
+
+		return false;
+
+	},
+
+	cancel: function() {
+
+		if(this.dragging) {
+
+			this._mouseUp({ target: null });
+
+			if(this.options.helper === "original") {
+				this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
+			} else {
+				this.currentItem.show();
+			}
+
+			//Post deactivating events to containers
+			for (var i = this.containers.length - 1; i >= 0; i--){
+				this.containers[i]._trigger("deactivate", null, this._uiHash(this));
+				if(this.containers[i].containerCache.over) {
+					this.containers[i]._trigger("out", null, this._uiHash(this));
+					this.containers[i].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		if (this.placeholder) {
+			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
+			if(this.placeholder[0].parentNode) {
+				this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+			}
+			if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) {
+				this.helper.remove();
+			}
+
+			$.extend(this, {
+				helper: null,
+				dragging: false,
+				reverting: false,
+				_noFinalSort: null
+			});
+
+			if(this.domPosition.prev) {
+				$(this.domPosition.prev).after(this.currentItem);
+			} else {
+				$(this.domPosition.parent).prepend(this.currentItem);
+			}
+		}
+
+		return this;
+
+	},
+
+	serialize: function(o) {
+
+		var items = this._getItemsAsjQuery(o && o.connected),
+			str = [];
+		o = o || {};
+
+		$(items).each(function() {
+			var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/));
+			if (res) {
+				str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2]));
+			}
+		});
+
+		if(!str.length && o.key) {
+			str.push(o.key + "=");
+		}
+
+		return str.join("&");
+
+	},
+
+	toArray: function(o) {
+
+		var items = this._getItemsAsjQuery(o && o.connected),
+			ret = [];
+
+		o = o || {};
+
+		items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); });
+		return ret;
+
+	},
+
+	/* Be careful with the following core functions */
+	_intersectsWith: function(item) {
+
+		var x1 = this.positionAbs.left,
+			x2 = x1 + this.helperProportions.width,
+			y1 = this.positionAbs.top,
+			y2 = y1 + this.helperProportions.height,
+			l = item.left,
+			r = l + item.width,
+			t = item.top,
+			b = t + item.height,
+			dyClick = this.offset.click.top,
+			dxClick = this.offset.click.left,
+			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),
+			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),
+			isOverElement = isOverElementHeight && isOverElementWidth;
+
+		if ( this.options.tolerance === "pointer" ||
+			this.options.forcePointerForContainers ||
+			(this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"])
+		) {
+			return isOverElement;
+		} else {
+
+			return (l < x1 + (this.helperProportions.width / 2) && // Right Half
+				x2 - (this.helperProportions.width / 2) < r && // Left Half
+				t < y1 + (this.helperProportions.height / 2) && // Bottom Half
+				y2 - (this.helperProportions.height / 2) < b ); // Top Half
+
+		}
+	},
+
+	_intersectsWithPointer: function(item) {
+
+		var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
+			isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
+			isOverElement = isOverElementHeight && isOverElementWidth,
+			verticalDirection = this._getDragVerticalDirection(),
+			horizontalDirection = this._getDragHorizontalDirection();
+
+		if (!isOverElement) {
+			return false;
+		}
+
+		return this.floating ?
+			( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 )
+			: ( verticalDirection && (verticalDirection === "down" ? 2 : 1) );
+
+	},
+
+	_intersectsWithSides: function(item) {
+
+		var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
+			isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
+			verticalDirection = this._getDragVerticalDirection(),
+			horizontalDirection = this._getDragHorizontalDirection();
+
+		if (this.floating && horizontalDirection) {
+			return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf));
+		} else {
+			return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf));
+		}
+
+	},
+
+	_getDragVerticalDirection: function() {
+		var delta = this.positionAbs.top - this.lastPositionAbs.top;
+		return delta !== 0 && (delta > 0 ? "down" : "up");
+	},
+
+	_getDragHorizontalDirection: function() {
+		var delta = this.positionAbs.left - this.lastPositionAbs.left;
+		return delta !== 0 && (delta > 0 ? "right" : "left");
+	},
+
+	refresh: function(event) {
+		this._refreshItems(event);
+		this.refreshPositions();
+		return this;
+	},
+
+	_connectWith: function() {
+		var options = this.options;
+		return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;
+	},
+
+	_getItemsAsjQuery: function(connected) {
+
+		var i, j, cur, inst,
+			items = [],
+			queries = [],
+			connectWith = this._connectWith();
+
+		if(connectWith && connected) {
+			for (i = connectWith.length - 1; i >= 0; i--){
+				cur = $(connectWith[i]);
+				for ( j = cur.length - 1; j >= 0; j--){
+					inst = $.data(cur[j], this.widgetFullName);
+					if(inst && inst !== this && !inst.options.disabled) {
+						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);
+					}
+				}
+			}
+		}
+
+		queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
+
+		for (i = queries.length - 1; i >= 0; i--){
+			queries[i][0].each(function() {
+				items.push(this);
+			});
+		}
+
+		return $(items);
+
+	},
+
+	_removeCurrentsFromItems: function() {
+
+		var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
+
+		this.items = $.grep(this.items, function (item) {
+			for (var j=0; j < list.length; j++) {
+				if(list[j] === item.item[0]) {
+					return false;
+				}
+			}
+			return true;
+		});
+
+	},
+
+	_refreshItems: function(event) {
+
+		this.items = [];
+		this.containers = [this];
+
+		var i, j, cur, inst, targetData, _queries, item, queriesLength,
+			items = this.items,
+			queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],
+			connectWith = this._connectWith();
+
+		if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down
+			for (i = connectWith.length - 1; i >= 0; i--){
+				cur = $(connectWith[i]);
+				for (j = cur.length - 1; j >= 0; j--){
+					inst = $.data(cur[j], this.widgetFullName);
+					if(inst && inst !== this && !inst.options.disabled) {
+						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
+						this.containers.push(inst);
+					}
+				}
+			}
+		}
+
+		for (i = queries.length - 1; i >= 0; i--) {
+			targetData = queries[i][1];
+			_queries = queries[i][0];
+
+			for (j=0, queriesLength = _queries.length; j < queriesLength; j++) {
+				item = $(_queries[j]);
+
+				item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager)
+
+				items.push({
+					item: item,
+					instance: targetData,
+					width: 0, height: 0,
+					left: 0, top: 0
+				});
+			}
+		}
+
+	},
+
+	refreshPositions: function(fast) {
+
+		//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
+		if(this.offsetParent && this.helper) {
+			this.offset.parent = this._getParentOffset();
+		}
+
+		var i, item, t, p;
+
+		for (i = this.items.length - 1; i >= 0; i--){
+			item = this.items[i];
+
+			//We ignore calculating positions of all connected containers when we're not over them
+			if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {
+				continue;
+			}
+
+			t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
+
+			if (!fast) {
+				item.width = t.outerWidth();
+				item.height = t.outerHeight();
+			}
+
+			p = t.offset();
+			item.left = p.left;
+			item.top = p.top;
+		}
+
+		if(this.options.custom && this.options.custom.refreshContainers) {
+			this.options.custom.refreshContainers.call(this);
+		} else {
+			for (i = this.containers.length - 1; i >= 0; i--){
+				p = this.containers[i].element.offset();
+				this.containers[i].containerCache.left = p.left;
+				this.containers[i].containerCache.top = p.top;
+				this.containers[i].containerCache.width	= this.containers[i].element.outerWidth();
+				this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
+			}
+		}
+
+		return this;
+	},
+
+	_createPlaceholder: function(that) {
+		that = that || this;
+		var className,
+			o = that.options;
+
+		if(!o.placeholder || o.placeholder.constructor === String) {
+			className = o.placeholder;
+			o.placeholder = {
+				element: function() {
+
+					var nodeName = that.currentItem[0].nodeName.toLowerCase(),
+						element = $( "<" + nodeName + ">", that.document[0] )
+							.addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
+							.removeClass("ui-sortable-helper");
+
+					if ( nodeName === "tr" ) {
+						that.currentItem.children().each(function() {
+							$( "<td>&#160;</td>", that.document[0] )
+								.attr( "colspan", $( this ).attr( "colspan" ) || 1 )
+								.appendTo( element );
+						});
+					} else if ( nodeName === "img" ) {
+						element.attr( "src", that.currentItem.attr( "src" ) );
+					}
+
+					if ( !className ) {
+						element.css( "visibility", "hidden" );
+					}
+
+					return element;
+				},
+				update: function(container, p) {
+
+					// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
+					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
+					if(className && !o.forcePlaceholderSize) {
+						return;
+					}
+
+					//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
+					if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); }
+					if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }
+				}
+			};
+		}
+
+		//Create the placeholder
+		that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
+
+		//Append it after the actual current item
+		that.currentItem.after(that.placeholder);
+
+		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
+		o.placeholder.update(that, that.placeholder);
+
+	},
+
+	_contactContainers: function(event) {
+		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating,
+			innermostContainer = null,
+			innermostIndex = null;
+
+		// get innermost container that intersects with item
+		for (i = this.containers.length - 1; i >= 0; i--) {
+
+			// never consider a container that's located within the item itself
+			if($.contains(this.currentItem[0], this.containers[i].element[0])) {
+				continue;
+			}
+
+			if(this._intersectsWith(this.containers[i].containerCache)) {
+
+				// if we've already found a container and it's more "inner" than this, then continue
+				if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {
+					continue;
+				}
+
+				innermostContainer = this.containers[i];
+				innermostIndex = i;
+
+			} else {
+				// container doesn't intersect. trigger "out" event if necessary
+				if(this.containers[i].containerCache.over) {
+					this.containers[i]._trigger("out", event, this._uiHash(this));
+					this.containers[i].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		// if no intersecting containers found, return
+		if(!innermostContainer) {
+			return;
+		}
+
+		// move the item into the container if it's not there already
+		if(this.containers.length === 1) {
+			if (!this.containers[innermostIndex].containerCache.over) {
+				this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
+				this.containers[innermostIndex].containerCache.over = 1;
+			}
+		} else {
+
+			//When entering a new container, we will find the item with the least distance and append our item near it
+			dist = 10000;
+			itemWithLeastDistance = null;
+			floating = innermostContainer.floating || isFloating(this.currentItem);
+			posProperty = floating ? "left" : "top";
+			sizeProperty = floating ? "width" : "height";
+			base = this.positionAbs[posProperty] + this.offset.click[posProperty];
+			for (j = this.items.length - 1; j >= 0; j--) {
+				if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {
+					continue;
+				}
+				if(this.items[j].item[0] === this.currentItem[0]) {
+					continue;
+				}
+				if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) {
+					continue;
+				}
+				cur = this.items[j].item.offset()[posProperty];
+				nearBottom = false;
+				if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){
+					nearBottom = true;
+					cur += this.items[j][sizeProperty];
+				}
+
+				if(Math.abs(cur - base) < dist) {
+					dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
+					this.direction = nearBottom ? "up": "down";
+				}
+			}
+
+			//Check if dropOnEmpty is enabled
+			if(!itemWithLeastDistance && !this.options.dropOnEmpty) {
+				return;
+			}
+
+			if(this.currentContainer === this.containers[innermostIndex]) {
+				return;
+			}
+
+			itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
+			this._trigger("change", event, this._uiHash());
+			this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
+			this.currentContainer = this.containers[innermostIndex];
+
+			//Update the placeholder
+			this.options.placeholder.update(this.currentContainer, this.placeholder);
+
+			this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
+			this.containers[innermostIndex].containerCache.over = 1;
+		}
+
+
+	},
+
+	_createHelper: function(event) {
+
+		var o = this.options,
+			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem);
+
+		//Add the helper to the DOM if that didn't happen already
+		if(!helper.parents("body").length) {
+			$(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
+		}
+
+		if(helper[0] === this.currentItem[0]) {
+			this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };
+		}
+
+		if(!helper[0].style.width || o.forceHelperSize) {
+			helper.width(this.currentItem.width());
+		}
+		if(!helper[0].style.height || o.forceHelperSize) {
+			helper.height(this.currentItem.height());
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function(obj) {
+		if (typeof obj === "string") {
+			obj = obj.split(" ");
+		}
+		if ($.isArray(obj)) {
+			obj = {left: +obj[0], top: +obj[1] || 0};
+		}
+		if ("left" in obj) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ("right" in obj) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ("top" in obj) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ("bottom" in obj) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+
+		//Get the offsetParent and cache its position
+		this.offsetParent = this.helper.offsetParent();
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
+		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
+		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		// This needs to be actually done for all browsers, since pageX/pageY includes this information
+		// with an ugly IE fix
+		if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
+			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if(this.cssPosition === "relative") {
+			var p = this.currentItem.position();
+			return {
+				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
+				left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
+			};
+		} else {
+			return { top: 0, left: 0 };
+		}
+
+	},
+
+	_cacheMargins: function() {
+		this.margins = {
+			left: (parseInt(this.currentItem.css("marginLeft"),10) || 0),
+			top: (parseInt(this.currentItem.css("marginTop"),10) || 0)
+		};
+	},
+
+	_cacheHelperProportions: function() {
+		this.helperProportions = {
+			width: this.helper.outerWidth(),
+			height: this.helper.outerHeight()
+		};
+	},
+
+	_setContainment: function() {
+
+		var ce, co, over,
+			o = this.options;
+		if(o.containment === "parent") {
+			o.containment = this.helper[0].parentNode;
+		}
+		if(o.containment === "document" || o.containment === "window") {
+			this.containment = [
+				0 - this.offset.relative.left - this.offset.parent.left,
+				0 - this.offset.relative.top - this.offset.parent.top,
+				$(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left,
+				($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+		if(!(/^(document|window|parent)$/).test(o.containment)) {
+			ce = $(o.containment)[0];
+			co = $(o.containment).offset();
+			over = ($(ce).css("overflow") !== "hidden");
+
+			this.containment = [
+				co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
+				co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
+				co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
+				co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+	},
+
+	_convertPositionTo: function(d, pos) {
+
+		if(!pos) {
+			pos = this.position;
+		}
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
+			scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		return {
+			top: (
+				pos.top	+																// The absolute mouse position
+				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top * mod -											// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
+			),
+			left: (
+				pos.left +																// The absolute mouse position
+				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
+			)
+		};
+
+	},
+
+	_generatePosition: function(event) {
+
+		var top, left,
+			o = this.options,
+			pageX = event.pageX,
+			pageY = event.pageY,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		// This is another very weird special case that only happens for relative elements:
+		// 1. If the css position is relative
+		// 2. and the scroll parent is the document or similar to the offset parent
+		// we have to refresh the relative offset during the scroll so there are no jumps
+		if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {
+			this.offset.relative = this._getRelativeOffset();
+		}
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		if(this.originalPosition) { //If we are not dragging yet, we won't check for options
+
+			if(this.containment) {
+				if(event.pageX - this.offset.click.left < this.containment[0]) {
+					pageX = this.containment[0] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top < this.containment[1]) {
+					pageY = this.containment[1] + this.offset.click.top;
+				}
+				if(event.pageX - this.offset.click.left > this.containment[2]) {
+					pageX = this.containment[2] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top > this.containment[3]) {
+					pageY = this.containment[3] + this.offset.click.top;
+				}
+			}
+
+			if(o.grid) {
+				top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
+				pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
+
+				left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
+				pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
+			}
+
+		}
+
+		return {
+			top: (
+				pageY -																// The absolute mouse position
+				this.offset.click.top -													// Click offset (relative to the element)
+				this.offset.relative.top	-											// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
+			),
+			left: (
+				pageX -																// The absolute mouse position
+				this.offset.click.left -												// Click offset (relative to the element)
+				this.offset.relative.left	-											// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
+			)
+		};
+
+	},
+
+	_rearrange: function(event, i, a, hardRefresh) {
+
+		a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling));
+
+		//Various things done here to improve the performance:
+		// 1. we create a setTimeout, that calls refreshPositions
+		// 2. on the instance, we have a counter variable, that get's higher after every append
+		// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
+		// 4. this lets only the last addition to the timeout stack through
+		this.counter = this.counter ? ++this.counter : 1;
+		var counter = this.counter;
+
+		this._delay(function() {
+			if(counter === this.counter) {
+				this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
+			}
+		});
+
+	},
+
+	_clear: function(event, noPropagation) {
+
+		this.reverting = false;
+		// We delay all events that have to be triggered to after the point where the placeholder has been removed and
+		// everything else normalized again
+		var i,
+			delayedTriggers = [];
+
+		// We first have to update the dom position of the actual currentItem
+		// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
+		if(!this._noFinalSort && this.currentItem.parent().length) {
+			this.placeholder.before(this.currentItem);
+		}
+		this._noFinalSort = null;
+
+		if(this.helper[0] === this.currentItem[0]) {
+			for(i in this._storedCSS) {
+				if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") {
+					this._storedCSS[i] = "";
+				}
+			}
+			this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
+		} else {
+			this.currentItem.show();
+		}
+
+		if(this.fromOutside && !noPropagation) {
+			delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
+		}
+		if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {
+			delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
+		}
+
+		// Check if the items Container has Changed and trigger appropriate
+		// events.
+		if (this !== this.currentContainer) {
+			if(!noPropagation) {
+				delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); };  }).call(this, this.currentContainer));
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this));  }; }).call(this, this.currentContainer));
+			}
+		}
+
+
+		//Post events to containers
+		for (i = this.containers.length - 1; i >= 0; i--){
+			if(!noPropagation) {
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); };  }).call(this, this.containers[i]));
+			}
+			if(this.containers[i].containerCache.over) {
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); };  }).call(this, this.containers[i]));
+				this.containers[i].containerCache.over = 0;
+			}
+		}
+
+		//Do what was originally in plugins
+		if ( this.storedCursor ) {
+			this.document.find( "body" ).css( "cursor", this.storedCursor );
+			this.storedStylesheet.remove();
+		}
+		if(this._storedOpacity) {
+			this.helper.css("opacity", this._storedOpacity);
+		}
+		if(this._storedZIndex) {
+			this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex);
+		}
+
+		this.dragging = false;
+		if(this.cancelHelperRemoval) {
+			if(!noPropagation) {
+				this._trigger("beforeStop", event, this._uiHash());
+				for (i=0; i < delayedTriggers.length; i++) {
+					delayedTriggers[i].call(this, event);
+				} //Trigger all delayed events
+				this._trigger("stop", event, this._uiHash());
+			}
+
+			this.fromOutside = false;
+			return false;
+		}
+
+		if(!noPropagation) {
+			this._trigger("beforeStop", event, this._uiHash());
+		}
+
+		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
+		this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+
+		if(this.helper[0] !== this.currentItem[0]) {
+			this.helper.remove();
+		}
+		this.helper = null;
+
+		if(!noPropagation) {
+			for (i=0; i < delayedTriggers.length; i++) {
+				delayedTriggers[i].call(this, event);
+			} //Trigger all delayed events
+			this._trigger("stop", event, this._uiHash());
+		}
+
+		this.fromOutside = false;
+		return true;
+
+	},
+
+	_trigger: function() {
+		if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
+			this.cancel();
+		}
+	},
+
+	_uiHash: function(_inst) {
+		var inst = _inst || this;
+		return {
+			helper: inst.helper,
+			placeholder: inst.placeholder || $([]),
+			position: inst.position,
+			originalPosition: inst.originalPosition,
+			offset: inst.positionAbs,
+			item: inst.currentItem,
+			sender: _inst ? _inst.element : null
+		};
+	}
+
+});
+
+})(jQuery);
+
+(function($, undefined) {
+
+var dataSpace = "ui-effects-";
+
+$.effects = {
+	effect: {}
+};
+
+/*!
+ * jQuery Color Animations v2.1.2
+ * https://github.com/jquery/jquery-color
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * Date: Wed Jan 16 08:47:09 2013 -0600
+ */
+(function( jQuery, undefined ) {
+
+	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
+
+	// plusequals test for += 100 -= 100
+	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
+	// a set of RE's that can match strings and generate color tuples.
+	stringParsers = [{
+			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ],
+					execResult[ 3 ],
+					execResult[ 4 ]
+				];
+			}
+		}, {
+			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ] * 2.55,
+					execResult[ 2 ] * 2.55,
+					execResult[ 3 ] * 2.55,
+					execResult[ 4 ]
+				];
+			}
+		}, {
+			// this regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+			// this regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			space: "hsla",
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ] / 100,
+					execResult[ 3 ] / 100,
+					execResult[ 4 ]
+				];
+			}
+		}],
+
+	// jQuery.Color( )
+	color = jQuery.Color = function( color, green, blue, alpha ) {
+		return new jQuery.Color.fn.parse( color, green, blue, alpha );
+	},
+	spaces = {
+		rgba: {
+			props: {
+				red: {
+					idx: 0,
+					type: "byte"
+				},
+				green: {
+					idx: 1,
+					type: "byte"
+				},
+				blue: {
+					idx: 2,
+					type: "byte"
+				}
+			}
+		},
+
+		hsla: {
+			props: {
+				hue: {
+					idx: 0,
+					type: "degrees"
+				},
+				saturation: {
+					idx: 1,
+					type: "percent"
+				},
+				lightness: {
+					idx: 2,
+					type: "percent"
+				}
+			}
+		}
+	},
+	propTypes = {
+		"byte": {
+			floor: true,
+			max: 255
+		},
+		"percent": {
+			max: 1
+		},
+		"degrees": {
+			mod: 360,
+			floor: true
+		}
+	},
+	support = color.support = {},
+
+	// element for support tests
+	supportElem = jQuery( "<p>" )[ 0 ],
+
+	// colors = jQuery.Color.names
+	colors,
+
+	// local aliases of functions called often
+	each = jQuery.each;
+
+// determine rgba support immediately
+supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
+support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
+
+// define cache name and alpha properties
+// for rgba and hsla spaces
+each( spaces, function( spaceName, space ) {
+	space.cache = "_" + spaceName;
+	space.props.alpha = {
+		idx: 3,
+		type: "percent",
+		def: 1
+	};
+});
+
+function clamp( value, prop, allowEmpty ) {
+	var type = propTypes[ prop.type ] || {};
+
+	if ( value == null ) {
+		return (allowEmpty || !prop.def) ? null : prop.def;
+	}
+
+	// ~~ is an short way of doing floor for positive numbers
+	value = type.floor ? ~~value : parseFloat( value );
+
+	// IE will pass in empty strings as value for alpha,
+	// which will hit this case
+	if ( isNaN( value ) ) {
+		return prop.def;
+	}
+
+	if ( type.mod ) {
+		// we add mod before modding to make sure that negatives values
+		// get converted properly: -10 -> 350
+		return (value + type.mod) % type.mod;
+	}
+
+	// for now all property types without mod have min and max
+	return 0 > value ? 0 : type.max < value ? type.max : value;
+}
+
+function stringParse( string ) {
+	var inst = color(),
+		rgba = inst._rgba = [];
+
+	string = string.toLowerCase();
+
+	each( stringParsers, function( i, parser ) {
+		var parsed,
+			match = parser.re.exec( string ),
+			values = match && parser.parse( match ),
+			spaceName = parser.space || "rgba";
+
+		if ( values ) {
+			parsed = inst[ spaceName ]( values );
+
+			// if this was an rgba parse the assignment might happen twice
+			// oh well....
+			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
+			rgba = inst._rgba = parsed._rgba;
+
+			// exit each( stringParsers ) here because we matched
+			return false;
+		}
+	});
+
+	// Found a stringParser that handled it
+	if ( rgba.length ) {
+
+		// if this came from a parsed string, force "transparent" when alpha is 0
+		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
+		if ( rgba.join() === "0,0,0,0" ) {
+			jQuery.extend( rgba, colors.transparent );
+		}
+		return inst;
+	}
+
+	// named colors
+	return colors[ string ];
+}
+
+color.fn = jQuery.extend( color.prototype, {
+	parse: function( red, green, blue, alpha ) {
+		if ( red === undefined ) {
+			this._rgba = [ null, null, null, null ];
+			return this;
+		}
+		if ( red.jquery || red.nodeType ) {
+			red = jQuery( red ).css( green );
+			green = undefined;
+		}
+
+		var inst = this,
+			type = jQuery.type( red ),
+			rgba = this._rgba = [];
+
+		// more than 1 argument specified - assume ( red, green, blue, alpha )
+		if ( green !== undefined ) {
+			red = [ red, green, blue, alpha ];
+			type = "array";
+		}
+
+		if ( type === "string" ) {
+			return this.parse( stringParse( red ) || colors._default );
+		}
+
+		if ( type === "array" ) {
+			each( spaces.rgba.props, function( key, prop ) {
+				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
+			});
+			return this;
+		}
+
+		if ( type === "object" ) {
+			if ( red instanceof color ) {
+				each( spaces, function( spaceName, space ) {
+					if ( red[ space.cache ] ) {
+						inst[ space.cache ] = red[ space.cache ].slice();
+					}
+				});
+			} else {
+				each( spaces, function( spaceName, space ) {
+					var cache = space.cache;
+					each( space.props, function( key, prop ) {
+
+						// if the cache doesn't exist, and we know how to convert
+						if ( !inst[ cache ] && space.to ) {
+
+							// if the value was null, we don't need to copy it
+							// if the key was alpha, we don't need to copy it either
+							if ( key === "alpha" || red[ key ] == null ) {
+								return;
+							}
+							inst[ cache ] = space.to( inst._rgba );
+						}
+
+						// this is the only case where we allow nulls for ALL properties.
+						// call clamp with alwaysAllowEmpty
+						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
+					});
+
+					// everything defined but alpha?
+					if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
+						// use the default of 1
+						inst[ cache ][ 3 ] = 1;
+						if ( space.from ) {
+							inst._rgba = space.from( inst[ cache ] );
+						}
+					}
+				});
+			}
+			return this;
+		}
+	},
+	is: function( compare ) {
+		var is = color( compare ),
+			same = true,
+			inst = this;
+
+		each( spaces, function( _, space ) {
+			var localCache,
+				isCache = is[ space.cache ];
+			if (isCache) {
+				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
+				each( space.props, function( _, prop ) {
+					if ( isCache[ prop.idx ] != null ) {
+						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
+						return same;
+					}
+				});
+			}
+			return same;
+		});
+		return same;
+	},
+	_space: function() {
+		var used = [],
+			inst = this;
+		each( spaces, function( spaceName, space ) {
+			if ( inst[ space.cache ] ) {
+				used.push( spaceName );
+			}
+		});
+		return used.pop();
+	},
+	transition: function( other, distance ) {
+		var end = color( other ),
+			spaceName = end._space(),
+			space = spaces[ spaceName ],
+			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
+			start = startColor[ space.cache ] || space.to( startColor._rgba ),
+			result = start.slice();
+
+		end = end[ space.cache ];
+		each( space.props, function( key, prop ) {
+			var index = prop.idx,
+				startValue = start[ index ],
+				endValue = end[ index ],
+				type = propTypes[ prop.type ] || {};
+
+			// if null, don't override start value
+			if ( endValue === null ) {
+				return;
+			}
+			// if null - use end
+			if ( startValue === null ) {
+				result[ index ] = endValue;
+			} else {
+				if ( type.mod ) {
+					if ( endValue - startValue > type.mod / 2 ) {
+						startValue += type.mod;
+					} else if ( startValue - endValue > type.mod / 2 ) {
+						startValue -= type.mod;
+					}
+				}
+				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
+			}
+		});
+		return this[ spaceName ]( result );
+	},
+	blend: function( opaque ) {
+		// if we are already opaque - return ourself
+		if ( this._rgba[ 3 ] === 1 ) {
+			return this;
+		}
+
+		var rgb = this._rgba.slice(),
+			a = rgb.pop(),
+			blend = color( opaque )._rgba;
+
+		return color( jQuery.map( rgb, function( v, i ) {
+			return ( 1 - a ) * blend[ i ] + a * v;
+		}));
+	},
+	toRgbaString: function() {
+		var prefix = "rgba(",
+			rgba = jQuery.map( this._rgba, function( v, i ) {
+				return v == null ? ( i > 2 ? 1 : 0 ) : v;
+			});
+
+		if ( rgba[ 3 ] === 1 ) {
+			rgba.pop();
+			prefix = "rgb(";
+		}
+
+		return prefix + rgba.join() + ")";
+	},
+	toHslaString: function() {
+		var prefix = "hsla(",
+			hsla = jQuery.map( this.hsla(), function( v, i ) {
+				if ( v == null ) {
+					v = i > 2 ? 1 : 0;
+				}
+
+				// catch 1 and 2
+				if ( i && i < 3 ) {
+					v = Math.round( v * 100 ) + "%";
+				}
+				return v;
+			});
+
+		if ( hsla[ 3 ] === 1 ) {
+			hsla.pop();
+			prefix = "hsl(";
+		}
+		return prefix + hsla.join() + ")";
+	},
+	toHexString: function( includeAlpha ) {
+		var rgba = this._rgba.slice(),
+			alpha = rgba.pop();
+
+		if ( includeAlpha ) {
+			rgba.push( ~~( alpha * 255 ) );
+		}
+
+		return "#" + jQuery.map( rgba, function( v ) {
+
+			// default to 0 when nulls exist
+			v = ( v || 0 ).toString( 16 );
+			return v.length === 1 ? "0" + v : v;
+		}).join("");
+	},
+	toString: function() {
+		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
+	}
+});
+color.fn.parse.prototype = color.fn;
+
+// hsla conversions adapted from:
+// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
+
+function hue2rgb( p, q, h ) {
+	h = ( h + 1 ) % 1;
+	if ( h * 6 < 1 ) {
+		return p + (q - p) * h * 6;
+	}
+	if ( h * 2 < 1) {
+		return q;
+	}
+	if ( h * 3 < 2 ) {
+		return p + (q - p) * ((2/3) - h) * 6;
+	}
+	return p;
+}
+
+spaces.hsla.to = function ( rgba ) {
+	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
+		return [ null, null, null, rgba[ 3 ] ];
+	}
+	var r = rgba[ 0 ] / 255,
+		g = rgba[ 1 ] / 255,
+		b = rgba[ 2 ] / 255,
+		a = rgba[ 3 ],
+		max = Math.max( r, g, b ),
+		min = Math.min( r, g, b ),
+		diff = max - min,
+		add = max + min,
+		l = add * 0.5,
+		h, s;
+
+	if ( min === max ) {
+		h = 0;
+	} else if ( r === max ) {
+		h = ( 60 * ( g - b ) / diff ) + 360;
+	} else if ( g === max ) {
+		h = ( 60 * ( b - r ) / diff ) + 120;
+	} else {
+		h = ( 60 * ( r - g ) / diff ) + 240;
+	}
+
+	// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
+	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
+	if ( diff === 0 ) {
+		s = 0;
+	} else if ( l <= 0.5 ) {
+		s = diff / add;
+	} else {
+		s = diff / ( 2 - add );
+	}
+	return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
+};
+
+spaces.hsla.from = function ( hsla ) {
+	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
+		return [ null, null, null, hsla[ 3 ] ];
+	}
+	var h = hsla[ 0 ] / 360,
+		s = hsla[ 1 ],
+		l = hsla[ 2 ],
+		a = hsla[ 3 ],
+		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
+		p = 2 * l - q;
+
+	return [
+		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
+		Math.round( hue2rgb( p, q, h ) * 255 ),
+		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
+		a
+	];
+};
+
+
+each( spaces, function( spaceName, space ) {
+	var props = space.props,
+		cache = space.cache,
+		to = space.to,
+		from = space.from;
+
+	// makes rgba() and hsla()
+	color.fn[ spaceName ] = function( value ) {
+
+		// generate a cache for this space if it doesn't exist
+		if ( to && !this[ cache ] ) {
+			this[ cache ] = to( this._rgba );
+		}
+		if ( value === undefined ) {
+			return this[ cache ].slice();
+		}
+
+		var ret,
+			type = jQuery.type( value ),
+			arr = ( type === "array" || type === "object" ) ? value : arguments,
+			local = this[ cache ].slice();
+
+		each( props, function( key, prop ) {
+			var val = arr[ type === "object" ? key : prop.idx ];
+			if ( val == null ) {
+				val = local[ prop.idx ];
+			}
+			local[ prop.idx ] = clamp( val, prop );
+		});
+
+		if ( from ) {
+			ret = color( from( local ) );
+			ret[ cache ] = local;
+			return ret;
+		} else {
+			return color( local );
+		}
+	};
+
+	// makes red() green() blue() alpha() hue() saturation() lightness()
+	each( props, function( key, prop ) {
+		// alpha is included in more than one space
+		if ( color.fn[ key ] ) {
+			return;
+		}
+		color.fn[ key ] = function( value ) {
+			var vtype = jQuery.type( value ),
+				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
+				local = this[ fn ](),
+				cur = local[ prop.idx ],
+				match;
+
+			if ( vtype === "undefined" ) {
+				return cur;
+			}
+
+			if ( vtype === "function" ) {
+				value = value.call( this, cur );
+				vtype = jQuery.type( value );
+			}
+			if ( value == null && prop.empty ) {
+				return this;
+			}
+			if ( vtype === "string" ) {
+				match = rplusequals.exec( value );
+				if ( match ) {
+					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
+				}
+			}
+			local[ prop.idx ] = value;
+			return this[ fn ]( local );
+		};
+	});
+});
+
+// add cssHook and .fx.step function for each named hook.
+// accept a space separated string of properties
+color.hook = function( hook ) {
+	var hooks = hook.split( " " );
+	each( hooks, function( i, hook ) {
+		jQuery.cssHooks[ hook ] = {
+			set: function( elem, value ) {
+				var parsed, curElem,
+					backgroundColor = "";
+
+				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
+					value = color( parsed || value );
+					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
+						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
+						while (
+							(backgroundColor === "" || backgroundColor === "transparent") &&
+							curElem && curElem.style
+						) {
+							try {
+								backgroundColor = jQuery.css( curElem, "backgroundColor" );
+								curElem = curElem.parentNode;
+							} catch ( e ) {
+							}
+						}
+
+						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
+							backgroundColor :
+							"_default" );
+					}
+
+					value = value.toRgbaString();
+				}
+				try {
+					elem.style[ hook ] = value;
+				} catch( e ) {
+					// wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
+				}
+			}
+		};
+		jQuery.fx.step[ hook ] = function( fx ) {
+			if ( !fx.colorInit ) {
+				fx.start = color( fx.elem, hook );
+				fx.end = color( fx.end );
+				fx.colorInit = true;
+			}
+			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
+		};
+	});
+
+};
+
+color.hook( stepHooks );
+
+jQuery.cssHooks.borderColor = {
+	expand: function( value ) {
+		var expanded = {};
+
+		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
+			expanded[ "border" + part + "Color" ] = value;
+		});
+		return expanded;
+	}
+};
+
+// Basic color names only.
+// Usage of any of the other color names requires adding yourself or including
+// jquery.color.svg-names.js.
+colors = jQuery.Color.names = {
+	// 4.1. Basic color keywords
+	aqua: "#00ffff",
+	black: "#000000",
+	blue: "#0000ff",
+	fuchsia: "#ff00ff",
+	gray: "#808080",
+	green: "#008000",
+	lime: "#00ff00",
+	maroon: "#800000",
+	navy: "#000080",
+	olive: "#808000",
+	purple: "#800080",
+	red: "#ff0000",
+	silver: "#c0c0c0",
+	teal: "#008080",
+	white: "#ffffff",
+	yellow: "#ffff00",
+
+	// 4.2.3. "transparent" color keyword
+	transparent: [ null, null, null, 0 ],
+
+	_default: "#ffffff"
+};
+
+})( jQuery );
+
+
+/******************************************************************************/
+/****************************** CLASS ANIMATIONS ******************************/
+/******************************************************************************/
+(function() {
+
+var classAnimationActions = [ "add", "remove", "toggle" ],
+	shorthandStyles = {
+		border: 1,
+		borderBottom: 1,
+		borderColor: 1,
+		borderLeft: 1,
+		borderRight: 1,
+		borderTop: 1,
+		borderWidth: 1,
+		margin: 1,
+		padding: 1
+	};
+
+$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) {
+	$.fx.step[ prop ] = function( fx ) {
+		if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
+			jQuery.style( fx.elem, prop, fx.end );
+			fx.setAttr = true;
+		}
+	};
+});
+
+function getElementStyles( elem ) {
+	var key, len,
+		style = elem.ownerDocument.defaultView ?
+			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
+			elem.currentStyle,
+		styles = {};
+
+	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
+		len = style.length;
+		while ( len-- ) {
+			key = style[ len ];
+			if ( typeof style[ key ] === "string" ) {
+				styles[ $.camelCase( key ) ] = style[ key ];
+			}
+		}
+	// support: Opera, IE <9
+	} else {
+		for ( key in style ) {
+			if ( typeof style[ key ] === "string" ) {
+				styles[ key ] = style[ key ];
+			}
+		}
+	}
+
+	return styles;
+}
+
+
+function styleDifference( oldStyle, newStyle ) {
+	var diff = {},
+		name, value;
+
+	for ( name in newStyle ) {
+		value = newStyle[ name ];
+		if ( oldStyle[ name ] !== value ) {
+			if ( !shorthandStyles[ name ] ) {
+				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
+					diff[ name ] = value;
+				}
+			}
+		}
+	}
+
+	return diff;
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+$.effects.animateClass = function( value, duration, easing, callback ) {
+	var o = $.speed( duration, easing, callback );
+
+	return this.queue( function() {
+		var animated = $( this ),
+			baseClass = animated.attr( "class" ) || "",
+			applyClassChange,
+			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
+
+		// map the animated objects to store the original styles.
+		allAnimations = allAnimations.map(function() {
+			var el = $( this );
+			return {
+				el: el,
+				start: getElementStyles( this )
+			};
+		});
+
+		// apply class change
+		applyClassChange = function() {
+			$.each( classAnimationActions, function(i, action) {
+				if ( value[ action ] ) {
+					animated[ action + "Class" ]( value[ action ] );
+				}
+			});
+		};
+		applyClassChange();
+
+		// map all animated objects again - calculate new styles and diff
+		allAnimations = allAnimations.map(function() {
+			this.end = getElementStyles( this.el[ 0 ] );
+			this.diff = styleDifference( this.start, this.end );
+			return this;
+		});
+
+		// apply original class
+		animated.attr( "class", baseClass );
+
+		// map all animated objects again - this time collecting a promise
+		allAnimations = allAnimations.map(function() {
+			var styleInfo = this,
+				dfd = $.Deferred(),
+				opts = $.extend({}, o, {
+					queue: false,
+					complete: function() {
+						dfd.resolve( styleInfo );
+					}
+				});
+
+			this.el.animate( this.diff, opts );
+			return dfd.promise();
+		});
+
+		// once all animations have completed:
+		$.when.apply( $, allAnimations.get() ).done(function() {
+
+			// set the final class
+			applyClassChange();
+
+			// for each animated element,
+			// clear all css properties that were animated
+			$.each( arguments, function() {
+				var el = this.el;
+				$.each( this.diff, function(key) {
+					el.css( key, "" );
+				});
+			});
+
+			// this is guarnteed to be there if you use jQuery.speed()
+			// it also handles dequeuing the next anim...
+			o.complete.call( animated[ 0 ] );
+		});
+	});
+};
+
+$.fn.extend({
+	addClass: (function( orig ) {
+		return function( classNames, speed, easing, callback ) {
+			return speed ?
+				$.effects.animateClass.call( this,
+					{ add: classNames }, speed, easing, callback ) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.addClass ),
+
+	removeClass: (function( orig ) {
+		return function( classNames, speed, easing, callback ) {
+			return arguments.length > 1 ?
+				$.effects.animateClass.call( this,
+					{ remove: classNames }, speed, easing, callback ) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.removeClass ),
+
+	toggleClass: (function( orig ) {
+		return function( classNames, force, speed, easing, callback ) {
+			if ( typeof force === "boolean" || force === undefined ) {
+				if ( !speed ) {
+					// without speed parameter
+					return orig.apply( this, arguments );
+				} else {
+					return $.effects.animateClass.call( this,
+						(force ? { add: classNames } : { remove: classNames }),
+						speed, easing, callback );
+				}
+			} else {
+				// without force parameter
+				return $.effects.animateClass.call( this,
+					{ toggle: classNames }, force, speed, easing );
+			}
+		};
+	})( $.fn.toggleClass ),
+
+	switchClass: function( remove, add, speed, easing, callback) {
+		return $.effects.animateClass.call( this, {
+			add: add,
+			remove: remove
+		}, speed, easing, callback );
+	}
+});
+
+})();
+
+/******************************************************************************/
+/*********************************** EFFECTS **********************************/
+/******************************************************************************/
+
+(function() {
+
+$.extend( $.effects, {
+	version: "1.10.3",
+
+	// Saves a set of properties in a data storage
+	save: function( element, set ) {
+		for( var i=0; i < set.length; i++ ) {
+			if ( set[ i ] !== null ) {
+				element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
+			}
+		}
+	},
+
+	// Restores a set of previously saved properties from a data storage
+	restore: function( element, set ) {
+		var val, i;
+		for( i=0; i < set.length; i++ ) {
+			if ( set[ i ] !== null ) {
+				val = element.data( dataSpace + set[ i ] );
+				// support: jQuery 1.6.2
+				// http://bugs.jquery.com/ticket/9917
+				// jQuery 1.6.2 incorrectly returns undefined for any falsy value.
+				// We can't differentiate between "" and 0 here, so we just assume
+				// empty string since it's likely to be a more common value...
+				if ( val === undefined ) {
+					val = "";
+				}
+				element.css( set[ i ], val );
+			}
+		}
+	},
+
+	setMode: function( el, mode ) {
+		if (mode === "toggle") {
+			mode = el.is( ":hidden" ) ? "show" : "hide";
+		}
+		return mode;
+	},
+
+	// Translates a [top,left] array into a baseline value
+	// this should be a little more flexible in the future to handle a string & hash
+	getBaseline: function( origin, original ) {
+		var y, x;
+		switch ( origin[ 0 ] ) {
+			case "top": y = 0; break;
+			case "middle": y = 0.5; break;
+			case "bottom": y = 1; break;
+			default: y = origin[ 0 ] / original.height;
+		}
+		switch ( origin[ 1 ] ) {
+			case "left": x = 0; break;
+			case "center": x = 0.5; break;
+			case "right": x = 1; break;
+			default: x = origin[ 1 ] / original.width;
+		}
+		return {
+			x: x,
+			y: y
+		};
+	},
+
+	// Wraps the element around a wrapper that copies position properties
+	createWrapper: function( element ) {
+
+		// if the element is already wrapped, return it
+		if ( element.parent().is( ".ui-effects-wrapper" )) {
+			return element.parent();
+		}
+
+		// wrap the element
+		var props = {
+				width: element.outerWidth(true),
+				height: element.outerHeight(true),
+				"float": element.css( "float" )
+			},
+			wrapper = $( "<div></div>" )
+				.addClass( "ui-effects-wrapper" )
+				.css({
+					fontSize: "100%",
+					background: "transparent",
+					border: "none",
+					margin: 0,
+					padding: 0
+				}),
+			// Store the size in case width/height are defined in % - Fixes #5245
+			size = {
+				width: element.width(),
+				height: element.height()
+			},
+			active = document.activeElement;
+
+		// support: Firefox
+		// Firefox incorrectly exposes anonymous content
+		// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
+		try {
+			active.id;
+		} catch( e ) {
+			active = document.body;
+		}
+
+		element.wrap( wrapper );
+
+		// Fixes #7595 - Elements lose focus when wrapped.
+		if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+			$( active ).focus();
+		}
+
+		wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element
+
+		// transfer positioning properties to the wrapper
+		if ( element.css( "position" ) === "static" ) {
+			wrapper.css({ position: "relative" });
+			element.css({ position: "relative" });
+		} else {
+			$.extend( props, {
+				position: element.css( "position" ),
+				zIndex: element.css( "z-index" )
+			});
+			$.each([ "top", "left", "bottom", "right" ], function(i, pos) {
+				props[ pos ] = element.css( pos );
+				if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
+					props[ pos ] = "auto";
+				}
+			});
+			element.css({
+				position: "relative",
+				top: 0,
+				left: 0,
+				right: "auto",
+				bottom: "auto"
+			});
+		}
+		element.css(size);
+
+		return wrapper.css( props ).show();
+	},
+
+	removeWrapper: function( element ) {
+		var active = document.activeElement;
+
+		if ( element.parent().is( ".ui-effects-wrapper" ) ) {
+			element.parent().replaceWith( element );
+
+			// Fixes #7595 - Elements lose focus when wrapped.
+			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+				$( active ).focus();
+			}
+		}
+
+
+		return element;
+	},
+
+	setTransition: function( element, list, factor, value ) {
+		value = value || {};
+		$.each( list, function( i, x ) {
+			var unit = element.cssUnit( x );
+			if ( unit[ 0 ] > 0 ) {
+				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
+			}
+		});
+		return value;
+	}
+});
+
+// return an effect options object for the given parameters:
+function _normalizeArguments( effect, options, speed, callback ) {
+
+	// allow passing all options as the first parameter
+	if ( $.isPlainObject( effect ) ) {
+		options = effect;
+		effect = effect.effect;
+	}
+
+	// convert to an object
+	effect = { effect: effect };
+
+	// catch (effect, null, ...)
+	if ( options == null ) {
+		options = {};
+	}
+
+	// catch (effect, callback)
+	if ( $.isFunction( options ) ) {
+		callback = options;
+		speed = null;
+		options = {};
+	}
+
+	// catch (effect, speed, ?)
+	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
+		callback = speed;
+		speed = options;
+		options = {};
+	}
+
+	// catch (effect, options, callback)
+	if ( $.isFunction( speed ) ) {
+		callback = speed;
+		speed = null;
+	}
+
+	// add options to effect
+	if ( options ) {
+		$.extend( effect, options );
+	}
+
+	speed = speed || options.duration;
+	effect.duration = $.fx.off ? 0 :
+		typeof speed === "number" ? speed :
+		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
+		$.fx.speeds._default;
+
+	effect.complete = callback || options.complete;
+
+	return effect;
+}
+
+function standardAnimationOption( option ) {
+	// Valid standard speeds (nothing, number, named speed)
+	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
+		return true;
+	}
+
+	// Invalid strings - treat as "normal" speed
+	if ( typeof option === "string" && !$.effects.effect[ option ] ) {
+		return true;
+	}
+
+	// Complete callback
+	if ( $.isFunction( option ) ) {
+		return true;
+	}
+
+	// Options hash (but not naming an effect)
+	if ( typeof option === "object" && !option.effect ) {
+		return true;
+	}
+
+	// Didn't match any standard API
+	return false;
+}
+
+$.fn.extend({
+	effect: function( /* effect, options, speed, callback */ ) {
+		var args = _normalizeArguments.apply( this, arguments ),
+			mode = args.mode,
+			queue = args.queue,
+			effectMethod = $.effects.effect[ args.effect ];
+
+		if ( $.fx.off || !effectMethod ) {
+			// delegate to the original method (e.g., .show()) if possible
+			if ( mode ) {
+				return this[ mode ]( args.duration, args.complete );
+			} else {
+				return this.each( function() {
+					if ( args.complete ) {
+						args.complete.call( this );
+					}
+				});
+			}
+		}
+
+		function run( next ) {
+			var elem = $( this ),
+				complete = args.complete,
+				mode = args.mode;
+
+			function done() {
+				if ( $.isFunction( complete ) ) {
+					complete.call( elem[0] );
+				}
+				if ( $.isFunction( next ) ) {
+					next();
+				}
+			}
+
+			// If the element already has the correct final state, delegate to
+			// the core methods so the internal tracking of "olddisplay" works.
+			if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
+				elem[ mode ]();
+				done();
+			} else {
+				effectMethod.call( elem[0], args, done );
+			}
+		}
+
+		return queue === false ? this.each( run ) : this.queue( queue || "fx", run );
+	},
+
+	show: (function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "show";
+				return this.effect.call( this, args );
+			}
+		};
+	})( $.fn.show ),
+
+	hide: (function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "hide";
+				return this.effect.call( this, args );
+			}
+		};
+	})( $.fn.hide ),
+
+	toggle: (function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "toggle";
+				return this.effect.call( this, args );
+			}
+		};
+	})( $.fn.toggle ),
+
+	// helper functions
+	cssUnit: function(key) {
+		var style = this.css( key ),
+			val = [];
+
+		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
+			if ( style.indexOf( unit ) > 0 ) {
+				val = [ parseFloat( style ), unit ];
+			}
+		});
+		return val;
+	}
+});
+
+})();
+
+/******************************************************************************/
+/*********************************** EASING ***********************************/
+/******************************************************************************/
+
+(function() {
+
+// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
+
+var baseEasings = {};
+
+$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
+	baseEasings[ name ] = function( p ) {
+		return Math.pow( p, i + 2 );
+	};
+});
+
+$.extend( baseEasings, {
+	Sine: function ( p ) {
+		return 1 - Math.cos( p * Math.PI / 2 );
+	},
+	Circ: function ( p ) {
+		return 1 - Math.sqrt( 1 - p * p );
+	},
+	Elastic: function( p ) {
+		return p === 0 || p === 1 ? p :
+			-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );
+	},
+	Back: function( p ) {
+		return p * p * ( 3 * p - 2 );
+	},
+	Bounce: function ( p ) {
+		var pow2,
+			bounce = 4;
+
+		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
+		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
+	}
+});
+
+$.each( baseEasings, function( name, easeIn ) {
+	$.easing[ "easeIn" + name ] = easeIn;
+	$.easing[ "easeOut" + name ] = function( p ) {
+		return 1 - easeIn( 1 - p );
+	};
+	$.easing[ "easeInOut" + name ] = function( p ) {
+		return p < 0.5 ?
+			easeIn( p * 2 ) / 2 :
+			1 - easeIn( p * -2 + 2 ) / 2;
+	};
+});
+
+})();
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+var uid = 0,
+	hideProps = {},
+	showProps = {};
+
+hideProps.height = hideProps.paddingTop = hideProps.paddingBottom =
+	hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide";
+showProps.height = showProps.paddingTop = showProps.paddingBottom =
+	showProps.borderTopWidth = showProps.borderBottomWidth = "show";
+
+$.widget( "ui.accordion", {
+	version: "1.10.3",
+	options: {
+		active: 0,
+		animate: {},
+		collapsible: false,
+		event: "click",
+		header: "> li > :first-child,> :not(li):even",
+		heightStyle: "auto",
+		icons: {
+			activeHeader: "ui-icon-triangle-1-s",
+			header: "ui-icon-triangle-1-e"
+		},
+
+		// callbacks
+		activate: null,
+		beforeActivate: null
+	},
+
+	_create: function() {
+		var options = this.options;
+		this.prevShow = this.prevHide = $();
+		this.element.addClass( "ui-accordion ui-widget ui-helper-reset" )
+			// ARIA
+			.attr( "role", "tablist" );
+
+		// don't allow collapsible: false and active: false / null
+		if ( !options.collapsible && (options.active === false || options.active == null) ) {
+			options.active = 0;
+		}
+
+		this._processPanels();
+		// handle negative values
+		if ( options.active < 0 ) {
+			options.active += this.headers.length;
+		}
+		this._refresh();
+	},
+
+	_getCreateEventData: function() {
+		return {
+			header: this.active,
+			panel: !this.active.length ? $() : this.active.next(),
+			content: !this.active.length ? $() : this.active.next()
+		};
+	},
+
+	_createIcons: function() {
+		var icons = this.options.icons;
+		if ( icons ) {
+			$( "<span>" )
+				.addClass( "ui-accordion-header-icon ui-icon " + icons.header )
+				.prependTo( this.headers );
+			this.active.children( ".ui-accordion-header-icon" )
+				.removeClass( icons.header )
+				.addClass( icons.activeHeader );
+			this.headers.addClass( "ui-accordion-icons" );
+		}
+	},
+
+	_destroyIcons: function() {
+		this.headers
+			.removeClass( "ui-accordion-icons" )
+			.children( ".ui-accordion-header-icon" )
+				.remove();
+	},
+
+	_destroy: function() {
+		var contents;
+
+		// clean up main element
+		this.element
+			.removeClass( "ui-accordion ui-widget ui-helper-reset" )
+			.removeAttr( "role" );
+
+		// clean up headers
+		this.headers
+			.removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-selected" )
+			.removeAttr( "aria-controls" )
+			.removeAttr( "tabIndex" )
+			.each(function() {
+				if ( /^ui-accordion/.test( this.id ) ) {
+					this.removeAttribute( "id" );
+				}
+			});
+		this._destroyIcons();
+
+		// clean up content panels
+		contents = this.headers.next()
+			.css( "display", "" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-expanded" )
+			.removeAttr( "aria-hidden" )
+			.removeAttr( "aria-labelledby" )
+			.removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" )
+			.each(function() {
+				if ( /^ui-accordion/.test( this.id ) ) {
+					this.removeAttribute( "id" );
+				}
+			});
+		if ( this.options.heightStyle !== "content" ) {
+			contents.css( "height", "" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "event" ) {
+			if ( this.options.event ) {
+				this._off( this.headers, this.options.event );
+			}
+			this._setupEvents( value );
+		}
+
+		this._super( key, value );
+
+		// setting collapsible: false while collapsed; open first panel
+		if ( key === "collapsible" && !value && this.options.active === false ) {
+			this._activate( 0 );
+		}
+
+		if ( key === "icons" ) {
+			this._destroyIcons();
+			if ( value ) {
+				this._createIcons();
+			}
+		}
+
+		// #5332 - opacity doesn't cascade to positioned elements in IE
+		// so we need to add the disabled class to the headers and panels
+		if ( key === "disabled" ) {
+			this.headers.add( this.headers.next() )
+				.toggleClass( "ui-state-disabled", !!value );
+		}
+	},
+
+	_keydown: function( event ) {
+		/*jshint maxcomplexity:15*/
+		if ( event.altKey || event.ctrlKey ) {
+			return;
+		}
+
+		var keyCode = $.ui.keyCode,
+			length = this.headers.length,
+			currentIndex = this.headers.index( event.target ),
+			toFocus = false;
+
+		switch ( event.keyCode ) {
+			case keyCode.RIGHT:
+			case keyCode.DOWN:
+				toFocus = this.headers[ ( currentIndex + 1 ) % length ];
+				break;
+			case keyCode.LEFT:
+			case keyCode.UP:
+				toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
+				break;
+			case keyCode.SPACE:
+			case keyCode.ENTER:
+				this._eventHandler( event );
+				break;
+			case keyCode.HOME:
+				toFocus = this.headers[ 0 ];
+				break;
+			case keyCode.END:
+				toFocus = this.headers[ length - 1 ];
+				break;
+		}
+
+		if ( toFocus ) {
+			$( event.target ).attr( "tabIndex", -1 );
+			$( toFocus ).attr( "tabIndex", 0 );
+			toFocus.focus();
+			event.preventDefault();
+		}
+	},
+
+	_panelKeyDown : function( event ) {
+		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
+			$( event.currentTarget ).prev().focus();
+		}
+	},
+
+	refresh: function() {
+		var options = this.options;
+		this._processPanels();
+
+		// was collapsed or no panel
+		if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {
+			options.active = false;
+			this.active = $();
+		// active false only when collapsible is true
+		} else if ( options.active === false ) {
+			this._activate( 0 );
+		// was active, but active panel is gone
+		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			// all remaining panel are disabled
+			if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) {
+				options.active = false;
+				this.active = $();
+			// activate previous panel
+			} else {
+				this._activate( Math.max( 0, options.active - 1 ) );
+			}
+		// was active, active panel still exists
+		} else {
+			// make sure active index is correct
+			options.active = this.headers.index( this.active );
+		}
+
+		this._destroyIcons();
+
+		this._refresh();
+	},
+
+	_processPanels: function() {
+		this.headers = this.element.find( this.options.header )
+			.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" );
+
+		this.headers.next()
+			.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
+			.filter(":not(.ui-accordion-content-active)")
+			.hide();
+	},
+
+	_refresh: function() {
+		var maxHeight,
+			options = this.options,
+			heightStyle = options.heightStyle,
+			parent = this.element.parent(),
+			accordionId = this.accordionId = "ui-accordion-" +
+				(this.element.attr( "id" ) || ++uid);
+
+		this.active = this._findActive( options.active )
+			.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" )
+			.removeClass( "ui-corner-all" );
+		this.active.next()
+			.addClass( "ui-accordion-content-active" )
+			.show();
+
+		this.headers
+			.attr( "role", "tab" )
+			.each(function( i ) {
+				var header = $( this ),
+					headerId = header.attr( "id" ),
+					panel = header.next(),
+					panelId = panel.attr( "id" );
+				if ( !headerId ) {
+					headerId = accordionId + "-header-" + i;
+					header.attr( "id", headerId );
+				}
+				if ( !panelId ) {
+					panelId = accordionId + "-panel-" + i;
+					panel.attr( "id", panelId );
+				}
+				header.attr( "aria-controls", panelId );
+				panel.attr( "aria-labelledby", headerId );
+			})
+			.next()
+				.attr( "role", "tabpanel" );
+
+		this.headers
+			.not( this.active )
+			.attr({
+				"aria-selected": "false",
+				tabIndex: -1
+			})
+			.next()
+				.attr({
+					"aria-expanded": "false",
+					"aria-hidden": "true"
+				})
+				.hide();
+
+		// make sure at least one header is in the tab order
+		if ( !this.active.length ) {
+			this.headers.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active.attr({
+				"aria-selected": "true",
+				tabIndex: 0
+			})
+			.next()
+				.attr({
+					"aria-expanded": "true",
+					"aria-hidden": "false"
+				});
+		}
+
+		this._createIcons();
+
+		this._setupEvents( options.event );
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			this.element.siblings( ":visible" ).each(function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			});
+
+			this.headers.each(function() {
+				maxHeight -= $( this ).outerHeight( true );
+			});
+
+			this.headers.next()
+				.each(function() {
+					$( this ).height( Math.max( 0, maxHeight -
+						$( this ).innerHeight() + $( this ).height() ) );
+				})
+				.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.headers.next()
+				.each(function() {
+					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
+				})
+				.height( maxHeight );
+		}
+	},
+
+	_activate: function( index ) {
+		var active = this._findActive( index )[ 0 ];
+
+		// trying to activate the already active panel
+		if ( active === this.active[ 0 ] ) {
+			return;
+		}
+
+		// trying to collapse, simulate a click on the currently active header
+		active = active || this.active[ 0 ];
+
+		this._eventHandler({
+			target: active,
+			currentTarget: active,
+			preventDefault: $.noop
+		});
+	},
+
+	_findActive: function( selector ) {
+		return typeof selector === "number" ? this.headers.eq( selector ) : $();
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			keydown: "_keydown"
+		};
+		if ( event ) {
+			$.each( event.split(" "), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			});
+		}
+
+		this._off( this.headers.add( this.headers.next() ) );
+		this._on( this.headers, events );
+		this._on( this.headers.next(), { keydown: "_panelKeyDown" });
+		this._hoverable( this.headers );
+		this._focusable( this.headers );
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			clicked = $( event.currentTarget ),
+			clickedIsActive = clicked[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : clicked.next(),
+			toHide = active.next(),
+			eventData = {
+				oldHeader: active,
+				oldPanel: toHide,
+				newHeader: collapsing ? $() : clicked,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if (
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.headers.index( clicked );
+
+		// when the call to ._toggle() comes after the class changes
+		// it causes a very odd bug in IE 8 (see #6720)
+		this.active = clickedIsActive ? $() : clicked;
+		this._toggle( eventData );
+
+		// switch classes
+		// corner classes on the previously active header stay after the animation
+		active.removeClass( "ui-accordion-header-active ui-state-active" );
+		if ( options.icons ) {
+			active.children( ".ui-accordion-header-icon" )
+				.removeClass( options.icons.activeHeader )
+				.addClass( options.icons.header );
+		}
+
+		if ( !clickedIsActive ) {
+			clicked
+				.removeClass( "ui-corner-all" )
+				.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );
+			if ( options.icons ) {
+				clicked.children( ".ui-accordion-header-icon" )
+					.removeClass( options.icons.header )
+					.addClass( options.icons.activeHeader );
+			}
+
+			clicked
+				.next()
+				.addClass( "ui-accordion-content-active" );
+		}
+	},
+
+	_toggle: function( data ) {
+		var toShow = data.newPanel,
+			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
+
+		// handle activating a panel during the animation for another activation
+		this.prevShow.add( this.prevHide ).stop( true, true );
+		this.prevShow = toShow;
+		this.prevHide = toHide;
+
+		if ( this.options.animate ) {
+			this._animate( toShow, toHide, data );
+		} else {
+			toHide.hide();
+			toShow.show();
+			this._toggleComplete( data );
+		}
+
+		toHide.attr({
+			"aria-expanded": "false",
+			"aria-hidden": "true"
+		});
+		toHide.prev().attr( "aria-selected", "false" );
+		// if we're switching panels, remove the old header from the tab order
+		// if we're opening from collapsed state, remove the previous header from the tab order
+		// if we're collapsing, then keep the collapsing header in the tab order
+		if ( toShow.length && toHide.length ) {
+			toHide.prev().attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.headers.filter(function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			})
+			.attr( "tabIndex", -1 );
+		}
+
+		toShow
+			.attr({
+				"aria-expanded": "true",
+				"aria-hidden": "false"
+			})
+			.prev()
+				.attr({
+					"aria-selected": "true",
+					tabIndex: 0
+				});
+	},
+
+	_animate: function( toShow, toHide, data ) {
+		var total, easing, duration,
+			that = this,
+			adjust = 0,
+			down = toShow.length &&
+				( !toHide.length || ( toShow.index() < toHide.index() ) ),
+			animate = this.options.animate || {},
+			options = down && animate.down || animate,
+			complete = function() {
+				that._toggleComplete( data );
+			};
+
+		if ( typeof options === "number" ) {
+			duration = options;
+		}
+		if ( typeof options === "string" ) {
+			easing = options;
+		}
+		// fall back from options to animation in case of partial down settings
+		easing = easing || options.easing || animate.easing;
+		duration = duration || options.duration || animate.duration;
+
+		if ( !toHide.length ) {
+			return toShow.animate( showProps, duration, easing, complete );
+		}
+		if ( !toShow.length ) {
+			return toHide.animate( hideProps, duration, easing, complete );
+		}
+
+		total = toShow.show().outerHeight();
+		toHide.animate( hideProps, {
+			duration: duration,
+			easing: easing,
+			step: function( now, fx ) {
+				fx.now = Math.round( now );
+			}
+		});
+		toShow
+			.hide()
+			.animate( showProps, {
+				duration: duration,
+				easing: easing,
+				complete: complete,
+				step: function( now, fx ) {
+					fx.now = Math.round( now );
+					if ( fx.prop !== "height" ) {
+						adjust += fx.now;
+					} else if ( that.options.heightStyle !== "content" ) {
+						fx.now = Math.round( total - toHide.outerHeight() - adjust );
+						adjust = 0;
+					}
+				}
+			});
+	},
+
+	_toggleComplete: function( data ) {
+		var toHide = data.oldPanel;
+
+		toHide
+			.removeClass( "ui-accordion-content-active" )
+			.prev()
+				.removeClass( "ui-corner-top" )
+				.addClass( "ui-corner-all" );
+
+		// Work around for rendering bug in IE (#5421)
+		if ( toHide.length ) {
+			toHide.parent()[0].className = toHide.parent()[0].className;
+		}
+
+		this._trigger( "activate", null, data );
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// used to prevent race conditions with remote data sources
+var requestIndex = 0;
+
+$.widget( "ui.autocomplete", {
+	version: "1.10.3",
+	defaultElement: "<input>",
+	options: {
+		appendTo: null,
+		autoFocus: false,
+		delay: 300,
+		minLength: 1,
+		position: {
+			my: "left top",
+			at: "left bottom",
+			collision: "none"
+		},
+		source: null,
+
+		// callbacks
+		change: null,
+		close: null,
+		focus: null,
+		open: null,
+		response: null,
+		search: null,
+		select: null
+	},
+
+	pending: 0,
+
+	_create: function() {
+		// Some browsers only repeat keydown events, not keypress events,
+		// so we use the suppressKeyPress flag to determine if we've already
+		// handled the keydown event. #7269
+		// Unfortunately the code for & in keypress is the same as the up arrow,
+		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
+		// events when we know the keydown event was used to modify the
+		// search term. #7799
+		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
+			nodeName = this.element[0].nodeName.toLowerCase(),
+			isTextarea = nodeName === "textarea",
+			isInput = nodeName === "input";
+
+		this.isMultiLine =
+			// Textareas are always multi-line
+			isTextarea ? true :
+			// Inputs are always single-line, even if inside a contentEditable element
+			// IE also treats inputs as contentEditable
+			isInput ? false :
+			// All other element types are determined by whether or not they're contentEditable
+			this.element.prop( "isContentEditable" );
+
+		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
+		this.isNewMenu = true;
+
+		this.element
+			.addClass( "ui-autocomplete-input" )
+			.attr( "autocomplete", "off" );
+
+		this._on( this.element, {
+			keydown: function( event ) {
+				/*jshint maxcomplexity:15*/
+				if ( this.element.prop( "readOnly" ) ) {
+					suppressKeyPress = true;
+					suppressInput = true;
+					suppressKeyPressRepeat = true;
+					return;
+				}
+
+				suppressKeyPress = false;
+				suppressInput = false;
+				suppressKeyPressRepeat = false;
+				var keyCode = $.ui.keyCode;
+				switch( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					suppressKeyPress = true;
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					suppressKeyPress = true;
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					suppressKeyPress = true;
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					suppressKeyPress = true;
+					this._keyEvent( "next", event );
+					break;
+				case keyCode.ENTER:
+				case keyCode.NUMPAD_ENTER:
+					// when menu is open and has focus
+					if ( this.menu.active ) {
+						// #6055 - Opera still allows the keypress to occur
+						// which causes forms to submit
+						suppressKeyPress = true;
+						event.preventDefault();
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.TAB:
+					if ( this.menu.active ) {
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.ESCAPE:
+					if ( this.menu.element.is( ":visible" ) ) {
+						this._value( this.term );
+						this.close( event );
+						// Different browsers have different default behavior for escape
+						// Single press can mean undo or clear
+						// Double press in IE means clear the whole form
+						event.preventDefault();
+					}
+					break;
+				default:
+					suppressKeyPressRepeat = true;
+					// search timeout should be triggered before the input value is changed
+					this._searchTimeout( event );
+					break;
+				}
+			},
+			keypress: function( event ) {
+				if ( suppressKeyPress ) {
+					suppressKeyPress = false;
+					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+						event.preventDefault();
+					}
+					return;
+				}
+				if ( suppressKeyPressRepeat ) {
+					return;
+				}
+
+				// replicate some key handlers to allow them to repeat in Firefox and Opera
+				var keyCode = $.ui.keyCode;
+				switch( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					this._keyEvent( "next", event );
+					break;
+				}
+			},
+			input: function( event ) {
+				if ( suppressInput ) {
+					suppressInput = false;
+					event.preventDefault();
+					return;
+				}
+				this._searchTimeout( event );
+			},
+			focus: function() {
+				this.selectedItem = null;
+				this.previous = this._value();
+			},
+			blur: function( event ) {
+				if ( this.cancelBlur ) {
+					delete this.cancelBlur;
+					return;
+				}
+
+				clearTimeout( this.searching );
+				this.close( event );
+				this._change( event );
+			}
+		});
+
+		this._initSource();
+		this.menu = $( "<ul>" )
+			.addClass( "ui-autocomplete ui-front" )
+			.appendTo( this._appendTo() )
+			.menu({
+				// disable ARIA support, the live region takes care of that
+				role: null
+			})
+			.hide()
+			.data( "ui-menu" );
+
+		this._on( this.menu.element, {
+			mousedown: function( event ) {
+				// prevent moving focus out of the text field
+				event.preventDefault();
+
+				// IE doesn't prevent moving focus even with event.preventDefault()
+				// so we set a flag to know when we should ignore the blur event
+				this.cancelBlur = true;
+				this._delay(function() {
+					delete this.cancelBlur;
+				});
+
+				// clicking on the scrollbar causes focus to shift to the body
+				// but we can't detect a mouseup or a click immediately afterward
+				// so we have to track the next mousedown and close the menu if
+				// the user clicks somewhere outside of the autocomplete
+				var menuElement = this.menu.element[ 0 ];
+				if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
+					this._delay(function() {
+						var that = this;
+						this.document.one( "mousedown", function( event ) {
+							if ( event.target !== that.element[ 0 ] &&
+									event.target !== menuElement &&
+									!$.contains( menuElement, event.target ) ) {
+								that.close();
+							}
+						});
+					});
+				}
+			},
+			menufocus: function( event, ui ) {
+				// support: Firefox
+				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
+				if ( this.isNewMenu ) {
+					this.isNewMenu = false;
+					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
+						this.menu.blur();
+
+						this.document.one( "mousemove", function() {
+							$( event.target ).trigger( event.originalEvent );
+						});
+
+						return;
+					}
+				}
+
+				var item = ui.item.data( "ui-autocomplete-item" );
+				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
+					// use value to match what will end up in the input, if it was a key event
+					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
+						this._value( item.value );
+					}
+				} else {
+					// Normally the input is populated with the item's value as the
+					// menu is navigated, causing screen readers to notice a change and
+					// announce the item. Since the focus event was canceled, this doesn't
+					// happen, so we update the live region so that screen readers can
+					// still notice the change and announce it.
+					this.liveRegion.text( item.value );
+				}
+			},
+			menuselect: function( event, ui ) {
+				var item = ui.item.data( "ui-autocomplete-item" ),
+					previous = this.previous;
+
+				// only trigger when focus was lost (click on menu)
+				if ( this.element[0] !== this.document[0].activeElement ) {
+					this.element.focus();
+					this.previous = previous;
+					// #6109 - IE triggers two focus events and the second
+					// is asynchronous, so we need to reset the previous
+					// term synchronously and asynchronously :-(
+					this._delay(function() {
+						this.previous = previous;
+						this.selectedItem = item;
+					});
+				}
+
+				if ( false !== this._trigger( "select", event, { item: item } ) ) {
+					this._value( item.value );
+				}
+				// reset the term after the select event
+				// this allows custom select handling to work properly
+				this.term = this._value();
+
+				this.close( event );
+				this.selectedItem = item;
+			}
+		});
+
+		this.liveRegion = $( "<span>", {
+				role: "status",
+				"aria-live": "polite"
+			})
+			.addClass( "ui-helper-hidden-accessible" )
+			.insertBefore( this.element );
+
+		// turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		});
+	},
+
+	_destroy: function() {
+		clearTimeout( this.searching );
+		this.element
+			.removeClass( "ui-autocomplete-input" )
+			.removeAttr( "autocomplete" );
+		this.menu.element.remove();
+		this.liveRegion.remove();
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "source" ) {
+			this._initSource();
+		}
+		if ( key === "appendTo" ) {
+			this.menu.element.appendTo( this._appendTo() );
+		}
+		if ( key === "disabled" && value && this.xhr ) {
+			this.xhr.abort();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+
+		if ( element ) {
+			element = element.jquery || element.nodeType ?
+				$( element ) :
+				this.document.find( element ).eq( 0 );
+		}
+
+		if ( !element ) {
+			element = this.element.closest( ".ui-front" );
+		}
+
+		if ( !element.length ) {
+			element = this.document[0].body;
+		}
+
+		return element;
+	},
+
+	_initSource: function() {
+		var array, url,
+			that = this;
+		if ( $.isArray(this.options.source) ) {
+			array = this.options.source;
+			this.source = function( request, response ) {
+				response( $.ui.autocomplete.filter( array, request.term ) );
+			};
+		} else if ( typeof this.options.source === "string" ) {
+			url = this.options.source;
+			this.source = function( request, response ) {
+				if ( that.xhr ) {
+					that.xhr.abort();
+				}
+				that.xhr = $.ajax({
+					url: url,
+					data: request,
+					dataType: "json",
+					success: function( data ) {
+						response( data );
+					},
+					error: function() {
+						response( [] );
+					}
+				});
+			};
+		} else {
+			this.source = this.options.source;
+		}
+	},
+
+	_searchTimeout: function( event ) {
+		clearTimeout( this.searching );
+		this.searching = this._delay(function() {
+			// only search if the value has changed
+			if ( this.term !== this._value() ) {
+				this.selectedItem = null;
+				this.search( null, event );
+			}
+		}, this.options.delay );
+	},
+
+	search: function( value, event ) {
+		value = value != null ? value : this._value();
+
+		// always save the actual value, not the one passed as an argument
+		this.term = this._value();
+
+		if ( value.length < this.options.minLength ) {
+			return this.close( event );
+		}
+
+		if ( this._trigger( "search", event ) === false ) {
+			return;
+		}
+
+		return this._search( value );
+	},
+
+	_search: function( value ) {
+		this.pending++;
+		this.element.addClass( "ui-autocomplete-loading" );
+		this.cancelSearch = false;
+
+		this.source( { term: value }, this._response() );
+	},
+
+	_response: function() {
+		var that = this,
+			index = ++requestIndex;
+
+		return function( content ) {
+			if ( index === requestIndex ) {
+				that.__response( content );
+			}
+
+			that.pending--;
+			if ( !that.pending ) {
+				that.element.removeClass( "ui-autocomplete-loading" );
+			}
+		};
+	},
+
+	__response: function( content ) {
+		if ( content ) {
+			content = this._normalize( content );
+		}
+		this._trigger( "response", null, { content: content } );
+		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
+			this._suggest( content );
+			this._trigger( "open" );
+		} else {
+			// use ._close() instead of .close() so we don't cancel future searches
+			this._close();
+		}
+	},
+
+	close: function( event ) {
+		this.cancelSearch = true;
+		this._close( event );
+	},
+
+	_close: function( event ) {
+		if ( this.menu.element.is( ":visible" ) ) {
+			this.menu.element.hide();
+			this.menu.blur();
+			this.isNewMenu = true;
+			this._trigger( "close", event );
+		}
+	},
+
+	_change: function( event ) {
+		if ( this.previous !== this._value() ) {
+			this._trigger( "change", event, { item: this.selectedItem } );
+		}
+	},
+
+	_normalize: function( items ) {
+		// assume all items have the right format when the first item is complete
+		if ( items.length && items[0].label && items[0].value ) {
+			return items;
+		}
+		return $.map( items, function( item ) {
+			if ( typeof item === "string" ) {
+				return {
+					label: item,
+					value: item
+				};
+			}
+			return $.extend({
+				label: item.label || item.value,
+				value: item.value || item.label
+			}, item );
+		});
+	},
+
+	_suggest: function( items ) {
+		var ul = this.menu.element.empty();
+		this._renderMenu( ul, items );
+		this.isNewMenu = true;
+		this.menu.refresh();
+
+		// size and position menu
+		ul.show();
+		this._resizeMenu();
+		ul.position( $.extend({
+			of: this.element
+		}, this.options.position ));
+
+		if ( this.options.autoFocus ) {
+			this.menu.next();
+		}
+	},
+
+	_resizeMenu: function() {
+		var ul = this.menu.element;
+		ul.outerWidth( Math.max(
+			// Firefox wraps long text (possibly a rounding bug)
+			// so we add 1px to avoid the wrapping (#7513)
+			ul.width( "" ).outerWidth() + 1,
+			this.element.outerWidth()
+		) );
+	},
+
+	_renderMenu: function( ul, items ) {
+		var that = this;
+		$.each( items, function( index, item ) {
+			that._renderItemData( ul, item );
+		});
+	},
+
+	_renderItemData: function( ul, item ) {
+		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
+	},
+
+	_renderItem: function( ul, item ) {
+		return $( "<li>" )
+			.append( $( "<a>" ).text( item.label ) )
+			.appendTo( ul );
+	},
+
+	_move: function( direction, event ) {
+		if ( !this.menu.element.is( ":visible" ) ) {
+			this.search( null, event );
+			return;
+		}
+		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
+				this.menu.isLastItem() && /^next/.test( direction ) ) {
+			this._value( this.term );
+			this.menu.blur();
+			return;
+		}
+		this.menu[ direction ]( event );
+	},
+
+	widget: function() {
+		return this.menu.element;
+	},
+
+	_value: function() {
+		return this.valueMethod.apply( this.element, arguments );
+	},
+
+	_keyEvent: function( keyEvent, event ) {
+		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+			this._move( keyEvent, event );
+
+			// prevents moving cursor to beginning/end of the text field in some browsers
+			event.preventDefault();
+		}
+	}
+});
+
+$.extend( $.ui.autocomplete, {
+	escapeRegex: function( value ) {
+		return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
+	},
+	filter: function(array, term) {
+		var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
+		return $.grep( array, function(value) {
+			return matcher.test( value.label || value.value || value );
+		});
+	}
+});
+
+
+// live region extension, adding a `messages` option
+// NOTE: This is an experimental API. We are still investigating
+// a full solution for string manipulation and internationalization.
+$.widget( "ui.autocomplete", $.ui.autocomplete, {
+	options: {
+		messages: {
+			noResults: "No search results.",
+			results: function( amount ) {
+				return amount + ( amount > 1 ? " results are" : " result is" ) +
+					" available, use up and down arrow keys to navigate.";
+			}
+		}
+	},
+
+	__response: function( content ) {
+		var message;
+		this._superApply( arguments );
+		if ( this.options.disabled || this.cancelSearch ) {
+			return;
+		}
+		if ( content && content.length ) {
+			message = this.options.messages.results( content.length );
+		} else {
+			message = this.options.messages.noResults;
+		}
+		this.liveRegion.text( message );
+	}
+});
+
+}( jQuery ));
+
+(function( $, undefined ) {
+
+var lastActive, startXPos, startYPos, clickDragged,
+	baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
+	stateClasses = "ui-state-hover ui-state-active ",
+	typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
+	formResetHandler = function() {
+		var form = $( this );
+		setTimeout(function() {
+			form.find( ":ui-button" ).button( "refresh" );
+		}, 1 );
+	},
+	radioGroup = function( radio ) {
+		var name = radio.name,
+			form = radio.form,
+			radios = $( [] );
+		if ( name ) {
+			name = name.replace( /'/g, "\\'" );
+			if ( form ) {
+				radios = $( form ).find( "[name='" + name + "']" );
+			} else {
+				radios = $( "[name='" + name + "']", radio.ownerDocument )
+					.filter(function() {
+						return !this.form;
+					});
+			}
+		}
+		return radios;
+	};
+
+$.widget( "ui.button", {
+	version: "1.10.3",
+	defaultElement: "<button>",
+	options: {
+		disabled: null,
+		text: true,
+		label: null,
+		icons: {
+			primary: null,
+			secondary: null
+		}
+	},
+	_create: function() {
+		this.element.closest( "form" )
+			.unbind( "reset" + this.eventNamespace )
+			.bind( "reset" + this.eventNamespace, formResetHandler );
+
+		if ( typeof this.options.disabled !== "boolean" ) {
+			this.options.disabled = !!this.element.prop( "disabled" );
+		} else {
+			this.element.prop( "disabled", this.options.disabled );
+		}
+
+		this._determineButtonType();
+		this.hasTitle = !!this.buttonElement.attr( "title" );
+
+		var that = this,
+			options = this.options,
+			toggleButton = this.type === "checkbox" || this.type === "radio",
+			activeClass = !toggleButton ? "ui-state-active" : "",
+			focusClass = "ui-state-focus";
+
+		if ( options.label === null ) {
+			options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
+		}
+
+		this._hoverable( this.buttonElement );
+
+		this.buttonElement
+			.addClass( baseClasses )
+			.attr( "role", "button" )
+			.bind( "mouseenter" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				if ( this === lastActive ) {
+					$( this ).addClass( "ui-state-active" );
+				}
+			})
+			.bind( "mouseleave" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				$( this ).removeClass( activeClass );
+			})
+			.bind( "click" + this.eventNamespace, function( event ) {
+				if ( options.disabled ) {
+					event.preventDefault();
+					event.stopImmediatePropagation();
+				}
+			});
+
+		this.element
+			.bind( "focus" + this.eventNamespace, function() {
+				// no need to check disabled, focus won't be triggered anyway
+				that.buttonElement.addClass( focusClass );
+			})
+			.bind( "blur" + this.eventNamespace, function() {
+				that.buttonElement.removeClass( focusClass );
+			});
+
+		if ( toggleButton ) {
+			this.element.bind( "change" + this.eventNamespace, function() {
+				if ( clickDragged ) {
+					return;
+				}
+				that.refresh();
+			});
+			// if mouse moves between mousedown and mouseup (drag) set clickDragged flag
+			// prevents issue where button state changes but checkbox/radio checked state
+			// does not in Firefox (see ticket #6970)
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					clickDragged = false;
+					startXPos = event.pageX;
+					startYPos = event.pageY;
+				})
+				.bind( "mouseup" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					if ( startXPos !== event.pageX || startYPos !== event.pageY ) {
+						clickDragged = true;
+					}
+			});
+		}
+
+		if ( this.type === "checkbox" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+			});
+		} else if ( this.type === "radio" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+				$( this ).addClass( "ui-state-active" );
+				that.buttonElement.attr( "aria-pressed", "true" );
+
+				var radio = that.element[ 0 ];
+				radioGroup( radio )
+					.not( radio )
+					.map(function() {
+						return $( this ).button( "widget" )[ 0 ];
+					})
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			});
+		} else {
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).addClass( "ui-state-active" );
+					lastActive = this;
+					that.document.one( "mouseup", function() {
+						lastActive = null;
+					});
+				})
+				.bind( "mouseup" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).removeClass( "ui-state-active" );
+				})
+				.bind( "keydown" + this.eventNamespace, function(event) {
+					if ( options.disabled ) {
+						return false;
+					}
+					if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {
+						$( this ).addClass( "ui-state-active" );
+					}
+				})
+				// see #8559, we bind to blur here in case the button element loses
+				// focus between keydown and keyup, it would be left in an "active" state
+				.bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
+					$( this ).removeClass( "ui-state-active" );
+				});
+
+			if ( this.buttonElement.is("a") ) {
+				this.buttonElement.keyup(function(event) {
+					if ( event.keyCode === $.ui.keyCode.SPACE ) {
+						// TODO pass through original event correctly (just as 2nd argument doesn't work)
+						$( this ).click();
+					}
+				});
+			}
+		}
+
+		// TODO: pull out $.Widget's handling for the disabled option into
+		// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
+		// be overridden by individual plugins
+		this._setOption( "disabled", options.disabled );
+		this._resetButton();
+	},
+
+	_determineButtonType: function() {
+		var ancestor, labelSelector, checked;
+
+		if ( this.element.is("[type=checkbox]") ) {
+			this.type = "checkbox";
+		} else if ( this.element.is("[type=radio]") ) {
+			this.type = "radio";
+		} else if ( this.element.is("input") ) {
+			this.type = "input";
+		} else {
+			this.type = "button";
+		}
+
+		if ( this.type === "checkbox" || this.type === "radio" ) {
+			// we don't search against the document in case the element
+			// is disconnected from the DOM
+			ancestor = this.element.parents().last();
+			labelSelector = "label[for='" + this.element.attr("id") + "']";
+			this.buttonElement = ancestor.find( labelSelector );
+			if ( !this.buttonElement.length ) {
+				ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
+				this.buttonElement = ancestor.filter( labelSelector );
+				if ( !this.buttonElement.length ) {
+					this.buttonElement = ancestor.find( labelSelector );
+				}
+			}
+			this.element.addClass( "ui-helper-hidden-accessible" );
+
+			checked = this.element.is( ":checked" );
+			if ( checked ) {
+				this.buttonElement.addClass( "ui-state-active" );
+			}
+			this.buttonElement.prop( "aria-pressed", checked );
+		} else {
+			this.buttonElement = this.element;
+		}
+	},
+
+	widget: function() {
+		return this.buttonElement;
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-helper-hidden-accessible" );
+		this.buttonElement
+			.removeClass( baseClasses + " " + stateClasses + " " + typeClasses )
+			.removeAttr( "role" )
+			.removeAttr( "aria-pressed" )
+			.html( this.buttonElement.find(".ui-button-text").html() );
+
+		if ( !this.hasTitle ) {
+			this.buttonElement.removeAttr( "title" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "disabled" ) {
+			if ( value ) {
+				this.element.prop( "disabled", true );
+			} else {
+				this.element.prop( "disabled", false );
+			}
+			return;
+		}
+		this._resetButton();
+	},
+
+	refresh: function() {
+		//See #8237 & #8828
+		var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );
+
+		if ( isDisabled !== this.options.disabled ) {
+			this._setOption( "disabled", isDisabled );
+		}
+		if ( this.type === "radio" ) {
+			radioGroup( this.element[0] ).each(function() {
+				if ( $( this ).is( ":checked" ) ) {
+					$( this ).button( "widget" )
+						.addClass( "ui-state-active" )
+						.attr( "aria-pressed", "true" );
+				} else {
+					$( this ).button( "widget" )
+						.removeClass( "ui-state-active" )
+						.attr( "aria-pressed", "false" );
+				}
+			});
+		} else if ( this.type === "checkbox" ) {
+			if ( this.element.is( ":checked" ) ) {
+				this.buttonElement
+					.addClass( "ui-state-active" )
+					.attr( "aria-pressed", "true" );
+			} else {
+				this.buttonElement
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			}
+		}
+	},
+
+	_resetButton: function() {
+		if ( this.type === "input" ) {
+			if ( this.options.label ) {
+				this.element.val( this.options.label );
+			}
+			return;
+		}
+		var buttonElement = this.buttonElement.removeClass( typeClasses ),
+			buttonText = $( "<span></span>", this.document[0] )
+				.addClass( "ui-button-text" )
+				.html( this.options.label )
+				.appendTo( buttonElement.empty() )
+				.text(),
+			icons = this.options.icons,
+			multipleIcons = icons.primary && icons.secondary,
+			buttonClasses = [];
+
+		if ( icons.primary || icons.secondary ) {
+			if ( this.options.text ) {
+				buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
+			}
+
+			if ( icons.primary ) {
+				buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
+			}
+
+			if ( icons.secondary ) {
+				buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
+			}
+
+			if ( !this.options.text ) {
+				buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
+
+				if ( !this.hasTitle ) {
+					buttonElement.attr( "title", $.trim( buttonText ) );
+				}
+			}
+		} else {
+			buttonClasses.push( "ui-button-text-only" );
+		}
+		buttonElement.addClass( buttonClasses.join( " " ) );
+	}
+});
+
+$.widget( "ui.buttonset", {
+	version: "1.10.3",
+	options: {
+		items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"
+	},
+
+	_create: function() {
+		this.element.addClass( "ui-buttonset" );
+	},
+
+	_init: function() {
+		this.refresh();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "disabled" ) {
+			this.buttons.button( "option", key, value );
+		}
+
+		this._super( key, value );
+	},
+
+	refresh: function() {
+		var rtl = this.element.css( "direction" ) === "rtl";
+
+		this.buttons = this.element.find( this.options.items )
+			.filter( ":ui-button" )
+				.button( "refresh" )
+			.end()
+			.not( ":ui-button" )
+				.button()
+			.end()
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
+				.filter( ":first" )
+					.addClass( rtl ? "ui-corner-right" : "ui-corner-left" )
+				.end()
+				.filter( ":last" )
+					.addClass( rtl ? "ui-corner-left" : "ui-corner-right" )
+				.end()
+			.end();
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-buttonset" );
+		this.buttons
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-left ui-corner-right" )
+			.end()
+			.button( "destroy" );
+	}
+});
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+$.extend($.ui, { datepicker: { version: "1.10.3" } });
+
+var PROP_NAME = "datepicker",
+	instActive;
+
+/* Date picker manager.
+   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
+   Settings for (groups of) date pickers are maintained in an instance object,
+   allowing multiple different settings on the same page. */
+
+function Datepicker() {
+	this._curInst = null; // The current instance in use
+	this._keyEvent = false; // If the last event was a key event
+	this._disabledInputs = []; // List of date picker inputs that have been disabled
+	this._datepickerShowing = false; // True if the popup picker is showing , false if not
+	this._inDialog = false; // True if showing within a "dialog", false if not
+	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
+	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
+	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
+	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
+	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
+	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
+	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
+	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
+	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
+	this.regional = []; // Available regional settings, indexed by language code
+	this.regional[""] = { // Default regional settings
+		closeText: "Done", // Display text for close link
+		prevText: "Prev", // Display text for previous month link
+		nextText: "Next", // Display text for next month link
+		currentText: "Today", // Display text for current month link
+		monthNames: ["January","February","March","April","May","June",
+			"July","August","September","October","November","December"], // Names of months for drop-down and formatting
+		monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting
+		dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting
+		dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting
+		dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday
+		weekHeader: "Wk", // Column header for week of the year
+		dateFormat: "mm/dd/yy", // See format options on parseDate
+		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
+		isRTL: false, // True if right-to-left language, false if left-to-right
+		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
+		yearSuffix: "" // Additional text to append to the year in the month headers
+	};
+	this._defaults = { // Global defaults for all the date picker instances
+		showOn: "focus", // "focus" for popup on focus,
+			// "button" for trigger button, or "both" for either
+		showAnim: "fadeIn", // Name of jQuery animation for popup
+		showOptions: {}, // Options for enhanced animations
+		defaultDate: null, // Used when field is blank: actual date,
+			// +/-number for offset from today, null for today
+		appendText: "", // Display text following the input box, e.g. showing the format
+		buttonText: "...", // Text for trigger button
+		buttonImage: "", // URL for trigger button image
+		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
+		hideIfNoPrevNext: false, // True to hide next/previous month links
+			// if not applicable, false to just disable them
+		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
+		gotoCurrent: false, // True if today link goes back to current selection instead
+		changeMonth: false, // True if month can be selected directly, false if only prev/next
+		changeYear: false, // True if year can be selected directly, false if only prev/next
+		yearRange: "c-10:c+10", // Range of years to display in drop-down,
+			// either relative to today's year (-nn:+nn), relative to currently displayed year
+			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
+		showOtherMonths: false, // True to show dates in other months, false to leave blank
+		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
+		showWeek: false, // True to show week of the year, false to not show it
+		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
+			// takes a Date and returns the number of the week for it
+		shortYearCutoff: "+10", // Short year values < this are in the current century,
+			// > this are in the previous century,
+			// string value starting with "+" for current year + value
+		minDate: null, // The earliest selectable date, or null for no limit
+		maxDate: null, // The latest selectable date, or null for no limit
+		duration: "fast", // Duration of display/closure
+		beforeShowDay: null, // Function that takes a date and returns an array with
+			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
+			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
+		beforeShow: null, // Function that takes an input field and
+			// returns a set of custom settings for the date picker
+		onSelect: null, // Define a callback function when a date is selected
+		onChangeMonthYear: null, // Define a callback function when the month or year is changed
+		onClose: null, // Define a callback function when the datepicker is closed
+		numberOfMonths: 1, // Number of months to show at a time
+		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
+		stepMonths: 1, // Number of months to step back/forward
+		stepBigMonths: 12, // Number of months to step back/forward for the big links
+		altField: "", // Selector for an alternate field to store selected dates into
+		altFormat: "", // The date format to use for the alternate field
+		constrainInput: true, // The input is constrained by the current date format
+		showButtonPanel: false, // True to show button panel, false to not show it
+		autoSize: false, // True to size the input for the date format, false to leave as is
+		disabled: false // The initial disabled state
+	};
+	$.extend(this._defaults, this.regional[""]);
+	this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));
+}
+
+$.extend(Datepicker.prototype, {
+	/* Class name added to elements to indicate already configured with a date picker. */
+	markerClassName: "hasDatepicker",
+
+	//Keep track of the maximum number of rows displayed (see #7043)
+	maxRows: 4,
+
+	// TODO rename to "widget" when switching to widget factory
+	_widgetDatepicker: function() {
+		return this.dpDiv;
+	},
+
+	/* Override the default settings for all instances of the date picker.
+	 * @param  settings  object - the new settings to use as defaults (anonymous object)
+	 * @return the manager object
+	 */
+	setDefaults: function(settings) {
+		extendRemove(this._defaults, settings || {});
+		return this;
+	},
+
+	/* Attach the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
+	 */
+	_attachDatepicker: function(target, settings) {
+		var nodeName, inline, inst;
+		nodeName = target.nodeName.toLowerCase();
+		inline = (nodeName === "div" || nodeName === "span");
+		if (!target.id) {
+			this.uuid += 1;
+			target.id = "dp" + this.uuid;
+		}
+		inst = this._newInst($(target), inline);
+		inst.settings = $.extend({}, settings || {});
+		if (nodeName === "input") {
+			this._connectDatepicker(target, inst);
+		} else if (inline) {
+			this._inlineDatepicker(target, inst);
+		}
+	},
+
+	/* Create a new instance object. */
+	_newInst: function(target, inline) {
+		var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars
+		return {id: id, input: target, // associated target
+			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
+			drawMonth: 0, drawYear: 0, // month being drawn
+			inline: inline, // is datepicker inline or not
+			dpDiv: (!inline ? this.dpDiv : // presentation div
+			bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))};
+	},
+
+	/* Attach the date picker to an input field. */
+	_connectDatepicker: function(target, inst) {
+		var input = $(target);
+		inst.append = $([]);
+		inst.trigger = $([]);
+		if (input.hasClass(this.markerClassName)) {
+			return;
+		}
+		this._attachments(input, inst);
+		input.addClass(this.markerClassName).keydown(this._doKeyDown).
+			keypress(this._doKeyPress).keyup(this._doKeyUp);
+		this._autoSize(inst);
+		$.data(target, PROP_NAME, inst);
+		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+	},
+
+	/* Make attachments based on settings. */
+	_attachments: function(input, inst) {
+		var showOn, buttonText, buttonImage,
+			appendText = this._get(inst, "appendText"),
+			isRTL = this._get(inst, "isRTL");
+
+		if (inst.append) {
+			inst.append.remove();
+		}
+		if (appendText) {
+			inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>");
+			input[isRTL ? "before" : "after"](inst.append);
+		}
+
+		input.unbind("focus", this._showDatepicker);
+
+		if (inst.trigger) {
+			inst.trigger.remove();
+		}
+
+		showOn = this._get(inst, "showOn");
+		if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field
+			input.focus(this._showDatepicker);
+		}
+		if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked
+			buttonText = this._get(inst, "buttonText");
+			buttonImage = this._get(inst, "buttonImage");
+			inst.trigger = $(this._get(inst, "buttonImageOnly") ?
+				$("<img/>").addClass(this._triggerClass).
+					attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
+				$("<button type='button'></button>").addClass(this._triggerClass).
+					html(!buttonImage ? buttonText : $("<img/>").attr(
+					{ src:buttonImage, alt:buttonText, title:buttonText })));
+			input[isRTL ? "before" : "after"](inst.trigger);
+			inst.trigger.click(function() {
+				if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {
+					$.datepicker._hideDatepicker();
+				} else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {
+					$.datepicker._hideDatepicker();
+					$.datepicker._showDatepicker(input[0]);
+				} else {
+					$.datepicker._showDatepicker(input[0]);
+				}
+				return false;
+			});
+		}
+	},
+
+	/* Apply the maximum length for the date format. */
+	_autoSize: function(inst) {
+		if (this._get(inst, "autoSize") && !inst.inline) {
+			var findMax, max, maxI, i,
+				date = new Date(2009, 12 - 1, 20), // Ensure double digits
+				dateFormat = this._get(inst, "dateFormat");
+
+			if (dateFormat.match(/[DM]/)) {
+				findMax = function(names) {
+					max = 0;
+					maxI = 0;
+					for (i = 0; i < names.length; i++) {
+						if (names[i].length > max) {
+							max = names[i].length;
+							maxI = i;
+						}
+					}
+					return maxI;
+				};
+				date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
+					"monthNames" : "monthNamesShort"))));
+				date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
+					"dayNames" : "dayNamesShort"))) + 20 - date.getDay());
+			}
+			inst.input.attr("size", this._formatDate(inst, date).length);
+		}
+	},
+
+	/* Attach an inline date picker to a div. */
+	_inlineDatepicker: function(target, inst) {
+		var divSpan = $(target);
+		if (divSpan.hasClass(this.markerClassName)) {
+			return;
+		}
+		divSpan.addClass(this.markerClassName).append(inst.dpDiv);
+		$.data(target, PROP_NAME, inst);
+		this._setDate(inst, this._getDefaultDate(inst), true);
+		this._updateDatepicker(inst);
+		this._updateAlternate(inst);
+		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
+		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
+		inst.dpDiv.css( "display", "block" );
+	},
+
+	/* Pop-up the date picker in a "dialog" box.
+	 * @param  input element - ignored
+	 * @param  date	string or Date - the initial date to display
+	 * @param  onSelect  function - the function to call when a date is selected
+	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
+	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
+	 *					event - with x/y coordinates or
+	 *					leave empty for default (screen centre)
+	 * @return the manager object
+	 */
+	_dialogDatepicker: function(input, date, onSelect, settings, pos) {
+		var id, browserWidth, browserHeight, scrollX, scrollY,
+			inst = this._dialogInst; // internal instance
+
+		if (!inst) {
+			this.uuid += 1;
+			id = "dp" + this.uuid;
+			this._dialogInput = $("<input type='text' id='" + id +
+				"' style='position: absolute; top: -100px; width: 0px;'/>");
+			this._dialogInput.keydown(this._doKeyDown);
+			$("body").append(this._dialogInput);
+			inst = this._dialogInst = this._newInst(this._dialogInput, false);
+			inst.settings = {};
+			$.data(this._dialogInput[0], PROP_NAME, inst);
+		}
+		extendRemove(inst.settings, settings || {});
+		date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);
+		this._dialogInput.val(date);
+
+		this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
+		if (!this._pos) {
+			browserWidth = document.documentElement.clientWidth;
+			browserHeight = document.documentElement.clientHeight;
+			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
+			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
+			this._pos = // should use actual width/height below
+				[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
+		}
+
+		// move input on screen for focus, but hidden behind dialog
+		this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px");
+		inst.settings.onSelect = onSelect;
+		this._inDialog = true;
+		this.dpDiv.addClass(this._dialogClass);
+		this._showDatepicker(this._dialogInput[0]);
+		if ($.blockUI) {
+			$.blockUI(this.dpDiv);
+		}
+		$.data(this._dialogInput[0], PROP_NAME, inst);
+		return this;
+	},
+
+	/* Detach a datepicker from its control.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_destroyDatepicker: function(target) {
+		var nodeName,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		$.removeData(target, PROP_NAME);
+		if (nodeName === "input") {
+			inst.append.remove();
+			inst.trigger.remove();
+			$target.removeClass(this.markerClassName).
+				unbind("focus", this._showDatepicker).
+				unbind("keydown", this._doKeyDown).
+				unbind("keypress", this._doKeyPress).
+				unbind("keyup", this._doKeyUp);
+		} else if (nodeName === "div" || nodeName === "span") {
+			$target.removeClass(this.markerClassName).empty();
+		}
+	},
+
+	/* Enable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_enableDatepicker: function(target) {
+		var nodeName, inline,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if (nodeName === "input") {
+			target.disabled = false;
+			inst.trigger.filter("button").
+				each(function() { this.disabled = false; }).end().
+				filter("img").css({opacity: "1.0", cursor: ""});
+		} else if (nodeName === "div" || nodeName === "span") {
+			inline = $target.children("." + this._inlineClass);
+			inline.children().removeClass("ui-state-disabled");
+			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
+				prop("disabled", false);
+		}
+		this._disabledInputs = $.map(this._disabledInputs,
+			function(value) { return (value === target ? null : value); }); // delete entry
+	},
+
+	/* Disable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_disableDatepicker: function(target) {
+		var nodeName, inline,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if (nodeName === "input") {
+			target.disabled = true;
+			inst.trigger.filter("button").
+				each(function() { this.disabled = true; }).end().
+				filter("img").css({opacity: "0.5", cursor: "default"});
+		} else if (nodeName === "div" || nodeName === "span") {
+			inline = $target.children("." + this._inlineClass);
+			inline.children().addClass("ui-state-disabled");
+			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
+				prop("disabled", true);
+		}
+		this._disabledInputs = $.map(this._disabledInputs,
+			function(value) { return (value === target ? null : value); }); // delete entry
+		this._disabledInputs[this._disabledInputs.length] = target;
+	},
+
+	/* Is the first field in a jQuery collection disabled as a datepicker?
+	 * @param  target	element - the target input field or division or span
+	 * @return boolean - true if disabled, false if enabled
+	 */
+	_isDisabledDatepicker: function(target) {
+		if (!target) {
+			return false;
+		}
+		for (var i = 0; i < this._disabledInputs.length; i++) {
+			if (this._disabledInputs[i] === target) {
+				return true;
+			}
+		}
+		return false;
+	},
+
+	/* Retrieve the instance data for the target control.
+	 * @param  target  element - the target input field or division or span
+	 * @return  object - the associated instance data
+	 * @throws  error if a jQuery problem getting data
+	 */
+	_getInst: function(target) {
+		try {
+			return $.data(target, PROP_NAME);
+		}
+		catch (err) {
+			throw "Missing instance data for this datepicker";
+		}
+	},
+
+	/* Update or retrieve the settings for a date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 * @param  name	object - the new settings to update or
+	 *				string - the name of the setting to change or retrieve,
+	 *				when retrieving also "all" for all instance settings or
+	 *				"defaults" for all global defaults
+	 * @param  value   any - the new value for the setting
+	 *				(omit if above is an object or to retrieve a value)
+	 */
+	_optionDatepicker: function(target, name, value) {
+		var settings, date, minDate, maxDate,
+			inst = this._getInst(target);
+
+		if (arguments.length === 2 && typeof name === "string") {
+			return (name === "defaults" ? $.extend({}, $.datepicker._defaults) :
+				(inst ? (name === "all" ? $.extend({}, inst.settings) :
+				this._get(inst, name)) : null));
+		}
+
+		settings = name || {};
+		if (typeof name === "string") {
+			settings = {};
+			settings[name] = value;
+		}
+
+		if (inst) {
+			if (this._curInst === inst) {
+				this._hideDatepicker();
+			}
+
+			date = this._getDateDatepicker(target, true);
+			minDate = this._getMinMaxDate(inst, "min");
+			maxDate = this._getMinMaxDate(inst, "max");
+			extendRemove(inst.settings, settings);
+			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
+			if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {
+				inst.settings.minDate = this._formatDate(inst, minDate);
+			}
+			if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {
+				inst.settings.maxDate = this._formatDate(inst, maxDate);
+			}
+			if ( "disabled" in settings ) {
+				if ( settings.disabled ) {
+					this._disableDatepicker(target);
+				} else {
+					this._enableDatepicker(target);
+				}
+			}
+			this._attachments($(target), inst);
+			this._autoSize(inst);
+			this._setDate(inst, date);
+			this._updateAlternate(inst);
+			this._updateDatepicker(inst);
+		}
+	},
+
+	// change method deprecated
+	_changeDatepicker: function(target, name, value) {
+		this._optionDatepicker(target, name, value);
+	},
+
+	/* Redraw the date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 */
+	_refreshDatepicker: function(target) {
+		var inst = this._getInst(target);
+		if (inst) {
+			this._updateDatepicker(inst);
+		}
+	},
+
+	/* Set the dates for a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  date	Date - the new date
+	 */
+	_setDateDatepicker: function(target, date) {
+		var inst = this._getInst(target);
+		if (inst) {
+			this._setDate(inst, date);
+			this._updateDatepicker(inst);
+			this._updateAlternate(inst);
+		}
+	},
+
+	/* Get the date(s) for the first entry in a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  noDefault boolean - true if no default date is to be used
+	 * @return Date - the current date
+	 */
+	_getDateDatepicker: function(target, noDefault) {
+		var inst = this._getInst(target);
+		if (inst && !inst.inline) {
+			this._setDateFromField(inst, noDefault);
+		}
+		return (inst ? this._getDate(inst) : null);
+	},
+
+	/* Handle keystrokes. */
+	_doKeyDown: function(event) {
+		var onSelect, dateStr, sel,
+			inst = $.datepicker._getInst(event.target),
+			handled = true,
+			isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
+
+		inst._keyEvent = true;
+		if ($.datepicker._datepickerShowing) {
+			switch (event.keyCode) {
+				case 9: $.datepicker._hideDatepicker();
+						handled = false;
+						break; // hide on tab out
+				case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." +
+									$.datepicker._currentClass + ")", inst.dpDiv);
+						if (sel[0]) {
+							$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
+						}
+
+						onSelect = $.datepicker._get(inst, "onSelect");
+						if (onSelect) {
+							dateStr = $.datepicker._formatDate(inst);
+
+							// trigger custom callback
+							onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
+						} else {
+							$.datepicker._hideDatepicker();
+						}
+
+						return false; // don't submit the form
+				case 27: $.datepicker._hideDatepicker();
+						break; // hide on escape
+				case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
+							-$.datepicker._get(inst, "stepBigMonths") :
+							-$.datepicker._get(inst, "stepMonths")), "M");
+						break; // previous month/year on page up/+ ctrl
+				case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
+							+$.datepicker._get(inst, "stepBigMonths") :
+							+$.datepicker._get(inst, "stepMonths")), "M");
+						break; // next month/year on page down/+ ctrl
+				case 35: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._clearDate(event.target);
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // clear on ctrl or command +end
+				case 36: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._gotoToday(event.target);
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // current on ctrl or command +home
+				case 37: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						// -1 day on ctrl or command +left
+						if (event.originalEvent.altKey) {
+							$.datepicker._adjustDate(event.target, (event.ctrlKey ?
+								-$.datepicker._get(inst, "stepBigMonths") :
+								-$.datepicker._get(inst, "stepMonths")), "M");
+						}
+						// next month/year on alt +left on Mac
+						break;
+				case 38: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, -7, "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // -1 week on ctrl or command +up
+				case 39: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						// +1 day on ctrl or command +right
+						if (event.originalEvent.altKey) {
+							$.datepicker._adjustDate(event.target, (event.ctrlKey ?
+								+$.datepicker._get(inst, "stepBigMonths") :
+								+$.datepicker._get(inst, "stepMonths")), "M");
+						}
+						// next month/year on alt +right
+						break;
+				case 40: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, +7, "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // +1 week on ctrl or command +down
+				default: handled = false;
+			}
+		} else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home
+			$.datepicker._showDatepicker(this);
+		} else {
+			handled = false;
+		}
+
+		if (handled) {
+			event.preventDefault();
+			event.stopPropagation();
+		}
+	},
+
+	/* Filter entered characters - based on date format. */
+	_doKeyPress: function(event) {
+		var chars, chr,
+			inst = $.datepicker._getInst(event.target);
+
+		if ($.datepicker._get(inst, "constrainInput")) {
+			chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat"));
+			chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);
+			return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1);
+		}
+	},
+
+	/* Synchronise manual entry and field/alternate field. */
+	_doKeyUp: function(event) {
+		var date,
+			inst = $.datepicker._getInst(event.target);
+
+		if (inst.input.val() !== inst.lastVal) {
+			try {
+				date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
+					(inst.input ? inst.input.val() : null),
+					$.datepicker._getFormatConfig(inst));
+
+				if (date) { // only if valid
+					$.datepicker._setDateFromField(inst);
+					$.datepicker._updateAlternate(inst);
+					$.datepicker._updateDatepicker(inst);
+				}
+			}
+			catch (err) {
+			}
+		}
+		return true;
+	},
+
+	/* Pop-up the date picker for a given input field.
+	 * If false returned from beforeShow event handler do not show.
+	 * @param  input  element - the input field attached to the date picker or
+	 *					event - if triggered by focus
+	 */
+	_showDatepicker: function(input) {
+		input = input.target || input;
+		if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger
+			input = $("input", input.parentNode)[0];
+		}
+
+		if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here
+			return;
+		}
+
+		var inst, beforeShow, beforeShowSettings, isFixed,
+			offset, showAnim, duration;
+
+		inst = $.datepicker._getInst(input);
+		if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
+			$.datepicker._curInst.dpDiv.stop(true, true);
+			if ( inst && $.datepicker._datepickerShowing ) {
+				$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
+			}
+		}
+
+		beforeShow = $.datepicker._get(inst, "beforeShow");
+		beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
+		if(beforeShowSettings === false){
+			return;
+		}
+		extendRemove(inst.settings, beforeShowSettings);
+
+		inst.lastVal = null;
+		$.datepicker._lastInput = input;
+		$.datepicker._setDateFromField(inst);
+
+		if ($.datepicker._inDialog) { // hide cursor
+			input.value = "";
+		}
+		if (!$.datepicker._pos) { // position below input
+			$.datepicker._pos = $.datepicker._findPos(input);
+			$.datepicker._pos[1] += input.offsetHeight; // add the height
+		}
+
+		isFixed = false;
+		$(input).parents().each(function() {
+			isFixed |= $(this).css("position") === "fixed";
+			return !isFixed;
+		});
+
+		offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
+		$.datepicker._pos = null;
+		//to avoid flashes on Firefox
+		inst.dpDiv.empty();
+		// determine sizing offscreen
+		inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"});
+		$.datepicker._updateDatepicker(inst);
+		// fix width for dynamic number of date pickers
+		// and adjust position before showing
+		offset = $.datepicker._checkOffset(inst, offset, isFixed);
+		inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
+			"static" : (isFixed ? "fixed" : "absolute")), display: "none",
+			left: offset.left + "px", top: offset.top + "px"});
+
+		if (!inst.inline) {
+			showAnim = $.datepicker._get(inst, "showAnim");
+			duration = $.datepicker._get(inst, "duration");
+			inst.dpDiv.zIndex($(input).zIndex()+1);
+			$.datepicker._datepickerShowing = true;
+
+			if ( $.effects && $.effects.effect[ showAnim ] ) {
+				inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration);
+			} else {
+				inst.dpDiv[showAnim || "show"](showAnim ? duration : null);
+			}
+
+			if ( $.datepicker._shouldFocusInput( inst ) ) {
+				inst.input.focus();
+			}
+
+			$.datepicker._curInst = inst;
+		}
+	},
+
+	/* Generate the date picker content. */
+	_updateDatepicker: function(inst) {
+		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
+		instActive = inst; // for delegate hover events
+		inst.dpDiv.empty().append(this._generateHTML(inst));
+		this._attachHandlers(inst);
+		inst.dpDiv.find("." + this._dayOverClass + " a").mouseover();
+
+		var origyearshtml,
+			numMonths = this._getNumberOfMonths(inst),
+			cols = numMonths[1],
+			width = 17;
+
+		inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
+		if (cols > 1) {
+			inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em");
+		}
+		inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") +
+			"Class"]("ui-datepicker-multi");
+		inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") +
+			"Class"]("ui-datepicker-rtl");
+
+		if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
+			inst.input.focus();
+		}
+
+		// deffered render of the years select (to avoid flashes on Firefox)
+		if( inst.yearshtml ){
+			origyearshtml = inst.yearshtml;
+			setTimeout(function(){
+				//assure that inst.yearshtml didn't change.
+				if( origyearshtml === inst.yearshtml && inst.yearshtml ){
+					inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml);
+				}
+				origyearshtml = inst.yearshtml = null;
+			}, 0);
+		}
+	},
+
+	// #6694 - don't focus the input if it's already focused
+	// this breaks the change event in IE
+	// Support: IE and jQuery <1.9
+	_shouldFocusInput: function( inst ) {
+		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
+	},
+
+	/* Check positioning to remain on screen. */
+	_checkOffset: function(inst, offset, isFixed) {
+		var dpWidth = inst.dpDiv.outerWidth(),
+			dpHeight = inst.dpDiv.outerHeight(),
+			inputWidth = inst.input ? inst.input.outerWidth() : 0,
+			inputHeight = inst.input ? inst.input.outerHeight() : 0,
+			viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),
+			viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
+
+		offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0);
+		offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;
+		offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
+
+		// now check if datepicker is showing outside window viewport - move to a better place if so.
+		offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
+			Math.abs(offset.left + dpWidth - viewWidth) : 0);
+		offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
+			Math.abs(dpHeight + inputHeight) : 0);
+
+		return offset;
+	},
+
+	/* Find an object's position on the screen. */
+	_findPos: function(obj) {
+		var position,
+			inst = this._getInst(obj),
+			isRTL = this._get(inst, "isRTL");
+
+		while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {
+			obj = obj[isRTL ? "previousSibling" : "nextSibling"];
+		}
+
+		position = $(obj).offset();
+		return [position.left, position.top];
+	},
+
+	/* Hide the date picker from view.
+	 * @param  input  element - the input field attached to the date picker
+	 */
+	_hideDatepicker: function(input) {
+		var showAnim, duration, postProcess, onClose,
+			inst = this._curInst;
+
+		if (!inst || (input && inst !== $.data(input, PROP_NAME))) {
+			return;
+		}
+
+		if (this._datepickerShowing) {
+			showAnim = this._get(inst, "showAnim");
+			duration = this._get(inst, "duration");
+			postProcess = function() {
+				$.datepicker._tidyDialog(inst);
+			};
+
+			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
+			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
+				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess);
+			} else {
+				inst.dpDiv[(showAnim === "slideDown" ? "slideUp" :
+					(showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess);
+			}
+
+			if (!showAnim) {
+				postProcess();
+			}
+			this._datepickerShowing = false;
+
+			onClose = this._get(inst, "onClose");
+			if (onClose) {
+				onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]);
+			}
+
+			this._lastInput = null;
+			if (this._inDialog) {
+				this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });
+				if ($.blockUI) {
+					$.unblockUI();
+					$("body").append(this.dpDiv);
+				}
+			}
+			this._inDialog = false;
+		}
+	},
+
+	/* Tidy up after a dialog display. */
+	_tidyDialog: function(inst) {
+		inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar");
+	},
+
+	/* Close date picker if clicked elsewhere. */
+	_checkExternalClick: function(event) {
+		if (!$.datepicker._curInst) {
+			return;
+		}
+
+		var $target = $(event.target),
+			inst = $.datepicker._getInst($target[0]);
+
+		if ( ( ( $target[0].id !== $.datepicker._mainDivId &&
+				$target.parents("#" + $.datepicker._mainDivId).length === 0 &&
+				!$target.hasClass($.datepicker.markerClassName) &&
+				!$target.closest("." + $.datepicker._triggerClass).length &&
+				$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||
+			( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {
+				$.datepicker._hideDatepicker();
+		}
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustDate: function(id, offset, period) {
+		var target = $(id),
+			inst = this._getInst(target[0]);
+
+		if (this._isDisabledDatepicker(target[0])) {
+			return;
+		}
+		this._adjustInstDate(inst, offset +
+			(period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning
+			period);
+		this._updateDatepicker(inst);
+	},
+
+	/* Action for current link. */
+	_gotoToday: function(id) {
+		var date,
+			target = $(id),
+			inst = this._getInst(target[0]);
+
+		if (this._get(inst, "gotoCurrent") && inst.currentDay) {
+			inst.selectedDay = inst.currentDay;
+			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
+			inst.drawYear = inst.selectedYear = inst.currentYear;
+		} else {
+			date = new Date();
+			inst.selectedDay = date.getDate();
+			inst.drawMonth = inst.selectedMonth = date.getMonth();
+			inst.drawYear = inst.selectedYear = date.getFullYear();
+		}
+		this._notifyChange(inst);
+		this._adjustDate(target);
+	},
+
+	/* Action for selecting a new month/year. */
+	_selectMonthYear: function(id, select, period) {
+		var target = $(id),
+			inst = this._getInst(target[0]);
+
+		inst["selected" + (period === "M" ? "Month" : "Year")] =
+		inst["draw" + (period === "M" ? "Month" : "Year")] =
+			parseInt(select.options[select.selectedIndex].value,10);
+
+		this._notifyChange(inst);
+		this._adjustDate(target);
+	},
+
+	/* Action for selecting a day. */
+	_selectDay: function(id, month, year, td) {
+		var inst,
+			target = $(id);
+
+		if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
+			return;
+		}
+
+		inst = this._getInst(target[0]);
+		inst.selectedDay = inst.currentDay = $("a", td).html();
+		inst.selectedMonth = inst.currentMonth = month;
+		inst.selectedYear = inst.currentYear = year;
+		this._selectDate(id, this._formatDate(inst,
+			inst.currentDay, inst.currentMonth, inst.currentYear));
+	},
+
+	/* Erase the input field and hide the date picker. */
+	_clearDate: function(id) {
+		var target = $(id);
+		this._selectDate(target, "");
+	},
+
+	/* Update the input field with the selected date. */
+	_selectDate: function(id, dateStr) {
+		var onSelect,
+			target = $(id),
+			inst = this._getInst(target[0]);
+
+		dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
+		if (inst.input) {
+			inst.input.val(dateStr);
+		}
+		this._updateAlternate(inst);
+
+		onSelect = this._get(inst, "onSelect");
+		if (onSelect) {
+			onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
+		} else if (inst.input) {
+			inst.input.trigger("change"); // fire the change event
+		}
+
+		if (inst.inline){
+			this._updateDatepicker(inst);
+		} else {
+			this._hideDatepicker();
+			this._lastInput = inst.input[0];
+			if (typeof(inst.input[0]) !== "object") {
+				inst.input.focus(); // restore focus
+			}
+			this._lastInput = null;
+		}
+	},
+
+	/* Update any alternate field to synchronise with the main field. */
+	_updateAlternate: function(inst) {
+		var altFormat, date, dateStr,
+			altField = this._get(inst, "altField");
+
+		if (altField) { // update alternate field too
+			altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat");
+			date = this._getDate(inst);
+			dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
+			$(altField).each(function() { $(this).val(dateStr); });
+		}
+	},
+
+	/* Set as beforeShowDay function to prevent selection of weekends.
+	 * @param  date  Date - the date to customise
+	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
+	 */
+	noWeekends: function(date) {
+		var day = date.getDay();
+		return [(day > 0 && day < 6), ""];
+	},
+
+	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
+	 * @param  date  Date - the date to get the week for
+	 * @return  number - the number of the week within the year that contains this date
+	 */
+	iso8601Week: function(date) {
+		var time,
+			checkDate = new Date(date.getTime());
+
+		// Find Thursday of this week starting on Monday
+		checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
+
+		time = checkDate.getTime();
+		checkDate.setMonth(0); // Compare with Jan 1
+		checkDate.setDate(1);
+		return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
+	},
+
+	/* Parse a string value into a date object.
+	 * See formatDate below for the possible formats.
+	 *
+	 * @param  format string - the expected format of the date
+	 * @param  value string - the date in the above format
+	 * @param  settings Object - attributes include:
+	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  Date - the extracted date value or null if value is blank
+	 */
+	parseDate: function (format, value, settings) {
+		if (format == null || value == null) {
+			throw "Invalid arguments";
+		}
+
+		value = (typeof value === "object" ? value.toString() : value + "");
+		if (value === "") {
+			return null;
+		}
+
+		var iFormat, dim, extra,
+			iValue = 0,
+			shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,
+			shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
+				new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),
+			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
+			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
+			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
+			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
+			year = -1,
+			month = -1,
+			day = -1,
+			doy = -1,
+			literal = false,
+			date,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			},
+			// Extract a number from the string value
+			getNumber = function(match) {
+				var isDoubled = lookAhead(match),
+					size = (match === "@" ? 14 : (match === "!" ? 20 :
+					(match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))),
+					digits = new RegExp("^\\d{1," + size + "}"),
+					num = value.substring(iValue).match(digits);
+				if (!num) {
+					throw "Missing number at position " + iValue;
+				}
+				iValue += num[0].length;
+				return parseInt(num[0], 10);
+			},
+			// Extract a name from the string value and convert to an index
+			getName = function(match, shortNames, longNames) {
+				var index = -1,
+					names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
+						return [ [k, v] ];
+					}).sort(function (a, b) {
+						return -(a[1].length - b[1].length);
+					});
+
+				$.each(names, function (i, pair) {
+					var name = pair[1];
+					if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
+						index = pair[0];
+						iValue += name.length;
+						return false;
+					}
+				});
+				if (index !== -1) {
+					return index + 1;
+				} else {
+					throw "Unknown name at position " + iValue;
+				}
+			},
+			// Confirm that a literal character matches the string value
+			checkLiteral = function() {
+				if (value.charAt(iValue) !== format.charAt(iFormat)) {
+					throw "Unexpected literal at position " + iValue;
+				}
+				iValue++;
+			};
+
+		for (iFormat = 0; iFormat < format.length; iFormat++) {
+			if (literal) {
+				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+					literal = false;
+				} else {
+					checkLiteral();
+				}
+			} else {
+				switch (format.charAt(iFormat)) {
+					case "d":
+						day = getNumber("d");
+						break;
+					case "D":
+						getName("D", dayNamesShort, dayNames);
+						break;
+					case "o":
+						doy = getNumber("o");
+						break;
+					case "m":
+						month = getNumber("m");
+						break;
+					case "M":
+						month = getName("M", monthNamesShort, monthNames);
+						break;
+					case "y":
+						year = getNumber("y");
+						break;
+					case "@":
+						date = new Date(getNumber("@"));
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "!":
+						date = new Date((getNumber("!") - this._ticksTo1970) / 10000);
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "'":
+						if (lookAhead("'")){
+							checkLiteral();
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						checkLiteral();
+				}
+			}
+		}
+
+		if (iValue < value.length){
+			extra = value.substr(iValue);
+			if (!/^\s+/.test(extra)) {
+				throw "Extra/unparsed characters found in date: " + extra;
+			}
+		}
+
+		if (year === -1) {
+			year = new Date().getFullYear();
+		} else if (year < 100) {
+			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
+				(year <= shortYearCutoff ? 0 : -100);
+		}
+
+		if (doy > -1) {
+			month = 1;
+			day = doy;
+			do {
+				dim = this._getDaysInMonth(year, month - 1);
+				if (day <= dim) {
+					break;
+				}
+				month++;
+				day -= dim;
+			} while (true);
+		}
+
+		date = this._daylightSavingAdjust(new Date(year, month - 1, day));
+		if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
+			throw "Invalid date"; // E.g. 31/02/00
+		}
+		return date;
+	},
+
+	/* Standard date formats. */
+	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
+	COOKIE: "D, dd M yy",
+	ISO_8601: "yy-mm-dd",
+	RFC_822: "D, d M y",
+	RFC_850: "DD, dd-M-y",
+	RFC_1036: "D, d M y",
+	RFC_1123: "D, d M yy",
+	RFC_2822: "D, d M yy",
+	RSS: "D, d M y", // RFC 822
+	TICKS: "!",
+	TIMESTAMP: "@",
+	W3C: "yy-mm-dd", // ISO 8601
+
+	_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
+		Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
+
+	/* Format a date object into a string value.
+	 * The format can be combinations of the following:
+	 * d  - day of month (no leading zero)
+	 * dd - day of month (two digit)
+	 * o  - day of year (no leading zeros)
+	 * oo - day of year (three digit)
+	 * D  - day name short
+	 * DD - day name long
+	 * m  - month of year (no leading zero)
+	 * mm - month of year (two digit)
+	 * M  - month name short
+	 * MM - month name long
+	 * y  - year (two digit)
+	 * yy - year (four digit)
+	 * @ - Unix timestamp (ms since 01/01/1970)
+	 * ! - Windows ticks (100ns since 01/01/0001)
+	 * "..." - literal text
+	 * '' - single quote
+	 *
+	 * @param  format string - the desired format of the date
+	 * @param  date Date - the date value to format
+	 * @param  settings Object - attributes include:
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  string - the date in the above format
+	 */
+	formatDate: function (format, date, settings) {
+		if (!date) {
+			return "";
+		}
+
+		var iFormat,
+			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
+			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
+			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
+			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			},
+			// Format a number, with leading zero if necessary
+			formatNumber = function(match, value, len) {
+				var num = "" + value;
+				if (lookAhead(match)) {
+					while (num.length < len) {
+						num = "0" + num;
+					}
+				}
+				return num;
+			},
+			// Format a name, short or long as requested
+			formatName = function(match, value, shortNames, longNames) {
+				return (lookAhead(match) ? longNames[value] : shortNames[value]);
+			},
+			output = "",
+			literal = false;
+
+		if (date) {
+			for (iFormat = 0; iFormat < format.length; iFormat++) {
+				if (literal) {
+					if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+						literal = false;
+					} else {
+						output += format.charAt(iFormat);
+					}
+				} else {
+					switch (format.charAt(iFormat)) {
+						case "d":
+							output += formatNumber("d", date.getDate(), 2);
+							break;
+						case "D":
+							output += formatName("D", date.getDay(), dayNamesShort, dayNames);
+							break;
+						case "o":
+							output += formatNumber("o",
+								Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
+							break;
+						case "m":
+							output += formatNumber("m", date.getMonth() + 1, 2);
+							break;
+						case "M":
+							output += formatName("M", date.getMonth(), monthNamesShort, monthNames);
+							break;
+						case "y":
+							output += (lookAhead("y") ? date.getFullYear() :
+								(date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100);
+							break;
+						case "@":
+							output += date.getTime();
+							break;
+						case "!":
+							output += date.getTime() * 10000 + this._ticksTo1970;
+							break;
+						case "'":
+							if (lookAhead("'")) {
+								output += "'";
+							} else {
+								literal = true;
+							}
+							break;
+						default:
+							output += format.charAt(iFormat);
+					}
+				}
+			}
+		}
+		return output;
+	},
+
+	/* Extract all possible characters from the date format. */
+	_possibleChars: function (format) {
+		var iFormat,
+			chars = "",
+			literal = false,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			};
+
+		for (iFormat = 0; iFormat < format.length; iFormat++) {
+			if (literal) {
+				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+					literal = false;
+				} else {
+					chars += format.charAt(iFormat);
+				}
+			} else {
+				switch (format.charAt(iFormat)) {
+					case "d": case "m": case "y": case "@":
+						chars += "0123456789";
+						break;
+					case "D": case "M":
+						return null; // Accept anything
+					case "'":
+						if (lookAhead("'")) {
+							chars += "'";
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						chars += format.charAt(iFormat);
+				}
+			}
+		}
+		return chars;
+	},
+
+	/* Get a setting value, defaulting if necessary. */
+	_get: function(inst, name) {
+		return inst.settings[name] !== undefined ?
+			inst.settings[name] : this._defaults[name];
+	},
+
+	/* Parse existing date and initialise date picker. */
+	_setDateFromField: function(inst, noDefault) {
+		if (inst.input.val() === inst.lastVal) {
+			return;
+		}
+
+		var dateFormat = this._get(inst, "dateFormat"),
+			dates = inst.lastVal = inst.input ? inst.input.val() : null,
+			defaultDate = this._getDefaultDate(inst),
+			date = defaultDate,
+			settings = this._getFormatConfig(inst);
+
+		try {
+			date = this.parseDate(dateFormat, dates, settings) || defaultDate;
+		} catch (event) {
+			dates = (noDefault ? "" : dates);
+		}
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		inst.currentDay = (dates ? date.getDate() : 0);
+		inst.currentMonth = (dates ? date.getMonth() : 0);
+		inst.currentYear = (dates ? date.getFullYear() : 0);
+		this._adjustInstDate(inst);
+	},
+
+	/* Retrieve the default date shown on opening. */
+	_getDefaultDate: function(inst) {
+		return this._restrictMinMax(inst,
+			this._determineDate(inst, this._get(inst, "defaultDate"), new Date()));
+	},
+
+	/* A date may be specified as an exact value or a relative one. */
+	_determineDate: function(inst, date, defaultDate) {
+		var offsetNumeric = function(offset) {
+				var date = new Date();
+				date.setDate(date.getDate() + offset);
+				return date;
+			},
+			offsetString = function(offset) {
+				try {
+					return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
+						offset, $.datepicker._getFormatConfig(inst));
+				}
+				catch (e) {
+					// Ignore
+				}
+
+				var date = (offset.toLowerCase().match(/^c/) ?
+					$.datepicker._getDate(inst) : null) || new Date(),
+					year = date.getFullYear(),
+					month = date.getMonth(),
+					day = date.getDate(),
+					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
+					matches = pattern.exec(offset);
+
+				while (matches) {
+					switch (matches[2] || "d") {
+						case "d" : case "D" :
+							day += parseInt(matches[1],10); break;
+						case "w" : case "W" :
+							day += parseInt(matches[1],10) * 7; break;
+						case "m" : case "M" :
+							month += parseInt(matches[1],10);
+							day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
+							break;
+						case "y": case "Y" :
+							year += parseInt(matches[1],10);
+							day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
+							break;
+					}
+					matches = pattern.exec(offset);
+				}
+				return new Date(year, month, day);
+			},
+			newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) :
+				(typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
+
+		newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate);
+		if (newDate) {
+			newDate.setHours(0);
+			newDate.setMinutes(0);
+			newDate.setSeconds(0);
+			newDate.setMilliseconds(0);
+		}
+		return this._daylightSavingAdjust(newDate);
+	},
+
+	/* Handle switch to/from daylight saving.
+	 * Hours may be non-zero on daylight saving cut-over:
+	 * > 12 when midnight changeover, but then cannot generate
+	 * midnight datetime, so jump to 1AM, otherwise reset.
+	 * @param  date  (Date) the date to check
+	 * @return  (Date) the corrected date
+	 */
+	_daylightSavingAdjust: function(date) {
+		if (!date) {
+			return null;
+		}
+		date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
+		return date;
+	},
+
+	/* Set the date(s) directly. */
+	_setDate: function(inst, date, noChange) {
+		var clear = !date,
+			origMonth = inst.selectedMonth,
+			origYear = inst.selectedYear,
+			newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
+
+		inst.selectedDay = inst.currentDay = newDate.getDate();
+		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
+		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
+		if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {
+			this._notifyChange(inst);
+		}
+		this._adjustInstDate(inst);
+		if (inst.input) {
+			inst.input.val(clear ? "" : this._formatDate(inst));
+		}
+	},
+
+	/* Retrieve the date(s) directly. */
+	_getDate: function(inst) {
+		var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null :
+			this._daylightSavingAdjust(new Date(
+			inst.currentYear, inst.currentMonth, inst.currentDay)));
+			return startDate;
+	},
+
+	/* Attach the onxxx handlers.  These are declared statically so
+	 * they work with static code transformers like Caja.
+	 */
+	_attachHandlers: function(inst) {
+		var stepMonths = this._get(inst, "stepMonths"),
+			id = "#" + inst.id.replace( /\\\\/g, "\\" );
+		inst.dpDiv.find("[data-handler]").map(function () {
+			var handler = {
+				prev: function () {
+					$.datepicker._adjustDate(id, -stepMonths, "M");
+				},
+				next: function () {
+					$.datepicker._adjustDate(id, +stepMonths, "M");
+				},
+				hide: function () {
+					$.datepicker._hideDatepicker();
+				},
+				today: function () {
+					$.datepicker._gotoToday(id);
+				},
+				selectDay: function () {
+					$.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
+					return false;
+				},
+				selectMonth: function () {
+					$.datepicker._selectMonthYear(id, this, "M");
+					return false;
+				},
+				selectYear: function () {
+					$.datepicker._selectMonthYear(id, this, "Y");
+					return false;
+				}
+			};
+			$(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);
+		});
+	},
+
+	/* Generate the HTML for the current state of the date picker. */
+	_generateHTML: function(inst) {
+		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
+			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
+			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
+			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
+			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
+			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
+			tempDate = new Date(),
+			today = this._daylightSavingAdjust(
+				new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time
+			isRTL = this._get(inst, "isRTL"),
+			showButtonPanel = this._get(inst, "showButtonPanel"),
+			hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"),
+			navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"),
+			numMonths = this._getNumberOfMonths(inst),
+			showCurrentAtPos = this._get(inst, "showCurrentAtPos"),
+			stepMonths = this._get(inst, "stepMonths"),
+			isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),
+			currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
+				new Date(inst.currentYear, inst.currentMonth, inst.currentDay))),
+			minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			drawMonth = inst.drawMonth - showCurrentAtPos,
+			drawYear = inst.drawYear;
+
+		if (drawMonth < 0) {
+			drawMonth += 12;
+			drawYear--;
+		}
+		if (maxDate) {
+			maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
+				maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
+			maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
+			while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
+				drawMonth--;
+				if (drawMonth < 0) {
+					drawMonth = 11;
+					drawYear--;
+				}
+			}
+		}
+		inst.drawMonth = drawMonth;
+		inst.drawYear = drawYear;
+
+		prevText = this._get(inst, "prevText");
+		prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
+			this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
+			this._getFormatConfig(inst)));
+
+		prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
+			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
+			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" :
+			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>"));
+
+		nextText = this._get(inst, "nextText");
+		nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
+			this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
+			this._getFormatConfig(inst)));
+
+		next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
+			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
+			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" :
+			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>"));
+
+		currentText = this._get(inst, "currentText");
+		gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today);
+		currentText = (!navigationAsDateFormat ? currentText :
+			this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
+
+		controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
+			this._get(inst, "closeText") + "</button>" : "");
+
+		buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") +
+			(this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
+			">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "";
+
+		firstDay = parseInt(this._get(inst, "firstDay"),10);
+		firstDay = (isNaN(firstDay) ? 0 : firstDay);
+
+		showWeek = this._get(inst, "showWeek");
+		dayNames = this._get(inst, "dayNames");
+		dayNamesMin = this._get(inst, "dayNamesMin");
+		monthNames = this._get(inst, "monthNames");
+		monthNamesShort = this._get(inst, "monthNamesShort");
+		beforeShowDay = this._get(inst, "beforeShowDay");
+		showOtherMonths = this._get(inst, "showOtherMonths");
+		selectOtherMonths = this._get(inst, "selectOtherMonths");
+		defaultDate = this._getDefaultDate(inst);
+		html = "";
+		dow;
+		for (row = 0; row < numMonths[0]; row++) {
+			group = "";
+			this.maxRows = 4;
+			for (col = 0; col < numMonths[1]; col++) {
+				selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
+				cornerClass = " ui-corner-all";
+				calender = "";
+				if (isMultiMonth) {
+					calender += "<div class='ui-datepicker-group";
+					if (numMonths[1] > 1) {
+						switch (col) {
+							case 0: calender += " ui-datepicker-group-first";
+								cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break;
+							case numMonths[1]-1: calender += " ui-datepicker-group-last";
+								cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break;
+							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
+						}
+					}
+					calender += "'>";
+				}
+				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
+					(/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
+					(/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
+					this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
+					row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
+					"</div><table class='ui-datepicker-calendar'><thead>" +
+					"<tr>";
+				thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : "");
+				for (dow = 0; dow < 7; dow++) { // days of the week
+					day = (dow + firstDay) % 7;
+					thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" +
+						"<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";
+				}
+				calender += thead + "</tr></thead><tbody>";
+				daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
+				if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {
+					inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
+				}
+				leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
+				curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
+				numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
+				this.maxRows = numRows;
+				printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
+				for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows
+					calender += "<tr>";
+					tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
+						this._get(inst, "calculateWeek")(printDate) + "</td>");
+					for (dow = 0; dow < 7; dow++) { // create date picker days
+						daySettings = (beforeShowDay ?
+							beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]);
+						otherMonth = (printDate.getMonth() !== drawMonth);
+						unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
+							(minDate && printDate < minDate) || (maxDate && printDate > maxDate);
+						tbody += "<td class='" +
+							((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends
+							(otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months
+							((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key
+							(defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?
+							// or defaultDate is current printedDate and defaultDate is selectedDate
+							" " + this._dayOverClass : "") + // highlight selected day
+							(unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") +  // highlight unselectable days
+							(otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
+							(printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
+							(printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
+							((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
+							(unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
+							(otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
+							(unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
+							(printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") +
+							(printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day
+							(otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months
+							"' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date
+						printDate.setDate(printDate.getDate() + 1);
+						printDate = this._daylightSavingAdjust(printDate);
+					}
+					calender += tbody + "</tr>";
+				}
+				drawMonth++;
+				if (drawMonth > 11) {
+					drawMonth = 0;
+					drawYear++;
+				}
+				calender += "</tbody></table>" + (isMultiMonth ? "</div>" +
+							((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : "");
+				group += calender;
+			}
+			html += group;
+		}
+		html += buttonPanel;
+		inst._keyEvent = false;
+		return html;
+	},
+
+	/* Generate the month and year header. */
+	_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
+			secondary, monthNames, monthNamesShort) {
+
+		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
+			changeMonth = this._get(inst, "changeMonth"),
+			changeYear = this._get(inst, "changeYear"),
+			showMonthAfterYear = this._get(inst, "showMonthAfterYear"),
+			html = "<div class='ui-datepicker-title'>",
+			monthHtml = "";
+
+		// month selection
+		if (secondary || !changeMonth) {
+			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
+		} else {
+			inMinYear = (minDate && minDate.getFullYear() === drawYear);
+			inMaxYear = (maxDate && maxDate.getFullYear() === drawYear);
+			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
+			for ( month = 0; month < 12; month++) {
+				if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {
+					monthHtml += "<option value='" + month + "'" +
+						(month === drawMonth ? " selected='selected'" : "") +
+						">" + monthNamesShort[month] + "</option>";
+				}
+			}
+			monthHtml += "</select>";
+		}
+
+		if (!showMonthAfterYear) {
+			html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "");
+		}
+
+		// year selection
+		if ( !inst.yearshtml ) {
+			inst.yearshtml = "";
+			if (secondary || !changeYear) {
+				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
+			} else {
+				// determine range of years to display
+				years = this._get(inst, "yearRange").split(":");
+				thisYear = new Date().getFullYear();
+				determineYear = function(value) {
+					var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) :
+						(value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :
+						parseInt(value, 10)));
+					return (isNaN(year) ? thisYear : year);
+				};
+				year = determineYear(years[0]);
+				endYear = Math.max(year, determineYear(years[1] || ""));
+				year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
+				endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
+				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
+				for (; year <= endYear; year++) {
+					inst.yearshtml += "<option value='" + year + "'" +
+						(year === drawYear ? " selected='selected'" : "") +
+						">" + year + "</option>";
+				}
+				inst.yearshtml += "</select>";
+
+				html += inst.yearshtml;
+				inst.yearshtml = null;
+			}
+		}
+
+		html += this._get(inst, "yearSuffix");
+		if (showMonthAfterYear) {
+			html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml;
+		}
+		html += "</div>"; // Close datepicker_header
+		return html;
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustInstDate: function(inst, offset, period) {
+		var year = inst.drawYear + (period === "Y" ? offset : 0),
+			month = inst.drawMonth + (period === "M" ? offset : 0),
+			day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0),
+			date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));
+
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		if (period === "M" || period === "Y") {
+			this._notifyChange(inst);
+		}
+	},
+
+	/* Ensure a date is within any min/max bounds. */
+	_restrictMinMax: function(inst, date) {
+		var minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			newDate = (minDate && date < minDate ? minDate : date);
+		return (maxDate && newDate > maxDate ? maxDate : newDate);
+	},
+
+	/* Notify change of month/year. */
+	_notifyChange: function(inst) {
+		var onChange = this._get(inst, "onChangeMonthYear");
+		if (onChange) {
+			onChange.apply((inst.input ? inst.input[0] : null),
+				[inst.selectedYear, inst.selectedMonth + 1, inst]);
+		}
+	},
+
+	/* Determine the number of months to show. */
+	_getNumberOfMonths: function(inst) {
+		var numMonths = this._get(inst, "numberOfMonths");
+		return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths));
+	},
+
+	/* Determine the current maximum date - ensure no time components are set. */
+	_getMinMaxDate: function(inst, minMax) {
+		return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
+	},
+
+	/* Find the number of days in a given month. */
+	_getDaysInMonth: function(year, month) {
+		return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
+	},
+
+	/* Find the day of the week of the first of a month. */
+	_getFirstDayOfMonth: function(year, month) {
+		return new Date(year, month, 1).getDay();
+	},
+
+	/* Determines if we should allow a "next/prev" month display change. */
+	_canAdjustMonth: function(inst, offset, curYear, curMonth) {
+		var numMonths = this._getNumberOfMonths(inst),
+			date = this._daylightSavingAdjust(new Date(curYear,
+			curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
+
+		if (offset < 0) {
+			date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
+		}
+		return this._isInRange(inst, date);
+	},
+
+	/* Is the given date in the accepted range? */
+	_isInRange: function(inst, date) {
+		var yearSplit, currentYear,
+			minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			minYear = null,
+			maxYear = null,
+			years = this._get(inst, "yearRange");
+			if (years){
+				yearSplit = years.split(":");
+				currentYear = new Date().getFullYear();
+				minYear = parseInt(yearSplit[0], 10);
+				maxYear = parseInt(yearSplit[1], 10);
+				if ( yearSplit[0].match(/[+\-].*/) ) {
+					minYear += currentYear;
+				}
+				if ( yearSplit[1].match(/[+\-].*/) ) {
+					maxYear += currentYear;
+				}
+			}
+
+		return ((!minDate || date.getTime() >= minDate.getTime()) &&
+			(!maxDate || date.getTime() <= maxDate.getTime()) &&
+			(!minYear || date.getFullYear() >= minYear) &&
+			(!maxYear || date.getFullYear() <= maxYear));
+	},
+
+	/* Provide the configuration settings for formatting/parsing. */
+	_getFormatConfig: function(inst) {
+		var shortYearCutoff = this._get(inst, "shortYearCutoff");
+		shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff :
+			new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
+		return {shortYearCutoff: shortYearCutoff,
+			dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"),
+			monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")};
+	},
+
+	/* Format the given date for display. */
+	_formatDate: function(inst, day, month, year) {
+		if (!day) {
+			inst.currentDay = inst.selectedDay;
+			inst.currentMonth = inst.selectedMonth;
+			inst.currentYear = inst.selectedYear;
+		}
+		var date = (day ? (typeof day === "object" ? day :
+			this._daylightSavingAdjust(new Date(year, month, day))) :
+			this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
+		return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));
+	}
+});
+
+/*
+ * Bind hover events for datepicker elements.
+ * Done via delegate so the binding only occurs once in the lifetime of the parent div.
+ * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
+ */
+function bindHover(dpDiv) {
+	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
+	return dpDiv.delegate(selector, "mouseout", function() {
+			$(this).removeClass("ui-state-hover");
+			if (this.className.indexOf("ui-datepicker-prev") !== -1) {
+				$(this).removeClass("ui-datepicker-prev-hover");
+			}
+			if (this.className.indexOf("ui-datepicker-next") !== -1) {
+				$(this).removeClass("ui-datepicker-next-hover");
+			}
+		})
+		.delegate(selector, "mouseover", function(){
+			if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {
+				$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
+				$(this).addClass("ui-state-hover");
+				if (this.className.indexOf("ui-datepicker-prev") !== -1) {
+					$(this).addClass("ui-datepicker-prev-hover");
+				}
+				if (this.className.indexOf("ui-datepicker-next") !== -1) {
+					$(this).addClass("ui-datepicker-next-hover");
+				}
+			}
+		});
+}
+
+/* jQuery extend now ignores nulls! */
+function extendRemove(target, props) {
+	$.extend(target, props);
+	for (var name in props) {
+		if (props[name] == null) {
+			target[name] = props[name];
+		}
+	}
+	return target;
+}
+
+/* Invoke the datepicker functionality.
+   @param  options  string - a command, optionally followed by additional parameters or
+					Object - settings for attaching new datepicker functionality
+   @return  jQuery object */
+$.fn.datepicker = function(options){
+
+	/* Verify an empty collection wasn't passed - Fixes #6976 */
+	if ( !this.length ) {
+		return this;
+	}
+
+	/* Initialise the date picker. */
+	if (!$.datepicker.initialized) {
+		$(document).mousedown($.datepicker._checkExternalClick);
+		$.datepicker.initialized = true;
+	}
+
+	/* Append datepicker main container to body if not exist. */
+	if ($("#"+$.datepicker._mainDivId).length === 0) {
+		$("body").append($.datepicker.dpDiv);
+	}
+
+	var otherArgs = Array.prototype.slice.call(arguments, 1);
+	if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) {
+		return $.datepicker["_" + options + "Datepicker"].
+			apply($.datepicker, [this[0]].concat(otherArgs));
+	}
+	if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") {
+		return $.datepicker["_" + options + "Datepicker"].
+			apply($.datepicker, [this[0]].concat(otherArgs));
+	}
+	return this.each(function() {
+		typeof options === "string" ?
+			$.datepicker["_" + options + "Datepicker"].
+				apply($.datepicker, [this].concat(otherArgs)) :
+			$.datepicker._attachDatepicker(this, options);
+	});
+};
+
+$.datepicker = new Datepicker(); // singleton instance
+$.datepicker.initialized = false;
+$.datepicker.uuid = new Date().getTime();
+$.datepicker.version = "1.10.3";
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+var sizeRelatedOptions = {
+		buttons: true,
+		height: true,
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true,
+		width: true
+	},
+	resizableRelatedOptions = {
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true
+	};
+
+$.widget( "ui.dialog", {
+	version: "1.10.3",
+	options: {
+		appendTo: "body",
+		autoOpen: true,
+		buttons: [],
+		closeOnEscape: true,
+		closeText: "close",
+		dialogClass: "",
+		draggable: true,
+		hide: null,
+		height: "auto",
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 150,
+		minWidth: 150,
+		modal: false,
+		position: {
+			my: "center",
+			at: "center",
+			of: window,
+			collision: "fit",
+			// Ensure the titlebar is always visible
+			using: function( pos ) {
+				var topOffset = $( this ).css( pos ).offset().top;
+				if ( topOffset < 0 ) {
+					$( this ).css( "top", pos.top - topOffset );
+				}
+			}
+		},
+		resizable: true,
+		show: null,
+		title: null,
+		width: 300,
+
+		// callbacks
+		beforeClose: null,
+		close: null,
+		drag: null,
+		dragStart: null,
+		dragStop: null,
+		focus: null,
+		open: null,
+		resize: null,
+		resizeStart: null,
+		resizeStop: null
+	},
+
+	_create: function() {
+		this.originalCss = {
+			display: this.element[0].style.display,
+			width: this.element[0].style.width,
+			minHeight: this.element[0].style.minHeight,
+			maxHeight: this.element[0].style.maxHeight,
+			height: this.element[0].style.height
+		};
+		this.originalPosition = {
+			parent: this.element.parent(),
+			index: this.element.parent().children().index( this.element )
+		};
+		this.originalTitle = this.element.attr("title");
+		this.options.title = this.options.title || this.originalTitle;
+
+		this._createWrapper();
+
+		this.element
+			.show()
+			.removeAttr("title")
+			.addClass("ui-dialog-content ui-widget-content")
+			.appendTo( this.uiDialog );
+
+		this._createTitlebar();
+		this._createButtonPane();
+
+		if ( this.options.draggable && $.fn.draggable ) {
+			this._makeDraggable();
+		}
+		if ( this.options.resizable && $.fn.resizable ) {
+			this._makeResizable();
+		}
+
+		this._isOpen = false;
+	},
+
+	_init: function() {
+		if ( this.options.autoOpen ) {
+			this.open();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+		if ( element && (element.jquery || element.nodeType) ) {
+			return $( element );
+		}
+		return this.document.find( element || "body" ).eq( 0 );
+	},
+
+	_destroy: function() {
+		var next,
+			originalPosition = this.originalPosition;
+
+		this._destroyOverlay();
+
+		this.element
+			.removeUniqueId()
+			.removeClass("ui-dialog-content ui-widget-content")
+			.css( this.originalCss )
+			// Without detaching first, the following becomes really slow
+			.detach();
+
+		this.uiDialog.stop( true, true ).remove();
+
+		if ( this.originalTitle ) {
+			this.element.attr( "title", this.originalTitle );
+		}
+
+		next = originalPosition.parent.children().eq( originalPosition.index );
+		// Don't try to place the dialog next to itself (#8613)
+		if ( next.length && next[0] !== this.element[0] ) {
+			next.before( this.element );
+		} else {
+			originalPosition.parent.append( this.element );
+		}
+	},
+
+	widget: function() {
+		return this.uiDialog;
+	},
+
+	disable: $.noop,
+	enable: $.noop,
+
+	close: function( event ) {
+		var that = this;
+
+		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
+			return;
+		}
+
+		this._isOpen = false;
+		this._destroyOverlay();
+
+		if ( !this.opener.filter(":focusable").focus().length ) {
+			// Hiding a focused element doesn't trigger blur in WebKit
+			// so in case we have nothing to focus on, explicitly blur the active element
+			// https://bugs.webkit.org/show_bug.cgi?id=47182
+			$( this.document[0].activeElement ).blur();
+		}
+
+		this._hide( this.uiDialog, this.options.hide, function() {
+			that._trigger( "close", event );
+		});
+	},
+
+	isOpen: function() {
+		return this._isOpen;
+	},
+
+	moveToTop: function() {
+		this._moveToTop();
+	},
+
+	_moveToTop: function( event, silent ) {
+		var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length;
+		if ( moved && !silent ) {
+			this._trigger( "focus", event );
+		}
+		return moved;
+	},
+
+	open: function() {
+		var that = this;
+		if ( this._isOpen ) {
+			if ( this._moveToTop() ) {
+				this._focusTabbable();
+			}
+			return;
+		}
+
+		this._isOpen = true;
+		this.opener = $( this.document[0].activeElement );
+
+		this._size();
+		this._position();
+		this._createOverlay();
+		this._moveToTop( null, true );
+		this._show( this.uiDialog, this.options.show, function() {
+			that._focusTabbable();
+			that._trigger("focus");
+		});
+
+		this._trigger("open");
+	},
+
+	_focusTabbable: function() {
+		// Set focus to the first match:
+		// 1. First element inside the dialog matching [autofocus]
+		// 2. Tabbable element inside the content element
+		// 3. Tabbable element inside the buttonpane
+		// 4. The close button
+		// 5. The dialog itself
+		var hasFocus = this.element.find("[autofocus]");
+		if ( !hasFocus.length ) {
+			hasFocus = this.element.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogButtonPane.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogTitlebarClose.filter(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialog;
+		}
+		hasFocus.eq( 0 ).focus();
+	},
+
+	_keepFocus: function( event ) {
+		function checkFocus() {
+			var activeElement = this.document[0].activeElement,
+				isActive = this.uiDialog[0] === activeElement ||
+					$.contains( this.uiDialog[0], activeElement );
+			if ( !isActive ) {
+				this._focusTabbable();
+			}
+		}
+		event.preventDefault();
+		checkFocus.call( this );
+		// support: IE
+		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
+		// so we check again later
+		this._delay( checkFocus );
+	},
+
+	_createWrapper: function() {
+		this.uiDialog = $("<div>")
+			.addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " +
+				this.options.dialogClass )
+			.hide()
+			.attr({
+				// Setting tabIndex makes the div focusable
+				tabIndex: -1,
+				role: "dialog"
+			})
+			.appendTo( this._appendTo() );
+
+		this._on( this.uiDialog, {
+			keydown: function( event ) {
+				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
+						event.keyCode === $.ui.keyCode.ESCAPE ) {
+					event.preventDefault();
+					this.close( event );
+					return;
+				}
+
+				// prevent tabbing out of dialogs
+				if ( event.keyCode !== $.ui.keyCode.TAB ) {
+					return;
+				}
+				var tabbables = this.uiDialog.find(":tabbable"),
+					first = tabbables.filter(":first"),
+					last  = tabbables.filter(":last");
+
+				if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {
+					first.focus( 1 );
+					event.preventDefault();
+				} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
+					last.focus( 1 );
+					event.preventDefault();
+				}
+			},
+			mousedown: function( event ) {
+				if ( this._moveToTop( event ) ) {
+					this._focusTabbable();
+				}
+			}
+		});
+
+		// We assume that any existing aria-describedby attribute means
+		// that the dialog content is marked up properly
+		// otherwise we brute force the content as the description
+		if ( !this.element.find("[aria-describedby]").length ) {
+			this.uiDialog.attr({
+				"aria-describedby": this.element.uniqueId().attr("id")
+			});
+		}
+	},
+
+	_createTitlebar: function() {
+		var uiDialogTitle;
+
+		this.uiDialogTitlebar = $("<div>")
+			.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
+			.prependTo( this.uiDialog );
+		this._on( this.uiDialogTitlebar, {
+			mousedown: function( event ) {
+				// Don't prevent click on close button (#8838)
+				// Focusing a dialog that is partially scrolled out of view
+				// causes the browser to scroll it into view, preventing the click event
+				if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) {
+					// Dialog isn't getting focus when dragging (#8063)
+					this.uiDialog.focus();
+				}
+			}
+		});
+
+		this.uiDialogTitlebarClose = $("<button></button>")
+			.button({
+				label: this.options.closeText,
+				icons: {
+					primary: "ui-icon-closethick"
+				},
+				text: false
+			})
+			.addClass("ui-dialog-titlebar-close")
+			.appendTo( this.uiDialogTitlebar );
+		this._on( this.uiDialogTitlebarClose, {
+			click: function( event ) {
+				event.preventDefault();
+				this.close( event );
+			}
+		});
+
+		uiDialogTitle = $("<span>")
+			.uniqueId()
+			.addClass("ui-dialog-title")
+			.prependTo( this.uiDialogTitlebar );
+		this._title( uiDialogTitle );
+
+		this.uiDialog.attr({
+			"aria-labelledby": uiDialogTitle.attr("id")
+		});
+	},
+
+	_title: function( title ) {
+		if ( !this.options.title ) {
+			title.html("&#160;");
+		}
+		title.text( this.options.title );
+	},
+
+	_createButtonPane: function() {
+		this.uiDialogButtonPane = $("<div>")
+			.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");
+
+		this.uiButtonSet = $("<div>")
+			.addClass("ui-dialog-buttonset")
+			.appendTo( this.uiDialogButtonPane );
+
+		this._createButtons();
+	},
+
+	_createButtons: function() {
+		var that = this,
+			buttons = this.options.buttons;
+
+		// if we already have a button pane, remove it
+		this.uiDialogButtonPane.remove();
+		this.uiButtonSet.empty();
+
+		if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {
+			this.uiDialog.removeClass("ui-dialog-buttons");
+			return;
+		}
+
+		$.each( buttons, function( name, props ) {
+			var click, buttonOptions;
+			props = $.isFunction( props ) ?
+				{ click: props, text: name } :
+				props;
+			// Default to a non-submitting button
+			props = $.extend( { type: "button" }, props );
+			// Change the context for the click callback to be the main element
+			click = props.click;
+			props.click = function() {
+				click.apply( that.element[0], arguments );
+			};
+			buttonOptions = {
+				icons: props.icons,
+				text: props.showText
+			};
+			delete props.icons;
+			delete props.showText;
+			$( "<button></button>", props )
+				.button( buttonOptions )
+				.appendTo( that.uiButtonSet );
+		});
+		this.uiDialog.addClass("ui-dialog-buttons");
+		this.uiDialogButtonPane.appendTo( this.uiDialog );
+	},
+
+	_makeDraggable: function() {
+		var that = this,
+			options = this.options;
+
+		function filteredUi( ui ) {
+			return {
+				position: ui.position,
+				offset: ui.offset
+			};
+		}
+
+		this.uiDialog.draggable({
+			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
+			handle: ".ui-dialog-titlebar",
+			containment: "document",
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-dragging");
+				that._blockFrames();
+				that._trigger( "dragStart", event, filteredUi( ui ) );
+			},
+			drag: function( event, ui ) {
+				that._trigger( "drag", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.position = [
+					ui.position.left - that.document.scrollLeft(),
+					ui.position.top - that.document.scrollTop()
+				];
+				$( this ).removeClass("ui-dialog-dragging");
+				that._unblockFrames();
+				that._trigger( "dragStop", event, filteredUi( ui ) );
+			}
+		});
+	},
+
+	_makeResizable: function() {
+		var that = this,
+			options = this.options,
+			handles = options.resizable,
+			// .ui-resizable has position: relative defined in the stylesheet
+			// but dialogs have to use absolute or fixed positioning
+			position = this.uiDialog.css("position"),
+			resizeHandles = typeof handles === "string" ?
+				handles	:
+				"n,e,s,w,se,sw,ne,nw";
+
+		function filteredUi( ui ) {
+			return {
+				originalPosition: ui.originalPosition,
+				originalSize: ui.originalSize,
+				position: ui.position,
+				size: ui.size
+			};
+		}
+
+		this.uiDialog.resizable({
+			cancel: ".ui-dialog-content",
+			containment: "document",
+			alsoResize: this.element,
+			maxWidth: options.maxWidth,
+			maxHeight: options.maxHeight,
+			minWidth: options.minWidth,
+			minHeight: this._minHeight(),
+			handles: resizeHandles,
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-resizing");
+				that._blockFrames();
+				that._trigger( "resizeStart", event, filteredUi( ui ) );
+			},
+			resize: function( event, ui ) {
+				that._trigger( "resize", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.height = $( this ).height();
+				options.width = $( this ).width();
+				$( this ).removeClass("ui-dialog-resizing");
+				that._unblockFrames();
+				that._trigger( "resizeStop", event, filteredUi( ui ) );
+			}
+		})
+		.css( "position", position );
+	},
+
+	_minHeight: function() {
+		var options = this.options;
+
+		return options.height === "auto" ?
+			options.minHeight :
+			Math.min( options.minHeight, options.height );
+	},
+
+	_position: function() {
+		// Need to show the dialog to get the actual offset in the position plugin
+		var isVisible = this.uiDialog.is(":visible");
+		if ( !isVisible ) {
+			this.uiDialog.show();
+		}
+		this.uiDialog.position( this.options.position );
+		if ( !isVisible ) {
+			this.uiDialog.hide();
+		}
+	},
+
+	_setOptions: function( options ) {
+		var that = this,
+			resize = false,
+			resizableOptions = {};
+
+		$.each( options, function( key, value ) {
+			that._setOption( key, value );
+
+			if ( key in sizeRelatedOptions ) {
+				resize = true;
+			}
+			if ( key in resizableRelatedOptions ) {
+				resizableOptions[ key ] = value;
+			}
+		});
+
+		if ( resize ) {
+			this._size();
+			this._position();
+		}
+		if ( this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", resizableOptions );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		/*jshint maxcomplexity:15*/
+		var isDraggable, isResizable,
+			uiDialog = this.uiDialog;
+
+		if ( key === "dialogClass" ) {
+			uiDialog
+				.removeClass( this.options.dialogClass )
+				.addClass( value );
+		}
+
+		if ( key === "disabled" ) {
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "appendTo" ) {
+			this.uiDialog.appendTo( this._appendTo() );
+		}
+
+		if ( key === "buttons" ) {
+			this._createButtons();
+		}
+
+		if ( key === "closeText" ) {
+			this.uiDialogTitlebarClose.button({
+				// Ensure that we always pass a string
+				label: "" + value
+			});
+		}
+
+		if ( key === "draggable" ) {
+			isDraggable = uiDialog.is(":data(ui-draggable)");
+			if ( isDraggable && !value ) {
+				uiDialog.draggable("destroy");
+			}
+
+			if ( !isDraggable && value ) {
+				this._makeDraggable();
+			}
+		}
+
+		if ( key === "position" ) {
+			this._position();
+		}
+
+		if ( key === "resizable" ) {
+			// currently resizable, becoming non-resizable
+			isResizable = uiDialog.is(":data(ui-resizable)");
+			if ( isResizable && !value ) {
+				uiDialog.resizable("destroy");
+			}
+
+			// currently resizable, changing handles
+			if ( isResizable && typeof value === "string" ) {
+				uiDialog.resizable( "option", "handles", value );
+			}
+
+			// currently non-resizable, becoming resizable
+			if ( !isResizable && value !== false ) {
+				this._makeResizable();
+			}
+		}
+
+		if ( key === "title" ) {
+			this._title( this.uiDialogTitlebar.find(".ui-dialog-title") );
+		}
+	},
+
+	_size: function() {
+		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
+		// divs will both have width and height set, so we need to reset them
+		var nonContentHeight, minContentHeight, maxContentHeight,
+			options = this.options;
+
+		// Reset content sizing
+		this.element.show().css({
+			width: "auto",
+			minHeight: 0,
+			maxHeight: "none",
+			height: 0
+		});
+
+		if ( options.minWidth > options.width ) {
+			options.width = options.minWidth;
+		}
+
+		// reset wrapper sizing
+		// determine the height of all the non-content elements
+		nonContentHeight = this.uiDialog.css({
+				height: "auto",
+				width: options.width
+			})
+			.outerHeight();
+		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
+		maxContentHeight = typeof options.maxHeight === "number" ?
+			Math.max( 0, options.maxHeight - nonContentHeight ) :
+			"none";
+
+		if ( options.height === "auto" ) {
+			this.element.css({
+				minHeight: minContentHeight,
+				maxHeight: maxContentHeight,
+				height: "auto"
+			});
+		} else {
+			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
+		}
+
+		if (this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
+		}
+	},
+
+	_blockFrames: function() {
+		this.iframeBlocks = this.document.find( "iframe" ).map(function() {
+			var iframe = $( this );
+
+			return $( "<div>" )
+				.css({
+					position: "absolute",
+					width: iframe.outerWidth(),
+					height: iframe.outerHeight()
+				})
+				.appendTo( iframe.parent() )
+				.offset( iframe.offset() )[0];
+		});
+	},
+
+	_unblockFrames: function() {
+		if ( this.iframeBlocks ) {
+			this.iframeBlocks.remove();
+			delete this.iframeBlocks;
+		}
+	},
+
+	_allowInteraction: function( event ) {
+		if ( $( event.target ).closest(".ui-dialog").length ) {
+			return true;
+		}
+
+		// TODO: Remove hack when datepicker implements
+		// the .ui-front logic (#8989)
+		return !!$( event.target ).closest(".ui-datepicker").length;
+	},
+
+	_createOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		var that = this,
+			widgetFullName = this.widgetFullName;
+		if ( !$.ui.dialog.overlayInstances ) {
+			// Prevent use of anchors and inputs.
+			// We use a delay in case the overlay is created from an
+			// event that we're going to be cancelling. (#2804)
+			this._delay(function() {
+				// Handle .dialog().dialog("close") (#4065)
+				if ( $.ui.dialog.overlayInstances ) {
+					this.document.bind( "focusin.dialog", function( event ) {
+						if ( !that._allowInteraction( event ) ) {
+							event.preventDefault();
+							$(".ui-dialog:visible:last .ui-dialog-content")
+								.data( widgetFullName )._focusTabbable();
+						}
+					});
+				}
+			});
+		}
+
+		this.overlay = $("<div>")
+			.addClass("ui-widget-overlay ui-front")
+			.appendTo( this._appendTo() );
+		this._on( this.overlay, {
+			mousedown: "_keepFocus"
+		});
+		$.ui.dialog.overlayInstances++;
+	},
+
+	_destroyOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		if ( this.overlay ) {
+			$.ui.dialog.overlayInstances--;
+
+			if ( !$.ui.dialog.overlayInstances ) {
+				this.document.unbind( "focusin.dialog" );
+			}
+			this.overlay.remove();
+			this.overlay = null;
+		}
+	}
+});
+
+$.ui.dialog.overlayInstances = 0;
+
+// DEPRECATED
+if ( $.uiBackCompat !== false ) {
+	// position option with array notation
+	// just override with old implementation
+	$.widget( "ui.dialog", $.ui.dialog, {
+		_position: function() {
+			var position = this.options.position,
+				myAt = [],
+				offset = [ 0, 0 ],
+				isVisible;
+
+			if ( position ) {
+				if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
+					myAt = position.split ? position.split(" ") : [ position[0], position[1] ];
+					if ( myAt.length === 1 ) {
+						myAt[1] = myAt[0];
+					}
+
+					$.each( [ "left", "top" ], function( i, offsetPosition ) {
+						if ( +myAt[ i ] === myAt[ i ] ) {
+							offset[ i ] = myAt[ i ];
+							myAt[ i ] = offsetPosition;
+						}
+					});
+
+					position = {
+						my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
+							myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
+						at: myAt.join(" ")
+					};
+				}
+
+				position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
+			} else {
+				position = $.ui.dialog.prototype.options.position;
+			}
+
+			// need to show the dialog to get the actual offset in the position plugin
+			isVisible = this.uiDialog.is(":visible");
+			if ( !isVisible ) {
+				this.uiDialog.show();
+			}
+			this.uiDialog.position( position );
+			if ( !isVisible ) {
+				this.uiDialog.hide();
+			}
+		}
+	});
+}
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+var rvertical = /up|down|vertical/,
+	rpositivemotion = /up|left|vertical|horizontal/;
+
+$.effects.effect.blind = function( o, done ) {
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		direction = o.direction || "up",
+		vertical = rvertical.test( direction ),
+		ref = vertical ? "height" : "width",
+		ref2 = vertical ? "top" : "left",
+		motion = rpositivemotion.test( direction ),
+		animation = {},
+		show = mode === "show",
+		wrapper, distance, margin;
+
+	// if already wrapped, the wrapper's properties are my property. #6245
+	if ( el.parent().is( ".ui-effects-wrapper" ) ) {
+		$.effects.save( el.parent(), props );
+	} else {
+		$.effects.save( el, props );
+	}
+	el.show();
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+
+	distance = wrapper[ ref ]();
+	margin = parseFloat( wrapper.css( ref2 ) ) || 0;
+
+	animation[ ref ] = show ? distance : 0;
+	if ( !motion ) {
+		el
+			.css( vertical ? "bottom" : "right", 0 )
+			.css( vertical ? "top" : "left", "auto" )
+			.css({ position: "absolute" });
+
+		animation[ ref2 ] = show ? margin : distance + margin;
+	}
+
+	// start at 0 if we are showing
+	if ( show ) {
+		wrapper.css( ref, 0 );
+		if ( ! motion ) {
+			wrapper.css( ref2, margin + distance );
+		}
+	}
+
+	// Animate
+	wrapper.animate( animation, {
+		duration: o.duration,
+		easing: o.easing,
+		queue: false,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.bounce = function( o, done ) {
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+
+		// defaults:
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		hide = mode === "hide",
+		show = mode === "show",
+		direction = o.direction || "up",
+		distance = o.distance,
+		times = o.times || 5,
+
+		// number of internal animations
+		anims = times * 2 + ( show || hide ? 1 : 0 ),
+		speed = o.duration / anims,
+		easing = o.easing,
+
+		// utility:
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ),
+		i,
+		upAnim,
+		downAnim,
+
+		// we will need to re-assemble the queue to stack our animations in place
+		queue = el.queue(),
+		queuelen = queue.length;
+
+	// Avoid touching opacity to prevent clearType and PNG issues in IE
+	if ( show || hide ) {
+		props.push( "opacity" );
+	}
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el ); // Create Wrapper
+
+	// default distance for the BIGGEST bounce is the outer Distance / 3
+	if ( !distance ) {
+		distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
+	}
+
+	if ( show ) {
+		downAnim = { opacity: 1 };
+		downAnim[ ref ] = 0;
+
+		// if we are showing, force opacity 0 and set the initial position
+		// then do the "first" animation
+		el.css( "opacity", 0 )
+			.css( ref, motion ? -distance * 2 : distance * 2 )
+			.animate( downAnim, speed, easing );
+	}
+
+	// start at the smallest distance if we are hiding
+	if ( hide ) {
+		distance = distance / Math.pow( 2, times - 1 );
+	}
+
+	downAnim = {};
+	downAnim[ ref ] = 0;
+	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
+	for ( i = 0; i < times; i++ ) {
+		upAnim = {};
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		el.animate( upAnim, speed, easing )
+			.animate( downAnim, speed, easing );
+
+		distance = hide ? distance * 2 : distance / 2;
+	}
+
+	// Last Bounce when Hiding
+	if ( hide ) {
+		upAnim = { opacity: 0 };
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		el.animate( upAnim, speed, easing );
+	}
+
+	el.queue(function() {
+		if ( hide ) {
+			el.hide();
+		}
+		$.effects.restore( el, props );
+		$.effects.removeWrapper( el );
+		done();
+	});
+
+	// inject all the animations we just queued to be first in line (after "inprogress")
+	if ( queuelen > 1) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	el.dequeue();
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.clip = function( o, done ) {
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		direction = o.direction || "vertical",
+		vert = direction === "vertical",
+		size = vert ? "height" : "width",
+		position = vert ? "top" : "left",
+		animation = {},
+		wrapper, animate, distance;
+
+	// Save & Show
+	$.effects.save( el, props );
+	el.show();
+
+	// Create Wrapper
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+	animate = ( el[0].tagName === "IMG" ) ? wrapper : el;
+	distance = animate[ size ]();
+
+	// Shift
+	if ( show ) {
+		animate.css( size, 0 );
+		animate.css( position, distance / 2 );
+	}
+
+	// Create Animation Object:
+	animation[ size ] = show ? distance : 0;
+	animation[ position ] = show ? 0 : distance / 2;
+
+	// Animate
+	animate.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( !show ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.drop = function( o, done ) {
+
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		direction = o.direction || "left",
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg",
+		animation = {
+			opacity: show ? 1 : 0
+		},
+		distance;
+
+	// Adjust
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+
+	distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2;
+
+	if ( show ) {
+		el
+			.css( "opacity", 0 )
+			.css( ref, motion === "pos" ? -distance : distance );
+	}
+
+	// Animation
+	animation[ ref ] = ( show ?
+		( motion === "pos" ? "+=" : "-=" ) :
+		( motion === "pos" ? "-=" : "+=" ) ) +
+		distance;
+
+	// Animate
+	el.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.explode = function( o, done ) {
+
+	var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
+		cells = rows,
+		el = $( this ),
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+
+		// show and then visibility:hidden the element before calculating offset
+		offset = el.show().css( "visibility", "hidden" ).offset(),
+
+		// width and height of a piece
+		width = Math.ceil( el.outerWidth() / cells ),
+		height = Math.ceil( el.outerHeight() / rows ),
+		pieces = [],
+
+		// loop
+		i, j, left, top, mx, my;
+
+	// children animate complete:
+	function childComplete() {
+		pieces.push( this );
+		if ( pieces.length === rows * cells ) {
+			animComplete();
+		}
+	}
+
+	// clone the element for each row and cell.
+	for( i = 0; i < rows ; i++ ) { // ===>
+		top = offset.top + i * height;
+		my = i - ( rows - 1 ) / 2 ;
+
+		for( j = 0; j < cells ; j++ ) { // |||
+			left = offset.left + j * width;
+			mx = j - ( cells - 1 ) / 2 ;
+
+			// Create a clone of the now hidden main element that will be absolute positioned
+			// within a wrapper div off the -left and -top equal to size of our pieces
+			el
+				.clone()
+				.appendTo( "body" )
+				.wrap( "<div></div>" )
+				.css({
+					position: "absolute",
+					visibility: "visible",
+					left: -j * width,
+					top: -i * height
+				})
+
+			// select the wrapper - make it overflow: hidden and absolute positioned based on
+			// where the original was located +left and +top equal to the size of pieces
+				.parent()
+				.addClass( "ui-effects-explode" )
+				.css({
+					position: "absolute",
+					overflow: "hidden",
+					width: width,
+					height: height,
+					left: left + ( show ? mx * width : 0 ),
+					top: top + ( show ? my * height : 0 ),
+					opacity: show ? 0 : 1
+				}).animate({
+					left: left + ( show ? 0 : mx * width ),
+					top: top + ( show ? 0 : my * height ),
+					opacity: show ? 1 : 0
+				}, o.duration || 500, o.easing, childComplete );
+		}
+	}
+
+	function animComplete() {
+		el.css({
+			visibility: "visible"
+		});
+		$( pieces ).remove();
+		if ( !show ) {
+			el.hide();
+		}
+		done();
+	}
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.fade = function( o, done ) {
+	var el = $( this ),
+		mode = $.effects.setMode( el, o.mode || "toggle" );
+
+	el.animate({
+		opacity: mode
+	}, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: done
+	});
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.effects.effect.fold = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		hide = mode === "hide",
+		size = o.size || 15,
+		percent = /([0-9]+)%/.exec( size ),
+		horizFirst = !!o.horizFirst,
+		widthFirst = show !== horizFirst,
+		ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],
+		duration = o.duration / 2,
+		wrapper, distance,
+		animation1 = {},
+		animation2 = {};
+
+	$.effects.save( el, props );
+	el.show();
+
+	// Create Wrapper
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+	distance = widthFirst ?
+		[ wrapper.width(), wrapper.height() ] :
+		[ wrapper.height(), wrapper.width() ];
+
+	if ( percent ) {
+		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
+	}
+	if ( show ) {
+		wrapper.css( horizFirst ? {
+			height: 0,
+			width: size
+		} : {
+			height: size,
+			width: 0
+		});
+	}
+
+	// Animation
+	animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;
+	animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;
+
+	// Animate
+	wrapper
+		.animate( animation1, duration, o.easing )
+		.animate( animation2, duration, o.easing, function() {
+			if ( hide ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.highlight = function( o, done ) {
+	var elem = $( this ),
+		props = [ "backgroundImage", "backgroundColor", "opacity" ],
+		mode = $.effects.setMode( elem, o.mode || "show" ),
+		animation = {
+			backgroundColor: elem.css( "backgroundColor" )
+		};
+
+	if (mode === "hide") {
+		animation.opacity = 0;
+	}
+
+	$.effects.save( elem, props );
+
+	elem
+		.show()
+		.css({
+			backgroundImage: "none",
+			backgroundColor: o.color || "#ffff99"
+		})
+		.animate( animation, {
+			queue: false,
+			duration: o.duration,
+			easing: o.easing,
+			complete: function() {
+				if ( mode === "hide" ) {
+					elem.hide();
+				}
+				$.effects.restore( elem, props );
+				done();
+			}
+		});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.pulsate = function( o, done ) {
+	var elem = $( this ),
+		mode = $.effects.setMode( elem, o.mode || "show" ),
+		show = mode === "show",
+		hide = mode === "hide",
+		showhide = ( show || mode === "hide" ),
+
+		// showing or hiding leaves of the "last" animation
+		anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
+		duration = o.duration / anims,
+		animateTo = 0,
+		queue = elem.queue(),
+		queuelen = queue.length,
+		i;
+
+	if ( show || !elem.is(":visible")) {
+		elem.css( "opacity", 0 ).show();
+		animateTo = 1;
+	}
+
+	// anims - 1 opacity "toggles"
+	for ( i = 1; i < anims; i++ ) {
+		elem.animate({
+			opacity: animateTo
+		}, duration, o.easing );
+		animateTo = 1 - animateTo;
+	}
+
+	elem.animate({
+		opacity: animateTo
+	}, duration, o.easing);
+
+	elem.queue(function() {
+		if ( hide ) {
+			elem.hide();
+		}
+		done();
+	});
+
+	// We just queued up "anims" animations, we need to put them next in the queue
+	if ( queuelen > 1 ) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	elem.dequeue();
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.puff = function( o, done ) {
+	var elem = $( this ),
+		mode = $.effects.setMode( elem, o.mode || "hide" ),
+		hide = mode === "hide",
+		percent = parseInt( o.percent, 10 ) || 150,
+		factor = percent / 100,
+		original = {
+			height: elem.height(),
+			width: elem.width(),
+			outerHeight: elem.outerHeight(),
+			outerWidth: elem.outerWidth()
+		};
+
+	$.extend( o, {
+		effect: "scale",
+		queue: false,
+		fade: true,
+		mode: mode,
+		complete: done,
+		percent: hide ? percent : 100,
+		from: hide ?
+			original :
+			{
+				height: original.height * factor,
+				width: original.width * factor,
+				outerHeight: original.outerHeight * factor,
+				outerWidth: original.outerWidth * factor
+			}
+	});
+
+	elem.effect( o );
+};
+
+$.effects.effect.scale = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		options = $.extend( true, {}, o ),
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		percent = parseInt( o.percent, 10 ) ||
+			( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ),
+		direction = o.direction || "both",
+		origin = o.origin,
+		original = {
+			height: el.height(),
+			width: el.width(),
+			outerHeight: el.outerHeight(),
+			outerWidth: el.outerWidth()
+		},
+		factor = {
+			y: direction !== "horizontal" ? (percent / 100) : 1,
+			x: direction !== "vertical" ? (percent / 100) : 1
+		};
+
+	// We are going to pass this effect to the size effect:
+	options.effect = "size";
+	options.queue = false;
+	options.complete = done;
+
+	// Set default origin and restore for show/hide
+	if ( mode !== "effect" ) {
+		options.origin = origin || ["middle","center"];
+		options.restore = true;
+	}
+
+	options.from = o.from || ( mode === "show" ? {
+		height: 0,
+		width: 0,
+		outerHeight: 0,
+		outerWidth: 0
+	} : original );
+	options.to = {
+		height: original.height * factor.y,
+		width: original.width * factor.x,
+		outerHeight: original.outerHeight * factor.y,
+		outerWidth: original.outerWidth * factor.x
+	};
+
+	// Fade option to support puff
+	if ( options.fade ) {
+		if ( mode === "show" ) {
+			options.from.opacity = 0;
+			options.to.opacity = 1;
+		}
+		if ( mode === "hide" ) {
+			options.from.opacity = 1;
+			options.to.opacity = 0;
+		}
+	}
+
+	// Animate
+	el.effect( options );
+
+};
+
+$.effects.effect.size = function( o, done ) {
+
+	// Create element
+	var original, baseline, factor,
+		el = $( this ),
+		props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ],
+
+		// Always restore
+		props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ],
+
+		// Copy for children
+		props2 = [ "width", "height", "overflow" ],
+		cProps = [ "fontSize" ],
+		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
+		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
+
+		// Set options
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		restore = o.restore || mode !== "effect",
+		scale = o.scale || "both",
+		origin = o.origin || [ "middle", "center" ],
+		position = el.css( "position" ),
+		props = restore ? props0 : props1,
+		zero = {
+			height: 0,
+			width: 0,
+			outerHeight: 0,
+			outerWidth: 0
+		};
+
+	if ( mode === "show" ) {
+		el.show();
+	}
+	original = {
+		height: el.height(),
+		width: el.width(),
+		outerHeight: el.outerHeight(),
+		outerWidth: el.outerWidth()
+	};
+
+	if ( o.mode === "toggle" && mode === "show" ) {
+		el.from = o.to || zero;
+		el.to = o.from || original;
+	} else {
+		el.from = o.from || ( mode === "show" ? zero : original );
+		el.to = o.to || ( mode === "hide" ? zero : original );
+	}
+
+	// Set scaling factor
+	factor = {
+		from: {
+			y: el.from.height / original.height,
+			x: el.from.width / original.width
+		},
+		to: {
+			y: el.to.height / original.height,
+			x: el.to.width / original.width
+		}
+	};
+
+	// Scale the css box
+	if ( scale === "box" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			props = props.concat( vProps );
+			el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );
+			el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );
+		}
+
+		// Horizontal props scaling
+		if ( factor.from.x !== factor.to.x ) {
+			props = props.concat( hProps );
+			el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );
+			el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );
+		}
+	}
+
+	// Scale the content
+	if ( scale === "content" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			props = props.concat( cProps ).concat( props2 );
+			el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );
+			el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );
+		}
+	}
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+	el.css( "overflow", "hidden" ).css( el.from );
+
+	// Adjust
+	if (origin) { // Calculate baseline shifts
+		baseline = $.effects.getBaseline( origin, original );
+		el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;
+		el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;
+		el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;
+		el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;
+	}
+	el.css( el.from ); // set top & left
+
+	// Animate
+	if ( scale === "content" || scale === "both" ) { // Scale the children
+
+		// Add margins/font-size
+		vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps);
+		hProps = hProps.concat([ "marginLeft", "marginRight" ]);
+		props2 = props0.concat(vProps).concat(hProps);
+
+		el.find( "*[width]" ).each( function(){
+			var child = $( this ),
+				c_original = {
+					height: child.height(),
+					width: child.width(),
+					outerHeight: child.outerHeight(),
+					outerWidth: child.outerWidth()
+				};
+			if (restore) {
+				$.effects.save(child, props2);
+			}
+
+			child.from = {
+				height: c_original.height * factor.from.y,
+				width: c_original.width * factor.from.x,
+				outerHeight: c_original.outerHeight * factor.from.y,
+				outerWidth: c_original.outerWidth * factor.from.x
+			};
+			child.to = {
+				height: c_original.height * factor.to.y,
+				width: c_original.width * factor.to.x,
+				outerHeight: c_original.height * factor.to.y,
+				outerWidth: c_original.width * factor.to.x
+			};
+
+			// Vertical props scaling
+			if ( factor.from.y !== factor.to.y ) {
+				child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );
+				child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );
+			}
+
+			// Horizontal props scaling
+			if ( factor.from.x !== factor.to.x ) {
+				child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );
+				child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );
+			}
+
+			// Animate children
+			child.css( child.from );
+			child.animate( child.to, o.duration, o.easing, function() {
+
+				// Restore children
+				if ( restore ) {
+					$.effects.restore( child, props2 );
+				}
+			});
+		});
+	}
+
+	// Animate
+	el.animate( el.to, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( el.to.opacity === 0 ) {
+				el.css( "opacity", el.from.opacity );
+			}
+			if( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			if ( !restore ) {
+
+				// we need to calculate our new positioning based on the scaling
+				if ( position === "static" ) {
+					el.css({
+						position: "relative",
+						top: el.to.top,
+						left: el.to.left
+					});
+				} else {
+					$.each([ "top", "left" ], function( idx, pos ) {
+						el.css( pos, function( _, str ) {
+							var val = parseInt( str, 10 ),
+								toRef = idx ? el.to.left : el.to.top;
+
+							// if original was "auto", recalculate the new value from wrapper
+							if ( str === "auto" ) {
+								return toRef + "px";
+							}
+
+							return val + toRef + "px";
+						});
+					});
+				}
+			}
+
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.shake = function( o, done ) {
+
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		direction = o.direction || "left",
+		distance = o.distance || 20,
+		times = o.times || 3,
+		anims = times * 2 + 1,
+		speed = Math.round(o.duration/anims),
+		ref = (direction === "up" || direction === "down") ? "top" : "left",
+		positiveMotion = (direction === "up" || direction === "left"),
+		animation = {},
+		animation1 = {},
+		animation2 = {},
+		i,
+
+		// we will need to re-assemble the queue to stack our animations in place
+		queue = el.queue(),
+		queuelen = queue.length;
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+
+	// Animation
+	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
+	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
+	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
+
+	// Animate
+	el.animate( animation, speed, o.easing );
+
+	// Shakes
+	for ( i = 1; i < times; i++ ) {
+		el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
+	}
+	el
+		.animate( animation1, speed, o.easing )
+		.animate( animation, speed / 2, o.easing )
+		.queue(function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		});
+
+	// inject all the animations we just queued to be first in line (after "inprogress")
+	if ( queuelen > 1) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	el.dequeue();
+
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.slide = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "width", "height" ],
+		mode = $.effects.setMode( el, o.mode || "show" ),
+		show = mode === "show",
+		direction = o.direction || "left",
+		ref = (direction === "up" || direction === "down") ? "top" : "left",
+		positiveMotion = (direction === "up" || direction === "left"),
+		distance,
+		animation = {};
+
+	// Adjust
+	$.effects.save( el, props );
+	el.show();
+	distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true );
+
+	$.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+
+	if ( show ) {
+		el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance );
+	}
+
+	// Animation
+	animation[ ref ] = ( show ?
+		( positiveMotion ? "+=" : "-=") :
+		( positiveMotion ? "-=" : "+=")) +
+		distance;
+
+	// Animate
+	el.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.effects.effect.transfer = function( o, done ) {
+	var elem = $( this ),
+		target = $( o.to ),
+		targetFixed = target.css( "position" ) === "fixed",
+		body = $("body"),
+		fixTop = targetFixed ? body.scrollTop() : 0,
+		fixLeft = targetFixed ? body.scrollLeft() : 0,
+		endPosition = target.offset(),
+		animation = {
+			top: endPosition.top - fixTop ,
+			left: endPosition.left - fixLeft ,
+			height: target.innerHeight(),
+			width: target.innerWidth()
+		},
+		startPosition = elem.offset(),
+		transfer = $( "<div class='ui-effects-transfer'></div>" )
+			.appendTo( document.body )
+			.addClass( o.className )
+			.css({
+				top: startPosition.top - fixTop ,
+				left: startPosition.left - fixLeft ,
+				height: elem.innerHeight(),
+				width: elem.innerWidth(),
+				position: targetFixed ? "fixed" : "absolute"
+			})
+			.animate( animation, o.duration, o.easing, function() {
+				transfer.remove();
+				done();
+			});
+};
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+$.widget( "ui.menu", {
+	version: "1.10.3",
+	defaultElement: "<ul>",
+	delay: 300,
+	options: {
+		icons: {
+			submenu: "ui-icon-carat-1-e"
+		},
+		menus: "ul",
+		position: {
+			my: "left top",
+			at: "right top"
+		},
+		role: "menu",
+
+		// callbacks
+		blur: null,
+		focus: null,
+		select: null
+	},
+
+	_create: function() {
+		this.activeMenu = this.element;
+		// flag used to prevent firing of the click handler
+		// as the event bubbles up through nested menus
+		this.mouseHandled = false;
+		this.element
+			.uniqueId()
+			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
+			.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )
+			.attr({
+				role: this.options.role,
+				tabIndex: 0
+			})
+			// need to catch all clicks on disabled menu
+			// not possible through _on
+			.bind( "click" + this.eventNamespace, $.proxy(function( event ) {
+				if ( this.options.disabled ) {
+					event.preventDefault();
+				}
+			}, this ));
+
+		if ( this.options.disabled ) {
+			this.element
+				.addClass( "ui-state-disabled" )
+				.attr( "aria-disabled", "true" );
+		}
+
+		this._on({
+			// Prevent focus from sticking to links inside menu after clicking
+			// them (focus should always stay on UL during navigation).
+			"mousedown .ui-menu-item > a": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-state-disabled > a": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-menu-item:has(a)": function( event ) {
+				var target = $( event.target ).closest( ".ui-menu-item" );
+				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
+					this.mouseHandled = true;
+
+					this.select( event );
+					// Open submenu on click
+					if ( target.has( ".ui-menu" ).length ) {
+						this.expand( event );
+					} else if ( !this.element.is( ":focus" ) ) {
+						// Redirect focus to the menu
+						this.element.trigger( "focus", [ true ] );
+
+						// If the active item is on the top level, let it stay active.
+						// Otherwise, blur the active item since it is no longer visible.
+						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
+							clearTimeout( this.timer );
+						}
+					}
+				}
+			},
+			"mouseenter .ui-menu-item": function( event ) {
+				var target = $( event.currentTarget );
+				// Remove ui-state-active class from siblings of the newly focused menu item
+				// to avoid a jump caused by adjacent elements both having a class with a border
+				target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
+				this.focus( event, target );
+			},
+			mouseleave: "collapseAll",
+			"mouseleave .ui-menu": "collapseAll",
+			focus: function( event, keepActiveItem ) {
+				// If there's already an active item, keep it active
+				// If not, activate the first item
+				var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
+
+				if ( !keepActiveItem ) {
+					this.focus( event, item );
+				}
+			},
+			blur: function( event ) {
+				this._delay(function() {
+					if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
+						this.collapseAll( event );
+					}
+				});
+			},
+			keydown: "_keydown"
+		});
+
+		this.refresh();
+
+		// Clicks outside of a menu collapse any open menus
+		this._on( this.document, {
+			click: function( event ) {
+				if ( !$( event.target ).closest( ".ui-menu" ).length ) {
+					this.collapseAll( event );
+				}
+
+				// Reset the mouseHandled flag
+				this.mouseHandled = false;
+			}
+		});
+	},
+
+	_destroy: function() {
+		// Destroy (sub)menus
+		this.element
+			.removeAttr( "aria-activedescendant" )
+			.find( ".ui-menu" ).addBack()
+				.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
+				.removeAttr( "role" )
+				.removeAttr( "tabIndex" )
+				.removeAttr( "aria-labelledby" )
+				.removeAttr( "aria-expanded" )
+				.removeAttr( "aria-hidden" )
+				.removeAttr( "aria-disabled" )
+				.removeUniqueId()
+				.show();
+
+		// Destroy menu items
+		this.element.find( ".ui-menu-item" )
+			.removeClass( "ui-menu-item" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-disabled" )
+			.children( "a" )
+				.removeUniqueId()
+				.removeClass( "ui-corner-all ui-state-hover" )
+				.removeAttr( "tabIndex" )
+				.removeAttr( "role" )
+				.removeAttr( "aria-haspopup" )
+				.children().each( function() {
+					var elem = $( this );
+					if ( elem.data( "ui-menu-submenu-carat" ) ) {
+						elem.remove();
+					}
+				});
+
+		// Destroy menu dividers
+		this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
+	},
+
+	_keydown: function( event ) {
+		/*jshint maxcomplexity:20*/
+		var match, prev, character, skip, regex,
+			preventDefault = true;
+
+		function escape( value ) {
+			return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
+		}
+
+		switch ( event.keyCode ) {
+		case $.ui.keyCode.PAGE_UP:
+			this.previousPage( event );
+			break;
+		case $.ui.keyCode.PAGE_DOWN:
+			this.nextPage( event );
+			break;
+		case $.ui.keyCode.HOME:
+			this._move( "first", "first", event );
+			break;
+		case $.ui.keyCode.END:
+			this._move( "last", "last", event );
+			break;
+		case $.ui.keyCode.UP:
+			this.previous( event );
+			break;
+		case $.ui.keyCode.DOWN:
+			this.next( event );
+			break;
+		case $.ui.keyCode.LEFT:
+			this.collapse( event );
+			break;
+		case $.ui.keyCode.RIGHT:
+			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
+				this.expand( event );
+			}
+			break;
+		case $.ui.keyCode.ENTER:
+		case $.ui.keyCode.SPACE:
+			this._activate( event );
+			break;
+		case $.ui.keyCode.ESCAPE:
+			this.collapse( event );
+			break;
+		default:
+			preventDefault = false;
+			prev = this.previousFilter || "";
+			character = String.fromCharCode( event.keyCode );
+			skip = false;
+
+			clearTimeout( this.filterTimer );
+
+			if ( character === prev ) {
+				skip = true;
+			} else {
+				character = prev + character;
+			}
+
+			regex = new RegExp( "^" + escape( character ), "i" );
+			match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
+				return regex.test( $( this ).children( "a" ).text() );
+			});
+			match = skip && match.index( this.active.next() ) !== -1 ?
+				this.active.nextAll( ".ui-menu-item" ) :
+				match;
+
+			// If no matches on the current filter, reset to the last character pressed
+			// to move down the menu to the first item that starts with that character
+			if ( !match.length ) {
+				character = String.fromCharCode( event.keyCode );
+				regex = new RegExp( "^" + escape( character ), "i" );
+				match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
+					return regex.test( $( this ).children( "a" ).text() );
+				});
+			}
+
+			if ( match.length ) {
+				this.focus( event, match );
+				if ( match.length > 1 ) {
+					this.previousFilter = character;
+					this.filterTimer = this._delay(function() {
+						delete this.previousFilter;
+					}, 1000 );
+				} else {
+					delete this.previousFilter;
+				}
+			} else {
+				delete this.previousFilter;
+			}
+		}
+
+		if ( preventDefault ) {
+			event.preventDefault();
+		}
+	},
+
+	_activate: function( event ) {
+		if ( !this.active.is( ".ui-state-disabled" ) ) {
+			if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
+				this.expand( event );
+			} else {
+				this.select( event );
+			}
+		}
+	},
+
+	refresh: function() {
+		var menus,
+			icon = this.options.icons.submenu,
+			submenus = this.element.find( this.options.menus );
+
+		// Initialize nested menus
+		submenus.filter( ":not(.ui-menu)" )
+			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
+			.hide()
+			.attr({
+				role: this.options.role,
+				"aria-hidden": "true",
+				"aria-expanded": "false"
+			})
+			.each(function() {
+				var menu = $( this ),
+					item = menu.prev( "a" ),
+					submenuCarat = $( "<span>" )
+						.addClass( "ui-menu-icon ui-icon " + icon )
+						.data( "ui-menu-submenu-carat", true );
+
+				item
+					.attr( "aria-haspopup", "true" )
+					.prepend( submenuCarat );
+				menu.attr( "aria-labelledby", item.attr( "id" ) );
+			});
+
+		menus = submenus.add( this.element );
+
+		// Don't refresh list items that are already adapted
+		menus.children( ":not(.ui-menu-item):has(a)" )
+			.addClass( "ui-menu-item" )
+			.attr( "role", "presentation" )
+			.children( "a" )
+				.uniqueId()
+				.addClass( "ui-corner-all" )
+				.attr({
+					tabIndex: -1,
+					role: this._itemRole()
+				});
+
+		// Initialize unlinked menu-items containing spaces and/or dashes only as dividers
+		menus.children( ":not(.ui-menu-item)" ).each(function() {
+			var item = $( this );
+			// hyphen, em dash, en dash
+			if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {
+				item.addClass( "ui-widget-content ui-menu-divider" );
+			}
+		});
+
+		// Add aria-disabled attribute to any disabled menu item
+		menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
+
+		// If the active item has been removed, blur the menu
+		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			this.blur();
+		}
+	},
+
+	_itemRole: function() {
+		return {
+			menu: "menuitem",
+			listbox: "option"
+		}[ this.options.role ];
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "icons" ) {
+			this.element.find( ".ui-menu-icon" )
+				.removeClass( this.options.icons.submenu )
+				.addClass( value.submenu );
+		}
+		this._super( key, value );
+	},
+
+	focus: function( event, item ) {
+		var nested, focused;
+		this.blur( event, event && event.type === "focus" );
+
+		this._scrollIntoView( item );
+
+		this.active = item.first();
+		focused = this.active.children( "a" ).addClass( "ui-state-focus" );
+		// Only update aria-activedescendant if there's a role
+		// otherwise we assume focus is managed elsewhere
+		if ( this.options.role ) {
+			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
+		}
+
+		// Highlight active parent menu item, if any
+		this.active
+			.parent()
+			.closest( ".ui-menu-item" )
+			.children( "a:first" )
+			.addClass( "ui-state-active" );
+
+		if ( event && event.type === "keydown" ) {
+			this._close();
+		} else {
+			this.timer = this._delay(function() {
+				this._close();
+			}, this.delay );
+		}
+
+		nested = item.children( ".ui-menu" );
+		if ( nested.length && ( /^mouse/.test( event.type ) ) ) {
+			this._startOpening(nested);
+		}
+		this.activeMenu = item.parent();
+
+		this._trigger( "focus", event, { item: item } );
+	},
+
+	_scrollIntoView: function( item ) {
+		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+		if ( this._hasScroll() ) {
+			borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
+			paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
+			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+			scroll = this.activeMenu.scrollTop();
+			elementHeight = this.activeMenu.height();
+			itemHeight = item.height();
+
+			if ( offset < 0 ) {
+				this.activeMenu.scrollTop( scroll + offset );
+			} else if ( offset + itemHeight > elementHeight ) {
+				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+			}
+		}
+	},
+
+	blur: function( event, fromFocus ) {
+		if ( !fromFocus ) {
+			clearTimeout( this.timer );
+		}
+
+		if ( !this.active ) {
+			return;
+		}
+
+		this.active.children( "a" ).removeClass( "ui-state-focus" );
+		this.active = null;
+
+		this._trigger( "blur", event, { item: this.active } );
+	},
+
+	_startOpening: function( submenu ) {
+		clearTimeout( this.timer );
+
+		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
+		// shift in the submenu position when mousing over the carat icon
+		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
+			return;
+		}
+
+		this.timer = this._delay(function() {
+			this._close();
+			this._open( submenu );
+		}, this.delay );
+	},
+
+	_open: function( submenu ) {
+		var position = $.extend({
+			of: this.active
+		}, this.options.position );
+
+		clearTimeout( this.timer );
+		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
+			.hide()
+			.attr( "aria-hidden", "true" );
+
+		submenu
+			.show()
+			.removeAttr( "aria-hidden" )
+			.attr( "aria-expanded", "true" )
+			.position( position );
+	},
+
+	collapseAll: function( event, all ) {
+		clearTimeout( this.timer );
+		this.timer = this._delay(function() {
+			// If we were passed an event, look for the submenu that contains the event
+			var currentMenu = all ? this.element :
+				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
+
+			// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
+			if ( !currentMenu.length ) {
+				currentMenu = this.element;
+			}
+
+			this._close( currentMenu );
+
+			this.blur( event );
+			this.activeMenu = currentMenu;
+		}, this.delay );
+	},
+
+	// With no arguments, closes the currently active menu - if nothing is active
+	// it closes all menus.  If passed an argument, it will search for menus BELOW
+	_close: function( startMenu ) {
+		if ( !startMenu ) {
+			startMenu = this.active ? this.active.parent() : this.element;
+		}
+
+		startMenu
+			.find( ".ui-menu" )
+				.hide()
+				.attr( "aria-hidden", "true" )
+				.attr( "aria-expanded", "false" )
+			.end()
+			.find( "a.ui-state-active" )
+				.removeClass( "ui-state-active" );
+	},
+
+	collapse: function( event ) {
+		var newItem = this.active &&
+			this.active.parent().closest( ".ui-menu-item", this.element );
+		if ( newItem && newItem.length ) {
+			this._close();
+			this.focus( event, newItem );
+		}
+	},
+
+	expand: function( event ) {
+		var newItem = this.active &&
+			this.active
+				.children( ".ui-menu " )
+				.children( ".ui-menu-item" )
+				.first();
+
+		if ( newItem && newItem.length ) {
+			this._open( newItem.parent() );
+
+			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
+			this._delay(function() {
+				this.focus( event, newItem );
+			});
+		}
+	},
+
+	next: function( event ) {
+		this._move( "next", "first", event );
+	},
+
+	previous: function( event ) {
+		this._move( "prev", "last", event );
+	},
+
+	isFirstItem: function() {
+		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
+	},
+
+	isLastItem: function() {
+		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
+	},
+
+	_move: function( direction, filter, event ) {
+		var next;
+		if ( this.active ) {
+			if ( direction === "first" || direction === "last" ) {
+				next = this.active
+					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
+					.eq( -1 );
+			} else {
+				next = this.active
+					[ direction + "All" ]( ".ui-menu-item" )
+					.eq( 0 );
+			}
+		}
+		if ( !next || !next.length || !this.active ) {
+			next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
+		}
+
+		this.focus( event, next );
+	},
+
+	nextPage: function( event ) {
+		var item, base, height;
+
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isLastItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.nextAll( ".ui-menu-item" ).each(function() {
+				item = $( this );
+				return item.offset().top - base - height < 0;
+			});
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.children( ".ui-menu-item" )
+				[ !this.active ? "first" : "last" ]() );
+		}
+	},
+
+	previousPage: function( event ) {
+		var item, base, height;
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isFirstItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.prevAll( ".ui-menu-item" ).each(function() {
+				item = $( this );
+				return item.offset().top - base + height > 0;
+			});
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
+		}
+	},
+
+	_hasScroll: function() {
+		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
+	},
+
+	select: function( event ) {
+		// TODO: It should never be possible to not have an active item at this
+		// point, but the tests don't trigger mouseenter before click.
+		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
+		var ui = { item: this.active };
+		if ( !this.active.has( ".ui-menu" ).length ) {
+			this.collapseAll( event, true );
+		}
+		this._trigger( "select", event, ui );
+	}
+});
+
+}( jQuery ));
+
+(function( $, undefined ) {
+
+$.ui = $.ui || {};
+
+var cachedScrollbarWidth,
+	max = Math.max,
+	abs = Math.abs,
+	round = Math.round,
+	rhorizontal = /left|center|right/,
+	rvertical = /top|center|bottom/,
+	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
+	rposition = /^\w+/,
+	rpercent = /%$/,
+	_position = $.fn.position;
+
+function getOffsets( offsets, width, height ) {
+	return [
+		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
+		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
+	];
+}
+
+function parseCss( element, property ) {
+	return parseInt( $.css( element, property ), 10 ) || 0;
+}
+
+function getDimensions( elem ) {
+	var raw = elem[0];
+	if ( raw.nodeType === 9 ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: 0, left: 0 }
+		};
+	}
+	if ( $.isWindow( raw ) ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
+		};
+	}
+	if ( raw.preventDefault ) {
+		return {
+			width: 0,
+			height: 0,
+			offset: { top: raw.pageY, left: raw.pageX }
+		};
+	}
+	return {
+		width: elem.outerWidth(),
+		height: elem.outerHeight(),
+		offset: elem.offset()
+	};
+}
+
+$.position = {
+	scrollbarWidth: function() {
+		if ( cachedScrollbarWidth !== undefined ) {
+			return cachedScrollbarWidth;
+		}
+		var w1, w2,
+			div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
+			innerDiv = div.children()[0];
+
+		$( "body" ).append( div );
+		w1 = innerDiv.offsetWidth;
+		div.css( "overflow", "scroll" );
+
+		w2 = innerDiv.offsetWidth;
+
+		if ( w1 === w2 ) {
+			w2 = div[0].clientWidth;
+		}
+
+		div.remove();
+
+		return (cachedScrollbarWidth = w1 - w2);
+	},
+	getScrollInfo: function( within ) {
+		var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ),
+			overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ),
+			hasOverflowX = overflowX === "scroll" ||
+				( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
+			hasOverflowY = overflowY === "scroll" ||
+				( overflowY === "auto" && within.height < within.element[0].scrollHeight );
+		return {
+			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
+			height: hasOverflowX ? $.position.scrollbarWidth() : 0
+		};
+	},
+	getWithinInfo: function( element ) {
+		var withinElement = $( element || window ),
+			isWindow = $.isWindow( withinElement[0] );
+		return {
+			element: withinElement,
+			isWindow: isWindow,
+			offset: withinElement.offset() || { left: 0, top: 0 },
+			scrollLeft: withinElement.scrollLeft(),
+			scrollTop: withinElement.scrollTop(),
+			width: isWindow ? withinElement.width() : withinElement.outerWidth(),
+			height: isWindow ? withinElement.height() : withinElement.outerHeight()
+		};
+	}
+};
+
+$.fn.position = function( options ) {
+	if ( !options || !options.of ) {
+		return _position.apply( this, arguments );
+	}
+
+	// make a copy, we don't want to modify arguments
+	options = $.extend( {}, options );
+
+	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
+		target = $( options.of ),
+		within = $.position.getWithinInfo( options.within ),
+		scrollInfo = $.position.getScrollInfo( within ),
+		collision = ( options.collision || "flip" ).split( " " ),
+		offsets = {};
+
+	dimensions = getDimensions( target );
+	if ( target[0].preventDefault ) {
+		// force left top to allow flipping
+		options.at = "left top";
+	}
+	targetWidth = dimensions.width;
+	targetHeight = dimensions.height;
+	targetOffset = dimensions.offset;
+	// clone to reuse original targetOffset later
+	basePosition = $.extend( {}, targetOffset );
+
+	// force my and at to have valid horizontal and vertical positions
+	// if a value is missing or invalid, it will be converted to center
+	$.each( [ "my", "at" ], function() {
+		var pos = ( options[ this ] || "" ).split( " " ),
+			horizontalOffset,
+			verticalOffset;
+
+		if ( pos.length === 1) {
+			pos = rhorizontal.test( pos[ 0 ] ) ?
+				pos.concat( [ "center" ] ) :
+				rvertical.test( pos[ 0 ] ) ?
+					[ "center" ].concat( pos ) :
+					[ "center", "center" ];
+		}
+		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
+		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
+
+		// calculate offsets
+		horizontalOffset = roffset.exec( pos[ 0 ] );
+		verticalOffset = roffset.exec( pos[ 1 ] );
+		offsets[ this ] = [
+			horizontalOffset ? horizontalOffset[ 0 ] : 0,
+			verticalOffset ? verticalOffset[ 0 ] : 0
+		];
+
+		// reduce to just the positions without the offsets
+		options[ this ] = [
+			rposition.exec( pos[ 0 ] )[ 0 ],
+			rposition.exec( pos[ 1 ] )[ 0 ]
+		];
+	});
+
+	// normalize collision option
+	if ( collision.length === 1 ) {
+		collision[ 1 ] = collision[ 0 ];
+	}
+
+	if ( options.at[ 0 ] === "right" ) {
+		basePosition.left += targetWidth;
+	} else if ( options.at[ 0 ] === "center" ) {
+		basePosition.left += targetWidth / 2;
+	}
+
+	if ( options.at[ 1 ] === "bottom" ) {
+		basePosition.top += targetHeight;
+	} else if ( options.at[ 1 ] === "center" ) {
+		basePosition.top += targetHeight / 2;
+	}
+
+	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
+	basePosition.left += atOffset[ 0 ];
+	basePosition.top += atOffset[ 1 ];
+
+	return this.each(function() {
+		var collisionPosition, using,
+			elem = $( this ),
+			elemWidth = elem.outerWidth(),
+			elemHeight = elem.outerHeight(),
+			marginLeft = parseCss( this, "marginLeft" ),
+			marginTop = parseCss( this, "marginTop" ),
+			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
+			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
+			position = $.extend( {}, basePosition ),
+			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
+
+		if ( options.my[ 0 ] === "right" ) {
+			position.left -= elemWidth;
+		} else if ( options.my[ 0 ] === "center" ) {
+			position.left -= elemWidth / 2;
+		}
+
+		if ( options.my[ 1 ] === "bottom" ) {
+			position.top -= elemHeight;
+		} else if ( options.my[ 1 ] === "center" ) {
+			position.top -= elemHeight / 2;
+		}
+
+		position.left += myOffset[ 0 ];
+		position.top += myOffset[ 1 ];
+
+		// if the browser doesn't support fractions, then round for consistent results
+		if ( !$.support.offsetFractions ) {
+			position.left = round( position.left );
+			position.top = round( position.top );
+		}
+
+		collisionPosition = {
+			marginLeft: marginLeft,
+			marginTop: marginTop
+		};
+
+		$.each( [ "left", "top" ], function( i, dir ) {
+			if ( $.ui.position[ collision[ i ] ] ) {
+				$.ui.position[ collision[ i ] ][ dir ]( position, {
+					targetWidth: targetWidth,
+					targetHeight: targetHeight,
+					elemWidth: elemWidth,
+					elemHeight: elemHeight,
+					collisionPosition: collisionPosition,
+					collisionWidth: collisionWidth,
+					collisionHeight: collisionHeight,
+					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
+					my: options.my,
+					at: options.at,
+					within: within,
+					elem : elem
+				});
+			}
+		});
+
+		if ( options.using ) {
+			// adds feedback as second argument to using callback, if present
+			using = function( props ) {
+				var left = targetOffset.left - position.left,
+					right = left + targetWidth - elemWidth,
+					top = targetOffset.top - position.top,
+					bottom = top + targetHeight - elemHeight,
+					feedback = {
+						target: {
+							element: target,
+							left: targetOffset.left,
+							top: targetOffset.top,
+							width: targetWidth,
+							height: targetHeight
+						},
+						element: {
+							element: elem,
+							left: position.left,
+							top: position.top,
+							width: elemWidth,
+							height: elemHeight
+						},
+						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
+						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
+					};
+				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
+					feedback.horizontal = "center";
+				}
+				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
+					feedback.vertical = "middle";
+				}
+				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
+					feedback.important = "horizontal";
+				} else {
+					feedback.important = "vertical";
+				}
+				options.using.call( this, props, feedback );
+			};
+		}
+
+		elem.offset( $.extend( position, { using: using } ) );
+	});
+};
+
+$.ui.position = {
+	fit: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
+				outerWidth = within.width,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = withinOffset - collisionPosLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
+				newOverRight;
+
+			// element is wider than within
+			if ( data.collisionWidth > outerWidth ) {
+				// element is initially over the left side of within
+				if ( overLeft > 0 && overRight <= 0 ) {
+					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
+					position.left += overLeft - newOverRight;
+				// element is initially over right side of within
+				} else if ( overRight > 0 && overLeft <= 0 ) {
+					position.left = withinOffset;
+				// element is initially over both left and right sides of within
+				} else {
+					if ( overLeft > overRight ) {
+						position.left = withinOffset + outerWidth - data.collisionWidth;
+					} else {
+						position.left = withinOffset;
+					}
+				}
+			// too far left -> align with left edge
+			} else if ( overLeft > 0 ) {
+				position.left += overLeft;
+			// too far right -> align with right edge
+			} else if ( overRight > 0 ) {
+				position.left -= overRight;
+			// adjust based on position and margin
+			} else {
+				position.left = max( position.left - collisionPosLeft, position.left );
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
+				outerHeight = data.within.height,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = withinOffset - collisionPosTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
+				newOverBottom;
+
+			// element is taller than within
+			if ( data.collisionHeight > outerHeight ) {
+				// element is initially over the top of within
+				if ( overTop > 0 && overBottom <= 0 ) {
+					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
+					position.top += overTop - newOverBottom;
+				// element is initially over bottom of within
+				} else if ( overBottom > 0 && overTop <= 0 ) {
+					position.top = withinOffset;
+				// element is initially over both top and bottom of within
+				} else {
+					if ( overTop > overBottom ) {
+						position.top = withinOffset + outerHeight - data.collisionHeight;
+					} else {
+						position.top = withinOffset;
+					}
+				}
+			// too far up -> align with top
+			} else if ( overTop > 0 ) {
+				position.top += overTop;
+			// too far down -> align with bottom edge
+			} else if ( overBottom > 0 ) {
+				position.top -= overBottom;
+			// adjust based on position and margin
+			} else {
+				position.top = max( position.top - collisionPosTop, position.top );
+			}
+		}
+	},
+	flip: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.left + within.scrollLeft,
+				outerWidth = within.width,
+				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = collisionPosLeft - offsetLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
+				myOffset = data.my[ 0 ] === "left" ?
+					-data.elemWidth :
+					data.my[ 0 ] === "right" ?
+						data.elemWidth :
+						0,
+				atOffset = data.at[ 0 ] === "left" ?
+					data.targetWidth :
+					data.at[ 0 ] === "right" ?
+						-data.targetWidth :
+						0,
+				offset = -2 * data.offset[ 0 ],
+				newOverRight,
+				newOverLeft;
+
+			if ( overLeft < 0 ) {
+				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
+				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overRight > 0 ) {
+				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
+				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.top + within.scrollTop,
+				outerHeight = within.height,
+				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = collisionPosTop - offsetTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
+				top = data.my[ 1 ] === "top",
+				myOffset = top ?
+					-data.elemHeight :
+					data.my[ 1 ] === "bottom" ?
+						data.elemHeight :
+						0,
+				atOffset = data.at[ 1 ] === "top" ?
+					data.targetHeight :
+					data.at[ 1 ] === "bottom" ?
+						-data.targetHeight :
+						0,
+				offset = -2 * data.offset[ 1 ],
+				newOverTop,
+				newOverBottom;
+			if ( overTop < 0 ) {
+				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
+				if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overBottom > 0 ) {
+				newOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
+				if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+		}
+	},
+	flipfit: {
+		left: function() {
+			$.ui.position.flip.left.apply( this, arguments );
+			$.ui.position.fit.left.apply( this, arguments );
+		},
+		top: function() {
+			$.ui.position.flip.top.apply( this, arguments );
+			$.ui.position.fit.top.apply( this, arguments );
+		}
+	}
+};
+
+// fraction support test
+(function () {
+	var testElement, testElementParent, testElementStyle, offsetLeft, i,
+		body = document.getElementsByTagName( "body" )[ 0 ],
+		div = document.createElement( "div" );
+
+	//Create a "fake body" for testing based on method used in jQuery.support
+	testElement = document.createElement( body ? "div" : "body" );
+	testElementStyle = {
+		visibility: "hidden",
+		width: 0,
+		height: 0,
+		border: 0,
+		margin: 0,
+		background: "none"
+	};
+	if ( body ) {
+		$.extend( testElementStyle, {
+			position: "absolute",
+			left: "-1000px",
+			top: "-1000px"
+		});
+	}
+	for ( i in testElementStyle ) {
+		testElement.style[ i ] = testElementStyle[ i ];
+	}
+	testElement.appendChild( div );
+	testElementParent = body || document.documentElement;
+	testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+	div.style.cssText = "position: absolute; left: 10.7432222px;";
+
+	offsetLeft = $( div ).offset().left;
+	$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
+
+	testElement.innerHTML = "";
+	testElementParent.removeChild( testElement );
+})();
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+$.widget( "ui.progressbar", {
+	version: "1.10.3",
+	options: {
+		max: 100,
+		value: 0,
+
+		change: null,
+		complete: null
+	},
+
+	min: 0,
+
+	_create: function() {
+		// Constrain initial value
+		this.oldValue = this.options.value = this._constrainedValue();
+
+		this.element
+			.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
+			.attr({
+				// Only set static values, aria-valuenow and aria-valuemax are
+				// set inside _refreshValue()
+				role: "progressbar",
+				"aria-valuemin": this.min
+			});
+
+		this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
+			.appendTo( this.element );
+
+		this._refreshValue();
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-valuemin" )
+			.removeAttr( "aria-valuemax" )
+			.removeAttr( "aria-valuenow" );
+
+		this.valueDiv.remove();
+	},
+
+	value: function( newValue ) {
+		if ( newValue === undefined ) {
+			return this.options.value;
+		}
+
+		this.options.value = this._constrainedValue( newValue );
+		this._refreshValue();
+	},
+
+	_constrainedValue: function( newValue ) {
+		if ( newValue === undefined ) {
+			newValue = this.options.value;
+		}
+
+		this.indeterminate = newValue === false;
+
+		// sanitize value
+		if ( typeof newValue !== "number" ) {
+			newValue = 0;
+		}
+
+		return this.indeterminate ? false :
+			Math.min( this.options.max, Math.max( this.min, newValue ) );
+	},
+
+	_setOptions: function( options ) {
+		// Ensure "value" option is set after other values (like max)
+		var value = options.value;
+		delete options.value;
+
+		this._super( options );
+
+		this.options.value = this._constrainedValue( value );
+		this._refreshValue();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "max" ) {
+			// Don't allow a max less than min
+			value = Math.max( this.min, value );
+		}
+
+		this._super( key, value );
+	},
+
+	_percentage: function() {
+		return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
+	},
+
+	_refreshValue: function() {
+		var value = this.options.value,
+			percentage = this._percentage();
+
+		this.valueDiv
+			.toggle( this.indeterminate || value > this.min )
+			.toggleClass( "ui-corner-right", value === this.options.max )
+			.width( percentage.toFixed(0) + "%" );
+
+		this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate );
+
+		if ( this.indeterminate ) {
+			this.element.removeAttr( "aria-valuenow" );
+			if ( !this.overlayDiv ) {
+				this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv );
+			}
+		} else {
+			this.element.attr({
+				"aria-valuemax": this.options.max,
+				"aria-valuenow": value
+			});
+			if ( this.overlayDiv ) {
+				this.overlayDiv.remove();
+				this.overlayDiv = null;
+			}
+		}
+
+		if ( this.oldValue !== value ) {
+			this.oldValue = value;
+			this._trigger( "change" );
+		}
+		if ( value === this.options.max ) {
+			this._trigger( "complete" );
+		}
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// number of pages in a slider
+// (how many times can you page up/down to go through the whole range)
+var numPages = 5;
+
+$.widget( "ui.slider", $.ui.mouse, {
+	version: "1.10.3",
+	widgetEventPrefix: "slide",
+
+	options: {
+		animate: false,
+		distance: 0,
+		max: 100,
+		min: 0,
+		orientation: "horizontal",
+		range: false,
+		step: 1,
+		value: 0,
+		values: null,
+
+		// callbacks
+		change: null,
+		slide: null,
+		start: null,
+		stop: null
+	},
+
+	_create: function() {
+		this._keySliding = false;
+		this._mouseSliding = false;
+		this._animateOff = true;
+		this._handleIndex = null;
+		this._detectOrientation();
+		this._mouseInit();
+
+		this.element
+			.addClass( "ui-slider" +
+				" ui-slider-" + this.orientation +
+				" ui-widget" +
+				" ui-widget-content" +
+				" ui-corner-all");
+
+		this._refresh();
+		this._setOption( "disabled", this.options.disabled );
+
+		this._animateOff = false;
+	},
+
+	_refresh: function() {
+		this._createRange();
+		this._createHandles();
+		this._setupEvents();
+		this._refreshValue();
+	},
+
+	_createHandles: function() {
+		var i, handleCount,
+			options = this.options,
+			existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),
+			handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",
+			handles = [];
+
+		handleCount = ( options.values && options.values.length ) || 1;
+
+		if ( existingHandles.length > handleCount ) {
+			existingHandles.slice( handleCount ).remove();
+			existingHandles = existingHandles.slice( 0, handleCount );
+		}
+
+		for ( i = existingHandles.length; i < handleCount; i++ ) {
+			handles.push( handle );
+		}
+
+		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
+
+		this.handle = this.handles.eq( 0 );
+
+		this.handles.each(function( i ) {
+			$( this ).data( "ui-slider-handle-index", i );
+		});
+	},
+
+	_createRange: function() {
+		var options = this.options,
+			classes = "";
+
+		if ( options.range ) {
+			if ( options.range === true ) {
+				if ( !options.values ) {
+					options.values = [ this._valueMin(), this._valueMin() ];
+				} else if ( options.values.length && options.values.length !== 2 ) {
+					options.values = [ options.values[0], options.values[0] ];
+				} else if ( $.isArray( options.values ) ) {
+					options.values = options.values.slice(0);
+				}
+			}
+
+			if ( !this.range || !this.range.length ) {
+				this.range = $( "<div></div>" )
+					.appendTo( this.element );
+
+				classes = "ui-slider-range" +
+				// note: this isn't the most fittingly semantic framework class for this element,
+				// but worked best visually with a variety of themes
+				" ui-widget-header ui-corner-all";
+			} else {
+				this.range.removeClass( "ui-slider-range-min ui-slider-range-max" )
+					// Handle range switching from true to min/max
+					.css({
+						"left": "",
+						"bottom": ""
+					});
+			}
+
+			this.range.addClass( classes +
+				( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) );
+		} else {
+			this.range = $([]);
+		}
+	},
+
+	_setupEvents: function() {
+		var elements = this.handles.add( this.range ).filter( "a" );
+		this._off( elements );
+		this._on( elements, this._handleEvents );
+		this._hoverable( elements );
+		this._focusable( elements );
+	},
+
+	_destroy: function() {
+		this.handles.remove();
+		this.range.remove();
+
+		this.element
+			.removeClass( "ui-slider" +
+				" ui-slider-horizontal" +
+				" ui-slider-vertical" +
+				" ui-widget" +
+				" ui-widget-content" +
+				" ui-corner-all" );
+
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function( event ) {
+		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
+			that = this,
+			o = this.options;
+
+		if ( o.disabled ) {
+			return false;
+		}
+
+		this.elementSize = {
+			width: this.element.outerWidth(),
+			height: this.element.outerHeight()
+		};
+		this.elementOffset = this.element.offset();
+
+		position = { x: event.pageX, y: event.pageY };
+		normValue = this._normValueFromMouse( position );
+		distance = this._valueMax() - this._valueMin() + 1;
+		this.handles.each(function( i ) {
+			var thisDistance = Math.abs( normValue - that.values(i) );
+			if (( distance > thisDistance ) ||
+				( distance === thisDistance &&
+					(i === that._lastChangedValue || that.values(i) === o.min ))) {
+				distance = thisDistance;
+				closestHandle = $( this );
+				index = i;
+			}
+		});
+
+		allowed = this._start( event, index );
+		if ( allowed === false ) {
+			return false;
+		}
+		this._mouseSliding = true;
+
+		this._handleIndex = index;
+
+		closestHandle
+			.addClass( "ui-state-active" )
+			.focus();
+
+		offset = closestHandle.offset();
+		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
+		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
+			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
+			top: event.pageY - offset.top -
+				( closestHandle.height() / 2 ) -
+				( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -
+				( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +
+				( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
+		};
+
+		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
+			this._slide( event, index, normValue );
+		}
+		this._animateOff = true;
+		return true;
+	},
+
+	_mouseStart: function() {
+		return true;
+	},
+
+	_mouseDrag: function( event ) {
+		var position = { x: event.pageX, y: event.pageY },
+			normValue = this._normValueFromMouse( position );
+
+		this._slide( event, this._handleIndex, normValue );
+
+		return false;
+	},
+
+	_mouseStop: function( event ) {
+		this.handles.removeClass( "ui-state-active" );
+		this._mouseSliding = false;
+
+		this._stop( event, this._handleIndex );
+		this._change( event, this._handleIndex );
+
+		this._handleIndex = null;
+		this._clickOffset = null;
+		this._animateOff = false;
+
+		return false;
+	},
+
+	_detectOrientation: function() {
+		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
+	},
+
+	_normValueFromMouse: function( position ) {
+		var pixelTotal,
+			pixelMouse,
+			percentMouse,
+			valueTotal,
+			valueMouse;
+
+		if ( this.orientation === "horizontal" ) {
+			pixelTotal = this.elementSize.width;
+			pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );
+		} else {
+			pixelTotal = this.elementSize.height;
+			pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );
+		}
+
+		percentMouse = ( pixelMouse / pixelTotal );
+		if ( percentMouse > 1 ) {
+			percentMouse = 1;
+		}
+		if ( percentMouse < 0 ) {
+			percentMouse = 0;
+		}
+		if ( this.orientation === "vertical" ) {
+			percentMouse = 1 - percentMouse;
+		}
+
+		valueTotal = this._valueMax() - this._valueMin();
+		valueMouse = this._valueMin() + percentMouse * valueTotal;
+
+		return this._trimAlignValue( valueMouse );
+	},
+
+	_start: function( event, index ) {
+		var uiHash = {
+			handle: this.handles[ index ],
+			value: this.value()
+		};
+		if ( this.options.values && this.options.values.length ) {
+			uiHash.value = this.values( index );
+			uiHash.values = this.values();
+		}
+		return this._trigger( "start", event, uiHash );
+	},
+
+	_slide: function( event, index, newVal ) {
+		var otherVal,
+			newValues,
+			allowed;
+
+		if ( this.options.values && this.options.values.length ) {
+			otherVal = this.values( index ? 0 : 1 );
+
+			if ( ( this.options.values.length === 2 && this.options.range === true ) &&
+					( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )
+				) {
+				newVal = otherVal;
+			}
+
+			if ( newVal !== this.values( index ) ) {
+				newValues = this.values();
+				newValues[ index ] = newVal;
+				// A slide can be canceled by returning false from the slide callback
+				allowed = this._trigger( "slide", event, {
+					handle: this.handles[ index ],
+					value: newVal,
+					values: newValues
+				} );
+				otherVal = this.values( index ? 0 : 1 );
+				if ( allowed !== false ) {
+					this.values( index, newVal, true );
+				}
+			}
+		} else {
+			if ( newVal !== this.value() ) {
+				// A slide can be canceled by returning false from the slide callback
+				allowed = this._trigger( "slide", event, {
+					handle: this.handles[ index ],
+					value: newVal
+				} );
+				if ( allowed !== false ) {
+					this.value( newVal );
+				}
+			}
+		}
+	},
+
+	_stop: function( event, index ) {
+		var uiHash = {
+			handle: this.handles[ index ],
+			value: this.value()
+		};
+		if ( this.options.values && this.options.values.length ) {
+			uiHash.value = this.values( index );
+			uiHash.values = this.values();
+		}
+
+		this._trigger( "stop", event, uiHash );
+	},
+
+	_change: function( event, index ) {
+		if ( !this._keySliding && !this._mouseSliding ) {
+			var uiHash = {
+				handle: this.handles[ index ],
+				value: this.value()
+			};
+			if ( this.options.values && this.options.values.length ) {
+				uiHash.value = this.values( index );
+				uiHash.values = this.values();
+			}
+
+			//store the last changed value index for reference when handles overlap
+			this._lastChangedValue = index;
+
+			this._trigger( "change", event, uiHash );
+		}
+	},
+
+	value: function( newValue ) {
+		if ( arguments.length ) {
+			this.options.value = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, 0 );
+			return;
+		}
+
+		return this._value();
+	},
+
+	values: function( index, newValue ) {
+		var vals,
+			newValues,
+			i;
+
+		if ( arguments.length > 1 ) {
+			this.options.values[ index ] = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, index );
+			return;
+		}
+
+		if ( arguments.length ) {
+			if ( $.isArray( arguments[ 0 ] ) ) {
+				vals = this.options.values;
+				newValues = arguments[ 0 ];
+				for ( i = 0; i < vals.length; i += 1 ) {
+					vals[ i ] = this._trimAlignValue( newValues[ i ] );
+					this._change( null, i );
+				}
+				this._refreshValue();
+			} else {
+				if ( this.options.values && this.options.values.length ) {
+					return this._values( index );
+				} else {
+					return this.value();
+				}
+			}
+		} else {
+			return this._values();
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var i,
+			valsLength = 0;
+
+		if ( key === "range" && this.options.range === true ) {
+			if ( value === "min" ) {
+				this.options.value = this._values( 0 );
+				this.options.values = null;
+			} else if ( value === "max" ) {
+				this.options.value = this._values( this.options.values.length-1 );
+				this.options.values = null;
+			}
+		}
+
+		if ( $.isArray( this.options.values ) ) {
+			valsLength = this.options.values.length;
+		}
+
+		$.Widget.prototype._setOption.apply( this, arguments );
+
+		switch ( key ) {
+			case "orientation":
+				this._detectOrientation();
+				this.element
+					.removeClass( "ui-slider-horizontal ui-slider-vertical" )
+					.addClass( "ui-slider-" + this.orientation );
+				this._refreshValue();
+				break;
+			case "value":
+				this._animateOff = true;
+				this._refreshValue();
+				this._change( null, 0 );
+				this._animateOff = false;
+				break;
+			case "values":
+				this._animateOff = true;
+				this._refreshValue();
+				for ( i = 0; i < valsLength; i += 1 ) {
+					this._change( null, i );
+				}
+				this._animateOff = false;
+				break;
+			case "min":
+			case "max":
+				this._animateOff = true;
+				this._refreshValue();
+				this._animateOff = false;
+				break;
+			case "range":
+				this._animateOff = true;
+				this._refresh();
+				this._animateOff = false;
+				break;
+		}
+	},
+
+	//internal value getter
+	// _value() returns value trimmed by min and max, aligned by step
+	_value: function() {
+		var val = this.options.value;
+		val = this._trimAlignValue( val );
+
+		return val;
+	},
+
+	//internal values getter
+	// _values() returns array of values trimmed by min and max, aligned by step
+	// _values( index ) returns single value trimmed by min and max, aligned by step
+	_values: function( index ) {
+		var val,
+			vals,
+			i;
+
+		if ( arguments.length ) {
+			val = this.options.values[ index ];
+			val = this._trimAlignValue( val );
+
+			return val;
+		} else if ( this.options.values && this.options.values.length ) {
+			// .slice() creates a copy of the array
+			// this copy gets trimmed by min and max and then returned
+			vals = this.options.values.slice();
+			for ( i = 0; i < vals.length; i+= 1) {
+				vals[ i ] = this._trimAlignValue( vals[ i ] );
+			}
+
+			return vals;
+		} else {
+			return [];
+		}
+	},
+
+	// returns the step-aligned value that val is closest to, between (inclusive) min and max
+	_trimAlignValue: function( val ) {
+		if ( val <= this._valueMin() ) {
+			return this._valueMin();
+		}
+		if ( val >= this._valueMax() ) {
+			return this._valueMax();
+		}
+		var step = ( this.options.step > 0 ) ? this.options.step : 1,
+			valModStep = (val - this._valueMin()) % step,
+			alignValue = val - valModStep;
+
+		if ( Math.abs(valModStep) * 2 >= step ) {
+			alignValue += ( valModStep > 0 ) ? step : ( -step );
+		}
+
+		// Since JavaScript has problems with large floats, round
+		// the final value to 5 digits after the decimal point (see #4124)
+		return parseFloat( alignValue.toFixed(5) );
+	},
+
+	_valueMin: function() {
+		return this.options.min;
+	},
+
+	_valueMax: function() {
+		return this.options.max;
+	},
+
+	_refreshValue: function() {
+		var lastValPercent, valPercent, value, valueMin, valueMax,
+			oRange = this.options.range,
+			o = this.options,
+			that = this,
+			animate = ( !this._animateOff ) ? o.animate : false,
+			_set = {};
+
+		if ( this.options.values && this.options.values.length ) {
+			this.handles.each(function( i ) {
+				valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;
+				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+				if ( that.options.range === true ) {
+					if ( that.orientation === "horizontal" ) {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
+						}
+					} else {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
+						}
+					}
+				}
+				lastValPercent = valPercent;
+			});
+		} else {
+			value = this.value();
+			valueMin = this._valueMin();
+			valueMax = this._valueMax();
+			valPercent = ( valueMax !== valueMin ) ?
+					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
+					0;
+			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+
+			if ( oRange === "min" && this.orientation === "horizontal" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "horizontal" ) {
+				this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
+			}
+			if ( oRange === "min" && this.orientation === "vertical" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "vertical" ) {
+				this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
+			}
+		}
+	},
+
+	_handleEvents: {
+		keydown: function( event ) {
+			/*jshint maxcomplexity:25*/
+			var allowed, curVal, newVal, step,
+				index = $( event.target ).data( "ui-slider-handle-index" );
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+				case $.ui.keyCode.END:
+				case $.ui.keyCode.PAGE_UP:
+				case $.ui.keyCode.PAGE_DOWN:
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					event.preventDefault();
+					if ( !this._keySliding ) {
+						this._keySliding = true;
+						$( event.target ).addClass( "ui-state-active" );
+						allowed = this._start( event, index );
+						if ( allowed === false ) {
+							return;
+						}
+					}
+					break;
+			}
+
+			step = this.options.step;
+			if ( this.options.values && this.options.values.length ) {
+				curVal = newVal = this.values( index );
+			} else {
+				curVal = newVal = this.value();
+			}
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+					newVal = this._valueMin();
+					break;
+				case $.ui.keyCode.END:
+					newVal = this._valueMax();
+					break;
+				case $.ui.keyCode.PAGE_UP:
+					newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );
+					break;
+				case $.ui.keyCode.PAGE_DOWN:
+					newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );
+					break;
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+					if ( curVal === this._valueMax() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal + step );
+					break;
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					if ( curVal === this._valueMin() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal - step );
+					break;
+			}
+
+			this._slide( event, index, newVal );
+		},
+		click: function( event ) {
+			event.preventDefault();
+		},
+		keyup: function( event ) {
+			var index = $( event.target ).data( "ui-slider-handle-index" );
+
+			if ( this._keySliding ) {
+				this._keySliding = false;
+				this._stop( event, index );
+				this._change( event, index );
+				$( event.target ).removeClass( "ui-state-active" );
+			}
+		}
+	}
+
+});
+
+}(jQuery));
+
+(function( $ ) {
+
+function modifier( fn ) {
+	return function() {
+		var previous = this.element.val();
+		fn.apply( this, arguments );
+		this._refresh();
+		if ( previous !== this.element.val() ) {
+			this._trigger( "change" );
+		}
+	};
+}
+
+$.widget( "ui.spinner", {
+	version: "1.10.3",
+	defaultElement: "<input>",
+	widgetEventPrefix: "spin",
+	options: {
+		culture: null,
+		icons: {
+			down: "ui-icon-triangle-1-s",
+			up: "ui-icon-triangle-1-n"
+		},
+		incremental: true,
+		max: null,
+		min: null,
+		numberFormat: null,
+		page: 10,
+		step: 1,
+
+		change: null,
+		spin: null,
+		start: null,
+		stop: null
+	},
+
+	_create: function() {
+		// handle string values that need to be parsed
+		this._setOption( "max", this.options.max );
+		this._setOption( "min", this.options.min );
+		this._setOption( "step", this.options.step );
+
+		// format the value, but don't constrain
+		this._value( this.element.val(), true );
+
+		this._draw();
+		this._on( this._events );
+		this._refresh();
+
+		// turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		});
+	},
+
+	_getCreateOptions: function() {
+		var options = {},
+			element = this.element;
+
+		$.each( [ "min", "max", "step" ], function( i, option ) {
+			var value = element.attr( option );
+			if ( value !== undefined && value.length ) {
+				options[ option ] = value;
+			}
+		});
+
+		return options;
+	},
+
+	_events: {
+		keydown: function( event ) {
+			if ( this._start( event ) && this._keydown( event ) ) {
+				event.preventDefault();
+			}
+		},
+		keyup: "_stop",
+		focus: function() {
+			this.previous = this.element.val();
+		},
+		blur: function( event ) {
+			if ( this.cancelBlur ) {
+				delete this.cancelBlur;
+				return;
+			}
+
+			this._stop();
+			this._refresh();
+			if ( this.previous !== this.element.val() ) {
+				this._trigger( "change", event );
+			}
+		},
+		mousewheel: function( event, delta ) {
+			if ( !delta ) {
+				return;
+			}
+			if ( !this.spinning && !this._start( event ) ) {
+				return false;
+			}
+
+			this._spin( (delta > 0 ? 1 : -1) * this.options.step, event );
+			clearTimeout( this.mousewheelTimer );
+			this.mousewheelTimer = this._delay(function() {
+				if ( this.spinning ) {
+					this._stop( event );
+				}
+			}, 100 );
+			event.preventDefault();
+		},
+		"mousedown .ui-spinner-button": function( event ) {
+			var previous;
+
+			// We never want the buttons to have focus; whenever the user is
+			// interacting with the spinner, the focus should be on the input.
+			// If the input is focused then this.previous is properly set from
+			// when the input first received focus. If the input is not focused
+			// then we need to set this.previous based on the value before spinning.
+			previous = this.element[0] === this.document[0].activeElement ?
+				this.previous : this.element.val();
+			function checkFocus() {
+				var isActive = this.element[0] === this.document[0].activeElement;
+				if ( !isActive ) {
+					this.element.focus();
+					this.previous = previous;
+					// support: IE
+					// IE sets focus asynchronously, so we need to check if focus
+					// moved off of the input because the user clicked on the button.
+					this._delay(function() {
+						this.previous = previous;
+					});
+				}
+			}
+
+			// ensure focus is on (or stays on) the text field
+			event.preventDefault();
+			checkFocus.call( this );
+
+			// support: IE
+			// IE doesn't prevent moving focus even with event.preventDefault()
+			// so we set a flag to know when we should ignore the blur event
+			// and check (again) if focus moved off of the input.
+			this.cancelBlur = true;
+			this._delay(function() {
+				delete this.cancelBlur;
+				checkFocus.call( this );
+			});
+
+			if ( this._start( event ) === false ) {
+				return;
+			}
+
+			this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+		"mouseup .ui-spinner-button": "_stop",
+		"mouseenter .ui-spinner-button": function( event ) {
+			// button will add ui-state-active if mouse was down while mouseleave and kept down
+			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
+				return;
+			}
+
+			if ( this._start( event ) === false ) {
+				return false;
+			}
+			this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+		// TODO: do we really want to consider this a stop?
+		// shouldn't we just stop the repeater and wait until mouseup before
+		// we trigger the stop event?
+		"mouseleave .ui-spinner-button": "_stop"
+	},
+
+	_draw: function() {
+		var uiSpinner = this.uiSpinner = this.element
+			.addClass( "ui-spinner-input" )
+			.attr( "autocomplete", "off" )
+			.wrap( this._uiSpinnerHtml() )
+			.parent()
+				// add buttons
+				.append( this._buttonHtml() );
+
+		this.element.attr( "role", "spinbutton" );
+
+		// button bindings
+		this.buttons = uiSpinner.find( ".ui-spinner-button" )
+			.attr( "tabIndex", -1 )
+			.button()
+			.removeClass( "ui-corner-all" );
+
+		// IE 6 doesn't understand height: 50% for the buttons
+		// unless the wrapper has an explicit height
+		if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&
+				uiSpinner.height() > 0 ) {
+			uiSpinner.height( uiSpinner.height() );
+		}
+
+		// disable spinner if element was already disabled
+		if ( this.options.disabled ) {
+			this.disable();
+		}
+	},
+
+	_keydown: function( event ) {
+		var options = this.options,
+			keyCode = $.ui.keyCode;
+
+		switch ( event.keyCode ) {
+		case keyCode.UP:
+			this._repeat( null, 1, event );
+			return true;
+		case keyCode.DOWN:
+			this._repeat( null, -1, event );
+			return true;
+		case keyCode.PAGE_UP:
+			this._repeat( null, options.page, event );
+			return true;
+		case keyCode.PAGE_DOWN:
+			this._repeat( null, -options.page, event );
+			return true;
+		}
+
+		return false;
+	},
+
+	_uiSpinnerHtml: function() {
+		return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>";
+	},
+
+	_buttonHtml: function() {
+		return "" +
+			"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" +
+				"<span class='ui-icon " + this.options.icons.up + "'>&#9650;</span>" +
+			"</a>" +
+			"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" +
+				"<span class='ui-icon " + this.options.icons.down + "'>&#9660;</span>" +
+			"</a>";
+	},
+
+	_start: function( event ) {
+		if ( !this.spinning && this._trigger( "start", event ) === false ) {
+			return false;
+		}
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+		this.spinning = true;
+		return true;
+	},
+
+	_repeat: function( i, steps, event ) {
+		i = i || 500;
+
+		clearTimeout( this.timer );
+		this.timer = this._delay(function() {
+			this._repeat( 40, steps, event );
+		}, i );
+
+		this._spin( steps * this.options.step, event );
+	},
+
+	_spin: function( step, event ) {
+		var value = this.value() || 0;
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+
+		value = this._adjustValue( value + step * this._increment( this.counter ) );
+
+		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) {
+			this._value( value );
+			this.counter++;
+		}
+	},
+
+	_increment: function( i ) {
+		var incremental = this.options.incremental;
+
+		if ( incremental ) {
+			return $.isFunction( incremental ) ?
+				incremental( i ) :
+				Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );
+		}
+
+		return 1;
+	},
+
+	_precision: function() {
+		var precision = this._precisionOf( this.options.step );
+		if ( this.options.min !== null ) {
+			precision = Math.max( precision, this._precisionOf( this.options.min ) );
+		}
+		return precision;
+	},
+
+	_precisionOf: function( num ) {
+		var str = num.toString(),
+			decimal = str.indexOf( "." );
+		return decimal === -1 ? 0 : str.length - decimal - 1;
+	},
+
+	_adjustValue: function( value ) {
+		var base, aboveMin,
+			options = this.options;
+
+		// make sure we're at a valid step
+		// - find out where we are relative to the base (min or 0)
+		base = options.min !== null ? options.min : 0;
+		aboveMin = value - base;
+		// - round to the nearest step
+		aboveMin = Math.round(aboveMin / options.step) * options.step;
+		// - rounding is based on 0, so adjust back to our base
+		value = base + aboveMin;
+
+		// fix precision from bad JS floating point math
+		value = parseFloat( value.toFixed( this._precision() ) );
+
+		// clamp the value
+		if ( options.max !== null && value > options.max) {
+			return options.max;
+		}
+		if ( options.min !== null && value < options.min ) {
+			return options.min;
+		}
+
+		return value;
+	},
+
+	_stop: function( event ) {
+		if ( !this.spinning ) {
+			return;
+		}
+
+		clearTimeout( this.timer );
+		clearTimeout( this.mousewheelTimer );
+		this.counter = 0;
+		this.spinning = false;
+		this._trigger( "stop", event );
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "culture" || key === "numberFormat" ) {
+			var prevValue = this._parse( this.element.val() );
+			this.options[ key ] = value;
+			this.element.val( this._format( prevValue ) );
+			return;
+		}
+
+		if ( key === "max" || key === "min" || key === "step" ) {
+			if ( typeof value === "string" ) {
+				value = this._parse( value );
+			}
+		}
+		if ( key === "icons" ) {
+			this.buttons.first().find( ".ui-icon" )
+				.removeClass( this.options.icons.up )
+				.addClass( value.up );
+			this.buttons.last().find( ".ui-icon" )
+				.removeClass( this.options.icons.down )
+				.addClass( value.down );
+		}
+
+		this._super( key, value );
+
+		if ( key === "disabled" ) {
+			if ( value ) {
+				this.element.prop( "disabled", true );
+				this.buttons.button( "disable" );
+			} else {
+				this.element.prop( "disabled", false );
+				this.buttons.button( "enable" );
+			}
+		}
+	},
+
+	_setOptions: modifier(function( options ) {
+		this._super( options );
+		this._value( this.element.val() );
+	}),
+
+	_parse: function( val ) {
+		if ( typeof val === "string" && val !== "" ) {
+			val = window.Globalize && this.options.numberFormat ?
+				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
+		}
+		return val === "" || isNaN( val ) ? null : val;
+	},
+
+	_format: function( value ) {
+		if ( value === "" ) {
+			return "";
+		}
+		return window.Globalize && this.options.numberFormat ?
+			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
+			value;
+	},
+
+	_refresh: function() {
+		this.element.attr({
+			"aria-valuemin": this.options.min,
+			"aria-valuemax": this.options.max,
+			// TODO: what should we do with values that can't be parsed?
+			"aria-valuenow": this._parse( this.element.val() )
+		});
+	},
+
+	// update the value without triggering change
+	_value: function( value, allowAny ) {
+		var parsed;
+		if ( value !== "" ) {
+			parsed = this._parse( value );
+			if ( parsed !== null ) {
+				if ( !allowAny ) {
+					parsed = this._adjustValue( parsed );
+				}
+				value = this._format( parsed );
+			}
+		}
+		this.element.val( value );
+		this._refresh();
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-spinner-input" )
+			.prop( "disabled", false )
+			.removeAttr( "autocomplete" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-valuemin" )
+			.removeAttr( "aria-valuemax" )
+			.removeAttr( "aria-valuenow" );
+		this.uiSpinner.replaceWith( this.element );
+	},
+
+	stepUp: modifier(function( steps ) {
+		this._stepUp( steps );
+	}),
+	_stepUp: function( steps ) {
+		if ( this._start() ) {
+			this._spin( (steps || 1) * this.options.step );
+			this._stop();
+		}
+	},
+
+	stepDown: modifier(function( steps ) {
+		this._stepDown( steps );
+	}),
+	_stepDown: function( steps ) {
+		if ( this._start() ) {
+			this._spin( (steps || 1) * -this.options.step );
+			this._stop();
+		}
+	},
+
+	pageUp: modifier(function( pages ) {
+		this._stepUp( (pages || 1) * this.options.page );
+	}),
+
+	pageDown: modifier(function( pages ) {
+		this._stepDown( (pages || 1) * this.options.page );
+	}),
+
+	value: function( newVal ) {
+		if ( !arguments.length ) {
+			return this._parse( this.element.val() );
+		}
+		modifier( this._value ).call( this, newVal );
+	},
+
+	widget: function() {
+		return this.uiSpinner;
+	}
+});
+
+}( jQuery ) );
+
+(function( $, undefined ) {
+
+var tabId = 0,
+	rhash = /#.*$/;
+
+function getNextTabId() {
+	return ++tabId;
+}
+
+function isLocal( anchor ) {
+	return anchor.hash.length > 1 &&
+		decodeURIComponent( anchor.href.replace( rhash, "" ) ) ===
+			decodeURIComponent( location.href.replace( rhash, "" ) );
+}
+
+$.widget( "ui.tabs", {
+	version: "1.10.3",
+	delay: 300,
+	options: {
+		active: null,
+		collapsible: false,
+		event: "click",
+		heightStyle: "content",
+		hide: null,
+		show: null,
+
+		// callbacks
+		activate: null,
+		beforeActivate: null,
+		beforeLoad: null,
+		load: null
+	},
+
+	_create: function() {
+		var that = this,
+			options = this.options;
+
+		this.running = false;
+
+		this.element
+			.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
+			.toggleClass( "ui-tabs-collapsible", options.collapsible )
+			// Prevent users from focusing disabled tabs via click
+			.delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {
+				if ( $( this ).is( ".ui-state-disabled" ) ) {
+					event.preventDefault();
+				}
+			})
+			// support: IE <9
+			// Preventing the default action in mousedown doesn't prevent IE
+			// from focusing the element, so if the anchor gets focused, blur.
+			// We don't have to worry about focusing the previously focused
+			// element since clicking on a non-focusable element should focus
+			// the body anyway.
+			.delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
+				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
+					this.blur();
+				}
+			});
+
+		this._processTabs();
+		options.active = this._initialActive();
+
+		// Take disabling tabs via class attribute from HTML
+		// into account and update option properly.
+		if ( $.isArray( options.disabled ) ) {
+			options.disabled = $.unique( options.disabled.concat(
+				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
+					return that.tabs.index( li );
+				})
+			) ).sort();
+		}
+
+		// check for length avoids error when initializing empty list
+		if ( this.options.active !== false && this.anchors.length ) {
+			this.active = this._findActive( options.active );
+		} else {
+			this.active = $();
+		}
+
+		this._refresh();
+
+		if ( this.active.length ) {
+			this.load( options.active );
+		}
+	},
+
+	_initialActive: function() {
+		var active = this.options.active,
+			collapsible = this.options.collapsible,
+			locationHash = location.hash.substring( 1 );
+
+		if ( active === null ) {
+			// check the fragment identifier in the URL
+			if ( locationHash ) {
+				this.tabs.each(function( i, tab ) {
+					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
+						active = i;
+						return false;
+					}
+				});
+			}
+
+			// check for a tab marked active via a class
+			if ( active === null ) {
+				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
+			}
+
+			// no active tab, set to false
+			if ( active === null || active === -1 ) {
+				active = this.tabs.length ? 0 : false;
+			}
+		}
+
+		// handle numbers: negative, out of range
+		if ( active !== false ) {
+			active = this.tabs.index( this.tabs.eq( active ) );
+			if ( active === -1 ) {
+				active = collapsible ? false : 0;
+			}
+		}
+
+		// don't allow collapsible: false and active: false
+		if ( !collapsible && active === false && this.anchors.length ) {
+			active = 0;
+		}
+
+		return active;
+	},
+
+	_getCreateEventData: function() {
+		return {
+			tab: this.active,
+			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
+		};
+	},
+
+	_tabKeydown: function( event ) {
+		/*jshint maxcomplexity:15*/
+		var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
+			selectedIndex = this.tabs.index( focusedTab ),
+			goingForward = true;
+
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		switch ( event.keyCode ) {
+			case $.ui.keyCode.RIGHT:
+			case $.ui.keyCode.DOWN:
+				selectedIndex++;
+				break;
+			case $.ui.keyCode.UP:
+			case $.ui.keyCode.LEFT:
+				goingForward = false;
+				selectedIndex--;
+				break;
+			case $.ui.keyCode.END:
+				selectedIndex = this.anchors.length - 1;
+				break;
+			case $.ui.keyCode.HOME:
+				selectedIndex = 0;
+				break;
+			case $.ui.keyCode.SPACE:
+				// Activate only, no collapsing
+				event.preventDefault();
+				clearTimeout( this.activating );
+				this._activate( selectedIndex );
+				return;
+			case $.ui.keyCode.ENTER:
+				// Toggle (cancel delayed activation, allow collapsing)
+				event.preventDefault();
+				clearTimeout( this.activating );
+				// Determine if we should collapse or activate
+				this._activate( selectedIndex === this.options.active ? false : selectedIndex );
+				return;
+			default:
+				return;
+		}
+
+		// Focus the appropriate tab, based on which key was pressed
+		event.preventDefault();
+		clearTimeout( this.activating );
+		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
+
+		// Navigating with control key will prevent automatic activation
+		if ( !event.ctrlKey ) {
+			// Update aria-selected immediately so that AT think the tab is already selected.
+			// Otherwise AT may confuse the user by stating that they need to activate the tab,
+			// but the tab will already be activated by the time the announcement finishes.
+			focusedTab.attr( "aria-selected", "false" );
+			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
+
+			this.activating = this._delay(function() {
+				this.option( "active", selectedIndex );
+			}, this.delay );
+		}
+	},
+
+	_panelKeydown: function( event ) {
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		// Ctrl+up moves focus to the current tab
+		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
+			event.preventDefault();
+			this.active.focus();
+		}
+	},
+
+	// Alt+page up/down moves focus to the previous/next tab (and activates)
+	_handlePageNav: function( event ) {
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
+			this._activate( this._focusNextTab( this.options.active - 1, false ) );
+			return true;
+		}
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
+			this._activate( this._focusNextTab( this.options.active + 1, true ) );
+			return true;
+		}
+	},
+
+	_findNextTab: function( index, goingForward ) {
+		var lastTabIndex = this.tabs.length - 1;
+
+		function constrain() {
+			if ( index > lastTabIndex ) {
+				index = 0;
+			}
+			if ( index < 0 ) {
+				index = lastTabIndex;
+			}
+			return index;
+		}
+
+		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
+			index = goingForward ? index + 1 : index - 1;
+		}
+
+		return index;
+	},
+
+	_focusNextTab: function( index, goingForward ) {
+		index = this._findNextTab( index, goingForward );
+		this.tabs.eq( index ).focus();
+		return index;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "disabled" ) {
+			// don't use the widget factory's disabled handling
+			this._setupDisabled( value );
+			return;
+		}
+
+		this._super( key, value);
+
+		if ( key === "collapsible" ) {
+			this.element.toggleClass( "ui-tabs-collapsible", value );
+			// Setting collapsible: false while collapsed; open first panel
+			if ( !value && this.options.active === false ) {
+				this._activate( 0 );
+			}
+		}
+
+		if ( key === "event" ) {
+			this._setupEvents( value );
+		}
+
+		if ( key === "heightStyle" ) {
+			this._setupHeightStyle( value );
+		}
+	},
+
+	_tabId: function( tab ) {
+		return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
+	},
+
+	_sanitizeSelector: function( hash ) {
+		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
+	},
+
+	refresh: function() {
+		var options = this.options,
+			lis = this.tablist.children( ":has(a[href])" );
+
+		// get disabled tabs from class attribute from HTML
+		// this will get converted to a boolean if needed in _refresh()
+		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
+			return lis.index( tab );
+		});
+
+		this._processTabs();
+
+		// was collapsed or no tabs
+		if ( options.active === false || !this.anchors.length ) {
+			options.active = false;
+			this.active = $();
+		// was active, but active tab is gone
+		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
+			// all remaining tabs are disabled
+			if ( this.tabs.length === options.disabled.length ) {
+				options.active = false;
+				this.active = $();
+			// activate previous tab
+			} else {
+				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
+			}
+		// was active, active tab still exists
+		} else {
+			// make sure active index is correct
+			options.active = this.tabs.index( this.active );
+		}
+
+		this._refresh();
+	},
+
+	_refresh: function() {
+		this._setupDisabled( this.options.disabled );
+		this._setupEvents( this.options.event );
+		this._setupHeightStyle( this.options.heightStyle );
+
+		this.tabs.not( this.active ).attr({
+			"aria-selected": "false",
+			tabIndex: -1
+		});
+		this.panels.not( this._getPanelForTab( this.active ) )
+			.hide()
+			.attr({
+				"aria-expanded": "false",
+				"aria-hidden": "true"
+			});
+
+		// Make sure one tab is in the tab order
+		if ( !this.active.length ) {
+			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active
+				.addClass( "ui-tabs-active ui-state-active" )
+				.attr({
+					"aria-selected": "true",
+					tabIndex: 0
+				});
+			this._getPanelForTab( this.active )
+				.show()
+				.attr({
+					"aria-expanded": "true",
+					"aria-hidden": "false"
+				});
+		}
+	},
+
+	_processTabs: function() {
+		var that = this;
+
+		this.tablist = this._getList()
+			.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.attr( "role", "tablist" );
+
+		this.tabs = this.tablist.find( "> li:has(a[href])" )
+			.addClass( "ui-state-default ui-corner-top" )
+			.attr({
+				role: "tab",
+				tabIndex: -1
+			});
+
+		this.anchors = this.tabs.map(function() {
+				return $( "a", this )[ 0 ];
+			})
+			.addClass( "ui-tabs-anchor" )
+			.attr({
+				role: "presentation",
+				tabIndex: -1
+			});
+
+		this.panels = $();
+
+		this.anchors.each(function( i, anchor ) {
+			var selector, panel, panelId,
+				anchorId = $( anchor ).uniqueId().attr( "id" ),
+				tab = $( anchor ).closest( "li" ),
+				originalAriaControls = tab.attr( "aria-controls" );
+
+			// inline tab
+			if ( isLocal( anchor ) ) {
+				selector = anchor.hash;
+				panel = that.element.find( that._sanitizeSelector( selector ) );
+			// remote tab
+			} else {
+				panelId = that._tabId( tab );
+				selector = "#" + panelId;
+				panel = that.element.find( selector );
+				if ( !panel.length ) {
+					panel = that._createPanel( panelId );
+					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
+				}
+				panel.attr( "aria-live", "polite" );
+			}
+
+			if ( panel.length) {
+				that.panels = that.panels.add( panel );
+			}
+			if ( originalAriaControls ) {
+				tab.data( "ui-tabs-aria-controls", originalAriaControls );
+			}
+			tab.attr({
+				"aria-controls": selector.substring( 1 ),
+				"aria-labelledby": anchorId
+			});
+			panel.attr( "aria-labelledby", anchorId );
+		});
+
+		this.panels
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.attr( "role", "tabpanel" );
+	},
+
+	// allow overriding how to find the list for rare usage scenarios (#7715)
+	_getList: function() {
+		return this.element.find( "ol,ul" ).eq( 0 );
+	},
+
+	_createPanel: function( id ) {
+		return $( "<div>" )
+			.attr( "id", id )
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.data( "ui-tabs-destroy", true );
+	},
+
+	_setupDisabled: function( disabled ) {
+		if ( $.isArray( disabled ) ) {
+			if ( !disabled.length ) {
+				disabled = false;
+			} else if ( disabled.length === this.anchors.length ) {
+				disabled = true;
+			}
+		}
+
+		// disable tabs
+		for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
+			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
+				$( li )
+					.addClass( "ui-state-disabled" )
+					.attr( "aria-disabled", "true" );
+			} else {
+				$( li )
+					.removeClass( "ui-state-disabled" )
+					.removeAttr( "aria-disabled" );
+			}
+		}
+
+		this.options.disabled = disabled;
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			click: function( event ) {
+				event.preventDefault();
+			}
+		};
+		if ( event ) {
+			$.each( event.split(" "), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			});
+		}
+
+		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
+		this._on( this.anchors, events );
+		this._on( this.tabs, { keydown: "_tabKeydown" } );
+		this._on( this.panels, { keydown: "_panelKeydown" } );
+
+		this._focusable( this.tabs );
+		this._hoverable( this.tabs );
+	},
+
+	_setupHeightStyle: function( heightStyle ) {
+		var maxHeight,
+			parent = this.element.parent();
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			maxHeight -= this.element.outerHeight() - this.element.height();
+
+			this.element.siblings( ":visible" ).each(function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			});
+
+			this.element.children().not( this.panels ).each(function() {
+				maxHeight -= $( this ).outerHeight( true );
+			});
+
+			this.panels.each(function() {
+				$( this ).height( Math.max( 0, maxHeight -
+					$( this ).innerHeight() + $( this ).height() ) );
+			})
+			.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.panels.each(function() {
+				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
+			}).height( maxHeight );
+		}
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			anchor = $( event.currentTarget ),
+			tab = anchor.closest( "li" ),
+			clickedIsActive = tab[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : this._getPanelForTab( tab ),
+			toHide = !active.length ? $() : this._getPanelForTab( active ),
+			eventData = {
+				oldTab: active,
+				oldPanel: toHide,
+				newTab: collapsing ? $() : tab,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if ( tab.hasClass( "ui-state-disabled" ) ||
+				// tab is already loading
+				tab.hasClass( "ui-tabs-loading" ) ||
+				// can't switch durning an animation
+				this.running ||
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.tabs.index( tab );
+
+		this.active = clickedIsActive ? $() : tab;
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		if ( !toHide.length && !toShow.length ) {
+			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
+		}
+
+		if ( toShow.length ) {
+			this.load( this.tabs.index( tab ), event );
+		}
+		this._toggle( event, eventData );
+	},
+
+	// handles show/hide for selecting tabs
+	_toggle: function( event, eventData ) {
+		var that = this,
+			toShow = eventData.newPanel,
+			toHide = eventData.oldPanel;
+
+		this.running = true;
+
+		function complete() {
+			that.running = false;
+			that._trigger( "activate", event, eventData );
+		}
+
+		function show() {
+			eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
+
+			if ( toShow.length && that.options.show ) {
+				that._show( toShow, that.options.show, complete );
+			} else {
+				toShow.show();
+				complete();
+			}
+		}
+
+		// start out by hiding, then showing, then completing
+		if ( toHide.length && this.options.hide ) {
+			this._hide( toHide, this.options.hide, function() {
+				eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+				show();
+			});
+		} else {
+			eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+			toHide.hide();
+			show();
+		}
+
+		toHide.attr({
+			"aria-expanded": "false",
+			"aria-hidden": "true"
+		});
+		eventData.oldTab.attr( "aria-selected", "false" );
+		// If we're switching tabs, remove the old tab from the tab order.
+		// If we're opening from collapsed state, remove the previous tab from the tab order.
+		// If we're collapsing, then keep the collapsing tab in the tab order.
+		if ( toShow.length && toHide.length ) {
+			eventData.oldTab.attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.tabs.filter(function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			})
+			.attr( "tabIndex", -1 );
+		}
+
+		toShow.attr({
+			"aria-expanded": "true",
+			"aria-hidden": "false"
+		});
+		eventData.newTab.attr({
+			"aria-selected": "true",
+			tabIndex: 0
+		});
+	},
+
+	_activate: function( index ) {
+		var anchor,
+			active = this._findActive( index );
+
+		// trying to activate the already active panel
+		if ( active[ 0 ] === this.active[ 0 ] ) {
+			return;
+		}
+
+		// trying to collapse, simulate a click on the current active header
+		if ( !active.length ) {
+			active = this.active;
+		}
+
+		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
+		this._eventHandler({
+			target: anchor,
+			currentTarget: anchor,
+			preventDefault: $.noop
+		});
+	},
+
+	_findActive: function( index ) {
+		return index === false ? $() : this.tabs.eq( index );
+	},
+
+	_getIndex: function( index ) {
+		// meta-function to give users option to provide a href string instead of a numerical index.
+		if ( typeof index === "string" ) {
+			index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
+		}
+
+		return index;
+	},
+
+	_destroy: function() {
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
+
+		this.tablist
+			.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.removeAttr( "role" );
+
+		this.anchors
+			.removeClass( "ui-tabs-anchor" )
+			.removeAttr( "role" )
+			.removeAttr( "tabIndex" )
+			.removeUniqueId();
+
+		this.tabs.add( this.panels ).each(function() {
+			if ( $.data( this, "ui-tabs-destroy" ) ) {
+				$( this ).remove();
+			} else {
+				$( this )
+					.removeClass( "ui-state-default ui-state-active ui-state-disabled " +
+						"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )
+					.removeAttr( "tabIndex" )
+					.removeAttr( "aria-live" )
+					.removeAttr( "aria-busy" )
+					.removeAttr( "aria-selected" )
+					.removeAttr( "aria-labelledby" )
+					.removeAttr( "aria-hidden" )
+					.removeAttr( "aria-expanded" )
+					.removeAttr( "role" );
+			}
+		});
+
+		this.tabs.each(function() {
+			var li = $( this ),
+				prev = li.data( "ui-tabs-aria-controls" );
+			if ( prev ) {
+				li
+					.attr( "aria-controls", prev )
+					.removeData( "ui-tabs-aria-controls" );
+			} else {
+				li.removeAttr( "aria-controls" );
+			}
+		});
+
+		this.panels.show();
+
+		if ( this.options.heightStyle !== "content" ) {
+			this.panels.css( "height", "" );
+		}
+	},
+
+	enable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === false ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = false;
+		} else {
+			index = this._getIndex( index );
+			if ( $.isArray( disabled ) ) {
+				disabled = $.map( disabled, function( num ) {
+					return num !== index ? num : null;
+				});
+			} else {
+				disabled = $.map( this.tabs, function( li, num ) {
+					return num !== index ? num : null;
+				});
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	disable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === true ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = true;
+		} else {
+			index = this._getIndex( index );
+			if ( $.inArray( index, disabled ) !== -1 ) {
+				return;
+			}
+			if ( $.isArray( disabled ) ) {
+				disabled = $.merge( [ index ], disabled ).sort();
+			} else {
+				disabled = [ index ];
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	load: function( index, event ) {
+		index = this._getIndex( index );
+		var that = this,
+			tab = this.tabs.eq( index ),
+			anchor = tab.find( ".ui-tabs-anchor" ),
+			panel = this._getPanelForTab( tab ),
+			eventData = {
+				tab: tab,
+				panel: panel
+			};
+
+		// not remote
+		if ( isLocal( anchor[ 0 ] ) ) {
+			return;
+		}
+
+		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
+
+		// support: jQuery <1.8
+		// jQuery <1.8 returns false if the request is canceled in beforeSend,
+		// but as of 1.8, $.ajax() always returns a jqXHR object.
+		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
+			tab.addClass( "ui-tabs-loading" );
+			panel.attr( "aria-busy", "true" );
+
+			this.xhr
+				.success(function( response ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						panel.html( response );
+						that._trigger( "load", event, eventData );
+					}, 1 );
+				})
+				.complete(function( jqXHR, status ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						if ( status === "abort" ) {
+							that.panels.stop( false, true );
+						}
+
+						tab.removeClass( "ui-tabs-loading" );
+						panel.removeAttr( "aria-busy" );
+
+						if ( jqXHR === that.xhr ) {
+							delete that.xhr;
+						}
+					}, 1 );
+				});
+		}
+	},
+
+	_ajaxSettings: function( anchor, event, eventData ) {
+		var that = this;
+		return {
+			url: anchor.attr( "href" ),
+			beforeSend: function( jqXHR, settings ) {
+				return that._trigger( "beforeLoad", event,
+					$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );
+			}
+		};
+	},
+
+	_getPanelForTab: function( tab ) {
+		var id = $( tab ).attr( "aria-controls" );
+		return this.element.find( this._sanitizeSelector( "#" + id ) );
+	}
+});
+
+})( jQuery );
+
+(function( $ ) {
+
+var increments = 0;
+
+function addDescribedBy( elem, id ) {
+	var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
+	describedby.push( id );
+	elem
+		.data( "ui-tooltip-id", id )
+		.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
+}
+
+function removeDescribedBy( elem ) {
+	var id = elem.data( "ui-tooltip-id" ),
+		describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
+		index = $.inArray( id, describedby );
+	if ( index !== -1 ) {
+		describedby.splice( index, 1 );
+	}
+
+	elem.removeData( "ui-tooltip-id" );
+	describedby = $.trim( describedby.join( " " ) );
+	if ( describedby ) {
+		elem.attr( "aria-describedby", describedby );
+	} else {
+		elem.removeAttr( "aria-describedby" );
+	}
+}
+
+$.widget( "ui.tooltip", {
+	version: "1.10.3",
+	options: {
+		content: function() {
+			// support: IE<9, Opera in jQuery <1.7
+			// .text() can't accept undefined, so coerce to a string
+			var title = $( this ).attr( "title" ) || "";
+			// Escape title, since we're going from an attribute to raw HTML
+			return $( "<a>" ).text( title ).html();
+		},
+		hide: true,
+		// Disabled elements have inconsistent behavior across browsers (#8661)
+		items: "[title]:not([disabled])",
+		position: {
+			my: "left top+15",
+			at: "left bottom",
+			collision: "flipfit flip"
+		},
+		show: true,
+		tooltipClass: null,
+		track: false,
+
+		// callbacks
+		close: null,
+		open: null
+	},
+
+	_create: function() {
+		this._on({
+			mouseover: "open",
+			focusin: "open"
+		});
+
+		// IDs of generated tooltips, needed for destroy
+		this.tooltips = {};
+		// IDs of parent tooltips where we removed the title attribute
+		this.parents = {};
+
+		if ( this.options.disabled ) {
+			this._disable();
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var that = this;
+
+		if ( key === "disabled" ) {
+			this[ value ? "_disable" : "_enable" ]();
+			this.options[ key ] = value;
+			// disable element style changes
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "content" ) {
+			$.each( this.tooltips, function( id, element ) {
+				that._updateContent( element );
+			});
+		}
+	},
+
+	_disable: function() {
+		var that = this;
+
+		// close open tooltips
+		$.each( this.tooltips, function( id, element ) {
+			var event = $.Event( "blur" );
+			event.target = event.currentTarget = element[0];
+			that.close( event, true );
+		});
+
+		// remove title attributes to prevent native tooltips
+		this.element.find( this.options.items ).addBack().each(function() {
+			var element = $( this );
+			if ( element.is( "[title]" ) ) {
+				element
+					.data( "ui-tooltip-title", element.attr( "title" ) )
+					.attr( "title", "" );
+			}
+		});
+	},
+
+	_enable: function() {
+		// restore title attributes
+		this.element.find( this.options.items ).addBack().each(function() {
+			var element = $( this );
+			if ( element.data( "ui-tooltip-title" ) ) {
+				element.attr( "title", element.data( "ui-tooltip-title" ) );
+			}
+		});
+	},
+
+	open: function( event ) {
+		var that = this,
+			target = $( event ? event.target : this.element )
+				// we need closest here due to mouseover bubbling,
+				// but always pointing at the same event target
+				.closest( this.options.items );
+
+		// No element to show a tooltip for or the tooltip is already open
+		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
+			return;
+		}
+
+		if ( target.attr( "title" ) ) {
+			target.data( "ui-tooltip-title", target.attr( "title" ) );
+		}
+
+		target.data( "ui-tooltip-open", true );
+
+		// kill parent tooltips, custom or native, for hover
+		if ( event && event.type === "mouseover" ) {
+			target.parents().each(function() {
+				var parent = $( this ),
+					blurEvent;
+				if ( parent.data( "ui-tooltip-open" ) ) {
+					blurEvent = $.Event( "blur" );
+					blurEvent.target = blurEvent.currentTarget = this;
+					that.close( blurEvent, true );
+				}
+				if ( parent.attr( "title" ) ) {
+					parent.uniqueId();
+					that.parents[ this.id ] = {
+						element: this,
+						title: parent.attr( "title" )
+					};
+					parent.attr( "title", "" );
+				}
+			});
+		}
+
+		this._updateContent( target, event );
+	},
+
+	_updateContent: function( target, event ) {
+		var content,
+			contentOption = this.options.content,
+			that = this,
+			eventType = event ? event.type : null;
+
+		if ( typeof contentOption === "string" ) {
+			return this._open( event, target, contentOption );
+		}
+
+		content = contentOption.call( target[0], function( response ) {
+			// ignore async response if tooltip was closed already
+			if ( !target.data( "ui-tooltip-open" ) ) {
+				return;
+			}
+			// IE may instantly serve a cached response for ajax requests
+			// delay this call to _open so the other call to _open runs first
+			that._delay(function() {
+				// jQuery creates a special event for focusin when it doesn't
+				// exist natively. To improve performance, the native event
+				// object is reused and the type is changed. Therefore, we can't
+				// rely on the type being correct after the event finished
+				// bubbling, so we set it back to the previous value. (#8740)
+				if ( event ) {
+					event.type = eventType;
+				}
+				this._open( event, target, response );
+			});
+		});
+		if ( content ) {
+			this._open( event, target, content );
+		}
+	},
+
+	_open: function( event, target, content ) {
+		var tooltip, events, delayedShow,
+			positionOption = $.extend( {}, this.options.position );
+
+		if ( !content ) {
+			return;
+		}
+
+		// Content can be updated multiple times. If the tooltip already
+		// exists, then just update the content and bail.
+		tooltip = this._find( target );
+		if ( tooltip.length ) {
+			tooltip.find( ".ui-tooltip-content" ).html( content );
+			return;
+		}
+
+		// if we have a title, clear it to prevent the native tooltip
+		// we have to check first to avoid defining a title if none exists
+		// (we don't want to cause an element to start matching [title])
+		//
+		// We use removeAttr only for key events, to allow IE to export the correct
+		// accessible attributes. For mouse events, set to empty string to avoid
+		// native tooltip showing up (happens only when removing inside mouseover).
+		if ( target.is( "[title]" ) ) {
+			if ( event && event.type === "mouseover" ) {
+				target.attr( "title", "" );
+			} else {
+				target.removeAttr( "title" );
+			}
+		}
+
+		tooltip = this._tooltip( target );
+		addDescribedBy( target, tooltip.attr( "id" ) );
+		tooltip.find( ".ui-tooltip-content" ).html( content );
+
+		function position( event ) {
+			positionOption.of = event;
+			if ( tooltip.is( ":hidden" ) ) {
+				return;
+			}
+			tooltip.position( positionOption );
+		}
+		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
+			this._on( this.document, {
+				mousemove: position
+			});
+			// trigger once to override element-relative positioning
+			position( event );
+		} else {
+			tooltip.position( $.extend({
+				of: target
+			}, this.options.position ) );
+		}
+
+		tooltip.hide();
+
+		this._show( tooltip, this.options.show );
+		// Handle tracking tooltips that are shown with a delay (#8644). As soon
+		// as the tooltip is visible, position the tooltip using the most recent
+		// event.
+		if ( this.options.show && this.options.show.delay ) {
+			delayedShow = this.delayedShow = setInterval(function() {
+				if ( tooltip.is( ":visible" ) ) {
+					position( positionOption.of );
+					clearInterval( delayedShow );
+				}
+			}, $.fx.interval );
+		}
+
+		this._trigger( "open", event, { tooltip: tooltip } );
+
+		events = {
+			keyup: function( event ) {
+				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
+					var fakeEvent = $.Event(event);
+					fakeEvent.currentTarget = target[0];
+					this.close( fakeEvent, true );
+				}
+			},
+			remove: function() {
+				this._removeTooltip( tooltip );
+			}
+		};
+		if ( !event || event.type === "mouseover" ) {
+			events.mouseleave = "close";
+		}
+		if ( !event || event.type === "focusin" ) {
+			events.focusout = "close";
+		}
+		this._on( true, target, events );
+	},
+
+	close: function( event ) {
+		var that = this,
+			target = $( event ? event.currentTarget : this.element ),
+			tooltip = this._find( target );
+
+		// disabling closes the tooltip, so we need to track when we're closing
+		// to avoid an infinite loop in case the tooltip becomes disabled on close
+		if ( this.closing ) {
+			return;
+		}
+
+		// Clear the interval for delayed tracking tooltips
+		clearInterval( this.delayedShow );
+
+		// only set title if we had one before (see comment in _open())
+		if ( target.data( "ui-tooltip-title" ) ) {
+			target.attr( "title", target.data( "ui-tooltip-title" ) );
+		}
+
+		removeDescribedBy( target );
+
+		tooltip.stop( true );
+		this._hide( tooltip, this.options.hide, function() {
+			that._removeTooltip( $( this ) );
+		});
+
+		target.removeData( "ui-tooltip-open" );
+		this._off( target, "mouseleave focusout keyup" );
+		// Remove 'remove' binding only on delegated targets
+		if ( target[0] !== this.element[0] ) {
+			this._off( target, "remove" );
+		}
+		this._off( this.document, "mousemove" );
+
+		if ( event && event.type === "mouseleave" ) {
+			$.each( this.parents, function( id, parent ) {
+				$( parent.element ).attr( "title", parent.title );
+				delete that.parents[ id ];
+			});
+		}
+
+		this.closing = true;
+		this._trigger( "close", event, { tooltip: tooltip } );
+		this.closing = false;
+	},
+
+	_tooltip: function( element ) {
+		var id = "ui-tooltip-" + increments++,
+			tooltip = $( "<div>" )
+				.attr({
+					id: id,
+					role: "tooltip"
+				})
+				.addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +
+					( this.options.tooltipClass || "" ) );
+		$( "<div>" )
+			.addClass( "ui-tooltip-content" )
+			.appendTo( tooltip );
+		tooltip.appendTo( this.document[0].body );
+		this.tooltips[ id ] = element;
+		return tooltip;
+	},
+
+	_find: function( target ) {
+		var id = target.data( "ui-tooltip-id" );
+		return id ? $( "#" + id ) : $();
+	},
+
+	_removeTooltip: function( tooltip ) {
+		tooltip.remove();
+		delete this.tooltips[ tooltip.attr( "id" ) ];
+	},
+
+	_destroy: function() {
+		var that = this;
+
+		// close open tooltips
+		$.each( this.tooltips, function( id, element ) {
+			// Delegate to close method to handle common cleanup
+			var event = $.Event( "blur" );
+			event.target = event.currentTarget = element[0];
+			that.close( event, true );
+
+			// Remove immediately; destroying an open tooltip doesn't use the
+			// hide animation
+			$( "#" + id ).remove();
+
+			// Restore the title
+			if ( element.data( "ui-tooltip-title" ) ) {
+				element.attr( "title", element.data( "ui-tooltip-title" ) );
+				element.removeData( "ui-tooltip-title" );
+			}
+		});
+	}
+});
+
+}( jQuery ) );
diff --git a/WebSites/errors/403/lib/js/thirdparty/jquery.caret.js b/WebSites/errors/403/lib/js/thirdparty/jquery.caret.js
new file mode 100755
index 0000000..bcde5ef
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/jquery.caret.js
@@ -0,0 +1,139 @@
+(function($)
+{
+	$.fn.insertAtCaret = function(text, opts)
+	{
+		var element = $(this).get(0);
+
+		if(document.selection)
+		{
+			element.focus();
+			var orig = element.value.replace(/\r\n/g, "\n");
+			var range = document.selection.createRange();
+
+			if(range.parentElement() != element)
+			{
+				return false;
+			}
+
+			range.text = text;
+
+			var actual = tmp = element.value.replace(/\r\n/g, "\n");
+
+			for(var diff = 0; diff < orig.length; diff++)
+			{
+				if(orig.charAt(diff) != actual.charAt(diff)) break;
+			}
+
+			for(var index = 0, start = 0; tmp.match(text) && (tmp = tmp.replace(text, "")) && index <= diff; index = start + text.length)
+			{
+				start = actual.indexOf(text, index);
+			}
+		}
+		else if(element.selectionStart)
+		{
+			var start = element.selectionStart;
+			var end = element.selectionEnd;
+
+			element.value = element.value.substr(0, start) + text + element.value.substr(end, element.value.length);
+		}
+
+		if(start)
+		{
+			setCaretTo(element, start + text.length);
+		}
+		else
+		{
+			element.value = text + element.value;
+		}
+
+		$(this).change();
+
+		return this;
+	}
+
+	$.fn.replaceTextAt = function(start, end, replacementText)
+	{
+		var element = $(this).get(0);
+
+		var wholeString = $(this).val();
+		var prefix = wholeString.substr(0, start);
+		var suffix = wholeString.substr(end);
+
+		$(this).val(prefix + replacementText + suffix);
+
+		var newCursorPosition = prefix.length + replacementText.length;
+
+		setCaretTo(element, newCursorPosition);
+
+		$(this).change();
+
+		return this;
+	}
+
+	$.fn.setCaretPosition = function(start, end)
+	{
+		var element = $(this).get(0);
+		element.focus();
+		setCaretTo(element, start, end);
+		return this;
+	}
+
+
+	$.fn.getCaretPosition = function()
+	{
+		var element = $(this).get(0);
+		$(element).focus();
+		return getCaretPosition(element);
+	}
+
+	$.fn.getSelectedText = function()
+	{
+		var element = $(this).get(0);
+
+		// workaround for firefox because window.getSelection does not work inside inputs
+		if(typeof element.selectionStart == 'number')
+		{
+			return $(element).val().substr(element.selectionStart, element.selectionEnd - element.selectionStart);
+		}
+		else if(document.getSelection)
+		{
+			return document.getSelection();
+		}
+		else if(window.getSelection)
+		{
+			return window.getSelection();
+		}
+	}
+
+	// privates
+	function setCaretTo(element, start, end)
+	{
+		if(element.createTextRange)
+		{
+			var range = element.createTextRange();
+			range.moveStart('character', start);
+			range.moveEnd('character', (end || start));
+			range.select();
+		}
+		else if(element.selectionStart)
+		{
+			element.focus();
+			element.setSelectionRange(start, (end || start));
+		}
+	}
+
+	function getCaretPosition(element)
+	{
+		if(typeof element.selectionStart == 'number')
+		{
+			return element.selectionStart;
+		}
+		else if(document.selection)
+		{
+			var range = document.selection.createRange();
+			var rangeLength = range.text.length;
+			range.moveStart('character', -element.value.length);
+			return range.text.length - rangeLength;
+		}
+	}
+})(jQuery);
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/js/thirdparty/jquery.gridster.js b/WebSites/errors/403/lib/js/thirdparty/jquery.gridster.js
new file mode 100755
index 0000000..7ccd080
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/jquery.gridster.js
@@ -0,0 +1,3877 @@
+/*! gridster.js - v0.1.0 - 2013-06-14
+ * http://gridster.net/
+ * Copyright (c) 2013 ducksboard; Licensed MIT */
+
+;
+(function($, window, document, undefined)
+{
+	/**
+	 * Creates objects with coordinates (x1, y1, x2, y2, cx, cy, width, height)
+	 * to simulate DOM elements on the screen.
+	 * Coords is used by Gridster to create a faux grid with any DOM element can
+	 * collide.
+	 *
+	 * @class Coords
+	 * @param {HTMLElement|Object} obj The jQuery HTMLElement or a object with: left,
+	 * top, width and height properties.
+	 * @return {Object} Coords instance.
+	 * @constructor
+	 */
+	function Coords(obj)
+	{
+		if(obj[0] && $.isPlainObject(obj[0]))
+		{
+			this.data = obj[0];
+		}
+		else
+		{
+			this.el = obj;
+		}
+
+		this.isCoords = true;
+		this.coords = {};
+		this.init();
+		return this;
+	}
+
+
+	var fn = Coords.prototype;
+
+
+	fn.init = function()
+	{
+		this.set();
+		this.original_coords = this.get();
+	};
+
+
+	fn.set = function(update, not_update_offsets)
+	{
+		var el = this.el;
+
+		if(el && !update)
+		{
+			this.data = el.offset();
+			this.data.width = el.width();
+			this.data.height = el.height();
+		}
+
+		if(el && update && !not_update_offsets)
+		{
+			var offset = el.offset();
+			this.data.top = offset.top;
+			this.data.left = offset.left;
+		}
+
+		var d = this.data;
+
+		this.coords.x1 = d.left;
+		this.coords.y1 = d.top;
+		this.coords.x2 = d.left + d.width;
+		this.coords.y2 = d.top + d.height;
+		this.coords.cx = d.left + (d.width / 2);
+		this.coords.cy = d.top + (d.height / 2);
+		this.coords.width = d.width;
+		this.coords.height = d.height;
+		this.coords.el = el || false;
+
+		return this;
+	};
+
+
+	fn.update = function(data)
+	{
+		if(!data && !this.el)
+		{
+			return this;
+		}
+
+		if(data)
+		{
+			var new_data = $.extend({}, this.data, data);
+			this.data = new_data;
+			return this.set(true, true);
+		}
+
+		this.set(true);
+		return this;
+	};
+
+
+	fn.get = function()
+	{
+		return this.coords;
+	};
+
+
+	//jQuery adapter
+	$.fn.coords = function()
+	{
+		if(this.data('coords'))
+		{
+			return this.data('coords');
+		}
+
+		var ins = new Coords(this, arguments[0]);
+		this.data('coords', ins);
+		return ins;
+	};
+
+}(jQuery, window, document));
+
+;
+(function($, window, document, undefined)
+{
+
+	var defaults = {
+		colliders_context: document.body
+		// ,on_overlap: function(collider_data){},
+		// on_overlap_start : function(collider_data){},
+		// on_overlap_stop : function(collider_data){}
+	};
+
+
+	/**
+	 * Detects collisions between a DOM element against other DOM elements or
+	 * Coords objects.
+	 *
+	 * @class Collision
+	 * @uses Coords
+	 * @param {HTMLElement} el The jQuery wrapped HTMLElement.
+	 * @param {HTMLElement|Array} colliders Can be a jQuery collection
+	 *  of HTMLElements or an Array of Coords instances.
+	 * @param {Object} [options] An Object with all options you want to
+	 *        overwrite:
+	 *   @param {Function} [options.on_overlap_start] Executes a function the first
+	 *    time each `collider ` is overlapped.
+	 *   @param {Function} [options.on_overlap_stop] Executes a function when a
+	 *    `collider` is no longer collided.
+	 *   @param {Function} [options.on_overlap] Executes a function when the
+	 * mouse is moved during the collision.
+	 * @return {Object} Collision instance.
+	 * @constructor
+	 */
+	function Collision(el, colliders, options)
+	{
+		this.options = $.extend(defaults, options);
+		this.$element = el;
+		this.last_colliders = [];
+		this.last_colliders_coords = [];
+		if(typeof colliders === 'string' || colliders instanceof jQuery)
+		{
+			this.$colliders = $(colliders, this.options.colliders_context).not(this.$element);
+		}
+		else
+		{
+			this.colliders = $(colliders);
+		}
+
+		this.init();
+	}
+
+
+	var fn = Collision.prototype;
+
+
+	fn.init = function()
+	{
+		this.find_collisions();
+	};
+
+
+	fn.overlaps = function(a, b)
+	{
+		var x = false;
+		var y = false;
+
+		if((b.x1 >= a.x1 && b.x1 <= a.x2) || (b.x2 >= a.x1 && b.x2 <= a.x2) || (a.x1 >= b.x1 && a.x2 <= b.x2))
+		{
+			x = true;
+		}
+
+		if((b.y1 >= a.y1 && b.y1 <= a.y2) || (b.y2 >= a.y1 && b.y2 <= a.y2) || (a.y1 >= b.y1 && a.y2 <= b.y2))
+		{
+			y = true;
+		}
+
+		return (x && y);
+	};
+
+
+	fn.detect_overlapping_region = function(a, b)
+	{
+		var regionX = '';
+		var regionY = '';
+
+		if(a.y1 > b.cy && a.y1 < b.y2)
+		{
+			regionX = 'N';
+		}
+		if(a.y2 > b.y1 && a.y2 < b.cy)
+		{
+			regionX = 'S';
+		}
+		if(a.x1 > b.cx && a.x1 < b.x2)
+		{
+			regionY = 'W';
+		}
+		if(a.x2 > b.x1 && a.x2 < b.cx)
+		{
+			regionY = 'E';
+		}
+
+		return (regionX + regionY) || 'C';
+	};
+
+
+	fn.calculate_overlapped_area_coords = function(a, b)
+	{
+		var x1 = Math.max(a.x1, b.x1);
+		var y1 = Math.max(a.y1, b.y1);
+		var x2 = Math.min(a.x2, b.x2);
+		var y2 = Math.min(a.y2, b.y2);
+
+		return $({
+			left  : x1,
+			top   : y1,
+			width : (x2 - x1),
+			height: (y2 - y1)
+		}).coords().get();
+	};
+
+
+	fn.calculate_overlapped_area = function(coords)
+	{
+		return (coords.width * coords.height);
+	};
+
+
+	fn.manage_colliders_start_stop = function(new_colliders_coords, start_callback, stop_callback)
+	{
+		var last = this.last_colliders_coords;
+
+		for(var i = 0, il = last.length; i < il; i++)
+		{
+			if($.inArray(last[i], new_colliders_coords) === -1)
+			{
+				start_callback.call(this, last[i]);
+			}
+		}
+
+		for(var j = 0, jl = new_colliders_coords.length; j < jl; j++)
+		{
+			if($.inArray(new_colliders_coords[j], last) === -1)
+			{
+				stop_callback.call(this, new_colliders_coords[j]);
+			}
+
+		}
+	};
+
+
+	fn.find_collisions = function(player_data_coords)
+	{
+		var self = this;
+		var colliders_coords = [];
+		var colliders_data = [];
+		var $colliders = (this.colliders || this.$colliders);
+		var count = $colliders.length;
+		var player_coords = self.$element.coords().update(player_data_coords || false).get();
+
+		while(count--)
+		{
+			var $collider = self.$colliders ? $($colliders[count]) : $colliders[count];
+			var $collider_coords_ins = ($collider.isCoords) ? $collider : $collider.coords();
+			var collider_coords = $collider_coords_ins.get();
+			var overlaps = self.overlaps(player_coords, collider_coords);
+
+			if(!overlaps)
+			{
+				continue;
+			}
+
+			var region = self.detect_overlapping_region(player_coords, collider_coords);
+
+			//todo: make this an option
+			if(region === 'C')
+			{
+				var area_coords = self.calculate_overlapped_area_coords(player_coords, collider_coords);
+				var area = self.calculate_overlapped_area(area_coords);
+				var collider_data = {
+					area         : area,
+					area_coords  : area_coords,
+					region       : region,
+					coords       : collider_coords,
+					player_coords: player_coords,
+					el           : $collider
+				};
+
+				if(self.options.on_overlap)
+				{
+					self.options.on_overlap.call(this, collider_data);
+				}
+				colliders_coords.push($collider_coords_ins);
+				colliders_data.push(collider_data);
+			}
+		}
+
+		if(self.options.on_overlap_stop || self.options.on_overlap_start)
+		{
+			this.manage_colliders_start_stop(colliders_coords, self.options.on_overlap_start, self.options.on_overlap_stop);
+		}
+
+		this.last_colliders_coords = colliders_coords;
+
+		return colliders_data;
+	};
+
+
+	fn.get_closest_colliders = function(player_data_coords)
+	{
+		var colliders = this.find_collisions(player_data_coords);
+
+		colliders.sort(function(a, b)
+		{
+			/* if colliders are being overlapped by the "C" (center) region,
+			 * we have to set a lower index in the array to which they are placed
+			 * above in the grid. */
+			if(a.region === 'C' && b.region === 'C')
+			{
+				if(a.coords.y1 < b.coords.y1 || a.coords.x1 < b.coords.x1)
+				{
+					return -1;
+				}
+				else
+				{
+					return 1;
+				}
+			}
+
+			if(a.area < b.area)
+			{
+				return 1;
+			}
+
+			return 1;
+		});
+		return colliders;
+	};
+
+
+	//jQuery adapter
+	$.fn.collision = function(collider, options)
+	{
+		return new Collision(this, collider, options);
+	};
+
+
+}(jQuery, window, document));
+
+;
+(function(window, undefined)
+{
+	/* Debounce and throttle functions taken from underscore.js */
+	window.debounce = function(func, wait, immediate)
+	{
+		var timeout;
+		return function()
+		{
+			var context = this, args = arguments;
+			var later = function()
+			{
+				timeout = null;
+				if(!immediate) func.apply(context, args);
+			};
+			if(immediate && !timeout) func.apply(context, args);
+			clearTimeout(timeout);
+			timeout = setTimeout(later, wait);
+		};
+	};
+
+
+	window.throttle = function(func, wait)
+	{
+		var context, args, timeout, throttling, more, result;
+		var whenDone = debounce(function()
+			{
+				more = throttling = false;
+			}, wait);
+		return function()
+		{
+			context = this;
+			args = arguments;
+			var later = function()
+			{
+				timeout = null;
+				if(more) func.apply(context, args);
+				whenDone();
+			};
+			if(!timeout) timeout = setTimeout(later, wait);
+			if(throttling)
+			{
+				more = true;
+			}
+			else
+			{
+				result = func.apply(context, args);
+			}
+			whenDone();
+			throttling = true;
+			return result;
+		};
+	};
+
+})(window);
+
+;
+(function($, window, document, undefined)
+{
+
+	var defaults = {
+		items          : '.gs_w',
+		distance       : 1,
+		limit          : true,
+		offset_left    : 0,
+		autoscroll     : true,
+		ignore_dragging: ['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON'],
+		handle         : null,
+		container_width: 0  // 0 == auto
+		// drag: function(e){},
+		// start : function(e, ui){},
+		// stop : function(e){}
+	};
+
+	var $window = $(window);
+	var isTouch = !!('ontouchstart' in window);
+	var pointer_events = {
+		start: isTouch ? 'touchstart.gridster-draggable' : 'mousedown.gridster-draggable',
+		move : isTouch ? 'touchmove.gridster-draggable' : 'mousemove.gridster-draggable',
+		end  : isTouch ? 'touchend.gridster-draggable' : 'mouseup.gridster-draggable'
+	};
+
+	/**
+	 * Basic drag implementation for DOM elements inside a container.
+	 * Provide start/stop/drag callbacks.
+	 *
+	 * @class Draggable
+	 * @param {HTMLElement} el The HTMLelement that contains all the panes
+	 *  to be dragged.
+	 * @param {Object} [options] An Object with all options you want to
+	 *        overwrite:
+	 *    @param {HTMLElement|String} [options.items] Define who will
+	 *     be the draggable items. Can be a CSS Selector String or a
+	 *     collection of HTMLElements.
+	 *    @param {Number} [options.distance] Distance in pixels after mousedown
+	 *     the mouse must move before dragging should start.
+	 *    @param {Boolean} [options.limit] Constrains dragging to the width of
+	 *     the container
+	 *    @param {offset_left} [options.offset_left] Offset added to the item
+	 *     that is being dragged.
+	 *    @param {Number} [options.drag] Executes a callback when the mouse is
+	 *     moved during the dragging.
+	 *    @param {Number} [options.start] Executes a callback when the drag
+	 *     starts.
+	 *    @param {Number} [options.stop] Executes a callback when the drag stops.
+	 * @return {Object} Returns `el`.
+	 * @constructor
+	 */
+	function Draggable(el, options)
+	{
+		this.options = $.extend({}, defaults, options);
+		this.$body = $(document.body);
+		this.$container = $(el);
+		this.$dragitems = $(this.options.items, this.$container);
+		this.is_dragging = false;
+		this.player_min_left = 0 + this.options.offset_left;
+		this.init();
+	}
+
+	var fn = Draggable.prototype;
+
+	fn.init = function()
+	{
+		this.calculate_positions();
+		this.$container.css('position', 'relative');
+		this.disabled = false;
+		this.events();
+
+		$(window).bind('resize.gridster-draggable', throttle($.proxy(this.calculate_positions, this), 200));
+	};
+
+	fn.setOptions = function(options)
+	{
+		this.options = $.extend(this.options, options);
+	};
+
+	fn.events = function()
+	{
+		this.$container.on('selectstart.gridster-draggable', $.proxy(this.on_select_start, this));
+
+		this.$container.on(pointer_events.start, this.options.items, $.proxy(this.drag_handler, this));
+
+		this.$body.on(pointer_events.end, $.proxy(function(e)
+		{
+			this.is_dragging = false;
+			if(this.disabled)
+			{
+				return;
+			}
+			this.$body.off(pointer_events.move);
+			if(this.drag_start)
+			{
+				this.on_dragstop(e);
+			}
+		}, this));
+	};
+
+	fn.get_actual_pos = function($el)
+	{
+		var pos = $el.position();
+		return pos;
+	};
+
+
+	fn.get_mouse_pos = function(e)
+	{
+		if(isTouch)
+		{
+			var oe = e.originalEvent;
+			e = oe.touches.length ? oe.touches[0] : oe.changedTouches[0];
+		}
+
+		return {
+			left: e.clientX,
+			top : e.clientY
+		};
+	};
+
+
+	fn.get_offset = function(e)
+	{
+		e.preventDefault();
+		var mouse_actual_pos = this.get_mouse_pos(e);
+		var diff_x = Math.round(mouse_actual_pos.left - this.mouse_init_pos.left);
+		var diff_y = Math.round(mouse_actual_pos.top - this.mouse_init_pos.top);
+
+		var left = Math.round(this.el_init_offset.left + diff_x - this.baseX);
+		var top = Math.round(this.el_init_offset.top + diff_y - this.baseY + this.scrollOffset);
+
+		if(this.options.limit)
+		{
+			if(left > this.player_max_left)
+			{
+				left = this.player_max_left;
+			}
+			else if(left < this.player_min_left)
+			{
+				left = this.player_min_left;
+			}
+		}
+
+		return {
+			left      : left,
+			top       : top,
+			mouse_left: mouse_actual_pos.left,
+			mouse_top : mouse_actual_pos.top
+		};
+	};
+
+
+	fn.manage_scroll = function(offset)
+	{
+		/* scroll document */
+		var nextScrollTop;
+		var scrollTop = $window.scrollTop();
+		var min_window_y = scrollTop;
+		var max_window_y = min_window_y + this.window_height;
+
+		var mouse_down_zone = max_window_y - 50;
+		var mouse_up_zone = min_window_y + 50;
+
+		var abs_mouse_left = offset.mouse_left;
+		var abs_mouse_top = min_window_y + offset.mouse_top;
+
+		var max_player_y = (this.doc_height - this.window_height + this.player_height);
+
+		if(abs_mouse_top >= mouse_down_zone)
+		{
+			nextScrollTop = scrollTop + 30;
+			if(nextScrollTop < max_player_y)
+			{
+				$window.scrollTop(nextScrollTop);
+				this.scrollOffset = this.scrollOffset + 30;
+			}
+		}
+
+		if(abs_mouse_top <= mouse_up_zone)
+		{
+			nextScrollTop = scrollTop - 30;
+			if(nextScrollTop > 0)
+			{
+				$window.scrollTop(nextScrollTop);
+				this.scrollOffset = this.scrollOffset - 30;
+			}
+		}
+	};
+
+
+	fn.calculate_positions = function(e)
+	{
+		this.window_height = $window.height();
+	};
+
+
+	fn.drag_handler = function(e)
+	{
+		var node = e.target.nodeName;
+		if(this.disabled || e.which !== 1 && !isTouch)
+		{
+			return;
+		}
+
+		if(this.ignore_drag(e))
+		{
+			return;
+		}
+
+		var self = this;
+		var first = true;
+		this.$player = $(e.currentTarget);
+
+		this.el_init_pos = this.get_actual_pos(this.$player);
+		this.mouse_init_pos = this.get_mouse_pos(e);
+		this.offsetY = this.mouse_init_pos.top - this.el_init_pos.top;
+
+		this.$body.on(pointer_events.move, function(mme)
+		{
+			var mouse_actual_pos = self.get_mouse_pos(mme);
+			var diff_x = Math.abs(mouse_actual_pos.left - self.mouse_init_pos.left);
+			var diff_y = Math.abs(mouse_actual_pos.top - self.mouse_init_pos.top);
+			if(!(diff_x > self.options.distance || diff_y > self.options.distance))
+			{
+				return false;
+			}
+
+			if(first)
+			{
+				first = false;
+				self.on_dragstart.call(self, mme);
+				return false;
+			}
+
+			if(self.is_dragging === true)
+			{
+				self.on_dragmove.call(self, mme);
+			}
+
+			return false;
+		});
+
+		if(!isTouch)
+		{
+			return false;
+		}
+	};
+
+
+	fn.on_dragstart = function(e)
+	{
+		e.preventDefault();
+		this.drag_start = true;
+		this.is_dragging = true;
+		var offset = this.$container.offset();
+		this.baseX = Math.round(offset.left);
+		this.baseY = Math.round(offset.top);
+		this.doc_height = $(document).height();
+
+		if(this.options.helper === 'clone')
+		{
+			this.$helper = this.$player.clone().appendTo(this.$container).addClass('helper');
+			this.helper = true;
+		}
+		else
+		{
+			this.helper = false;
+		}
+		this.scrollOffset = 0;
+		this.el_init_offset = this.$player.offset();
+		this.player_width = this.$player.width();
+		this.player_height = this.$player.height();
+
+		var container_width = this.options.container_width || this.$container.width();
+		this.player_max_left = (container_width - this.player_width + this.options.offset_left);
+
+		if(this.options.start)
+		{
+			this.options.start.call(this.$player, e, {
+				helper: this.helper ? this.$helper : this.$player
+			});
+		}
+		return false;
+	};
+
+
+	fn.on_dragmove = function(e)
+	{
+		var offset = this.get_offset(e);
+
+		this.options.autoscroll && this.manage_scroll(offset);
+
+		(this.helper ? this.$helper : this.$player).css({
+			'position': 'absolute',
+			'left'    : offset.left,
+			'top'     : offset.top
+		});
+
+		var ui = {
+			'position': {
+				'left': offset.left,
+				'top' : offset.top
+			}
+		};
+
+		if(this.options.drag)
+		{
+			this.options.drag.call(this.$player, e, ui);
+		}
+		return false;
+	};
+
+
+	fn.on_dragstop = function(e)
+	{
+		var offset = this.get_offset(e);
+		this.drag_start = false;
+
+		var ui = {
+			'position': {
+				'left': offset.left,
+				'top' : offset.top
+			}
+		};
+
+		if(this.options.stop)
+		{
+			this.options.stop.call(this.$player, e, ui);
+		}
+
+		if(this.helper)
+		{
+			this.$helper.remove();
+		}
+
+		return false;
+	};
+
+	fn.on_select_start = function(e)
+	{
+		if(this.disabled)
+		{
+			return;
+		}
+
+		if(this.ignore_drag(e))
+		{
+			return;
+		}
+
+		return false;
+	};
+
+	fn.enable = function()
+	{
+		this.disabled = false;
+	};
+
+	fn.disable = function()
+	{
+		this.disabled = true;
+	};
+
+
+	fn.destroy = function()
+	{
+		this.disable();
+
+		this.$container.off('.gridster-draggable');
+		this.$body.off('.gridster-draggable');
+		$(window).off('.gridster-draggable');
+
+		$.removeData(this.$container, 'drag');
+	};
+
+	fn.ignore_drag = function(event)
+	{
+		if(this.options.handle)
+		{
+			return !$(event.target).is(this.options.handle);
+		}
+
+		return $.inArray(event.target.nodeName, this.options.ignore_dragging) >= 0;
+	};
+
+	//jQuery adapter
+	$.fn.drag = function(options)
+	{
+		return this.each(function()
+		{
+			if(!$.data(this, 'drag'))
+			{
+				$.data(this, 'drag', new Draggable(this, options));
+			}
+			else
+			{
+				$.data(this, 'drag').setOptions(options);
+			}
+		});
+	};
+
+
+}(jQuery, window, document));
+
+;
+(function($, window, document, undefined)
+{
+
+	var defaults = {
+		namespace               : '',
+		widget_selector         : 'li',
+		widget_margins          : [10, 10],
+		widget_base_dimensions  : [400, 225],
+		extra_rows              : 0,
+		extra_cols              : 0,
+		min_cols                : 1,
+		max_cols                : null,
+		min_rows                : 15,
+		max_size_x              : 6,
+		autogenerate_stylesheet : true,
+		avoid_overlapped_widgets: true,
+		serialize_params        : function($w, wgd)
+		{
+			return {
+				col   : wgd.col,
+				row   : wgd.row,
+				size_x: wgd.size_x,
+				size_y: wgd.size_y
+			};
+		},
+		collision               : {},
+		draggable               : {
+			distance: 4
+		}
+	};
+
+	/**
+	 * @class Gridster
+	 * @uses Draggable
+	 * @uses Collision
+	 * @param {HTMLElement} el The HTMLelement that contains all the panes.
+	 * @param {Object} [options] An Object with all options you want to
+	 *        overwrite:
+	 *    @param {HTMLElement|String} [options.widget_selector] Define who will
+	 *     be the draggable panes. Can be a CSS Selector String or a
+	 *     collection of HTMLElements
+	 *    @param {Array} [options.widget_margins] Margin between panes.
+	 *     The first index for the horizontal margin (left, right) and
+	 *     the second for the vertical margin (top, bottom).
+	 *    @param {Array} [options.widget_base_dimensions] Base widget dimensions
+	 *     in pixels. The first index for the width and the second for the
+	 *     height.
+	 *    @param {Number} [options.extra_cols] Add more columns in addition to
+	 *     those that have been calculated.
+	 *    @param {Number} [options.extra_rows] Add more rows in addition to
+	 *     those that have been calculated.
+	 *    @param {Number} [options.min_cols] The minimum required columns.
+	 *    @param {Number} [options.max_cols] The maximum columns possible (set to null
+	 *     for no maximum).
+	 *    @param {Number} [options.min_rows] The minimum required rows.
+	 *    @param {Number} [options.max_size_x] The maximum number of columns
+	 *     that a widget can span.
+	 *    @param {Boolean} [options.autogenerate_stylesheet] If true, all the
+	 *     CSS required to position all panes in their respective columns
+	 *     and rows will be generated automatically and injected to the
+	 *     `<head>` of the document. You can set this to false, and write
+	 *     your own CSS targeting rows and cols via data-attributes like so:
+	 *     `[data-col="1"] { left: 10px; }`
+	 *    @param {Boolean} [options.avoid_overlapped_widgets] Avoid that panes loaded
+	 *     from the DOM can be overlapped. It is helpful if the positions were
+	 *     bad stored in the database or if there was any conflict.
+	 *    @param {Function} [options.serialize_params] Return the data you want
+	 *     for each widget in the serialization. Two arguments are passed:
+	 *     `$w`: the jQuery wrapped HTMLElement, and `wgd`: the grid
+	 *     coords object (`col`, `row`, `size_x`, `size_y`).
+	 *    @param {Object} [options.collision] An Object with all options for
+	 *     Collision class you want to overwrite. See Collision docs for
+	 *     more info.
+	 *    @param {Object} [options.draggable] An Object with all options for
+	 *     Draggable class you want to overwrite. See Draggable docs for more
+	 *     info.
+	 *
+	 * @constructor
+	 */
+	function Gridster(el, options)
+	{
+		this.options = $.extend(true, defaults, options);
+		this.$el = $(el);
+		this.$wrapper = this.$el.parent();
+		this.$widgets = this.$el.children(this.options.widget_selector).addClass('gs_w');
+		this.panes = [];
+		this.$changed = $([]);
+		this.wrapper_width = this.$wrapper.width();
+		this.min_widget_width = (this.options.widget_margins[0] * 2) + this.options.widget_base_dimensions[0];
+		this.min_widget_height = (this.options.widget_margins[1] * 2) + this.options.widget_base_dimensions[1];
+
+		this.$style_tags = $([]);
+
+		this.init();
+	}
+
+	Gridster.generated_stylesheets = [];
+
+	var fn = Gridster.prototype;
+
+	fn.init = function()
+	{
+		this.generate_grid_and_stylesheet();
+		this.get_widgets_from_DOM();
+		this.set_dom_grid_height();
+		this.$wrapper.addClass('ready');
+		this.draggable();
+
+		$(window).bind('resize.gridster', throttle($.proxy(this.recalculate_faux_grid, this), 200));
+	};
+
+
+	/**
+	 * Disables dragging.
+	 *
+	 * @method disable
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.disable = function()
+	{
+		this.$wrapper.find('.player-revert').removeClass('player-revert');
+		this.drag_api.disable();
+		return this;
+	};
+
+
+	/**
+	 * Enables dragging.
+	 *
+	 * @method enable
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.enable = function()
+	{
+		this.drag_api.enable();
+		return this;
+	};
+
+
+	/**
+	 * Add a new widget to the grid.
+	 *
+	 * @method add_widget
+	 * @param {String|HTMLElement} html The string representing the HTML of the widget
+	 *  or the HTMLElement.
+	 * @param {Number} [size_x] The nº of rows the widget occupies horizontally.
+	 * @param {Number} [size_y] The nº of columns the widget occupies vertically.
+	 * @param {Number} [col] The column the widget should start in.
+	 * @param {Number} [row] The row the widget should start in.
+	 * @return {HTMLElement} Returns the jQuery wrapped HTMLElement representing.
+	 *  the widget that was just created.
+	 */
+	fn.add_widget = function(html, size_x, size_y, col, row)
+	{
+		var pos;
+		size_x || (size_x = 1);
+		size_y || (size_y = 1);
+
+		if(!col & !row)
+		{
+			pos = this.next_position(size_x, size_y);
+		}
+		else
+		{
+			pos = {
+				col: col,
+				row: row
+			};
+
+			this.empty_cells(col, row, size_x, size_y);
+		}
+
+		var $w = $(html).attr({
+			'data-col'  : pos.col,
+			'data-row'  : pos.row,
+			'data-sizex': size_x,
+			'data-sizey': size_y
+		}).addClass('gs_w').appendTo(this.$el).hide();
+
+		this.$widgets = this.$widgets.add($w);
+
+		this.register_widget($w);
+
+		this.add_faux_rows(pos.size_y);
+		//this.add_faux_cols(pos.size_x);
+
+		this.set_dom_grid_height();
+
+		return $w.fadeIn();
+	};
+
+
+	/**
+	 * Change the size of a widget.
+	 *
+	 * @method resize_widget
+	 * @param {HTMLElement} $widget The jQuery wrapped HTMLElement
+	 *  representing the widget.
+	 * @param {Number} size_x The number of columns that will occupy the widget.
+	 * @param {Number} size_y The number of rows that will occupy the widget.
+	 * @param {Function} callback Function executed when the widget is removed.
+	 * @return {HTMLElement} Returns $widget.
+	 */
+	fn.resize_widget = function($widget, size_x, size_y, callback)
+	{
+		var wgd = $widget.coords().grid;
+		size_x || (size_x = wgd.size_x);
+		size_y || (size_y = wgd.size_y);
+
+		if(size_x > this.cols)
+		{
+			size_x = this.cols;
+		}
+
+		var old_cells_occupied = this.get_cells_occupied(wgd);
+		var old_size_x = wgd.size_x;
+		var old_size_y = wgd.size_y;
+		var old_col = wgd.col;
+		var new_col = old_col;
+		var wider = size_x > old_size_x;
+		var taller = size_y > old_size_y;
+
+		if(old_col + size_x - 1 > this.cols)
+		{
+			var diff = old_col + (size_x - 1) - this.cols;
+			var c = old_col - diff;
+			new_col = Math.max(1, c);
+		}
+
+		var new_grid_data = {
+			col   : new_col,
+			row   : wgd.row,
+			size_x: size_x,
+			size_y: size_y
+		};
+
+		var new_cells_occupied = this.get_cells_occupied(new_grid_data);
+
+		var empty_cols = [];
+		$.each(old_cells_occupied.cols, function(i, col)
+		{
+			if($.inArray(col, new_cells_occupied.cols) === -1)
+			{
+				empty_cols.push(col);
+			}
+		});
+
+		var occupied_cols = [];
+		$.each(new_cells_occupied.cols, function(i, col)
+		{
+			if($.inArray(col, old_cells_occupied.cols) === -1)
+			{
+				occupied_cols.push(col);
+			}
+		});
+
+		var empty_rows = [];
+		$.each(old_cells_occupied.rows, function(i, row)
+		{
+			if($.inArray(row, new_cells_occupied.rows) === -1)
+			{
+				empty_rows.push(row);
+			}
+		});
+
+		var occupied_rows = [];
+		$.each(new_cells_occupied.rows, function(i, row)
+		{
+			if($.inArray(row, old_cells_occupied.rows) === -1)
+			{
+				occupied_rows.push(row);
+			}
+		});
+
+		this.remove_from_gridmap(wgd);
+
+		if(occupied_cols.length)
+		{
+			var cols_to_empty = [
+				new_col, wgd.row, size_x, Math.min(old_size_y, size_y), $widget
+			];
+			this.empty_cells.apply(this, cols_to_empty);
+		}
+
+		if(occupied_rows.length)
+		{
+			var rows_to_empty = [new_col, wgd.row, size_x, size_y, $widget];
+			this.empty_cells.apply(this, rows_to_empty);
+		}
+
+		wgd.col = new_col;
+		wgd.size_x = size_x;
+		wgd.size_y = size_y;
+		this.add_to_gridmap(new_grid_data, $widget);
+
+		//update coords instance attributes
+		$widget.data('coords').update({
+			width : (size_x * this.options.widget_base_dimensions[0] + ((size_x - 1) * this.options.widget_margins[0]) * 2),
+			height: (size_y * this.options.widget_base_dimensions[1] + ((size_y - 1) * this.options.widget_margins[1]) * 2)
+		});
+
+		if(size_y > old_size_y)
+		{
+			this.add_faux_rows(size_y - old_size_y);
+		}
+
+		if(size_x > old_size_x)
+		{
+			this.add_faux_cols(size_x - old_size_x);
+		}
+
+		$widget.attr({
+			'data-col'  : new_col,
+			'data-sizex': size_x,
+			'data-sizey': size_y
+		});
+
+		if(empty_cols.length)
+		{
+			var cols_to_remove_holes = [
+				empty_cols[0], wgd.row, empty_cols.length, Math.min(old_size_y, size_y), $widget
+			];
+
+			this.remove_empty_cells.apply(this, cols_to_remove_holes);
+		}
+
+		if(empty_rows.length)
+		{
+			var rows_to_remove_holes = [
+				new_col, wgd.row, size_x, size_y, $widget
+			];
+			this.remove_empty_cells.apply(this, rows_to_remove_holes);
+		}
+
+		if(callback)
+		{
+			callback.call(this, size_x, size_y);
+		}
+
+		return $widget;
+	};
+
+	/**
+	 * Move down panes in cells represented by the arguments col, row, size_x,
+	 * size_y
+	 *
+	 * @method empty_cells
+	 * @param {Number} col The column where the group of cells begin.
+	 * @param {Number} row The row where the group of cells begin.
+	 * @param {Number} size_x The number of columns that the group of cells
+	 * occupy.
+	 * @param {Number} size_y The number of rows that the group of cells
+	 * occupy.
+	 * @param {HTMLElement} $exclude Exclude panes from being moved.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.empty_cells = function(col, row, size_x, size_y, $exclude)
+	{
+		var $nexts = this.widgets_below({
+			col   : col,
+			row   : row - size_y,
+			size_x: size_x,
+			size_y: size_y
+		});
+
+		$nexts.not($exclude).each($.proxy(function(i, w)
+		{
+			var wgd = $(w).coords().grid;
+			if(!(wgd.row <= (row + size_y - 1)))
+			{
+				return;
+			}
+			var diff = (row + size_y) - wgd.row;
+			this.move_widget_down($(w), diff);
+		}, this));
+
+		this.set_dom_grid_height();
+
+		return this;
+	};
+
+
+	/**
+	 * Move up panes below cells represented by the arguments col, row, size_x,
+	 * size_y.
+	 *
+	 * @method remove_empty_cells
+	 * @param {Number} col The column where the group of cells begin.
+	 * @param {Number} row The row where the group of cells begin.
+	 * @param {Number} size_x The number of columns that the group of cells
+	 * occupy.
+	 * @param {Number} size_y The number of rows that the group of cells
+	 * occupy.
+	 * @param {HTMLElement} exclude Exclude panes from being moved.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_empty_cells = function(col, row, size_x, size_y, exclude)
+	{
+		var $nexts = this.widgets_below({
+			col   : col,
+			row   : row,
+			size_x: size_x,
+			size_y: size_y
+		});
+
+		$nexts.not(exclude).each($.proxy(function(i, widget)
+		{
+			this.move_widget_up($(widget), size_y);
+		}, this));
+
+		this.set_dom_grid_height();
+
+		return this;
+	};
+
+
+	/**
+	 * Get the most left column below to add a new widget.
+	 *
+	 * @method next_position
+	 * @param {Number} size_x The nº of rows the widget occupies horizontally.
+	 * @param {Number} size_y The nº of columns the widget occupies vertically.
+	 * @return {Object} Returns a grid coords object representing the future
+	 *  widget coords.
+	 */
+	fn.next_position = function(size_x, size_y)
+	{
+		size_x || (size_x = 1);
+		size_y || (size_y = 1);
+		var ga = this.gridmap;
+		var cols_l = ga.length;
+		var valid_pos = [];
+		var rows_l;
+
+		for(var c = 1; c < cols_l; c++)
+		{
+			rows_l = ga[c].length;
+			for(var r = 1; r <= rows_l; r++)
+			{
+				var can_move_to = this.can_move_to({
+					size_x: size_x,
+					size_y: size_y
+				}, c, r);
+
+				if(can_move_to)
+				{
+					valid_pos.push({
+						col   : c,
+						row   : r,
+						size_y: size_y,
+						size_x: size_x
+					});
+				}
+			}
+		}
+
+		if(valid_pos.length)
+		{
+			return this.sort_by_row_and_col_asc(valid_pos)[0];
+		}
+		return false;
+	};
+
+
+	/**
+	 * Remove a widget from the grid.
+	 *
+	 * @method remove_widget
+	 * @param {HTMLElement} el The jQuery wrapped HTMLElement you want to remove.
+	 * @param {Boolean|Function} silent If true, panes below the removed one
+	 * will not move up. If a Function is passed it will be used as callback.
+	 * @param {Function} callback Function executed when the widget is removed.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_widget = function(el, silent, callback)
+	{
+		var $el = el instanceof jQuery ? el : $(el);
+		var wgd = $el.coords().grid;
+
+		// if silent is a function assume it's a callback
+		if($.isFunction(silent))
+		{
+			callback = silent;
+			silent = false;
+		}
+
+		this.cells_occupied_by_placeholder = {};
+		this.$widgets = this.$widgets.not($el);
+
+		var $nexts = this.widgets_below($el);
+
+		this.remove_from_gridmap(wgd);
+
+		$el.fadeOut($.proxy(function()
+		{
+			$el.remove();
+
+			if(!silent)
+			{
+				$nexts.each($.proxy(function(i, widget)
+				{
+					this.move_widget_up($(widget), wgd.size_y);
+				}, this));
+			}
+
+			this.set_dom_grid_height();
+
+			if(callback)
+			{
+				callback.call(this, el);
+			}
+		}, this));
+	};
+
+
+	/**
+	 * Remove all panes from the grid.
+	 *
+	 * @method remove_all_widgets
+	 * @param {Function} callback Function executed for each widget removed.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_all_widgets = function(callback)
+	{
+		this.$widgets.each($.proxy(function(i, el)
+		{
+			this.remove_widget(el, true, callback);
+		}, this));
+
+		return this;
+	};
+
+
+	/**
+	 * Returns a serialized array of the panes in the grid.
+	 *
+	 * @method serialize
+	 * @param {HTMLElement} [$widgets] The collection of jQuery wrapped
+	 *  HTMLElements you want to serialize. If no argument is passed all panes
+	 *  will be serialized.
+	 * @return {Array} Returns an Array of Objects with the data specified in
+	 *  the serialize_params option.
+	 */
+	fn.serialize = function($widgets)
+	{
+		$widgets || ($widgets = this.$widgets);
+		var result = [];
+		$widgets.each($.proxy(function(i, widget)
+		{
+			result.push(this.options.serialize_params($(widget), $(widget).coords().grid));
+		}, this));
+
+		return result;
+	};
+
+
+	/**
+	 * Returns a serialized array of the panes that have changed their
+	 *  position.
+	 *
+	 * @method serialize_changed
+	 * @return {Array} Returns an Array of Objects with the data specified in
+	 *  the serialize_params option.
+	 */
+	fn.serialize_changed = function()
+	{
+		return this.serialize(this.$changed);
+	};
+
+
+	/**
+	 * Creates the grid coords object representing the widget a add it to the
+	 * mapped array of positions.
+	 *
+	 * @method register_widget
+	 * @return {Array} Returns the instance of the Gridster class.
+	 */
+	fn.register_widget = function($el)
+	{
+
+		var wgd = {
+			'col'   : parseInt($el.attr('data-col'), 10),
+			'row'   : parseInt($el.attr('data-row'), 10),
+			'size_x': parseInt($el.attr('data-sizex'), 10),
+			'size_y': parseInt($el.attr('data-sizey'), 10),
+			'el'    : $el
+		};
+
+		if(this.options.avoid_overlapped_widgets && !this.can_move_to({size_x: wgd.size_x, size_y: wgd.size_y}, wgd.col, wgd.row))
+		{
+			wgd = this.next_position(wgd.size_x, wgd.size_y);
+			wgd.el = $el;
+			$el.attr({
+				'data-col'  : wgd.col,
+				'data-row'  : wgd.row,
+				'data-sizex': wgd.size_x,
+				'data-sizey': wgd.size_y
+			});
+		}
+
+		// attach Coord object to player data-coord attribute
+		$el.data('coords', $el.coords());
+
+		// Extend Coord object with grid position info
+		$el.data('coords').grid = wgd;
+
+		this.add_to_gridmap(wgd, $el);
+
+		return this;
+	};
+
+
+	/**
+	 * Update in the mapped array of positions the value of cells represented by
+	 * the grid coords object passed in the `grid_data` param.
+	 *
+	 * @param {Object} grid_data The grid coords object representing the cells
+	 *  to update in the mapped array.
+	 * @param {HTMLElement|Boolean} value Pass `false` or the jQuery wrapped
+	 *  HTMLElement, depends if you want to delete an existing position or add
+	 *  a new one.
+	 * @method update_widget_position
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.update_widget_position = function(grid_data, value)
+	{
+		this.for_each_cell_occupied(grid_data, function(col, row)
+		{
+			if(!this.gridmap[col])
+			{
+				return this;
+			}
+			this.gridmap[col][row] = value;
+		});
+		return this;
+	};
+
+
+	/**
+	 * Remove a widget from the mapped array of positions.
+	 *
+	 * @method remove_from_gridmap
+	 * @param {Object} grid_data The grid coords object representing the cells
+	 *  to update in the mapped array.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.remove_from_gridmap = function(grid_data)
+	{
+		return this.update_widget_position(grid_data, false);
+	};
+
+
+	/**
+	 * Add a widget to the mapped array of positions.
+	 *
+	 * @method add_to_gridmap
+	 * @param {Object} grid_data The grid coords object representing the cells
+	 *  to update in the mapped array.
+	 * @param {HTMLElement|Boolean} value The value to set in the specified
+	 *  position .
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.add_to_gridmap = function(grid_data, value)
+	{
+		this.update_widget_position(grid_data, value || grid_data.el);
+
+		if(grid_data.el)
+		{
+			var $widgets = this.widgets_below(grid_data.el);
+			$widgets.each($.proxy(function(i, widget)
+			{
+				this.move_widget_up($(widget));
+			}, this));
+		}
+	};
+
+
+	/**
+	 * Make panes draggable.
+	 *
+	 * @uses Draggable
+	 * @method draggable
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.draggable = function()
+	{
+		var self = this;
+		var draggable_options = $.extend(true, {}, this.options.draggable, {
+			offset_left    : this.options.widget_margins[0],
+			container_width: this.container_width,
+			start          : function(event, ui)
+			{
+				self.$widgets.filter('.player-revert').removeClass('player-revert');
+
+				self.$player = $(this);
+				self.$helper = self.options.draggable.helper === 'clone' ? $(ui.helper) : self.$player;
+				self.helper = !self.$helper.is(self.$player);
+
+				self.on_start_drag.call(self, event, ui);
+				self.$el.trigger('gridster:dragstart');
+			},
+			stop           : function(event, ui)
+			{
+				self.on_stop_drag.call(self, event, ui);
+				self.$el.trigger('gridster:dragstop');
+			},
+			drag           : throttle(function(event, ui)
+			{
+				self.on_drag.call(self, event, ui);
+				self.$el.trigger('gridster:drag');
+			}, 60)
+		});
+
+		this.drag_api = this.$el.drag(draggable_options).data('drag');
+		return this;
+	};
+
+
+	/**
+	 * This function is executed when the player begins to be dragged.
+	 *
+	 * @method on_start_drag
+	 * @param {Event} event The original browser event
+	 * @param {Object} ui A prepared ui object.
+	 */
+	fn.on_start_drag = function(event, ui)
+	{
+
+		this.$helper.add(this.$player).add(this.$wrapper).addClass('dragging');
+
+		this.$player.addClass('player');
+		this.player_grid_data = this.$player.coords().grid;
+		this.placeholder_grid_data = $.extend({}, this.player_grid_data);
+
+		//set new grid height along the dragging period
+		this.$el.css('height', this.$el.height() + (this.player_grid_data.size_y * this.min_widget_height));
+
+		var colliders = this.faux_grid;
+		var coords = this.$player.data('coords').coords;
+
+		this.cells_occupied_by_player = this.get_cells_occupied(this.player_grid_data);
+		this.cells_occupied_by_placeholder = this.get_cells_occupied(this.placeholder_grid_data);
+
+		this.last_cols = [];
+		this.last_rows = [];
+
+
+		// see jquery.collision.js
+		this.collision_api = this.$helper.collision(colliders, this.options.collision);
+
+		this.$preview_holder = $('<li />', {
+			'class'   : 'preview-holder',
+			'data-row': this.$player.attr('data-row'),
+			'data-col': this.$player.attr('data-col'),
+			css       : {
+				width : coords.width,
+				height: coords.height
+			}
+		}).appendTo(this.$el);
+
+		if(this.options.draggable.start)
+		{
+			this.options.draggable.start.call(this, event, ui);
+		}
+	};
+
+
+	/**
+	 * This function is executed when the player is being dragged.
+	 *
+	 * @method on_drag
+	 * @param {Event} event The original browser event
+	 * @param {Object} ui A prepared ui object.
+	 */
+	fn.on_drag = function(event, ui)
+	{
+		//break if dragstop has been fired
+		if(this.$player === null)
+		{
+			return false;
+		}
+
+		var abs_offset = {
+			left: ui.position.left + this.baseX,
+			top : ui.position.top + this.baseY
+		};
+
+		this.colliders_data = this.collision_api.get_closest_colliders(abs_offset);
+
+		this.on_overlapped_column_change(this.on_start_overlapping_column, this.on_stop_overlapping_column);
+
+		this.on_overlapped_row_change(this.on_start_overlapping_row, this.on_stop_overlapping_row);
+
+		if(this.helper && this.$player)
+		{
+			this.$player.css({
+				'left': ui.position.left,
+				'top' : ui.position.top
+			});
+		}
+
+		if(this.options.draggable.drag)
+		{
+			this.options.draggable.drag.call(this, event, ui);
+		}
+	};
+
+	/**
+	 * This function is executed when the player stops being dragged.
+	 *
+	 * @method on_stop_drag
+	 * @param {Event} event The original browser event
+	 * @param {Object} ui A prepared ui object.
+	 */
+	fn.on_stop_drag = function(event, ui)
+	{
+		this.$helper.add(this.$player).add(this.$wrapper).removeClass('dragging');
+
+		ui.position.left = ui.position.left + this.baseX;
+		ui.position.top = ui.position.top + this.baseY;
+		this.colliders_data = this.collision_api.get_closest_colliders(ui.position);
+
+		this.on_overlapped_column_change(this.on_start_overlapping_column, this.on_stop_overlapping_column);
+
+		this.on_overlapped_row_change(this.on_start_overlapping_row, this.on_stop_overlapping_row);
+
+		this.$player.addClass('player-revert').removeClass('player').attr({
+				'data-col': this.placeholder_grid_data.col,
+				'data-row': this.placeholder_grid_data.row
+			}).css({
+				'left': '',
+				'top' : ''
+			});
+
+		this.$changed = this.$changed.add(this.$player);
+
+		this.cells_occupied_by_player = this.get_cells_occupied(this.placeholder_grid_data);
+		this.set_cells_player_occupies(this.placeholder_grid_data.col, this.placeholder_grid_data.row);
+
+		this.$player.coords().grid.row = this.placeholder_grid_data.row;
+		this.$player.coords().grid.col = this.placeholder_grid_data.col;
+
+		if(this.options.draggable.stop)
+		{
+			this.options.draggable.stop.call(this, event, ui);
+		}
+
+		this.$preview_holder.remove();
+
+		this.$player = null;
+		this.$helper = null;
+		this.placeholder_grid_data = {};
+		this.player_grid_data = {};
+		this.cells_occupied_by_placeholder = {};
+		this.cells_occupied_by_player = {};
+
+		this.set_dom_grid_height();
+	};
+
+
+	/**
+	 * Executes the callbacks passed as arguments when a column begins to be
+	 * overlapped or stops being overlapped.
+	 *
+	 * @param {Function} start_callback Function executed when a new column
+	 *  begins to be overlapped. The column is passed as first argument.
+	 * @param {Function} stop_callback Function executed when a column stops
+	 *  being overlapped. The column is passed as first argument.
+	 * @method on_overlapped_column_change
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.on_overlapped_column_change = function(start_callback, stop_callback)
+	{
+		if(!this.colliders_data.length)
+		{
+			return this;
+		}
+		var cols = this.get_targeted_columns(this.colliders_data[0].el.data.col);
+
+		var last_n_cols = this.last_cols.length;
+		var n_cols = cols.length;
+		var i;
+
+		for(i = 0; i < n_cols; i++)
+		{
+			if($.inArray(cols[i], this.last_cols) === -1)
+			{
+				(start_callback || $.noop).call(this, cols[i]);
+			}
+		}
+
+		for(i = 0; i < last_n_cols; i++)
+		{
+			if($.inArray(this.last_cols[i], cols) === -1)
+			{
+				(stop_callback || $.noop).call(this, this.last_cols[i]);
+			}
+		}
+
+		this.last_cols = cols;
+
+		return this;
+	};
+
+
+	/**
+	 * Executes the callbacks passed as arguments when a row starts to be
+	 * overlapped or stops being overlapped.
+	 *
+	 * @param {Function} start_callback Function executed when a new row begins
+	 *  to be overlapped. The row is passed as first argument.
+	 * @param {Function} end_callback Function executed when a row stops being
+	 *  overlapped. The row is passed as first argument.
+	 * @method on_overlapped_row_change
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.on_overlapped_row_change = function(start_callback, end_callback)
+	{
+		if(!this.colliders_data.length)
+		{
+			return this;
+		}
+		var rows = this.get_targeted_rows(this.colliders_data[0].el.data.row);
+		var last_n_rows = this.last_rows.length;
+		var n_rows = rows.length;
+		var i;
+
+		for(i = 0; i < n_rows; i++)
+		{
+			if($.inArray(rows[i], this.last_rows) === -1)
+			{
+				(start_callback || $.noop).call(this, rows[i]);
+			}
+		}
+
+		for(i = 0; i < last_n_rows; i++)
+		{
+			if($.inArray(this.last_rows[i], rows) === -1)
+			{
+				(end_callback || $.noop).call(this, this.last_rows[i]);
+			}
+		}
+
+		this.last_rows = rows;
+	};
+
+
+	/**
+	 * Sets the current position of the player
+	 *
+	 * @param {Number} col
+	 * @param {Number} row
+	 * @param {Boolean} no_player
+	 * @method set_player
+	 * @return {object}
+	 */
+	fn.set_player = function(col, row, no_player)
+	{
+		var self = this;
+		if(!no_player)
+		{
+			this.empty_cells_player_occupies();
+		}
+		var cell = !no_player ? self.colliders_data[0].el.data : {col: col};
+		var to_col = cell.col;
+		var to_row = row || cell.row;
+
+		this.player_grid_data = {
+			col   : to_col,
+			row   : to_row,
+			size_y: this.player_grid_data.size_y,
+			size_x: this.player_grid_data.size_x
+		};
+
+		this.cells_occupied_by_player = this.get_cells_occupied(this.player_grid_data);
+
+		var $overlapped_widgets = this.get_widgets_overlapped(this.player_grid_data);
+
+		var constraints = this.widgets_constraints($overlapped_widgets);
+
+		this.manage_movements(constraints.can_go_up, to_col, to_row);
+		this.manage_movements(constraints.can_not_go_up, to_col, to_row);
+
+		/* if there is not panes overlapping in the new player position,
+		 * update the new placeholder position. */
+		if(!$overlapped_widgets.length)
+		{
+			var pp = this.can_go_player_up(this.player_grid_data);
+			if(pp !== false)
+			{
+				to_row = pp;
+			}
+			this.set_placeholder(to_col, to_row);
+		}
+
+		return {
+			col: to_col,
+			row: to_row
+		};
+	};
+
+
+	/**
+	 * See which of the panes in the $panes param collection can go to
+	 * a upper row and which not.
+	 *
+	 * @method widgets_contraints
+	 * @param {jQuery} $widgets A jQuery wrapped collection of
+	 * HTMLElements.
+	 * @return {object} Returns a literal Object with two keys: `can_go_up` &
+	 * `can_not_go_up`. Each contains a set of HTMLElements.
+	 */
+	fn.widgets_constraints = function($widgets)
+	{
+		var $widgets_can_go_up = $([]);
+		var $widgets_can_not_go_up;
+		var wgd_can_go_up = [];
+		var wgd_can_not_go_up = [];
+
+		$widgets.each($.proxy(function(i, w)
+		{
+			var $w = $(w);
+			var wgd = $w.coords().grid;
+			if(this.can_go_widget_up(wgd))
+			{
+				$widgets_can_go_up = $widgets_can_go_up.add($w);
+				wgd_can_go_up.push(wgd);
+			}
+			else
+			{
+				wgd_can_not_go_up.push(wgd);
+			}
+		}, this));
+
+		$widgets_can_not_go_up = $widgets.not($widgets_can_go_up);
+
+		return {
+			can_go_up    : this.sort_by_row_asc(wgd_can_go_up),
+			can_not_go_up: this.sort_by_row_desc(wgd_can_not_go_up)
+		};
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) in ascending way.
+	 *
+	 * @method sort_by_row_asc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_row_asc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(!a.row)
+			{
+				a = $(a).coords().grid;
+				b = $(b).coords().grid;
+			}
+
+			if(a.row > b.row)
+			{
+				return 1;
+			}
+			return -1;
+		});
+
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) placing first the empty cells upper left.
+	 *
+	 * @method sort_by_row_and_col_asc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_row_and_col_asc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(a.row > b.row || a.row === b.row && a.col > b.col)
+			{
+				return 1;
+			}
+			return -1;
+		});
+
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects by column (representing the grid
+	 * coords of each widget) in ascending way.
+	 *
+	 * @method sort_by_col_asc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_col_asc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(a.col > b.col)
+			{
+				return 1;
+			}
+			return -1;
+		});
+
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) in descending way.
+	 *
+	 * @method sort_by_row_desc
+	 * @param {Array} widgets Array of grid coords objects
+	 * @return {Array} Returns the array sorted.
+	 */
+	fn.sort_by_row_desc = function(widgets)
+	{
+		widgets = widgets.sort(function(a, b)
+		{
+			if(a.row + a.size_y < b.row + b.size_y)
+			{
+				return 1;
+			}
+			return -1;
+		});
+		return widgets;
+	};
+
+
+	/**
+	 * Sorts an Array of grid coords objects (representing the grid coords of
+	 * each widget) in descending way.
+	 *
+	 * @method manage_movements
+	 * @param {jQuery} $widgets A jQuery collection of HTMLElements
+	 *  representing the panes you want to move.
+	 * @param {Number} to_col The column to which we want to move the panes.
+	 * @param {Number} to_row The row to which we want to move the panes.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.manage_movements = function($widgets, to_col, to_row)
+	{
+		$.each($widgets, $.proxy(function(i, w)
+		{
+			var wgd = w;
+			var $w = wgd.el;
+
+			var can_go_widget_up = this.can_go_widget_up(wgd);
+
+			if(can_go_widget_up)
+			{
+				//target CAN go up
+				//so move widget up
+				this.move_widget_to($w, can_go_widget_up);
+				this.set_placeholder(to_col, can_go_widget_up + wgd.size_y);
+
+			}
+			else
+			{
+				//target can't go up
+				var can_go_player_up = this.can_go_player_up(this.player_grid_data);
+
+				if(!can_go_player_up)
+				{
+					// target can't go up
+					// player cant't go up
+					// so we need to move widget down to a position that dont
+					// overlaps player
+					var y = (to_row + this.player_grid_data.size_y) - wgd.row;
+
+					this.move_widget_down($w, y);
+					this.set_placeholder(to_col, to_row);
+				}
+			}
+		}, this));
+
+		return this;
+	};
+
+	/**
+	 * Determines if there is a widget in the row and col given. Or if the
+	 * HTMLElement passed as first argument is the player.
+	 *
+	 * @method is_player
+	 * @param {Number|HTMLElement} col_or_el A jQuery wrapped collection of
+	 * HTMLElements.
+	 * @param {Number} [row] The column to which we want to move the panes.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_player = function(col_or_el, row)
+	{
+		if(row && !this.gridmap[col_or_el])
+		{
+			return false;
+		}
+		var $w = row ? this.gridmap[col_or_el][row] : col_or_el;
+		return $w && ($w.is(this.$player) || $w.is(this.$helper));
+	};
+
+
+	/**
+	 * Determines if the widget that is being dragged is currently over the row
+	 * and col given.
+	 *
+	 * @method is_player_in
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_player_in = function(col, row)
+	{
+		var c = this.cells_occupied_by_player || {};
+		return $.inArray(col, c.cols) >= 0 && $.inArray(row, c.rows) >= 0;
+	};
+
+
+	/**
+	 * Determines if the placeholder is currently over the row and col given.
+	 *
+	 * @method is_placeholder_in
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_placeholder_in = function(col, row)
+	{
+		var c = this.cells_occupied_by_placeholder || {};
+		return this.is_placeholder_in_col(col) && $.inArray(row, c.rows) >= 0;
+	};
+
+
+	/**
+	 * Determines if the placeholder is currently over the column given.
+	 *
+	 * @method is_placeholder_in_col
+	 * @param {Number} col The column to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_placeholder_in_col = function(col)
+	{
+		var c = this.cells_occupied_by_placeholder || [];
+		return $.inArray(col, c.cols) >= 0;
+	};
+
+
+	/**
+	 * Determines if the cell represented by col and row params is empty.
+	 *
+	 * @method is_empty
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_empty = function(col, row)
+	{
+		if(typeof this.gridmap[col] !== 'undefined')
+		{
+			if(typeof this.gridmap[col][row] !== 'undefined' && this.gridmap[col][row] === false)
+			{
+				return true;
+			}
+			return false;
+		}
+		return true;
+	};
+
+
+	/**
+	 * Determines if the cell represented by col and row params is occupied.
+	 *
+	 * @method is_occupied
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_occupied = function(col, row)
+	{
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+
+		if(this.gridmap[col][row])
+		{
+			return true;
+		}
+		return false;
+	};
+
+
+	/**
+	 * Determines if there is a widget in the cell represented by col/row params.
+	 *
+	 * @method is_widget
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean|HTMLElement} Returns false if there is no widget,
+	 * else returns the jQuery HTMLElement
+	 */
+	fn.is_widget = function(col, row)
+	{
+		var cell = this.gridmap[col];
+		if(!cell)
+		{
+			return false;
+		}
+
+		cell = cell[row];
+
+		if(cell)
+		{
+			return cell;
+		}
+
+		return false;
+	};
+
+
+	/**
+	 * Determines if there is a widget in the cell represented by col/row
+	 * params and if this is under the widget that is being dragged.
+	 *
+	 * @method is_widget_under_player
+	 * @param {Number} col The column to check.
+	 * @param {Number} row The row to check.
+	 * @return {Boolean} Returns true or false.
+	 */
+	fn.is_widget_under_player = function(col, row)
+	{
+		if(this.is_widget(col, row))
+		{
+			return this.is_player_in(col, row);
+		}
+		return false;
+	};
+
+
+	/**
+	 * Get panes overlapping with the player or with the object passed
+	 * representing the grid cells.
+	 *
+	 * @method get_widgets_under_player
+	 * @return {HTMLElement} Returns a jQuery collection of HTMLElements
+	 */
+	fn.get_widgets_under_player = function(cells)
+	{
+		cells || (cells = this.cells_occupied_by_player || {cols: [], rows: []});
+		var $widgets = $([]);
+
+		$.each(cells.cols, $.proxy(function(i, col)
+		{
+			$.each(cells.rows, $.proxy(function(i, row)
+			{
+				if(this.is_widget(col, row))
+				{
+					$widgets = $widgets.add(this.gridmap[col][row]);
+				}
+			}, this));
+		}, this));
+
+		return $widgets;
+	};
+
+
+	/**
+	 * Put placeholder at the row and column specified.
+	 *
+	 * @method set_placeholder
+	 * @param {Number} col The column to which we want to move the
+	 *  placeholder.
+	 * @param {Number} row The row to which we want to move the
+	 *  placeholder.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.set_placeholder = function(col, row)
+	{
+		var phgd = $.extend({}, this.placeholder_grid_data);
+		var $nexts = this.widgets_below({
+			col   : phgd.col,
+			row   : phgd.row,
+			size_y: phgd.size_y,
+			size_x: phgd.size_x
+		});
+
+		// Prevents panes go out of the grid
+		var right_col = (col + phgd.size_x - 1);
+		if(right_col > this.cols)
+		{
+			col = col - (right_col - col);
+		}
+
+		var moved_down = this.placeholder_grid_data.row < row;
+		var changed_column = this.placeholder_grid_data.col !== col;
+
+		this.placeholder_grid_data.col = col;
+		this.placeholder_grid_data.row = row;
+
+		this.cells_occupied_by_placeholder = this.get_cells_occupied(this.placeholder_grid_data);
+
+		this.$preview_holder.attr({
+			'data-row': row,
+			'data-col': col
+		});
+
+		if(moved_down || changed_column)
+		{
+			$nexts.each($.proxy(function(i, widget)
+			{
+				this.move_widget_up($(widget), this.placeholder_grid_data.col - col + phgd.size_y);
+			}, this));
+		}
+
+
+		var $widgets_under_ph = this.get_widgets_under_player(this.cells_occupied_by_placeholder);
+		if($widgets_under_ph.length)
+		{
+			$widgets_under_ph.each($.proxy(function(i, widget)
+			{
+				var $w = $(widget);
+				this.move_widget_down($w, row + phgd.size_y - $w.data('coords').grid.row);
+			}, this));
+		}
+
+	};
+
+
+	/**
+	 * Determines whether the player can move to a position above.
+	 *
+	 * @method can_go_player_up
+	 * @param {Object} widget_grid_data The actual grid coords object of the
+	 *  player.
+	 * @return {Number|Boolean} If the player can be moved to an upper row
+	 *  returns the row number, else returns false.
+	 */
+	fn.can_go_player_up = function(widget_grid_data)
+	{
+		var p_bottom_row = widget_grid_data.row + widget_grid_data.size_y - 1;
+		var result = true;
+		var upper_rows = [];
+		var min_row = 10000;
+		var $widgets_under_player = this.get_widgets_under_player();
+
+		/* generate an array with columns as index and array with upper rows
+		 * empty as value */
+		this.for_each_column_occupied(widget_grid_data, function(tcol)
+		{
+			var grid_col = this.gridmap[tcol];
+			var r = p_bottom_row + 1;
+			upper_rows[tcol] = [];
+
+			while(--r > 0)
+			{
+				if(this.is_empty(tcol, r) || this.is_player(tcol, r) || this.is_widget(tcol, r) && grid_col[r].is($widgets_under_player))
+				{
+					upper_rows[tcol].push(r);
+					min_row = r < min_row ? r : min_row;
+				}
+				else
+				{
+					break;
+				}
+			}
+
+			if(upper_rows[tcol].length === 0)
+			{
+				result = false;
+				return true; //break
+			}
+
+			upper_rows[tcol].sort(function(a, b)
+			{
+				return a - b;
+			});
+		});
+
+		if(!result)
+		{
+			return false;
+		}
+
+		return this.get_valid_rows(widget_grid_data, upper_rows, min_row);
+	};
+
+
+	/**
+	 * Determines whether a widget can move to a position above.
+	 *
+	 * @method can_go_widget_up
+	 * @param {Object} widget_grid_data The actual grid coords object of the
+	 *  widget we want to check.
+	 * @return {Number|Boolean} If the widget can be moved to an upper row
+	 *  returns the row number, else returns false.
+	 */
+	fn.can_go_widget_up = function(widget_grid_data)
+	{
+		var p_bottom_row = widget_grid_data.row + widget_grid_data.size_y - 1;
+		var result = true;
+		var upper_rows = [];
+		var min_row = 10000;
+
+		/* generate an array with columns as index and array with topmost rows
+		 * empty as value */
+		this.for_each_column_occupied(widget_grid_data, function(tcol)
+		{
+			var grid_col = this.gridmap[tcol];
+			upper_rows[tcol] = [];
+
+			var r = p_bottom_row + 1;
+			// iterate over each row
+			while(--r > 0)
+			{
+				if(this.is_widget(tcol, r) && !this.is_player_in(tcol, r))
+				{
+					if(!grid_col[r].is(widget_grid_data.el))
+					{
+						break;
+					}
+				}
+
+				if(!this.is_player(tcol, r) && !this.is_placeholder_in(tcol, r) && !this.is_player_in(tcol, r))
+				{
+					upper_rows[tcol].push(r);
+				}
+
+				if(r < min_row)
+				{
+					min_row = r;
+				}
+			}
+
+			if(upper_rows[tcol].length === 0)
+			{
+				result = false;
+				return true; //break
+			}
+
+			upper_rows[tcol].sort(function(a, b)
+			{
+				return a - b;
+			});
+		});
+
+		if(!result)
+		{
+			return false;
+		}
+
+		return this.get_valid_rows(widget_grid_data, upper_rows, min_row);
+	};
+
+
+	/**
+	 * Search a valid row for the widget represented by `widget_grid_data' in
+	 * the `upper_rows` array. Iteration starts from row specified in `min_row`.
+	 *
+	 * @method get_valid_rows
+	 * @param {Object} widget_grid_data The actual grid coords object of the
+	 *  player.
+	 * @param {Array} upper_rows An array with columns as index and arrays
+	 *  of valid rows as values.
+	 * @param {Number} min_row The upper row from which the iteration will start.
+	 * @return {Number|Boolean} Returns the upper row valid from the `upper_rows`
+	 *  for the widget in question.
+	 */
+	fn.get_valid_rows = function(widget_grid_data, upper_rows, min_row)
+	{
+		var p_top_row = widget_grid_data.row;
+		var p_bottom_row = widget_grid_data.row + widget_grid_data.size_y - 1;
+		var size_y = widget_grid_data.size_y;
+		var r = min_row - 1;
+		var valid_rows = [];
+
+		while(++r <= p_bottom_row)
+		{
+			var common = true;
+			$.each(upper_rows, function(col, rows)
+			{
+				if($.isArray(rows) && $.inArray(r, rows) === -1)
+				{
+					common = false;
+				}
+			});
+
+			if(common === true)
+			{
+				valid_rows.push(r);
+				if(valid_rows.length === size_y)
+				{
+					break;
+				}
+			}
+		}
+
+		var new_row = false;
+		if(size_y === 1)
+		{
+			if(valid_rows[0] !== p_top_row)
+			{
+				new_row = valid_rows[0] || false;
+			}
+		}
+		else
+		{
+			if(valid_rows[0] !== p_top_row)
+			{
+				new_row = this.get_consecutive_numbers_index(valid_rows, size_y);
+			}
+		}
+
+		return new_row;
+	};
+
+
+	fn.get_consecutive_numbers_index = function(arr, size_y)
+	{
+		var max = arr.length;
+		var result = [];
+		var first = true;
+		var prev = -1; // or null?
+
+		for(var i = 0; i < max; i++)
+		{
+			if(first || arr[i] === prev + 1)
+			{
+				result.push(i);
+				if(result.length === size_y)
+				{
+					break;
+				}
+				first = false;
+			}
+			else
+			{
+				result = [];
+				first = true;
+			}
+
+			prev = arr[i];
+		}
+
+		return result.length >= size_y ? arr[result[0]] : false;
+	};
+
+
+	/**
+	 * Get panes overlapping with the player.
+	 *
+	 * @method get_widgets_overlapped
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.get_widgets_overlapped = function()
+	{
+		var $w;
+		var $widgets = $([]);
+		var used = [];
+		var rows_from_bottom = this.cells_occupied_by_player.rows.slice(0);
+		rows_from_bottom.reverse();
+
+		$.each(this.cells_occupied_by_player.cols, $.proxy(function(i, col)
+		{
+			$.each(rows_from_bottom, $.proxy(function(i, row)
+			{
+				// if there is a widget in the player position
+				if(!this.gridmap[col])
+				{
+					return true;
+				} //next iteration
+				var $w = this.gridmap[col][row];
+				if(this.is_occupied(col, row) && !this.is_player($w) && $.inArray($w, used) === -1)
+				{
+					$widgets = $widgets.add($w);
+					used.push($w);
+				}
+
+			}, this));
+		}, this));
+
+		return $widgets;
+	};
+
+
+	/**
+	 * This callback is executed when the player begins to collide with a column.
+	 *
+	 * @method on_start_overlapping_column
+	 * @param {Number} col The collided column.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_start_overlapping_column = function(col)
+	{
+		this.set_player(col, false);
+	};
+
+
+	/**
+	 * A callback executed when the player begins to collide with a row.
+	 *
+	 * @method on_start_overlapping_row
+	 * @param {Number} row The collided row.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_start_overlapping_row = function(row)
+	{
+		this.set_player(false, row);
+	};
+
+
+	/**
+	 * A callback executed when the the player ends to collide with a column.
+	 *
+	 * @method on_stop_overlapping_column
+	 * @param {Number} col The collided row.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_stop_overlapping_column = function(col)
+	{
+		this.set_player(col, false);
+
+		var self = this;
+		this.for_each_widget_below(col, this.cells_occupied_by_player.rows[0], function(tcol, trow)
+			{
+				self.move_widget_up(this, self.player_grid_data.size_y);
+			});
+	};
+
+
+	/**
+	 * This callback is executed when the player ends to collide with a row.
+	 *
+	 * @method on_stop_overlapping_row
+	 * @param {Number} row The collided row.
+	 * @return {jQuery} Returns a jQuery collection of HTMLElements.
+	 */
+	fn.on_stop_overlapping_row = function(row)
+	{
+		this.set_player(false, row);
+
+		var self = this;
+		var cols = this.cells_occupied_by_player.cols;
+		for(var c = 0, cl = cols.length; c < cl; c++)
+		{
+			this.for_each_widget_below(cols[c], row, function(tcol, trow)
+			{
+				self.move_widget_up(this, self.player_grid_data.size_y);
+			});
+		}
+	};
+
+
+	/**
+	 * Move a widget to a specific row. The cell or cells must be empty.
+	 * If the widget has panes below, all of these panes will be moved also
+	 * if they can.
+	 *
+	 * @method move_widget_to
+	 * @param {HTMLElement} $widget The jQuery wrapped HTMLElement of the
+	 * widget is going to be moved.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.move_widget_to = function($widget, row)
+	{
+		var self = this;
+		var widget_grid_data = $widget.coords().grid;
+		var diff = row - widget_grid_data.row;
+		var $next_widgets = this.widgets_below($widget);
+
+		var can_move_to_new_cell = this.can_move_to(widget_grid_data, widget_grid_data.col, row, $widget);
+
+		if(can_move_to_new_cell === false)
+		{
+			return false;
+		}
+
+		this.remove_from_gridmap(widget_grid_data);
+		widget_grid_data.row = row;
+		this.add_to_gridmap(widget_grid_data);
+		$widget.attr('data-row', row);
+		this.$changed = this.$changed.add($widget);
+
+
+		$next_widgets.each(function(i, widget)
+		{
+			var $w = $(widget);
+			var wgd = $w.coords().grid;
+			var can_go_up = self.can_go_widget_up(wgd);
+			if(can_go_up && can_go_up !== wgd.row)
+			{
+				self.move_widget_to($w, can_go_up);
+			}
+		});
+
+		return this;
+	};
+
+
+	/**
+	 * Move up the specified widget and all below it.
+	 *
+	 * @method move_widget_up
+	 * @param {HTMLElement} $widget The widget you want to move.
+	 * @param {Number} [y_units] The number of cells that the widget has to move.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.move_widget_up = function($widget, y_units)
+	{
+		var el_grid_data = $widget.coords().grid;
+		var actual_row = el_grid_data.row;
+		var moved = [];
+		var can_go_up = true;
+		y_units || (y_units = 1);
+
+		if(!this.can_go_up($widget))
+		{
+			return false;
+		} //break;
+
+		this.for_each_column_occupied(el_grid_data, function(col)
+		{
+			// can_go_up
+			if($.inArray($widget, moved) === -1)
+			{
+				var widget_grid_data = $widget.coords().grid;
+				var next_row = actual_row - y_units;
+				next_row = this.can_go_up_to_row(widget_grid_data, col, next_row);
+
+				if(!next_row)
+				{
+					return true;
+				}
+
+				var $next_widgets = this.widgets_below($widget);
+
+				this.remove_from_gridmap(widget_grid_data);
+				widget_grid_data.row = next_row;
+				this.add_to_gridmap(widget_grid_data);
+				$widget.attr('data-row', widget_grid_data.row);
+				this.$changed = this.$changed.add($widget);
+
+				moved.push($widget);
+
+				$next_widgets.each($.proxy(function(i, widget)
+				{
+					this.move_widget_up($(widget), y_units);
+				}, this));
+			}
+		});
+
+	};
+
+
+	/**
+	 * Move down the specified widget and all below it.
+	 *
+	 * @method move_widget_down
+	 * @param {jQuery} $widget The jQuery object representing the widget
+	 *  you want to move.
+	 * @param {Number} y_units The number of cells that the widget has to move.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.move_widget_down = function($widget, y_units)
+	{
+		var el_grid_data = $widget.coords().grid;
+		var actual_row = el_grid_data.row;
+		var moved = [];
+		var y_diff = y_units;
+
+		if(!$widget)
+		{
+			return false;
+		}
+
+		if($.inArray($widget, moved) === -1)
+		{
+
+			var widget_grid_data = $widget.coords().grid;
+			var next_row = actual_row + y_units;
+			var $next_widgets = this.widgets_below($widget);
+
+			this.remove_from_gridmap(widget_grid_data);
+
+			$next_widgets.each($.proxy(function(i, widget)
+			{
+				var $w = $(widget);
+				var wd = $w.coords().grid;
+				var tmp_y = this.displacement_diff(wd, widget_grid_data, y_diff);
+
+				if(tmp_y > 0)
+				{
+					this.move_widget_down($w, tmp_y);
+				}
+			}, this));
+
+			widget_grid_data.row = next_row;
+			this.update_widget_position(widget_grid_data, $widget);
+			$widget.attr('data-row', widget_grid_data.row);
+			this.$changed = this.$changed.add($widget);
+
+			moved.push($widget);
+		}
+	};
+
+
+	/**
+	 * Check if the widget can move to the specified row, else returns the
+	 * upper row possible.
+	 *
+	 * @method can_go_up_to_row
+	 * @param {Number} widget_grid_data The current grid coords object of the
+	 *  widget.
+	 * @param {Number} col The target column.
+	 * @param {Number} row The target row.
+	 * @return {Boolean|Number} Returns the row number if the widget can move
+	 *  to the target position, else returns false.
+	 */
+	fn.can_go_up_to_row = function(widget_grid_data, col, row)
+	{
+		var ga = this.gridmap;
+		var result = true;
+		var urc = []; // upper_rows_in_columns
+		var actual_row = widget_grid_data.row;
+		var r;
+
+		/* generate an array with columns as index and array with
+		 * upper rows empty in the column */
+		this.for_each_column_occupied(widget_grid_data, function(tcol)
+		{
+			var grid_col = ga[tcol];
+			urc[tcol] = [];
+
+			r = actual_row;
+			while(r--)
+			{
+				if(this.is_empty(tcol, r) && !this.is_placeholder_in(tcol, r))
+				{
+					urc[tcol].push(r);
+				}
+				else
+				{
+					break;
+				}
+			}
+
+			if(!urc[tcol].length)
+			{
+				result = false;
+				return true;
+			}
+
+		});
+
+		if(!result)
+		{
+			return false;
+		}
+
+		/* get common rows starting from upper position in all the columns
+		 * that widget occupies */
+		r = row;
+		for(r = 1; r < actual_row; r++)
+		{
+			var common = true;
+
+			for(var uc = 0, ucl = urc.length; uc < ucl; uc++)
+			{
+				if(urc[uc] && $.inArray(r, urc[uc]) === -1)
+				{
+					common = false;
+				}
+			}
+
+			if(common === true)
+			{
+				result = r;
+				break;
+			}
+		}
+
+		return result;
+	};
+
+
+	fn.displacement_diff = function(widget_grid_data, parent_bgd, y_units)
+	{
+		var actual_row = widget_grid_data.row;
+		var diffs = [];
+		var parent_max_y = parent_bgd.row + parent_bgd.size_y;
+
+		this.for_each_column_occupied(widget_grid_data, function(col)
+		{
+			var temp_y_units = 0;
+
+			for(var r = parent_max_y; r < actual_row; r++)
+			{
+				if(this.is_empty(col, r))
+				{
+					temp_y_units = temp_y_units + 1;
+				}
+			}
+
+			diffs.push(temp_y_units);
+		});
+
+		var max_diff = Math.max.apply(Math, diffs);
+		y_units = (y_units - max_diff);
+
+		return y_units > 0 ? y_units : 0;
+	};
+
+
+	/**
+	 * Get panes below a widget.
+	 *
+	 * @method widgets_below
+	 * @param {HTMLElement} $el The jQuery wrapped HTMLElement.
+	 * @return {jQuery} A jQuery collection of HTMLElements.
+	 */
+	fn.widgets_below = function($el)
+	{
+		var el_grid_data = $.isPlainObject($el) ? $el : $el.coords().grid;
+		var self = this;
+		var ga = this.gridmap;
+		var next_row = el_grid_data.row + el_grid_data.size_y - 1;
+		var $nexts = $([]);
+
+		this.for_each_column_occupied(el_grid_data, function(col)
+		{
+			self.for_each_widget_below(col, next_row, function(tcol, trow)
+			{
+				if(!self.is_player(this) && $.inArray(this, $nexts) === -1)
+				{
+					$nexts = $nexts.add(this);
+					return true; // break
+				}
+			});
+		});
+
+		return this.sort_by_row_asc($nexts);
+	};
+
+
+	/**
+	 * Update the array of mapped positions with the new player position.
+	 *
+	 * @method set_cells_player_occupies
+	 * @param {Number} col The new player col.
+	 * @param {Number} col The new player row.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.set_cells_player_occupies = function(col, row)
+	{
+		this.remove_from_gridmap(this.placeholder_grid_data);
+		this.placeholder_grid_data.col = col;
+		this.placeholder_grid_data.row = row;
+		this.add_to_gridmap(this.placeholder_grid_data, this.$player);
+		return this;
+	};
+
+
+	/**
+	 * Remove from the array of mapped positions the reference to the player.
+	 *
+	 * @method empty_cells_player_occupies
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.empty_cells_player_occupies = function()
+	{
+		this.remove_from_gridmap(this.placeholder_grid_data);
+		return this;
+	};
+
+
+	fn.can_go_up = function($el)
+	{
+		var el_grid_data = $el.coords().grid;
+		var initial_row = el_grid_data.row;
+		var prev_row = initial_row - 1;
+		var ga = this.gridmap;
+		var upper_rows_by_column = [];
+
+		var result = true;
+		if(initial_row === 1)
+		{
+			return false;
+		}
+
+		this.for_each_column_occupied(el_grid_data, function(col)
+		{
+			var $w = this.is_widget(col, prev_row);
+
+			if(this.is_occupied(col, prev_row) || this.is_player(col, prev_row) || this.is_placeholder_in(col, prev_row) || this.is_player_in(col, prev_row))
+			{
+				result = false;
+				return true; //break
+			}
+		});
+
+		return result;
+	};
+
+
+	/**
+	 * Check if it's possible to move a widget to a specific col/row. It takes
+	 * into account the dimensions (`size_y` and `size_x` attrs. of the grid
+	 *  coords object) the widget occupies.
+	 *
+	 * @method can_move_to
+	 * @param {Object} widget_grid_data The grid coords object that represents
+	 *  the widget.
+	 * @param {Object} col The col to check.
+	 * @param {Object} row The row to check.
+	 * @param {Number} [max_row] The max row allowed.
+	 * @return {Boolean} Returns true if all cells are empty, else return false.
+	 */
+	fn.can_move_to = function(widget_grid_data, col, row, max_row)
+	{
+		var ga = this.gridmap;
+		var $w = widget_grid_data.el;
+		var future_wd = {
+			size_y: widget_grid_data.size_y,
+			size_x: widget_grid_data.size_x,
+			col   : col,
+			row   : row
+		};
+		var result = true;
+
+		//Prevents panes go out of the grid
+		var right_col = col + widget_grid_data.size_x - 1;
+		if(right_col > this.cols)
+		{
+			return false;
+		}
+
+		if(max_row && max_row < row + widget_grid_data.size_y - 1)
+		{
+			return false;
+		}
+
+		this.for_each_cell_occupied(future_wd, function(tcol, trow)
+		{
+			var $tw = this.is_widget(tcol, trow);
+			if($tw && (!widget_grid_data.el || $tw.is($w)))
+			{
+				result = false;
+			}
+		});
+
+		return result;
+	};
+
+
+	/**
+	 * Given the leftmost column returns all columns that are overlapping
+	 *  with the player.
+	 *
+	 * @method get_targeted_columns
+	 * @param {Number} [from_col] The leftmost column.
+	 * @return {Array} Returns an array with column numbers.
+	 */
+	fn.get_targeted_columns = function(from_col)
+	{
+		var max = (from_col || this.player_grid_data.col) + (this.player_grid_data.size_x - 1);
+		var cols = [];
+		for(var col = from_col; col <= max; col++)
+		{
+			cols.push(col);
+		}
+		return cols;
+	};
+
+
+	/**
+	 * Given the upper row returns all rows that are overlapping with the player.
+	 *
+	 * @method get_targeted_rows
+	 * @param {Number} [from_row] The upper row.
+	 * @return {Array} Returns an array with row numbers.
+	 */
+	fn.get_targeted_rows = function(from_row)
+	{
+		var max = (from_row || this.player_grid_data.row) + (this.player_grid_data.size_y - 1);
+		var rows = [];
+		for(var row = from_row; row <= max; row++)
+		{
+			rows.push(row);
+		}
+		return rows;
+	};
+
+	/**
+	 * Get all columns and rows that a widget occupies.
+	 *
+	 * @method get_cells_occupied
+	 * @param {Object} el_grid_data The grid coords object of the widget.
+	 * @return {Object} Returns an object like `{ cols: [], rows: []}`.
+	 */
+	fn.get_cells_occupied = function(el_grid_data)
+	{
+		var cells = { cols: [], rows: []};
+		var i;
+		if(arguments[1] instanceof jQuery)
+		{
+			el_grid_data = arguments[1].coords().grid;
+		}
+
+		for(i = 0; i < el_grid_data.size_x; i++)
+		{
+			var col = el_grid_data.col + i;
+			cells.cols.push(col);
+		}
+
+		for(i = 0; i < el_grid_data.size_y; i++)
+		{
+			var row = el_grid_data.row + i;
+			cells.rows.push(row);
+		}
+
+		return cells;
+	};
+
+
+	/**
+	 * Iterate over the cells occupied by a widget executing a function for
+	 * each one.
+	 *
+	 * @method for_each_cell_occupied
+	 * @param {Object} el_grid_data The grid coords object that represents the
+	 *  widget.
+	 * @param {Function} callback The function to execute on each column
+	 *  iteration. Column and row are passed as arguments.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_cell_occupied = function(grid_data, callback)
+	{
+		this.for_each_column_occupied(grid_data, function(col)
+		{
+			this.for_each_row_occupied(grid_data, function(row)
+			{
+				callback.call(this, col, row);
+			});
+		});
+		return this;
+	};
+
+
+	/**
+	 * Iterate over the columns occupied by a widget executing a function for
+	 * each one.
+	 *
+	 * @method for_each_column_occupied
+	 * @param {Object} el_grid_data The grid coords object that represents
+	 *  the widget.
+	 * @param {Function} callback The function to execute on each column
+	 *  iteration. The column number is passed as first argument.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_column_occupied = function(el_grid_data, callback)
+	{
+		for(var i = 0; i < el_grid_data.size_x; i++)
+		{
+			var col = el_grid_data.col + i;
+			callback.call(this, col, el_grid_data);
+		}
+	};
+
+
+	/**
+	 * Iterate over the rows occupied by a widget executing a function for
+	 * each one.
+	 *
+	 * @method for_each_row_occupied
+	 * @param {Object} el_grid_data The grid coords object that represents
+	 *  the widget.
+	 * @param {Function} callback The function to execute on each column
+	 *  iteration. The row number is passed as first argument.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_row_occupied = function(el_grid_data, callback)
+	{
+		for(var i = 0; i < el_grid_data.size_y; i++)
+		{
+			var row = el_grid_data.row + i;
+			callback.call(this, row, el_grid_data);
+		}
+	};
+
+
+	fn._traversing_widgets = function(type, direction, col, row, callback)
+	{
+		var ga = this.gridmap;
+		if(!ga[col])
+		{
+			return;
+		}
+
+		var cr, max;
+		var action = type + '/' + direction;
+		if(arguments[2] instanceof jQuery)
+		{
+			var el_grid_data = arguments[2].coords().grid;
+			col = el_grid_data.col;
+			row = el_grid_data.row;
+			callback = arguments[3];
+		}
+		var matched = [];
+		var trow = row;
+
+
+		var methods = {
+			'for_each/above': function()
+			{
+				while(trow--)
+				{
+					if(trow > 0 && this.is_widget(col, trow) && $.inArray(ga[col][trow], matched) === -1)
+					{
+						cr = callback.call(ga[col][trow], col, trow);
+						matched.push(ga[col][trow]);
+						if(cr)
+						{
+							break;
+						}
+					}
+				}
+			},
+			'for_each/below': function()
+			{
+				for(trow = row + 1, max = ga[col].length; trow < max; trow++)
+				{
+					if(this.is_widget(col, trow) && $.inArray(ga[col][trow], matched) === -1)
+					{
+						cr = callback.call(ga[col][trow], col, trow);
+						matched.push(ga[col][trow]);
+						if(cr)
+						{
+							break;
+						}
+					}
+				}
+			}
+		};
+
+		if(methods[action])
+		{
+			methods[action].call(this);
+		}
+	};
+
+
+	/**
+	 * Iterate over each widget above the column and row specified.
+	 *
+	 * @method for_each_widget_above
+	 * @param {Number} col The column to start iterating.
+	 * @param {Number} row The row to start iterating.
+	 * @param {Function} callback The function to execute on each widget
+	 *  iteration. The value of `this` inside the function is the jQuery
+	 *  wrapped HTMLElement.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_widget_above = function(col, row, callback)
+	{
+		this._traversing_widgets('for_each', 'above', col, row, callback);
+		return this;
+	};
+
+
+	/**
+	 * Iterate over each widget below the column and row specified.
+	 *
+	 * @method for_each_widget_below
+	 * @param {Number} col The column to start iterating.
+	 * @param {Number} row The row to start iterating.
+	 * @param {Function} callback The function to execute on each widget
+	 *  iteration. The value of `this` inside the function is the jQuery wrapped
+	 *  HTMLElement.
+	 * @return {Class} Returns the instance of the Gridster Class.
+	 */
+	fn.for_each_widget_below = function(col, row, callback)
+	{
+		this._traversing_widgets('for_each', 'below', col, row, callback);
+		return this;
+	};
+
+
+	/**
+	 * Returns the highest occupied cell in the grid.
+	 *
+	 * @method get_highest_occupied_cell
+	 * @return {Object} Returns an object with `col` and `row` numbers.
+	 */
+	fn.get_highest_occupied_cell = function()
+	{
+		var r;
+		var gm = this.gridmap;
+		var rows = [];
+		var row_in_col = [];
+		for(var c = gm.length - 1; c >= 1; c--)
+		{
+			for(r = gm[c].length - 1; r >= 1; r--)
+			{
+				if(this.is_widget(c, r))
+				{
+					rows.push(r);
+					row_in_col[r] = c;
+					break;
+				}
+			}
+		}
+
+		var highest_row = Math.max.apply(Math, rows);
+
+		this.highest_occupied_cell = {
+			col: row_in_col[highest_row],
+			row: highest_row
+		};
+
+		return this.highest_occupied_cell;
+	};
+
+
+	fn.get_widgets_from = function(col, row)
+	{
+		var ga = this.gridmap;
+		var $widgets = $();
+
+		if(col)
+		{
+			$widgets = $widgets.add(this.$widgets.filter(function()
+			{
+				var tcol = $(this).attr('data-col');
+				return (tcol === col || tcol > col);
+			}));
+		}
+
+		if(row)
+		{
+			$widgets = $widgets.add(this.$widgets.filter(function()
+			{
+				var trow = $(this).attr('data-row');
+				return (trow === row || trow > row);
+			}));
+		}
+
+		return $widgets;
+	};
+
+
+	/**
+	 * Set the current height of the parent grid.
+	 *
+	 * @method set_dom_grid_height
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.set_dom_grid_height = function()
+	{
+		var r = this.get_highest_occupied_cell().row + 1;
+		this.$el.css('height', r * this.min_widget_height);
+		return this;
+	};
+
+
+	/**
+	 * It generates the neccessary styles to position the panes.
+	 *
+	 * @method generate_stylesheet
+	 * @param {Number} rows Number of columns.
+	 * @param {Number} cols Number of rows.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.generate_stylesheet = function(opts)
+	{
+		var styles = '';
+		var max_size_x = this.options.max_size_x;
+		var max_rows = 0;
+		var max_cols = 0;
+		var i;
+		var rules;
+
+		opts || (opts = {});
+		opts.cols || (opts.cols = this.cols);
+		opts.rows || (opts.rows = this.rows);
+		opts.namespace || (opts.namespace = this.options.namespace);
+		opts.widget_base_dimensions || (opts.widget_base_dimensions = this.options.widget_base_dimensions);
+		opts.widget_margins || (opts.widget_margins = this.options.widget_margins);
+		opts.min_widget_width = (opts.widget_margins[0] * 2) + opts.widget_base_dimensions[0];
+		opts.min_widget_height = (opts.widget_margins[1] * 2) + opts.widget_base_dimensions[1];
+
+		// don't duplicate stylesheets for the same configuration
+		var serialized_opts = $.param(opts);
+		if($.inArray(serialized_opts, Gridster.generated_stylesheets) >= 0)
+		{
+			return false;
+		}
+
+		Gridster.generated_stylesheets.push(serialized_opts);
+
+		/* generate CSS styles for cols */
+		for(i = opts.cols; i >= 0; i--)
+		{
+			styles += (opts.namespace + ' [data-col="' + (i + 1) + '"] { left:' + ((i * opts.widget_base_dimensions[0]) + (i * opts.widget_margins[0]) + ((i + 1) * opts.widget_margins[0])) + 'px;} ');
+		}
+
+		/* generate CSS styles for rows */
+		for(i = opts.rows; i >= 0; i--)
+		{
+			styles += (opts.namespace + ' [data-row="' + (i + 1) + '"] { top:' + ((i * opts.widget_base_dimensions[1]) + (i * opts.widget_margins[1]) + ((i + 1) * opts.widget_margins[1]) ) + 'px;} ');
+		}
+
+		for(var y = 1; y <= opts.rows; y++)
+		{
+			styles += (opts.namespace + ' [data-sizey="' + y + '"] { height:' + (y * opts.widget_base_dimensions[1] + (y - 1) * (opts.widget_margins[1] * 2)) + 'px;}');
+		}
+
+		for(var x = 1; x <= max_size_x; x++)
+		{
+			styles += (opts.namespace + ' [data-sizex="' + x + '"] { width:' + (x * opts.widget_base_dimensions[0] + (x - 1) * (opts.widget_margins[0] * 2)) + 'px;}');
+		}
+
+		return this.add_style_tag(styles);
+	};
+
+
+	/**
+	 * Injects the given CSS as string to the head of the document.
+	 *
+	 * @method add_style_tag
+	 * @param {String} css The styles to apply.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_style_tag = function(css)
+	{
+		var d = document;
+		var tag = d.createElement('style');
+
+		d.getElementsByTagName('head')[0].appendChild(tag);
+		tag.setAttribute('type', 'text/css');
+
+		if(tag.styleSheet)
+		{
+			tag.styleSheet.cssText = css;
+		}
+		else
+		{
+			tag.appendChild(document.createTextNode(css));
+		}
+
+		this.$style_tags = this.$style_tags.add(tag);
+
+		return this;
+	};
+
+
+	/**
+	 * Remove the style tag with the associated id from the head of the document
+	 *
+	 * @method  remove_style_tag
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.remove_style_tags = function()
+	{
+		this.$style_tags.remove();
+	};
+
+
+	/**
+	 * Generates a faux grid to collide with it when a widget is dragged and
+	 * detect row or column that we want to go.
+	 *
+	 * @method generate_faux_grid
+	 * @param {Number} rows Number of columns.
+	 * @param {Number} cols Number of rows.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.generate_faux_grid = function(rows, cols)
+	{
+		this.faux_grid = [];
+		this.gridmap = [];
+		var col;
+		var row;
+		for(col = cols; col > 0; col--)
+		{
+			this.gridmap[col] = [];
+			for(row = rows; row > 0; row--)
+			{
+				this.add_faux_cell(row, col);
+			}
+		}
+		return this;
+	};
+
+
+	/**
+	 * Add cell to the faux grid.
+	 *
+	 * @method add_faux_cell
+	 * @param {Number} row The row for the new faux cell.
+	 * @param {Number} col The col for the new faux cell.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_faux_cell = function(row, col)
+	{
+		var coords = $({
+			left        : this.baseX + ((col - 1) * this.min_widget_width),
+			top         : this.baseY + (row - 1) * this.min_widget_height,
+			width       : this.min_widget_width,
+			height      : this.min_widget_height,
+			col         : col,
+			row         : row,
+			original_col: col,
+			original_row: row
+		}).coords();
+
+		if(!$.isArray(this.gridmap[col]))
+		{
+			this.gridmap[col] = [];
+		}
+
+		this.gridmap[col][row] = false;
+		this.faux_grid.push(coords);
+
+		return this;
+	};
+
+
+	/**
+	 * Add rows to the faux grid.
+	 *
+	 * @method add_faux_rows
+	 * @param {Number} rows The number of rows you want to add to the faux grid.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_faux_rows = function(rows)
+	{
+		var actual_rows = this.rows;
+		var max_rows = actual_rows + (rows || 1);
+
+		for(var r = max_rows; r > actual_rows; r--)
+		{
+			for(var c = this.cols; c >= 1; c--)
+			{
+				this.add_faux_cell(r, c);
+			}
+		}
+
+		this.rows = max_rows;
+
+		if(this.options.autogenerate_stylesheet)
+		{
+			this.generate_stylesheet();
+		}
+
+		return this;
+	};
+
+	/**
+	 * Add cols to the faux grid.
+	 *
+	 * @method add_faux_cols
+	 * @param {Number} cols The number of cols you want to add to the faux grid.
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.add_faux_cols = function(cols)
+	{
+		var actual_cols = this.cols;
+		var max_cols = actual_cols + (cols || 1);
+
+		for(var c = actual_cols; c < max_cols; c++)
+		{
+			for(var r = this.rows; r >= 1; r--)
+			{
+				this.add_faux_cell(r, c);
+			}
+		}
+
+		this.cols = max_cols;
+
+		if(this.options.autogenerate_stylesheet)
+		{
+			this.generate_stylesheet();
+		}
+
+		return this;
+	};
+
+
+	/**
+	 * Recalculates the offsets for the faux grid. You need to use it when
+	 * the browser is resized.
+	 *
+	 * @method recalculate_faux_grid
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.recalculate_faux_grid = function()
+	{
+		var aw = this.$wrapper.width();
+		this.baseX = ($(window).width() - aw) / 2;
+		this.baseY = this.$wrapper.offset().top;
+
+		$.each(this.faux_grid, $.proxy(function(i, coords)
+		{
+			this.faux_grid[i] = coords.update({
+				left: this.baseX + (coords.data.col - 1) * this.min_widget_width,
+				top : this.baseY + (coords.data.row - 1) * this.min_widget_height
+			});
+
+		}, this));
+
+		return this;
+	};
+
+
+	/**
+	 * Get all panes in the DOM and register them.
+	 *
+	 * @method get_widgets_from_DOM
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.get_widgets_from_DOM = function()
+	{
+		this.$widgets.each($.proxy(function(i, widget)
+		{
+			this.register_widget($(widget));
+		}, this));
+		return this;
+	};
+
+
+	/**
+	 * Calculate columns and rows to be set based on the configuration
+	 *  parameters, grid dimensions, etc ...
+	 *
+	 * @method generate_grid_and_stylesheet
+	 * @return {Object} Returns the instance of the Gridster class.
+	 */
+	fn.generate_grid_and_stylesheet = function()
+	{
+		var aw = this.$wrapper.width();
+		var ah = this.$wrapper.height();
+		var max_cols = this.options.max_cols;
+
+		var cols = Math.floor(aw / this.min_widget_width) + this.options.extra_cols;
+
+		var actual_cols = this.$widgets.map(function()
+		{
+			return $(this).attr('data-col');
+		}).get();
+
+		//needed to pass tests with phantomjs
+		actual_cols.length || (actual_cols = [0]);
+
+		var min_cols = Math.max.apply(Math, actual_cols);
+
+		// get all rows that could be occupied by the current panes
+		var max_rows = this.options.extra_rows;
+		this.$widgets.each(function(i, w)
+		{
+			max_rows += (+$(w).attr('data-sizey'));
+		});
+
+		this.cols = cols;//Math.max(Math.min(min_cols, cols), 1, this.options.min_cols);
+
+		/*if(max_cols && max_cols >= min_cols && max_cols < this.cols)
+		{
+			this.cols = max_cols;
+		}*/
+
+		this.rows = Math.max(max_rows, this.options.min_rows);
+
+		this.baseX = ($(window).width() - aw) / 2;
+		this.baseY = this.$wrapper.offset().top;
+
+		// left and right gutters not included
+		this.container_width = (this.cols * this.options.widget_base_dimensions[0]) + ((this.cols - 1) * 2 * this.options.widget_margins[0]);
+
+		if(this.options.autogenerate_stylesheet)
+		{
+			this.generate_stylesheet();
+		}
+
+		return this.generate_faux_grid(this.rows, this.cols);
+	};
+
+	/**
+	 * Destroy this gridster by removing any sign of its presence, making it easy to avoid memory leaks
+	 *
+	 * @method destroy
+	 * @return {undefined}
+	 */
+	fn.destroy = function()
+	{
+		// remove bound callback on window resize
+		$(window).unbind('.gridster');
+
+		if(this.drag_api)
+		{
+			this.drag_api.destroy();
+		}
+
+		this.remove_style_tags();
+
+		// lastly, remove gridster element
+		// this will additionally cause any data associated to this element to be removed, including this
+		// very gridster instance
+		this.$el.remove();
+
+		return this;
+	};
+
+
+	//jQuery adapter
+	$.fn.gridster = function(options)
+	{
+		return this.each(function()
+		{
+			if(!$(this).data('gridster'))
+			{
+				$(this).data('gridster', new Gridster(this, options));
+			}
+		});
+	};
+
+	$.Gridster = fn;
+
+}(jQuery, window, document));
+
+;
+(function($, window, document, undefined)
+{
+
+	var fn = $.Gridster;
+
+	fn.widgets_in_col = function(col)
+	{
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+
+		for(var i = this.gridmap[col].length - 1; i >= 0; i--)
+		{
+			if(this.is_widget(col, i) !== false)
+			{
+				return true;
+			}
+		}
+
+		return false;
+	};
+
+	fn.widgets_in_row = function(row)
+	{
+		for(var i = this.gridmap.length; i >= 1; i--)
+		{
+			if(this.is_widget(i, row) !== false)
+			{
+				return true;
+			}
+		}
+
+		return false;
+	};
+
+
+	fn.widgets_in_range = function(col1, row1, col2, row2)
+	{
+		var valid_cols = [];
+		var valid_rows = [];
+		var $widgets = $([]);
+		var c, r, $w, wgd;
+
+		for(c = col2; c >= col1; c--)
+		{
+			for(r = row2; r >= row1; r--)
+			{
+				$w = this.is_widget(c, r);
+
+				if($w !== false)
+				{
+					wgd = $w.data('coords').grid;
+					if(wgd.col >= col1 && wgd.col <= col2 && wgd.row >= row1 && wgd.row <= row2)
+					{
+						$widgets = $widgets.add($w);
+					}
+				}
+			}
+		}
+
+		return $widgets;
+	};
+
+
+	fn.get_bottom_most_occupied_cell = function()
+	{
+		var row = 0;
+		var col = 0;
+		this.for_each_cell(function($el, c, r)
+		{
+			if($el && r > row)
+			{
+				row = r;
+				col = c;
+			}
+		});
+
+		return {col: col, row: row};
+	};
+
+
+	fn.get_right_most_occupied_cell = function()
+	{
+		var row = 0;
+		var col = 0;
+		this.for_each_cell(function($el, c, r)
+		{
+			if($el)
+			{
+				row = r;
+				col = c;
+				return false;
+			}
+		});
+
+		return {col: col, row: row};
+	};
+
+
+	fn.for_each_cell = function(callback, gridmap)
+	{
+		gridmap || (gridmap = this.gridmap);
+		var cols = gridmap.length;
+		var rows = gridmap[1].length;
+
+		cols_iter:
+			for(var c = cols - 1; c >= 1; c--)
+			{
+				for(var r = rows - 1; r >= 1; r--)
+				{
+					var $el = gridmap[c] && gridmap[c][r];
+					if(callback)
+					{
+						if(callback.call(this, $el, c, r) === false)
+						{
+							break cols_iter;
+						}
+						else
+						{
+							continue;
+						}
+					}
+				}
+			}
+	};
+
+
+	fn.next_position_in_range = function(size_x, size_y, max_rows)
+	{
+		size_x || (size_x = 1);
+		size_y || (size_y = 1);
+		var ga = this.gridmap;
+		var cols_l = ga.length;
+		var valid_pos = [];
+		var rows_l;
+
+		for(var c = 1; c < cols_l; c++)
+		{
+			rows_l = max_rows || ga[c].length;
+			for(var r = 1; r <= rows_l; r++)
+			{
+				var can_move_to = this.can_move_to({
+					size_x: size_x,
+					size_y: size_y
+				}, c, r, max_rows);
+
+				if(can_move_to)
+				{
+					valid_pos.push({
+						col   : c,
+						row   : r,
+						size_y: size_y,
+						size_x: size_x
+					});
+				}
+			}
+		}
+
+		if(valid_pos.length >= 1)
+		{
+			return this.sort_by_col_asc(valid_pos)[0];
+		}
+
+		return false;
+	};
+
+
+	fn.closest_to_right = function(col, row)
+	{
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+		var cols_l = this.gridmap.length - 1;
+
+		for(var c = col; c <= cols_l; c++)
+		{
+			if(this.gridmap[c][row])
+			{
+				return { col: c, row: row };
+			}
+		}
+
+		return false;
+	};
+
+
+	fn.closest_to_left = function(col, row)
+	{
+		var cols_l = this.gridmap.length - 1;
+		if(!this.gridmap[col])
+		{
+			return false;
+		}
+
+		for(var c = col; c >= 1; c--)
+		{
+			if(this.gridmap[c][row])
+			{
+				return { col: c, row: row };
+			}
+		}
+
+		return false;
+	};
+
+}(jQuery, window, document));
diff --git a/WebSites/errors/403/lib/js/thirdparty/jquery.js b/WebSites/errors/403/lib/js/thirdparty/jquery.js
new file mode 100755
index 0000000..2a40d4c
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/jquery.js
@@ -0,0 +1,6 @@
+/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-2.0.3.min.map
+*/
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)
+};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&qt(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)
+},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||".5",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;for(;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=q.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=q.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;q.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(qn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function qn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:qn("show"),slideUp:qn("hide"),slideToggle:qn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=Hn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=Hn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function Hn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window);
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/js/thirdparty/jquery.xdomainrequest.js b/WebSites/errors/403/lib/js/thirdparty/jquery.xdomainrequest.js
new file mode 100644
index 0000000..11a42c5
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/jquery.xdomainrequest.js
@@ -0,0 +1,7 @@
+/*!
+ * jQuery-ajaxTransport-XDomainRequest - v1.0.3 - 2014-06-06
+ * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
+ * Copyright (c) 2014 Jason Moon (@JSONMOON)
+ * Licensed MIT (/blob/master/LICENSE.txt)
+ */
+(function(a){if(typeof define==='function'&&define.amd){define(['jquery'],a)}else if(typeof exports==='object'){module.exports=a(require('jquery'))}else{a(jQuery)}}(function($){if($.support.cors||!$.ajaxTransport||!window.XDomainRequest){return}var n=/^https?:\/\//i;var o=/^get|post$/i;var p=new RegExp('^'+location.protocol,'i');$.ajaxTransport('* text html xml json',function(j,k,l){if(!j.crossDomain||!j.async||!o.test(j.type)||!n.test(j.url)||!p.test(j.url)){return}var m=null;return{send:function(f,g){var h='';var i=(k.dataType||'').toLowerCase();m=new XDomainRequest();if(/^\d+$/.test(k.timeout)){m.timeout=k.timeout}m.ontimeout=function(){g(500,'timeout')};m.onload=function(){var a='Content-Length: '+m.responseText.length+'\r\nContent-Type: '+m.contentType;var b={code:200,message:'success'};var c={text:m.responseText};try{if(i==='html'||/text\/html/i.test(m.contentType)){c.html=m.responseText}else if(i==='json'||(i!=='text'&&/\/json/i.test(m.contentType))){try{c.json=$.parseJSON(m.responseText)}catch(e){b.code=500;b.message='parseerror'}}else if(i==='xml'||(i!=='text'&&/\/xml/i.test(m.contentType))){var d=new ActiveXObject('Microsoft.XMLDOM');d.async=false;try{d.loadXML(m.responseText)}catch(e){d=undefined}if(!d||!d.documentElement||d.getElementsByTagName('parsererror').length){b.code=500;b.message='parseerror';throw'Invalid XML: '+m.responseText;}c.xml=d}}catch(parseMessage){throw parseMessage;}finally{g(b.code,b.message,c,a)}};m.onprogress=function(){};m.onerror=function(){g(500,'error',{text:m.responseText})};if(k.data){h=($.type(k.data)==='string')?k.data:$.param(k.data)}m.open(j.type,j.url);m.send(h)},abort:function(){if(m){m.abort()}}}})}));
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/js/thirdparty/knockout.js b/WebSites/errors/403/lib/js/thirdparty/knockout.js
new file mode 100755
index 0000000..bc03f7f
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/knockout.js
@@ -0,0 +1,94 @@
+// Knockout JavaScript library v3.0.0
+// (c) Steven Sanderson - http://knockoutjs.com/
+// License: MIT (http://www.opensource.org/licenses/mit-license.php)
+
+(function() {(function(q){var y=this||(0,eval)("this"),w=y.document,K=y.navigator,u=y.jQuery,B=y.JSON;(function(q){"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?q(module.exports||exports):"function"===typeof define&&define.amd?define(["exports"],q):q(y.ko={})})(function(F){function G(a,c){return null===a||typeof a in N?a===c:!1}function H(b,c,d,e){a.d[b]={init:function(b){a.a.f.set(b,L,{});return{controlsDescendantBindings:!0}},update:function(b,h,k,m,f){k=a.a.f.get(b,L);h=a.a.c(h());
+m=!d!==!h;var p=!k.ob;if(p||c||m!==k.Db)p&&(k.ob=a.a.Ya(a.e.childNodes(b),!0)),m?(p||a.e.S(b,a.a.Ya(k.ob)),a.Ta(e?e(f,h):f,b)):a.e.Z(b),k.Db=m}};a.g.Y[b]=!1;a.e.P[b]=!0}var a="undefined"!==typeof F?F:{};a.b=function(b,c){for(var d=b.split("."),e=a,g=0;g<d.length-1;g++)e=e[d[g]];e[d[d.length-1]]=c};a.s=function(a,c,d){a[c]=d};a.version="3.0.0";a.b("version",a.version);a.a=function(){function b(a,b){for(var f in a)a.hasOwnProperty(f)&&b(f,a[f])}function c(k,b){if("input"!==a.a.v(k)||!k.type||"click"!=
+b.toLowerCase())return!1;var f=k.type;return"checkbox"==f||"radio"==f}var d={},e={};d[K&&/Firefox\/2/i.test(K.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];d.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(d,function(a,b){if(b.length)for(var f=0,c=b.length;f<c;f++)e[b[f]]=a});var g={propertychange:!0},h=w&&function(){for(var a=3,b=w.createElement("div"),f=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+
+++a+"]><i></i><![endif]--\x3e",f[0];);return 4<a?a:q}();return{$a:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],n:function(a,b){for(var f=0,c=a.length;f<c;f++)b(a[f])},l:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var f=0,c=a.length;f<c;f++)if(a[f]===b)return f;return-1},Ua:function(a,b,f){for(var c=0,d=a.length;c<d;c++)if(b.call(f,a[c]))return a[c];return null},ia:function(b,c){var f=a.a.l(b,c);0<=f&&b.splice(f,1)},Va:function(b){b=
+b||[];for(var c=[],f=0,d=b.length;f<d;f++)0>a.a.l(c,b[f])&&c.push(b[f]);return c},ha:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)f.push(b(a[c]));return f},ga:function(a,b){a=a||[];for(var f=[],c=0,d=a.length;c<d;c++)b(a[c])&&f.push(a[c]);return f},X:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var f=0,c=b.length;f<c;f++)a.push(b[f]);return a},V:function(b,c,f){var d=a.a.l(a.a.Ha(b),c);0>d?f&&b.push(c):f||b.splice(d,1)},extend:function(a,b){if(b)for(var f in b)b.hasOwnProperty(f)&&
+(a[f]=b[f]);return a},K:b,Da:function(a,b){if(!a)return a;var f={},c;for(c in a)a.hasOwnProperty(c)&&(f[c]=b(a[c],c,a));return f},wa:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Vb:function(b){b=a.a.Q(b);for(var c=w.createElement("div"),f=0,d=b.length;f<d;f++)c.appendChild(a.L(b[f]));return c},Ya:function(b,c){for(var f=0,d=b.length,e=[];f<d;f++){var g=b[f].cloneNode(!0);e.push(c?a.L(g):g)}return e},S:function(b,c){a.a.wa(b);if(c)for(var f=0,d=c.length;f<d;f++)b.appendChild(c[f])},nb:function(b,
+c){var f=b.nodeType?[b]:b;if(0<f.length){for(var d=f[0],e=d.parentNode,g=0,n=c.length;g<n;g++)e.insertBefore(c[g],d);g=0;for(n=f.length;g<n;g++)a.removeNode(f[g])}},$:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);if(1<a.length){var f=a[0],c=a[a.length-1];for(a.length=0;f!==c;)if(a.push(f),f=f.nextSibling,!f)return;a.push(c)}}return a},qb:function(a,b){7>h?a.setAttribute("selected",b):a.selected=b},la:function(a){return null===a||a===
+q?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},ec:function(b,c){for(var f=[],d=(b||"").split(c),e=0,g=d.length;e<g;e++){var n=a.a.la(d[e]);""!==n&&f.push(n)}return f},ac:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},Gb:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;
+return!!a},va:function(b){return a.a.Gb(b,b.ownerDocument.documentElement)},Ra:function(b){return!!a.a.Ua(b,a.a.va)},v:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},r:function(b,d,f){var e=h&&g[d];if(e||"undefined"==typeof u)if(e||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var s=function(a){f.call(b,a)},l="on"+d;b.attachEvent(l,s);a.a.C.ea(b,function(){b.detachEvent(l,s)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(d,
+f,!1);else{if(c(b,d)){var n=f;f=function(a,b){var f=this.checked;b&&(this.checked=!0!==b.Ab);n.call(this,a);this.checked=f}}u(b).bind(d,f)}},da:function(a,b){if(!a||!a.nodeType)throw Error("element must be a DOM node when calling triggerEvent");if("undefined"!=typeof u){var f=[];c(a,b)&&f.push({Ab:a.checked});u(a).trigger(b,f)}else if("function"==typeof w.createEvent)if("function"==typeof a.dispatchEvent)f=w.createEvent(e[b]||"HTMLEvents"),f.initEvent(b,!0,!0,y,0,0,0,0,0,!1,!1,!1,!1,0,a),a.dispatchEvent(f);
+else throw Error("The supplied element doesn't support dispatchEvent");else if("undefined"!=typeof a.fireEvent)c(a,b)&&(a.checked=!0!==a.checked),a.fireEvent("on"+b);else throw Error("Browser doesn't support triggering events");},c:function(b){return a.M(b)?b():b},Ha:function(b){return a.M(b)?b.t():b},ma:function(b,c,f){if(c){var d=/\S+/g,e=b.className.match(d)||[];a.a.n(c.match(d),function(b){a.a.V(e,b,f)});b.className=e.join(" ")}},Ma:function(b,c){var f=a.a.c(c);if(null===f||f===q)f="";var d=a.e.firstChild(b);
+!d||3!=d.nodeType||a.e.nextSibling(d)?a.e.S(b,[w.createTextNode(f)]):d.data=f;a.a.Jb(b)},pb:function(a,b){a.name=b;if(7>=h)try{a.mergeAttributes(w.createElement("<input name='"+a.name+"'/>"),!1)}catch(f){}},Jb:function(a){9<=h&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Hb:function(a){if(h){var b=a.style.width;a.style.width=0;a.style.width=b}},Zb:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var f=[],d=b;d<=c;d++)f.push(d);return f},Q:function(a){for(var b=[],c=0,d=a.length;c<
+d;c++)b.push(a[c]);return b},cc:6===h,dc:7===h,ja:h,ab:function(b,c){for(var f=a.a.Q(b.getElementsByTagName("input")).concat(a.a.Q(b.getElementsByTagName("textarea"))),d="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},e=[],g=f.length-1;0<=g;g--)d(f[g])&&e.push(f[g]);return e},Wb:function(b){return"string"==typeof b&&(b=a.a.la(b))?B&&B.parse?B.parse(b):(new Function("return "+b))():null},Na:function(b,c,f){if(!B||!B.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
+return B.stringify(a.a.c(b),c,f)},Xb:function(c,d,f){f=f||{};var e=f.params||{},g=f.includeFields||this.$a,h=c;if("object"==typeof c&&"form"===a.a.v(c))for(var h=c.action,n=g.length-1;0<=n;n--)for(var r=a.a.ab(c,g[n]),v=r.length-1;0<=v;v--)e[r[v].name]=r[v].value;d=a.a.c(d);var t=w.createElement("form");t.style.display="none";t.action=h;t.method="post";for(var E in d)c=w.createElement("input"),c.name=E,c.value=a.a.Na(a.a.c(d[E])),t.appendChild(c);b(e,function(a,b){var c=w.createElement("input");c.name=
+a;c.value=b;t.appendChild(c)});w.body.appendChild(t);f.submitter?f.submitter(t):t.submit();setTimeout(function(){t.parentNode.removeChild(t)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.n);a.b("utils.arrayFirst",a.a.Ua);a.b("utils.arrayFilter",a.a.ga);a.b("utils.arrayGetDistinctValues",a.a.Va);a.b("utils.arrayIndexOf",a.a.l);a.b("utils.arrayMap",a.a.ha);a.b("utils.arrayPushAll",a.a.X);a.b("utils.arrayRemoveItem",a.a.ia);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",
+a.a.$a);a.b("utils.getFormFields",a.a.ab);a.b("utils.peekObservable",a.a.Ha);a.b("utils.postJson",a.a.Xb);a.b("utils.parseJson",a.a.Wb);a.b("utils.registerEventHandler",a.a.r);a.b("utils.stringifyJson",a.a.Na);a.b("utils.range",a.a.Zb);a.b("utils.toggleDomNodeCssClass",a.a.ma);a.b("utils.triggerEvent",a.a.da);a.b("utils.unwrapObservable",a.a.c);a.b("utils.objectForEach",a.a.K);a.b("utils.addOrRemoveItem",a.a.V);a.b("unwrap",a.a.c);Function.prototype.bind||(Function.prototype.bind=function(a){var c=
+this,d=Array.prototype.slice.call(arguments);a=d.shift();return function(){return c.apply(a,d.concat(Array.prototype.slice.call(arguments)))}});a.a.f=new function(){function a(b,h){var k=b[d];if(!k||"null"===k||!e[k]){if(!h)return q;k=b[d]="ko"+c++;e[k]={}}return e[k]}var c=0,d="__ko__"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===q?q:e[d]},set:function(c,d,e){if(e!==q||a(c,!1)!==q)a(c,!0)[d]=e},clear:function(a){var b=a[d];return b?(delete e[b],a[d]=null,!0):!1},D:function(){return c++ +
+d}}};a.b("utils.domData",a.a.f);a.b("utils.domData.clear",a.a.f.clear);a.a.C=new function(){function b(b,c){var e=a.a.f.get(b,d);e===q&&c&&(e=[],a.a.f.set(b,d,e));return e}function c(d){var e=b(d,!1);if(e)for(var e=e.slice(0),m=0;m<e.length;m++)e[m](d);a.a.f.clear(d);"function"==typeof u&&"function"==typeof u.cleanData&&u.cleanData([d]);if(g[d.nodeType])for(e=d.firstChild;d=e;)e=d.nextSibling,8===d.nodeType&&c(d)}var d=a.a.f.D(),e={1:!0,8:!0,9:!0},g={1:!0,9:!0};return{ea:function(a,c){if("function"!=
+typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},mb:function(c,e){var g=b(c,!1);g&&(a.a.ia(g,e),0==g.length&&a.a.f.set(c,d,q))},L:function(b){if(e[b.nodeType]&&(c(b),g[b.nodeType])){var d=[];a.a.X(d,b.getElementsByTagName("*"));for(var m=0,f=d.length;m<f;m++)c(d[m])}return b},removeNode:function(b){a.L(b);b.parentNode&&b.parentNode.removeChild(b)}}};a.L=a.a.C.L;a.removeNode=a.a.C.removeNode;a.b("cleanNode",a.L);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.C);
+a.b("utils.domNodeDisposal.addDisposeCallback",a.a.C.ea);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.C.mb);(function(){a.a.Fa=function(b){var c;if("undefined"!=typeof u)if(u.parseHTML)c=u.parseHTML(b)||[];else{if((c=u.clean([b]))&&c[0]){for(b=c[0];b.parentNode&&11!==b.parentNode.nodeType;)b=b.parentNode;b.parentNode&&b.parentNode.removeChild(b)}}else{var d=a.a.la(b).toLowerCase();c=w.createElement("div");d=d.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!d.indexOf("<tr")&&[2,
+"<table><tbody>","</tbody></table>"]||(!d.indexOf("<td")||!d.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""];b="ignored<div>"+d[1]+b+d[2]+"</div>";for("function"==typeof y.innerShiv?c.appendChild(y.innerShiv(b)):c.innerHTML=b;d[0]--;)c=c.lastChild;c=a.a.Q(c.lastChild.childNodes)}return c};a.a.Ka=function(b,c){a.a.wa(b);c=a.a.c(c);if(null!==c&&c!==q)if("string"!=typeof c&&(c=c.toString()),"undefined"!=typeof u)u(b).html(c);else for(var d=a.a.Fa(c),e=0;e<d.length;e++)b.appendChild(d[e])}})();
+a.b("utils.parseHtmlFragment",a.a.Fa);a.b("utils.setHtml",a.a.Ka);a.u=function(){function b(c,e){if(c)if(8==c.nodeType){var g=a.u.jb(c.nodeValue);null!=g&&e.push({Fb:c,Tb:g})}else if(1==c.nodeType)for(var g=0,h=c.childNodes,k=h.length;g<k;g++)b(h[g],e)}var c={};return{Ca:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);
+c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},ub:function(a,b){var g=c[a];if(g===q)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return g.apply(null,b||[]),!0}finally{delete c[a]}},vb:function(c,e){var g=[];b(c,g);for(var h=0,k=g.length;h<k;h++){var m=g[h].Fb,f=[m];e&&a.a.X(f,e);a.u.ub(g[h].Tb,f);m.nodeValue="";m.parentNode&&m.parentNode.removeChild(m)}},jb:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.u);a.b("memoization.memoize",
+a.u.Ca);a.b("memoization.unmemoize",a.u.ub);a.b("memoization.parseMemoText",a.u.jb);a.b("memoization.unmemoizeDomNodeAndDescendants",a.u.vb);a.xa={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.h({read:b,write:function(a){clearTimeout(d);d=setTimeout(function(){b(a)},c)}})},notify:function(a,c){a.equalityComparer="always"==c?null:G}};var N={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.xa);a.sb=function(b,c,d){this.target=b;this.qa=c;this.Eb=d;a.s(this,"dispose",
+this.B)};a.sb.prototype.B=function(){this.Qb=!0;this.Eb()};a.ca=function(){this.F={};a.a.extend(this,a.ca.fn);a.s(this,"subscribe",this.T);a.s(this,"extend",this.extend);a.s(this,"getSubscriptionsCount",this.Lb)};var I="change";a.ca.fn={T:function(b,c,d){d=d||I;var e=new a.sb(this,c?b.bind(c):b,function(){a.a.ia(this.F[d],e)}.bind(this));this.F[d]||(this.F[d]=[]);this.F[d].push(e);return e},notifySubscribers:function(b,c){c=c||I;if(this.cb(c))try{a.i.Wa();for(var d=this.F[c].slice(0),e=0,g;g=d[e];++e)g&&
+!0!==g.Qb&&g.qa(b)}finally{a.i.end()}},cb:function(a){return this.F[a]&&this.F[a].length},Lb:function(){var b=0;a.a.K(this.F,function(a,d){b+=d.length});return b},extend:function(b){var c=this;b&&a.a.K(b,function(b,e){var g=a.xa[b];"function"==typeof g&&(c=g(c,e)||c)});return c}};a.fb=function(a){return null!=a&&"function"==typeof a.T&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.ca);a.b("isSubscribable",a.fb);a.i=function(){var b=[];return{Wa:function(a){b.push(a&&{qa:a,Za:[]})},
+end:function(){b.pop()},lb:function(c){if(!a.fb(c))throw Error("Only subscribable things can act as dependencies");if(0<b.length){var d=b[b.length-1];!d||0<=a.a.l(d.Za,c)||(d.Za.push(c),d.qa(c))}},p:function(a,d,e){try{return b.push(null),a.apply(d,e||[])}finally{b.pop()}}}}();a.q=function(b){function c(){if(0<arguments.length)return c.equalityComparer&&c.equalityComparer(d,arguments[0])||(c.O(),d=arguments[0],c.N()),this;a.i.lb(c);return d}var d=b;a.ca.call(c);c.t=function(){return d};c.N=function(){c.notifySubscribers(d)};
+c.O=function(){c.notifySubscribers(d,"beforeChange")};a.a.extend(c,a.q.fn);a.s(c,"peek",c.t);a.s(c,"valueHasMutated",c.N);a.s(c,"valueWillMutate",c.O);return c};a.q.fn={equalityComparer:G};var C=a.q.Yb="__ko_proto__";a.q.fn[C]=a.q;a.ya=function(b,c){return null===b||b===q||b[C]===q?!1:b[C]===c?!0:a.ya(b[C],c)};a.M=function(b){return a.ya(b,a.q)};a.gb=function(b){return"function"==typeof b&&b[C]===a.q||"function"==typeof b&&b[C]===a.h&&b.Nb?!0:!1};a.b("observable",a.q);a.b("isObservable",a.M);a.b("isWriteableObservable",
+a.gb);a.ba=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.q(b);a.a.extend(b,a.ba.fn);return b.extend({trackArrayChanges:!0})};a.ba.fn={remove:function(b){for(var c=this.t(),d=[],e="function"!=typeof b||a.M(b)?function(a){return a===b}:b,g=0;g<c.length;g++){var h=c[g];e(h)&&(0===d.length&&this.O(),d.push(h),c.splice(g,1),g--)}d.length&&this.N();return d},removeAll:function(b){if(b===
+q){var c=this.t(),d=c.slice(0);this.O();c.splice(0,c.length);this.N();return d}return b?this.remove(function(c){return 0<=a.a.l(b,c)}):[]},destroy:function(b){var c=this.t(),d="function"!=typeof b||a.M(b)?function(a){return a===b}:b;this.O();for(var e=c.length-1;0<=e;e--)d(c[e])&&(c[e]._destroy=!0);this.N()},destroyAll:function(b){return b===q?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.l(b,c)}):[]},indexOf:function(b){var c=this();return a.a.l(c,b)},replace:function(a,
+c){var d=this.indexOf(a);0<=d&&(this.O(),this.t()[d]=c,this.N())}};a.a.n("pop push reverse shift sort splice unshift".split(" "),function(b){a.ba.fn[b]=function(){var a=this.t();this.O();this.Xa(a,b,arguments);a=a[b].apply(a,arguments);this.N();return a}});a.a.n(["slice"],function(b){a.ba.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.b("observableArray",a.ba);var J="arrayChange";a.xa.trackArrayChanges=function(b){function c(){if(!d){d=!0;var c=b.notifySubscribers;b.notifySubscribers=
+function(a,b){b&&b!==I||++g;return c.apply(this,arguments)};var m=[].concat(b.t()||[]);e=null;b.T(function(c){c=[].concat(c||[]);if(b.cb(J)){var d;if(!e||1<g)e=a.a.ra(m,c,{sparse:!0});d=e;d.length&&b.notifySubscribers(d,J)}m=c;e=null;g=0})}}if(!b.Xa){var d=!1,e=null,g=0,h=b.T;b.T=b.subscribe=function(a,b,f){f===J&&c();return h.apply(this,arguments)};b.Xa=function(a,b,c){function p(a,b,c){h.push({status:a,value:b,index:c})}if(d&&!g){var h=[],l=a.length,n=c.length,r=0;switch(b){case "push":r=l;case "unshift":for(b=
+0;b<n;b++)p("added",c[b],r+b);break;case "pop":r=l-1;case "shift":l&&p("deleted",a[r],r);break;case "splice":b=Math.min(Math.max(0,0>c[0]?l+c[0]:c[0]),l);for(var l=1===n?l:Math.min(b+(c[1]||0),l),n=b+n-2,r=Math.max(l,n),v=2;b<r;++b,++v)b<l&&p("deleted",a[b],b),b<n&&p("added",c[v],b);break;default:return}e=h}}}};a.h=function(b,c,d){function e(){a.a.n(z,function(a){a.B()});z=[]}function g(){var a=k.throttleEvaluation;a&&0<=a?(clearTimeout(x),x=setTimeout(h,a)):h()}function h(){if(!s){if(E&&E()){if(!l){D();
+p=!0;return}}else l=!1;s=!0;try{var b=a.a.ha(z,function(a){return a.target});a.i.Wa(function(c){var d;0<=(d=a.a.l(b,c))?b[d]=q:z.push(c.T(g))});for(var d=c?n.call(c):n(),e=b.length-1;0<=e;e--)b[e]&&z.splice(e,1)[0].B();p=!0;k.equalityComparer&&k.equalityComparer(f,d)||(k.notifySubscribers(f,"beforeChange"),f=d,k.notifySubscribers(f))}finally{a.i.end(),s=!1}z.length||D()}}function k(){if(0<arguments.length){if("function"===typeof r)r.apply(c,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
+return this}p||h();a.i.lb(k);return f}function m(){return!p||0<z.length}var f,p=!1,s=!1,l=!1,n=b;n&&"object"==typeof n?(d=n,n=d.read):(d=d||{},n||(n=d.read));if("function"!=typeof n)throw Error("Pass a function that returns the value of the ko.computed");var r=d.write,v=d.disposeWhenNodeIsRemoved||d.I||null,t=d.disposeWhen||d.ua,E=t,D=e,z=[],x=null;c||(c=d.owner);k.t=function(){p||h();return f};k.Kb=function(){return z.length};k.Nb="function"===typeof d.write;k.B=function(){D()};k.aa=m;a.ca.call(k);
+a.a.extend(k,a.h.fn);a.s(k,"peek",k.t);a.s(k,"dispose",k.B);a.s(k,"isActive",k.aa);a.s(k,"getDependenciesCount",k.Kb);v&&(l=!0,v.nodeType&&(E=function(){return!a.a.va(v)||t&&t()}));!0!==d.deferEvaluation&&h();v&&m()&&(D=function(){a.a.C.mb(v,D);e()},a.a.C.ea(v,D));return k};a.Pb=function(b){return a.ya(b,a.h)};F=a.q.Yb;a.h[F]=a.q;a.h.fn={equalityComparer:G};a.h.fn[F]=a.h;a.b("dependentObservable",a.h);a.b("computed",a.h);a.b("isComputed",a.Pb);(function(){function b(a,g,h){h=h||new d;a=g(a);if("object"!=
+typeof a||null===a||a===q||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var k=a instanceof Array?[]:{};h.save(a,k);c(a,function(c){var d=g(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":k[c]=d;break;case "object":case "undefined":var p=h.get(d);k[c]=p!==q?p:b(d,g,h)}});return k}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=
+[];this.Qa=[]}a.tb=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.M(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.tb(b);return a.a.Na(b,c,d)};d.prototype={save:function(b,c){var d=a.a.l(this.keys,b);0<=d?this.Qa[d]=c:(this.keys.push(b),this.Qa.push(c))},get:function(b){b=a.a.l(this.keys,b);return 0<=b?this.Qa[b]:q}}})();a.b("toJS",a.tb);a.b("toJSON",a.toJSON);(function(){a.k={o:function(b){switch(a.a.v(b)){case "option":return!0===
+b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.d.options.Ea):7>=a.a.ja?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex]):q;default:return b.value}},na:function(b,c){switch(a.a.v(b)){case "option":switch(typeof c){case "string":a.a.f.set(b,a.d.options.Ea,q);"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=c;break;default:a.a.f.set(b,a.d.options.Ea,c),b.__ko__hasDomDataOptionValue__=
+!0,b.value="number"===typeof c?c:""}break;case "select":""===c&&(c=q);if(null===c||c===q)b.selectedIndex=-1;for(var d=b.options.length-1;0<=d;d--)if(a.k.o(b.options[d])==c){b.selectedIndex=d;break}1<b.size||-1!==b.selectedIndex||(b.selectedIndex=0);break;default:if(null===c||c===q)c="";b.value=c}}}})();a.b("selectExtensions",a.k);a.b("selectExtensions.readValue",a.k.o);a.b("selectExtensions.writeValue",a.k.na);a.g=function(){function b(b){b=a.a.la(b);123===b.charCodeAt(0)&&(b=b.slice(1,-1));var c=
+[],d=b.match(e),k,l,n=0;if(d){d.push(",");for(var r=0,v;v=d[r];++r){var t=v.charCodeAt(0);if(44===t){if(0>=n){k&&c.push(l?{key:k,value:l.join("")}:{unknown:k});k=l=n=0;continue}}else if(58===t){if(!l)continue}else if(47===t&&r&&1<v.length)(t=d[r-1].match(g))&&!h[t[0]]&&(b=b.substr(b.indexOf(v)+1),d=b.match(e),d.push(","),r=-1,v="/");else if(40===t||123===t||91===t)++n;else if(41===t||125===t||93===t)--n;else if(!k&&!l){k=34===t||39===t?v.slice(1,-1):v;continue}l?l.push(v):l=[v]}}return c}var c=["true",
+"false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]","g"),g=/[\])"'A-Za-z0-9_$]+$/,h={"in":1,"return":1,"typeof":1},k={};return{Y:[],U:k,Ga:b,ka:function(e,f){function g(b,f){var e,r=a.getBindingHandler(b);if(r&&r.preprocess?f=r.preprocess(f,b,g):1){if(r=k[b])e=f,0<=a.a.l(c,e)?e=!1:(r=e.match(d),e=null===r?!1:r[1]?"Object("+r[1]+")"+
+r[2]:e),r=e;r&&l.push("'"+b+"':function(_z){"+e+"=_z}");n&&(f="function(){return "+f+" }");h.push("'"+b+"':"+f)}}f=f||{};var h=[],l=[],n=f.valueAccessors,r="string"===typeof e?b(e):e;a.a.n(r,function(a){g(a.key||a.unknown,a.value)});l.length&&g("_ko_property_writers","{"+l.join(",")+"}");return h.join(",")},Sb:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},oa:function(b,c,d,e,k){if(b&&a.M(b))!a.gb(b)||k&&b.t()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();
+a.b("expressionRewriting",a.g);a.b("expressionRewriting.bindingRewriteValidators",a.g.Y);a.b("expressionRewriting.parseObjectLiteral",a.g.Ga);a.b("expressionRewriting.preProcessBindings",a.g.ka);a.b("expressionRewriting._twoWayBindings",a.g.U);a.b("jsonExpressionRewriting",a.g);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.g.ka);(function(){function b(a){return 8==a.nodeType&&h.test(g?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&k.test(g?a.text:a.nodeValue)}function d(a,
+d){for(var e=a,k=1,n=[];e=e.nextSibling;){if(c(e)&&(k--,0===k))return n;n.push(e);b(e)&&k++}if(!d)throw Error("Cannot find closing comment tag to match: "+a.nodeValue);return null}function e(a,b){var c=d(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var g=w&&"\x3c!--test--\x3e"===w.createComment("test").text,h=g?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,k=g?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,m={ul:!0,ol:!0};a.e={P:{},childNodes:function(a){return b(a)?
+d(a):a.childNodes},Z:function(c){if(b(c)){c=a.e.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.wa(c)},S:function(c,d){if(b(c)){a.e.Z(c);for(var e=c.nextSibling,k=0,n=d.length;k<n;k++)e.parentNode.insertBefore(d[k],e)}else a.a.S(c,d)},kb:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},eb:function(c,d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):
+c.appendChild(d):a.e.kb(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||c(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){b(a)&&(a=e(a));return a.nextSibling&&c(a.nextSibling)?null:a.nextSibling},Mb:b,bc:function(a){return(a=(g?a.text:a.nodeValue).match(h))?a[1]:null},ib:function(d){if(m[a.a.v(d)]){var k=d.firstChild;if(k){do if(1===k.nodeType){var g;g=k.firstChild;var h=null;if(g){do if(h)h.push(g);else if(b(g)){var n=e(g,!0);n?g=n:h=[g]}else c(g)&&(h=[g]);while(g=
+g.nextSibling)}if(g=h)for(h=k.nextSibling,n=0;n<g.length;n++)h?d.insertBefore(g[n],h):d.appendChild(g[n])}while(k=k.nextSibling)}}}}})();a.b("virtualElements",a.e);a.b("virtualElements.allowedBindings",a.e.P);a.b("virtualElements.emptyNode",a.e.Z);a.b("virtualElements.insertAfter",a.e.eb);a.b("virtualElements.prepend",a.e.kb);a.b("virtualElements.setDomNodeChildren",a.e.S);(function(){a.H=function(){this.zb={}};a.a.extend(a.H.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=
+b.getAttribute("data-bind");case 8:return a.e.Mb(b);default:return!1}},getBindings:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a):null},getBindingAccessors:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a,{valueAccessors:!0}):null},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.e.bc(b);default:return null}},parseBindingsString:function(b,c,d,e){try{var g=this.zb,
+h=b+(e&&e.valueAccessors||""),k;if(!(k=g[h])){var m,f="with($context){with($data||{}){return{"+a.g.ka(b,e)+"}}}";m=new Function("$context","$element",f);k=g[h]=m}return k(c,d)}catch(p){throw p.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+p.message,p;}}});a.H.instance=new a.H})();a.b("bindingProvider",a.H);(function(){function b(a){return function(){return a}}function c(a){return a()}function d(b){return a.a.Da(a.i.p(b),function(a,c){return function(){return b()[c]}})}function e(a,
+b){return d(this.getBindings.bind(this,a,b))}function g(b,c,d){var f,e=a.e.firstChild(c),k=a.H.instance,g=k.preprocessNode;if(g){for(;f=e;)e=a.e.nextSibling(f),g.call(k,f);e=a.e.firstChild(c)}for(;f=e;)e=a.e.nextSibling(f),h(b,f,d)}function h(b,c,d){var f=!0,e=1===c.nodeType;e&&a.e.ib(c);if(e&&d||a.H.instance.nodeHasBindings(c))f=m(c,null,b,d).shouldBindDescendants;f&&!p[a.a.v(c)]&&g(b,c,!e)}function k(b){var c=[],d={},f=[];a.a.K(b,function D(e){if(!d[e]){var k=a.getBindingHandler(e);k&&(k.after&&
+(f.push(e),a.a.n(k.after,function(c){if(b[c]){if(-1!==a.a.l(f,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+f.join(", "));D(c)}}),f.pop()),c.push({key:e,bb:k}));d[e]=!0}});return c}function m(b,d,f,g){var h=a.a.f.get(b,s);if(!d){if(h)throw Error("You cannot apply bindings multiple times to the same element.");a.a.f.set(b,s,!0)}!h&&g&&a.rb(b,f);var m;if(d&&"function"!==typeof d)m=d;else{var p=a.H.instance,l=p.getBindingAccessors||e;if(d||f.A){var A=
+a.h(function(){(m=d?d(f,b):l.call(p,b,f))&&f.A&&f.A();return m},null,{I:b});m&&A.aa()||(A=null)}else m=a.i.p(l,p,[b,f])}var u;if(m){var w=A?function(a){return function(){return c(A()[a])}}:function(a){return m[a]},y=function(){return a.a.Da(A?A():m,c)};y.get=function(a){return m[a]&&c(w(a))};y.has=function(a){return a in m};g=k(m);a.a.n(g,function(c){var d=c.bb.init,e=c.bb.update,k=c.key;if(8===b.nodeType&&!a.e.P[k])throw Error("The binding '"+k+"' cannot be used with virtual elements");try{"function"==
+typeof d&&a.i.p(function(){var a=d(b,w(k),y,f.$data,f);if(a&&a.controlsDescendantBindings){if(u!==q)throw Error("Multiple bindings ("+u+" and "+k+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=k}}),"function"==typeof e&&a.h(function(){e(b,w(k),y,f.$data,f)},null,{I:b})}catch(g){throw g.message='Unable to process binding "'+k+": "+m[k]+'"\nMessage: '+g.message,g;}})}return{shouldBindDescendants:u===q}}function f(b){return b&&
+b instanceof a.G?b:new a.G(b)}a.d={};var p={script:!0};a.getBindingHandler=function(b){return a.d[b]};a.G=function(b,c,d,f){var e=this,k="function"==typeof b,g,h=a.h(function(){var g=k?b():b;c?(c.A&&c.A(),a.a.extend(e,c),h&&(e.A=h)):(e.$parents=[],e.$root=g,e.ko=a);e.$rawData=b;e.$data=g;d&&(e[d]=g);f&&f(e,c,g);return e.$data},null,{ua:function(){return g&&!a.a.Ra(g)},I:!0});h.aa()&&(e.A=h,h.equalityComparer=null,g=[],h.wb=function(b){g.push(b);a.a.C.ea(b,function(b){a.a.ia(g,b);g.length||(h.B(),
+e.A=h=q)})})};a.G.prototype.createChildContext=function(b,c,d){return new a.G(b,this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)})};a.G.prototype.extend=function(b){return new a.G(this.$rawData,this,null,function(c){a.a.extend(c,"function"==typeof b?b():b)})};var s=a.a.f.D(),l=a.a.f.D();a.rb=function(b,c){if(2==arguments.length)a.a.f.set(b,l,c),c.A&&c.A.wb(b);else return a.a.f.get(b,l)};a.pa=function(b,c,d){1===b.nodeType&&
+a.e.ib(b);return m(b,c,f(d),!0)};a.xb=function(c,e,k){k=f(k);return a.pa(c,"function"===typeof e?d(e.bind(null,k,c)):a.a.Da(e,b),k)};a.Ta=function(a,b){1!==b.nodeType&&8!==b.nodeType||g(f(a),b,!0)};a.Sa=function(a,b){if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");b=b||y.document.body;h(f(a),b,!0)};a.ta=function(b){switch(b.nodeType){case 1:case 8:var c=a.rb(b);if(c)return c;if(b.parentNode)return a.ta(b.parentNode)}return q};
+a.Cb=function(b){return(b=a.ta(b))?b.$data:q};a.b("bindingHandlers",a.d);a.b("applyBindings",a.Sa);a.b("applyBindingsToDescendants",a.Ta);a.b("applyBindingAccessorsToNode",a.pa);a.b("applyBindingsToNode",a.xb);a.b("contextFor",a.ta);a.b("dataFor",a.Cb)})();var M={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.K(d,function(c,d){d=a.a.c(d);var h=!1===d||null===d||d===q;h&&b.removeAttribute(c);8>=a.a.ja&&c in M?(c=M[c],h?b.removeAttribute(c):b[c]=d):h||b.setAttribute(c,
+d.toString());"name"===c&&a.a.pb(b,h?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,c,d){function e(){return d.has("checkedValue")?a.a.c(d.get("checkedValue")):b.value}function g(){var k=b.checked,g=s?e():k;if(l&&(!m||k)){var h=a.i.p(c);f?p!==g?(k&&(a.a.V(h,g,!0),a.a.V(h,p,!1)),p=g):a.a.V(h,g,k):a.g.oa(h,d,"checked",g,!0)}}function h(){var d=a.a.c(c());b.checked=f?0<=a.a.l(d,e()):k?d:e()===d}var k="checkbox"==b.type,m="radio"==b.type;if(k||m){var f=k&&a.a.c(c())instanceof
+Array,p=f?e():q,s=m||f,l=!1;m&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.h(g,null,{I:b});a.a.r(b,"click",g);a.h(h,null,{I:b});l=!0}}};a.g.U.checked=!0;a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.d.css={update:function(b,c){var d=a.a.c(c());"object"==typeof d?a.a.K(d,function(c,d){d=a.a.c(d);a.a.ma(b,c,d)}):(d=String(d||""),a.a.ma(b,b.__ko__cssValue,!1),b.__ko__cssValue=d,a.a.ma(b,d,!0))}};a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):
+d||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}};a.d.event={init:function(b,c,d,e,g){var h=c()||{};a.a.K(h,function(k){"string"==typeof k&&a.a.r(b,k,function(b){var f,h=c()[k];if(h){try{var s=a.a.Q(arguments);e=g.$data;s.unshift(e);f=h.apply(e,s)}finally{!0!==f&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(k+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={hb:function(b){return function(){var c=
+b(),d=a.a.Ha(c);if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.J.Aa};a.a.c(c);return{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.J.Aa}}},init:function(b,c){return a.d.template.init(b,a.d.foreach.hb(c))},update:function(b,c,d,e,g){return a.d.template.update(b,a.d.foreach.hb(c),d,e,g)}};a.g.Y.foreach=!1;a.e.P.foreach=!0;a.d.hasfocus=
+{init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var g=b.ownerDocument;if("activeElement"in g){var f;try{f=g.activeElement}catch(h){f=g.body}e=f===b}g=c();a.g.oa(g,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var g=e.bind(null,!0),h=e.bind(null,!1);a.a.r(b,"focus",g);a.a.r(b,"focusin",g);a.a.r(b,"blur",h);a.a.r(b,"focusout",h)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),a.i.p(a.a.da,
+null,[b,d?"focusin":"focusout"]))}};a.g.U.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.g.U.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ka(b,c())}};var L=a.a.f.D();H("if");H("ifnot",!1,!0);H("with",!0,!1,function(a,c){return a.createChildContext(c)});a.d.options={init:function(b){if("select"!==a.a.v(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,
+c,d){function e(){return a.a.ga(b.options,function(a){return a.selected})}function g(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function h(c,d){if(p.length){var f=0<=a.a.l(p,a.k.o(d[0]));a.a.qb(d[0],f);l&&!f&&a.i.p(a.a.da,null,[b,"change"])}}var k=0!=b.length&&b.multiple?b.scrollTop:null;c=a.a.c(c());var m=d.get("optionsIncludeDestroyed"),f={},p;p=b.multiple?a.a.ha(e(),a.k.o):0<=b.selectedIndex?[a.k.o(b.options[b.selectedIndex])]:[];if(c){"undefined"==typeof c.length&&(c=[c]);
+var s=a.a.ga(c,function(b){return m||b===q||null===b||!a.a.c(b._destroy)});d.has("optionsCaption")&&(c=a.a.c(d.get("optionsCaption")),null!==c&&c!==q&&s.unshift(f))}else c=[];var l=!1;c=h;d.has("optionsAfterRender")&&(c=function(b,c){h(0,c);a.i.p(d.get("optionsAfterRender"),null,[c[0],b!==f?b:q])});a.a.Ja(b,s,function(b,c,e){e.length&&(p=e[0].selected?[a.k.o(e[0])]:[],l=!0);c=w.createElement("option");b===f?(a.a.Ma(c,d.get("optionsCaption")),a.k.na(c,q)):(e=g(b,d.get("optionsValue"),b),a.k.na(c,a.a.c(e)),
+b=g(b,d.get("optionsText"),e),a.a.Ma(c,b));return[c]},null,c);(b.multiple?p.length&&e().length<p.length:p.length&&0<=b.selectedIndex?a.k.o(b.options[b.selectedIndex])!==p[0]:p.length||0<=b.selectedIndex)&&a.i.p(a.a.da,null,[b,"change"]);a.a.Hb(b);k&&20<Math.abs(k-b.scrollTop)&&(b.scrollTop=k)}};a.d.options.Ea=a.a.f.D();a.d.selectedOptions={after:["options","foreach"],init:function(b,c,d){a.a.r(b,"change",function(){var e=c(),g=[];a.a.n(b.getElementsByTagName("option"),function(b){b.selected&&g.push(a.k.o(b))});
+a.g.oa(e,d,"selectedOptions",g)})},update:function(b,c){if("select"!=a.a.v(b))throw Error("values binding applies only to SELECT elements");var d=a.a.c(c());d&&"number"==typeof d.length&&a.a.n(b.getElementsByTagName("option"),function(b){var c=0<=a.a.l(d,a.k.o(b));a.a.qb(b,c)})}};a.g.U.selectedOptions=!0;a.d.style={update:function(b,c){var d=a.a.c(c()||{});a.a.K(d,function(c,d){d=a.a.c(d);b.style[c]=d||""})}};a.d.submit={init:function(b,c,d,e,g){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");
+a.a.r(b,"submit",function(a){var d,e=c();try{d=e.call(g.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.d.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ma(b,c())}};a.e.P.text=!0;a.d.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.d.uniqueName.Bb;a.a.pb(b,d)}}};a.d.uniqueName.Bb=0;a.d.value={after:["options","foreach"],init:function(b,c,d){function e(){k=!1;var e=c(),f=a.k.o(b);a.g.oa(e,d,"value",f)}var g=
+["change"],h=d.get("valueUpdate"),k=!1;h&&("string"==typeof h&&(h=[h]),a.a.X(g,h),g=a.a.Va(g));!a.a.ja||"input"!=b.tagName.toLowerCase()||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.l(g,"propertychange")||(a.a.r(b,"propertychange",function(){k=!0}),a.a.r(b,"blur",function(){k&&e()}));a.a.n(g,function(c){var d=e;a.a.ac(c,"after")&&(d=function(){setTimeout(e,0)},c=c.substring(5));a.a.r(b,c,d)})},update:function(b,c){var d="select"===a.a.v(b),e=a.a.c(c()),g=a.k.o(b);
+e!==g&&(g=function(){a.k.na(b,e)},g(),d&&(e!==a.k.o(b)?a.i.p(a.a.da,null,[b,"change"]):setTimeout(g,0)))}};a.g.U.value=!0;a.d.visible={update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(c,d,e,g,h){return a.d.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,g,h)}}})("click");a.w=function(){};a.w.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");
+};a.w.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.w.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.m.j(d)}if(1==b.nodeType||8==b.nodeType)return new a.m.W(b);throw Error("Unknown template type: "+b);};a.w.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,
+d)};a.w.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.w.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.w);a.Oa=function(){function b(b,c,d,k){b=a.g.Ga(b);for(var m=a.g.Y,f=0;f<b.length;f++){var p=b[f].key;if(m.hasOwnProperty(p)){var s=m[p];if("function"===typeof s){if(p=s(b[f].value))throw Error(p);}else if(!s)throw Error("This template engine does not support the '"+
+p+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.g.ka(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return k.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{Ib:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Oa.Ub(b,c)},
+d)},Ub:function(a,g){return a.replace(c,function(a,c,d,f,e){return b(e,c,d,g)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",g)})},yb:function(b,c){return a.u.Ca(function(d,k){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.pa(m,b,k)})}}}();a.b("__tr_ambtns",a.Oa.yb);(function(){a.m={};a.m.j=function(a){this.j=a};a.m.j.prototype.text=function(){var b=a.a.v(this.j),b="script"===b?"text":"textarea"===b?"value":"innerHTML";if(0==arguments.length)return this.j[b];var c=arguments[0];
+"innerHTML"===b?a.a.Ka(this.j,c):this.j[b]=c};var b=a.a.f.D()+"_";a.m.j.prototype.data=function(c){if(1===arguments.length)return a.a.f.get(this.j,b+c);a.a.f.set(this.j,b+c,arguments[1])};var c=a.a.f.D();a.m.W=function(a){this.j=a};a.m.W.prototype=new a.m.j;a.m.W.prototype.text=function(){if(0==arguments.length){var b=a.a.f.get(this.j,c)||{};b.Pa===q&&b.sa&&(b.Pa=b.sa.innerHTML);return b.Pa}a.a.f.set(this.j,c,{Pa:arguments[0]})};a.m.j.prototype.nodes=function(){if(0==arguments.length)return(a.a.f.get(this.j,
+c)||{}).sa;a.a.f.set(this.j,c,{sa:arguments[0]})};a.b("templateSources",a.m);a.b("templateSources.domElement",a.m.j);a.b("templateSources.anonymousTemplate",a.m.W)})();(function(){function b(b,c,d){var e;for(c=a.e.nextSibling(c);b&&(e=b)!==c;)b=a.e.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var f=c[0],e=c[c.length-1],g=f.parentNode,h=a.H.instance,n=h.preprocessNode;if(n){b(f,e,function(a,b){var c=a.previousSibling,d=n.call(h,a);d&&(a===f&&(f=d[0]||b),a===e&&(e=d[d.length-1]||c))});c.length=
+0;if(!f)return;f===e?c.push(f):(c.push(f,e),a.a.$(c,g))}b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.Sa(d,b)});b(f,e,function(b){1!==b.nodeType&&8!==b.nodeType||a.u.vb(b,[d])});a.a.$(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,s){s=s||{};var l=b&&d(b),l=l&&l.ownerDocument,n=s.templateEngine||g;a.Oa.Ib(f,n,l);f=n.renderTemplate(f,h,s,l);if("number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");
+l=!1;switch(e){case "replaceChildren":a.e.S(b,f);l=!0;break;case "replaceNode":a.a.nb(b,f);l=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}l&&(c(f,h),s.afterRender&&a.i.p(s.afterRender,null,[f,h.$data]));return f}var g;a.La=function(b){if(b!=q&&!(b instanceof a.w))throw Error("templateEngine must inherit from ko.templateEngine");g=b};a.Ia=function(b,c,f,h,s){f=f||{};if((f.templateEngine||g)==q)throw Error("Set a template engine before calling renderTemplate");
+s=s||"replaceChildren";if(h){var l=d(h);return a.h(function(){var g=c&&c instanceof a.G?c:new a.G(a.a.c(c)),r="function"==typeof b?b(g.$data,g):b,g=e(h,s,r,g,f);"replaceNode"==s&&(h=g,l=d(h))},null,{ua:function(){return!l||!a.a.va(l)},I:l&&"replaceNode"==s?l.parentNode:l})}return a.u.Ca(function(d){a.Ia(b,c,f,d,"replaceNode")})};a.$b=function(b,d,f,g,h){function l(a,b){c(b,r);f.afterRender&&f.afterRender(b,a)}function n(a,c){r=h.createChildContext(a,f.as,function(a){a.$index=c});var d="function"==
+typeof b?b(a,r):b;return e(null,"ignoreTargetNode",d,r,f)}var r;return a.h(function(){var b=a.a.c(d)||[];"undefined"==typeof b.length&&(b=[b]);b=a.a.ga(b,function(b){return f.includeDestroyed||b===q||null===b||!a.a.c(b._destroy)});a.i.p(a.a.Ja,null,[g,b,n,f,l])},null,{I:g})};var h=a.a.f.D();a.d.template={init:function(b,c){var d=a.a.c(c());"string"==typeof d||d.name?a.e.Z(b):(d=a.e.childNodes(b),d=a.a.Vb(d),(new a.m.W(b)).nodes(d));return{controlsDescendantBindings:!0}},update:function(b,c,d,e,g){c=
+a.a.c(c());d={};e=!0;var l,n=null;"string"!=typeof c&&(d=c,c=a.a.c(d.name),"if"in d&&(e=a.a.c(d["if"])),e&&"ifnot"in d&&(e=!a.a.c(d.ifnot)),l=a.a.c(d.data));"foreach"in d?n=a.$b(c||b,e&&d.foreach||[],d,b,g):e?(g="data"in d?g.createChildContext(l,d.as):g,n=a.Ia(c||b,g,d,b)):a.e.Z(b);g=n;(l=a.a.f.get(b,h))&&"function"==typeof l.B&&l.B();a.a.f.set(b,h,g&&g.aa()?g:q)}};a.g.Y.template=function(b){b=a.g.Ga(b);return 1==b.length&&b[0].unknown||a.g.Sb(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};
+a.e.P.template=!0})();a.b("setTemplateEngine",a.La);a.b("renderTemplate",a.Ia);a.a.ra=function(){function a(b,d,e,g,h){var k=Math.min,m=Math.max,f=[],p,q=b.length,l,n=d.length,r=n-q||1,v=q+n+1,t,u,w;for(p=0;p<=q;p++)for(u=t,f.push(t=[]),w=k(n,p+r),l=m(0,p-1);l<=w;l++)t[l]=l?p?b[p-1]===d[l-1]?u[l-1]:k(u[l]||v,t[l-1]||v)+1:l+1:p+1;k=[];m=[];r=[];p=q;for(l=n;p||l;)n=f[p][l]-1,l&&n===f[p][l-1]?m.push(k[k.length]={status:e,value:d[--l],index:l}):p&&n===f[p-1][l]?r.push(k[k.length]={status:g,value:b[--p],
+index:p}):(--l,--p,h.sparse||k.push({status:"retained",value:d[l]}));if(m.length&&r.length){b=10*q;var z;for(d=e=0;(h.dontLimitMoves||d<b)&&(z=m[e]);e++){for(g=0;f=r[g];g++)if(z.value===f.value){z.moved=f.index;f.moved=z.index;r.splice(g,1);d=g=0;break}d+=g}}return k.reverse()}return function(c,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};c=c||[];d=d||[];return c.length<=d.length?a(c,d,"added","deleted",e):a(d,c,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.ra);(function(){function b(b,
+c,g,h,k){var m=[],f=a.h(function(){var f=c(g,k,a.a.$(m,b))||[];0<m.length&&(a.a.nb(m,f),h&&a.i.p(h,null,[g,f,k]));m.splice(0,m.length);a.a.X(m,f)},null,{I:b,ua:function(){return!a.a.Ra(m)}});return{R:m,h:f.aa()?f:q}}var c=a.a.f.D();a.a.Ja=function(d,e,g,h,k){function m(b,c){x=s[c];t!==c&&(z[b]=x);x.za(t++);a.a.$(x.R,d);r.push(x);w.push(x)}function f(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.n(c[d].R,function(a){b(a,d,c[d].fa)})}e=e||[];h=h||{};var p=a.a.f.get(d,c)===q,s=a.a.f.get(d,c)||[],
+l=a.a.ha(s,function(a){return a.fa}),n=a.a.ra(l,e,h.dontLimitMoves),r=[],v=0,t=0,u=[],w=[];e=[];for(var z=[],l=[],x,A=0,y,B;y=n[A];A++)switch(B=y.moved,y.status){case "deleted":B===q&&(x=s[v],x.h&&x.h.B(),u.push.apply(u,a.a.$(x.R,d)),h.beforeRemove&&(e[A]=x,w.push(x)));v++;break;case "retained":m(A,v++);break;case "added":B!==q?m(A,B):(x={fa:y.value,za:a.q(t++)},r.push(x),w.push(x),p||(l[A]=x))}f(h.beforeMove,z);a.a.n(u,h.beforeRemove?a.L:a.removeNode);for(var A=0,p=a.e.firstChild(d),C;x=w[A];A++){x.R||
+a.a.extend(x,b(d,g,x.fa,k,x.za));for(v=0;n=x.R[v];p=n.nextSibling,C=n,v++)n!==p&&a.e.eb(d,n,C);!x.Ob&&k&&(k(x.fa,x.R,x.za),x.Ob=!0)}f(h.beforeRemove,e);f(h.afterMove,z);f(h.afterAdd,l);a.a.f.set(d,c,r)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.Ja);a.J=function(){this.allowTemplateRewriting=!1};a.J.prototype=new a.w;a.J.prototype.renderTemplateSource=function(b){var c=(9>a.a.ja?0:b.nodes)?b.nodes():null;if(c)return a.a.Q(c.cloneNode(!0).childNodes);b=b.text();return a.a.Fa(b)};a.J.Aa=
+new a.J;a.La(a.J.Aa);a.b("nativeTemplateEngine",a.J);(function(){a.Ba=function(){var a=this.Rb=function(){if("undefined"==typeof u||!u.tmpl)return 0;try{if(0<=u.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,g){g=g||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=u.template(null,"{{ko_with $item.koBindingContext}}"+h+
+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=u.extend({koBindingContext:e},g.templateOptions);e=u.tmpl(h,b,e);e.appendTo(w.createElement("div"));u.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(u.tmpl.tag.ko_code={open:"__.push($1 || '');"},u.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.Ba.prototype=
+new a.w;var b=new a.Ba;0<b.Rb&&a.La(b);a.b("jqueryTmplTemplateEngine",a.Ba)})()})})();})();
\ No newline at end of file
diff --git a/WebSites/errors/403/lib/js/thirdparty/underscore-min.map b/WebSites/errors/403/lib/js/thirdparty/underscore-min.map
new file mode 100644
index 0000000..663d8bf
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/underscore-min.map
@@ -0,0 +1 @@
+{"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["root","this","previousUnderscore","_","breaker","ArrayProto","Array","prototype","ObjProto","Object","FuncProto","Function","push","slice","concat","toString","hasOwnProperty","nativeForEach","forEach","nativeMap","map","nativeReduce","reduce","nativeReduceRight","reduceRight","nativeFilter","filter","nativeEvery","every","nativeSome","some","nativeIndexOf","indexOf","nativeLastIndexOf","lastIndexOf","nativeIsArray","isArray","nativeKeys","keys","nativeBind","bind","obj","_wrapped","exports","module","VERSION","each","iterator","context","length","i","call","collect","results","value","index","list","reduceError","foldl","inject","memo","initial","arguments","TypeError","foldr","find","detect","result","any","select","reject","all","identity","contains","include","target","invoke","method","args","isFunc","isFunction","apply","pluck","key","where","attrs","first","isEmpty","findWhere","max","Math","Infinity","computed","min","shuffle","rand","shuffled","random","sample","n","guard","lookupIterator","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","has","indexBy","countBy","sortedIndex","array","low","high","mid","toArray","values","size","head","take","last","rest","tail","drop","compact","flatten","input","shallow","output","isArguments","without","difference","uniq","unique","isSorted","seen","union","intersection","item","other","zip","object","from","hasIndex","range","start","stop","step","ceil","idx","ctor","func","bound","self","partial","bindAll","funcs","Error","f","memoize","hasher","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","Date","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","once","ran","wrap","wrapper","compose","after","times","pairs","invert","functions","methods","names","extend","source","prop","pick","copy","omit","defaults","clone","isObject","tap","interceptor","eq","aStack","bStack","className","String","global","multiline","ignoreCase","aCtor","constructor","bCtor","pop","isEqual","isString","isElement","nodeType","name","isFinite","isNaN","parseFloat","isNumber","isBoolean","isNull","isUndefined","noConflict","accum","floor","entityMap","escape","&","<",">","\"","'","unescape","entityRegexes","RegExp","join","string","replace","match","property","mixin","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","\t","
","
","escaper","template","text","data","settings","render","matcher","offset","variable","e","chain","_chain"],"mappings":"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"}
diff --git a/WebSites/errors/403/lib/js/thirdparty/underscore.js b/WebSites/errors/403/lib/js/thirdparty/underscore.js
new file mode 100755
index 0000000..ef9ef9f
--- /dev/null
+++ b/WebSites/errors/403/lib/js/thirdparty/underscore.js
@@ -0,0 +1,6 @@
+//     Underscore.js 1.5.1
+//     http://underscorejs.org
+//     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+!function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,v=e.reduce,h=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,w=i.bind,j=function(n){return n instanceof j?n:this instanceof j?(this._wrapped=n,void 0):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.5.1";var A=j.each=j.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(j.has(n,a)&&t.call(e,n[a],a,n)===r)return};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var E="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduce===v)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(E);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduceRight===h)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(E);return r},j.find=j.detect=function(n,t,r){var e;return O(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var O=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:O(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,function(n){return n[t]})},j.where=function(n,t,r){return j.isEmpty(t)?r?void 0:[]:j[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},j.findWhere=function(n,t){return j.where(n,t,!0)},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);if(!t&&j.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>e.computed&&(e={value:n,computed:a})}),e.value},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);if(!t&&j.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a<e.computed&&(e={value:n,computed:a})}),e.value},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e};var F=function(n){return j.isFunction(n)?n:function(t){return t[n]}};j.sortBy=function(n,t,r){var e=F(t);return j.pluck(j.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index<t.index?-1:1}),"value")};var k=function(n,t,r,e){var u={},i=F(null==t?j.identity:t);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};j.groupBy=function(n,t,r){return k(n,t,r,function(n,t,r){(j.has(n,t)?n[t]:n[t]=[]).push(r)})},j.countBy=function(n,t,r){return k(n,t,r,function(n,t){j.has(n,t)||(n[t]=0),n[t]++})},j.sortedIndex=function(n,t,r,e){r=null==r?j.identity:F(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var R=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return R(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.indexOf(t,n)>=0})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var M=function(){};j.bind=function(n,t){var r,e;if(w&&n.bind===w)return w.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));M.prototype=n.prototype;var u=new M;M.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:new Date,a=null,i=n.apply(e,u)};return function(){var l=new Date;o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u)):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u=null;return function(){var i=this,a=arguments,o=function(){u=null,r||(e=n.apply(i,a))},c=r&&!u;return clearTimeout(u),u=setTimeout(o,t),c&&(e=n.apply(i,a)),e}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push(n[r]);return t},j.pairs=function(n){var t=[];for(var r in n)j.has(n,r)&&t.push([r,n[r]]);return t},j.invert=function(n){var t={};for(var r in n)j.has(n,r)&&(t[n[r]]=r);return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var I={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};I.unescape=j.invert(I.escape);var T={escape:new RegExp("["+j.keys(I.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(I.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(T[n],function(t){return I[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}.call(this);
+//# sourceMappingURL=underscore-min.map
\ No newline at end of file
diff --git a/WebSites/errors/403/package.json b/WebSites/errors/403/package.json
new file mode 100644
index 0000000..6da268f
--- /dev/null
+++ b/WebSites/errors/403/package.json
@@ -0,0 +1,13 @@
+{
+  "name": "freeboard",
+  "title": "freeboard",
+  "version": "1.1.3",
+  "devDependencies": {
+    "grunt": "0.4.1",
+    "grunt-contrib-concat": "0.1.3",
+    "grunt-contrib-cssmin": "0.6.1",
+    "grunt-contrib-watch": "0.5.3",
+    "grunt-contrib-uglify": "0.6.0",
+    "grunt-string-replace": "^0.2.7"
+  }
+}
diff --git a/WebSites/errors/403/plugins/freeboard/freeboard.datasources.js b/WebSites/errors/403/plugins/freeboard/freeboard.datasources.js
new file mode 100755
index 0000000..32f7795
--- /dev/null
+++ b/WebSites/errors/403/plugins/freeboard/freeboard.datasources.js
@@ -0,0 +1,653 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+(function () {
+	var jsonDatasource = function (settings, updateCallback) {
+		var self = this;
+		var updateTimer = null;
+		var currentSettings = settings;
+		var errorStage = 0; 	// 0 = try standard request
+		// 1 = try JSONP
+		// 2 = try thingproxy.freeboard.io
+		var lockErrorStage = false;
+
+		function updateRefresh(refreshTime) {
+			if (updateTimer) {
+				clearInterval(updateTimer);
+			}
+
+			updateTimer = setInterval(function () {
+				self.updateNow();
+			}, refreshTime);
+		}
+
+		updateRefresh(currentSettings.refresh * 1000);
+
+		this.updateNow = function () {
+			if ((errorStage > 1 && !currentSettings.use_thingproxy) || errorStage > 2) // We've tried everything, let's quit
+			{
+				return; // TODO: Report an error
+			}
+
+			var requestURL = currentSettings.url;
+
+			if (errorStage == 2 && currentSettings.use_thingproxy) {
+				requestURL = (location.protocol == "https:" ? "https:" : "http:") + "//thingproxy.freeboard.io/fetch/" + encodeURI(currentSettings.url);
+			}
+
+			var body = currentSettings.body;
+
+			// Can the body be converted to JSON?
+			if (body) {
+				try {
+					body = JSON.parse(body);
+				}
+				catch (e) {
+				}
+			}
+
+			$.ajax({
+				url: requestURL,
+				dataType: (errorStage == 1) ? "JSONP" : "JSON",
+				type: currentSettings.method || "GET",
+				data: body,
+				beforeSend: function (xhr) {
+					try {
+						_.each(currentSettings.headers, function (header) {
+							var name = header.name;
+							var value = header.value;
+
+							if (!_.isUndefined(name) && !_.isUndefined(value)) {
+								xhr.setRequestHeader(name, value);
+							}
+						});
+					}
+					catch (e) {
+					}
+				},
+				success: function (data) {
+					lockErrorStage = true;
+					updateCallback(data);
+				},
+				error: function (xhr, status, error) {
+					if (!lockErrorStage) {
+						// TODO: Figure out a way to intercept CORS errors only. The error message for CORS errors seems to be a standard 404.
+						errorStage++;
+						self.updateNow();
+					}
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			clearInterval(updateTimer);
+			updateTimer = null;
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			lockErrorStage = false;
+			errorStage = 0;
+
+			currentSettings = newSettings;
+			updateRefresh(currentSettings.refresh * 1000);
+			self.updateNow();
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		type_name: "JSON",
+		settings: [
+			{
+				name: "url",
+				display_name: "URL",
+				type: "text"
+			},
+			{
+				name: "use_thingproxy",
+				display_name: "Try thingproxy",
+				description: 'A direct JSON connection will be tried first, if that fails, a JSONP connection will be tried. If that fails, you can use thingproxy, which can solve many connection problems to APIs. <a href="https://github.com/Freeboard/thingproxy" target="_blank">More information</a>.',
+				type: "boolean",
+				default_value: true
+			},
+			{
+				name: "refresh",
+				display_name: "Refresh Every",
+				type: "number",
+				suffix: "seconds",
+				default_value: 5
+			},
+			{
+				name: "method",
+				display_name: "Method",
+				type: "option",
+				options: [
+					{
+						name: "GET",
+						value: "GET"
+					},
+					{
+						name: "POST",
+						value: "POST"
+					},
+					{
+						name: "PUT",
+						value: "PUT"
+					},
+					{
+						name: "DELETE",
+						value: "DELETE"
+					}
+				]
+			},
+			{
+				name: "body",
+				display_name: "Body",
+				type: "text",
+				description: "The body of the request. Normally only used if method is POST"
+			},
+			{
+				name: "headers",
+				display_name: "Headers",
+				type: "array",
+				settings: [
+					{
+						name: "name",
+						display_name: "Name",
+						type: "text"
+					},
+					{
+						name: "value",
+						display_name: "Value",
+						type: "text"
+					}
+				]
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new jsonDatasource(settings, updateCallback));
+		}
+	});
+
+	var openWeatherMapDatasource = function (settings, updateCallback) {
+		var self = this;
+		var updateTimer = null;
+		var currentSettings = settings;
+
+		function updateRefresh(refreshTime) {
+			if (updateTimer) {
+				clearInterval(updateTimer);
+			}
+
+			updateTimer = setInterval(function () {
+				self.updateNow();
+			}, refreshTime);
+		}
+
+		function toTitleCase(str) {
+			return str.replace(/\w\S*/g, function (txt) {
+				return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
+			});
+		}
+
+		updateRefresh(currentSettings.refresh * 1000);
+
+		this.updateNow = function () {
+			$.ajax({
+				url: "http://api.openweathermap.org/data/2.5/weather?APPID="+currentSettings.api_key+"&q=" + encodeURIComponent(currentSettings.location) + "&units=" + currentSettings.units,
+				dataType: "JSONP",
+				success: function (data) {
+					// Rejigger our data into something easier to understand
+					var newData = {
+						place_name: data.name,
+						sunrise: (new Date(data.sys.sunrise * 1000)).toLocaleTimeString(),
+						sunset: (new Date(data.sys.sunset * 1000)).toLocaleTimeString(),
+						conditions: toTitleCase(data.weather[0].description),
+						current_temp: data.main.temp,
+						high_temp: data.main.temp_max,
+						low_temp: data.main.temp_min,
+						pressure: data.main.pressure,
+						humidity: data.main.humidity,
+						wind_speed: data.wind.speed,
+						wind_direction: data.wind.deg
+					};
+
+					updateCallback(newData);
+				},
+				error: function (xhr, status, error) {
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			clearInterval(updateTimer);
+			updateTimer = null;
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			self.updateNow();
+			updateRefresh(currentSettings.refresh * 1000);
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		type_name: "openweathermap",
+		display_name: "Open Weather Map API",
+		settings: [
+			{
+				name: "api_key",
+				display_name: "API Key",
+				type: "text",
+				description: "Your personal API Key from Open Weather Map"
+			},
+            {
+				name: "location",
+				display_name: "Location",
+				type: "text",
+				description: "Example: London, UK"
+			},
+			{
+				name: "units",
+				display_name: "Units",
+				type: "option",
+				default: "imperial",
+				options: [
+					{
+						name: "Imperial",
+						value: "imperial"
+					},
+					{
+						name: "Metric",
+						value: "metric"
+					}
+				]
+			},
+			{
+				name: "refresh",
+				display_name: "Refresh Every",
+				type: "number",
+				suffix: "seconds",
+				default_value: 5
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new openWeatherMapDatasource(settings, updateCallback));
+		}
+	});
+
+	var dweetioDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+
+		function onNewDweet(dweet) {
+			updateCallback(dweet);
+		}
+
+		this.updateNow = function () {
+			dweetio.get_latest_dweet_for(currentSettings.thing_id, function (err, dweet) {
+				if (err) {
+					//onNewDweet({});
+				}
+				else {
+					onNewDweet(dweet[0].content);
+				}
+			});
+		}
+
+		this.onDispose = function () {
+
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			dweetio.stop_listening_for(currentSettings.thing_id);
+
+			currentSettings = newSettings;
+
+			dweetio.listen_for(currentSettings.thing_id, function (dweet) {
+				onNewDweet(dweet.content);
+			});
+		}
+
+		self.onSettingsChanged(settings);
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "dweet_io",
+		"display_name": "Dweet.io",
+		"external_scripts": [
+			"http://dweet.io/client/dweet.io.min.js"
+		],
+		"settings": [
+			{
+				name: "thing_id",
+				display_name: "Thing Name",
+				"description": "Example: salty-dog-1",
+				type: "text"
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new dweetioDatasource(settings, updateCallback));
+		}
+	});
+
+	var playbackDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+		var currentDataset = [];
+		var currentIndex = 0;
+		var currentTimeout;
+
+		function moveNext() {
+			if (currentDataset.length > 0) {
+				if (currentIndex < currentDataset.length) {
+					updateCallback(currentDataset[currentIndex]);
+					currentIndex++;
+				}
+
+				if (currentIndex >= currentDataset.length && currentSettings.loop) {
+					currentIndex = 0;
+				}
+
+				if (currentIndex < currentDataset.length) {
+					currentTimeout = setTimeout(moveNext, currentSettings.refresh * 1000);
+				}
+			}
+			else {
+				updateCallback({});
+			}
+		}
+
+		function stopTimeout() {
+			currentDataset = [];
+			currentIndex = 0;
+
+			if (currentTimeout) {
+				clearTimeout(currentTimeout);
+				currentTimeout = null;
+			}
+		}
+
+		this.updateNow = function () {
+			stopTimeout();
+
+			$.ajax({
+				url: currentSettings.datafile,
+				dataType: (currentSettings.is_jsonp) ? "JSONP" : "JSON",
+				success: function (data) {
+					if (_.isArray(data)) {
+						currentDataset = data;
+					}
+					else {
+						currentDataset = [];
+					}
+
+					currentIndex = 0;
+
+					moveNext();
+				},
+				error: function (xhr, status, error) {
+				}
+			});
+		}
+
+		this.onDispose = function () {
+			stopTimeout();
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			self.updateNow();
+		}
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "playback",
+		"display_name": "Playback",
+		"settings": [
+			{
+				"name": "datafile",
+				"display_name": "Data File URL",
+				"type": "text",
+				"description": "A link to a JSON array of data."
+			},
+			{
+				name: "is_jsonp",
+				display_name: "Is JSONP",
+				type: "boolean"
+			},
+			{
+				"name": "loop",
+				"display_name": "Loop",
+				"type": "boolean",
+				"description": "Rewind and loop when finished"
+			},
+			{
+				"name": "refresh",
+				"display_name": "Refresh Every",
+				"type": "number",
+				"suffix": "seconds",
+				"default_value": 5
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new playbackDatasource(settings, updateCallback));
+		}
+	});
+
+	var clockDatasource = function (settings, updateCallback) {
+		var self = this;
+		var currentSettings = settings;
+		var timer;
+
+		function stopTimer() {
+			if (timer) {
+				clearTimeout(timer);
+				timer = null;
+			}
+		}
+
+		function updateTimer() {
+			stopTimer();
+			timer = setInterval(self.updateNow, currentSettings.refresh * 1000);
+		}
+
+		this.updateNow = function () {
+			var date = new Date();
+
+			var data = {
+				numeric_value: date.getTime(),
+				full_string_value: date.toLocaleString(),
+				date_string_value: date.toLocaleDateString(),
+				time_string_value: date.toLocaleTimeString(),
+				date_object: date
+			};
+
+			updateCallback(data);
+		}
+
+		this.onDispose = function () {
+			stopTimer();
+		}
+
+		this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+			updateTimer();
+		}
+
+		updateTimer();
+	};
+
+	freeboard.loadDatasourcePlugin({
+		"type_name": "clock",
+		"display_name": "Clock",
+		"settings": [
+			{
+				"name": "refresh",
+				"display_name": "Refresh Every",
+				"type": "number",
+				"suffix": "seconds",
+				"default_value": 1
+			}
+		],
+		newInstance: function (settings, newInstanceCallback, updateCallback) {
+			newInstanceCallback(new clockDatasource(settings, updateCallback));
+		}
+	});
+freeboard.loadDatasourcePlugin({
+		// **type_name** (required) : A unique name for this plugin. This name should be as unique as possible to avoid collisions with other plugins, and should follow naming conventions for javascript variable and function declarations.
+		"type_name"   : "meshblu",
+		// **display_name** : The pretty name that will be used for display purposes for this plugin. If the name is not defined, type_name will be used instead.
+		"display_name": "Octoblu",
+        // **description** : A description of the plugin. This description will be displayed when the plugin is selected or within search results (in the future). The description may contain HTML if needed.
+        "description" : "app.octoblu.com",
+		// **external_scripts** : Any external scripts that should be loaded before the plugin instance is created.
+		"external_scripts" : [
+			"http://meshblu.octoblu.com/js/meshblu.js"
+		],
+		// **settings** : An array of settings that will be displayed for this plugin when the user adds it.
+		"settings"    : [
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "uuid",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "UUID",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "device uuid",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your device UUID",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "token",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Token",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "device token",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your device TOKEN",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "server",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Server",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "text",
+				// **default_value** : A default value for this setting.
+				"default_value": "meshblu.octoblu.com",
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "your server",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			},
+			{
+				// **name** (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
+				"name"         : "port",
+				// **display_name** : The pretty name that will be shown to the user when they adjust this setting.
+				"display_name" : "Port",
+				// **type** (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
+				"type"         : "number",
+				// **default_value** : A default value for this setting.
+				"default_value": 80,
+				// **description** : Text that will be displayed below the setting to give the user any extra information.
+				"description"  : "server port",
+                // **required** : Set to true if this setting is required for the datasource to be created.
+                "required" : true
+			}
+			
+		],
+		// **newInstance(settings, newInstanceCallback, updateCallback)** (required) : A function that will be called when a new instance of this plugin is requested.
+		// * **settings** : A javascript object with the initial settings set by the user. The names of the properties in the object will correspond to the setting names defined above.
+		// * **newInstanceCallback** : A callback function that you'll call when the new instance of the plugin is ready. This function expects a single argument, which is the new instance of your plugin object.
+		// * **updateCallback** : A callback function that you'll call if and when your datasource has an update for freeboard to recalculate. This function expects a single parameter which is a javascript object with the new, updated data. You should hold on to this reference and call it when needed.
+		newInstance   : function(settings, newInstanceCallback, updateCallback)
+		{
+			// myDatasourcePlugin is defined below.
+			newInstanceCallback(new meshbluSource(settings, updateCallback));
+		}
+	});
+
+
+	// ### Datasource Implementation
+	//
+	// -------------------
+	// Here we implement the actual datasource plugin. We pass in the settings and updateCallback.
+	var meshbluSource = function(settings, updateCallback)
+	{
+		// Always a good idea...
+		var self = this;
+
+		// Good idea to create a variable to hold on to our settings, because they might change in the future. See below.
+		var currentSettings = settings;
+
+		
+
+		/* This is some function where I'll get my data from somewhere */
+
+ 	
+		function getData()
+		{
+
+
+		 var conn = skynet.createConnection({
+    		"uuid": currentSettings.uuid,
+    		"token": currentSettings.token,
+    		"server": currentSettings.server, 
+    		"port": currentSettings.port
+  				});	
+			 
+			 conn.on('ready', function(data){	
+
+			 	conn.on('message', function(message){
+
+    				var newData = message;
+    				updateCallback(newData);
+
+ 						 });
+
+			 });
+			}
+
+	
+
+		// **onSettingsChanged(newSettings)** (required) : A public function we must implement that will be called when a user makes a change to the settings.
+		self.onSettingsChanged = function(newSettings)
+		{
+			// Here we update our current settings with the variable that is passed in.
+			currentSettings = newSettings;
+		}
+
+		// **updateNow()** (required) : A public function we must implement that will be called when the user wants to manually refresh the datasource
+		self.updateNow = function()
+		{
+			// Most likely I'll just call getData() here.
+			getData();
+		}
+
+		// **onDispose()** (required) : A public function we must implement that will be called when this instance of this plugin is no longer needed. Do anything you need to cleanup after yourself here.
+		self.onDispose = function()
+		{
+		
+			//conn.close();
+		}
+
+		// Here we call createRefreshTimer with our current settings, to kick things off, initially. Notice how we make use of one of the user defined settings that we setup earlier.
+	//	createRefreshTimer(currentSettings.refresh_time);
+	}
+
+
+}());
diff --git a/WebSites/errors/403/plugins/freeboard/freeboard.widgets.js b/WebSites/errors/403/plugins/freeboard/freeboard.widgets.js
new file mode 100755
index 0000000..2fbf43a
--- /dev/null
+++ b/WebSites/errors/403/plugins/freeboard/freeboard.widgets.js
@@ -0,0 +1,1048 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ F R E E B O A R D                                                  │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2013 Jim Heising (https://github.com/jheising)         │ \\
+// │ Copyright © 2013 Bug Labs, Inc. (http://buglabs.net)               │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT license.                                    │ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+(function () {
+	var SPARKLINE_HISTORY_LENGTH = 100;
+	var SPARKLINE_COLORS = ["#FF9900", "#FFFFFF", "#B3B4B4", "#6B6B6B", "#28DE28", "#13F7F9", "#E6EE18", "#C41204", "#CA3CB8", "#0B1CFB"];
+
+    function easeTransitionText(newValue, textElement, duration) {
+
+		var currentValue = $(textElement).text();
+
+        if (currentValue == newValue)
+            return;
+
+        if ($.isNumeric(newValue) && $.isNumeric(currentValue)) {
+            var numParts = newValue.toString().split('.');
+            var endingPrecision = 0;
+
+            if (numParts.length > 1) {
+                endingPrecision = numParts[1].length;
+            }
+
+            numParts = currentValue.toString().split('.');
+            var startingPrecision = 0;
+
+            if (numParts.length > 1) {
+                startingPrecision = numParts[1].length;
+            }
+
+            jQuery({transitionValue: Number(currentValue), precisionValue: startingPrecision}).animate({transitionValue: Number(newValue), precisionValue: endingPrecision}, {
+                duration: duration,
+                step: function () {
+                    $(textElement).text(this.transitionValue.toFixed(this.precisionValue));
+                },
+                done: function () {
+                    $(textElement).text(newValue);
+                }
+            });
+        }
+        else {
+            $(textElement).text(newValue);
+        }
+    }
+
+	function addSparklineLegend(element, legend) {
+		var legendElt = $("<div class='sparkline-legend'></div>");
+		for(var i=0; i<legend.length; i++) {
+			var color = SPARKLINE_COLORS[i % SPARKLINE_COLORS.length];
+			var label = legend[i];
+			legendElt.append("<div class='sparkline-legend-value'><span style='color:" +
+							 color + "'>&#9679;</span>" + label + "</div>");
+		}
+		element.empty().append(legendElt);
+
+		freeboard.addStyle('.sparkline-legend', "margin:5px;");
+		freeboard.addStyle('.sparkline-legend-value',
+			'color:white; font:10px arial,san serif; float:left; overflow:hidden; width:50%;');
+		freeboard.addStyle('.sparkline-legend-value span',
+			'font-weight:bold; padding-right:5px;');
+	}
+
+	function addValueToSparkline(element, value, legend) {
+		var values = $(element).data().values;
+		var valueMin = $(element).data().valueMin;
+		var valueMax = $(element).data().valueMax;
+		if (!values) {
+			values = [];
+			valueMin = undefined;
+			valueMax = undefined;
+		}
+
+		var collateValues = function(val, plotIndex) {
+			if(!values[plotIndex]) {
+				values[plotIndex] = [];
+			}
+			if (values[plotIndex].length >= SPARKLINE_HISTORY_LENGTH) {
+				values[plotIndex].shift();
+			}
+			values[plotIndex].push(Number(val));
+
+			if(valueMin === undefined || val < valueMin) {
+				valueMin = val;
+			}
+			if(valueMax === undefined || val > valueMax) {
+				valueMax = val;
+			}
+		}
+
+		if(_.isArray(value)) {
+			_.each(value, collateValues);
+		} else {
+			collateValues(value, 0);
+		}
+		$(element).data().values = values;
+		$(element).data().valueMin = valueMin;
+		$(element).data().valueMax = valueMax;
+
+		var tooltipHTML = '<span style="color: {{color}}">&#9679;</span> {{y}}';
+
+		var composite = false;
+		_.each(values, function(valueArray, valueIndex) {
+			$(element).sparkline(valueArray, {
+				type: "line",
+				composite: composite,
+				height: "100%",
+				width: "100%",
+				fillColor: false,
+				lineColor: SPARKLINE_COLORS[valueIndex % SPARKLINE_COLORS.length],
+				lineWidth: 2,
+				spotRadius: 3,
+				spotColor: false,
+				minSpotColor: "#78AB49",
+				maxSpotColor: "#78AB49",
+				highlightSpotColor: "#9D3926",
+				highlightLineColor: "#9D3926",
+				chartRangeMin: valueMin,
+				chartRangeMax: valueMax,
+				tooltipFormat: (legend && legend[valueIndex])?tooltipHTML + ' (' + legend[valueIndex] + ')':tooltipHTML
+			});
+			composite = true;
+		});
+	}
+
+	var valueStyle = freeboard.getStyleString("values");
+
+	freeboard.addStyle('.widget-big-text', valueStyle + "font-size:75px;");
+
+	freeboard.addStyle('.tw-display', 'width: 100%; height:100%; display:table; table-layout:fixed;');
+
+	freeboard.addStyle('.tw-tr',
+		'display:table-row;');
+
+	freeboard.addStyle('.tw-tg',
+		'display:table-row-group;');
+
+	freeboard.addStyle('.tw-tc',
+		'display:table-caption;');
+
+	freeboard.addStyle('.tw-td',
+		'display:table-cell;');
+
+	freeboard.addStyle('.tw-value',
+		valueStyle +
+		'overflow: hidden;' +
+		'display: inline-block;' +
+		'text-overflow: ellipsis;');
+
+	freeboard.addStyle('.tw-unit',
+		'display: inline-block;' +
+		'padding-left: 10px;' +
+		'padding-bottom: 1.1em;' +
+		'vertical-align: bottom;');
+
+	freeboard.addStyle('.tw-value-wrapper',
+		'position: relative;' +
+		'vertical-align: middle;' +
+		'height:100%;');
+
+	freeboard.addStyle('.tw-sparkline',
+		'height:20px;');
+
+    var textWidget = function (settings) {
+
+        var self = this;
+
+        var currentSettings = settings;
+		var displayElement = $('<div class="tw-display"></div>');
+		var titleElement = $('<h2 class="section-title tw-title tw-td"></h2>');
+        var valueElement = $('<div class="tw-value"></div>');
+        var unitsElement = $('<div class="tw-unit"></div>');
+        var sparklineElement = $('<div class="tw-sparkline tw-td"></div>');
+
+		function updateValueSizing()
+		{
+			if(!_.isUndefined(currentSettings.units) && currentSettings.units != "") // If we're displaying our units
+			{
+				valueElement.css("max-width", (displayElement.innerWidth() - unitsElement.outerWidth(true)) + "px");
+			}
+			else
+			{
+				valueElement.css("max-width", "100%");
+			}
+		}
+
+        this.render = function (element) {
+			$(element).empty();
+
+			$(displayElement)
+				.append($('<div class="tw-tr"></div>').append(titleElement))
+				.append($('<div class="tw-tr"></div>').append($('<div class="tw-value-wrapper tw-td"></div>').append(valueElement).append(unitsElement)))
+				.append($('<div class="tw-tr"></div>').append(sparklineElement));
+
+			$(element).append(displayElement);
+
+			updateValueSizing();
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+
+			var shouldDisplayTitle = (!_.isUndefined(newSettings.title) && newSettings.title != "");
+			var shouldDisplayUnits = (!_.isUndefined(newSettings.units) && newSettings.units != "");
+
+			if(newSettings.sparkline)
+			{
+				sparklineElement.attr("style", null);
+			}
+			else
+			{
+				delete sparklineElement.data().values;
+				sparklineElement.empty();
+				sparklineElement.hide();
+			}
+
+			if(shouldDisplayTitle)
+			{
+				titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+				titleElement.attr("style", null);
+			}
+			else
+			{
+				titleElement.empty();
+				titleElement.hide();
+			}
+
+			if(shouldDisplayUnits)
+			{
+				unitsElement.html((_.isUndefined(newSettings.units) ? "" : newSettings.units));
+				unitsElement.attr("style", null);
+			}
+			else
+			{
+				unitsElement.empty();
+				unitsElement.hide();
+			}
+
+			var valueFontSize = 30;
+
+			if(newSettings.size == "big")
+			{
+				valueFontSize = 75;
+
+				if(newSettings.sparkline)
+				{
+					valueFontSize = 60;
+				}
+			}
+
+			valueElement.css({"font-size" : valueFontSize + "px"});
+
+			updateValueSizing();
+        }
+
+		this.onSizeChanged = function()
+		{
+			updateValueSizing();
+		}
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "value") {
+
+                if (currentSettings.animate) {
+                    easeTransitionText(newValue, valueElement, 500);
+                }
+                else {
+                    valueElement.text(newValue);
+                }
+
+                if (currentSettings.sparkline) {
+                    addValueToSparkline(sparklineElement, newValue);
+                }
+            }
+        }
+
+        this.onDispose = function () {
+
+        }
+
+        this.getHeight = function () {
+            if (currentSettings.size == "big" || currentSettings.sparkline) {
+                return 2;
+            }
+            else {
+                return 1;
+            }
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "text_widget",
+        display_name: "Text",
+        "external_scripts" : [
+            "plugins/thirdparty/jquery.sparkline.min.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "size",
+                display_name: "Size",
+                type: "option",
+                options: [
+                    {
+                        name: "Regular",
+                        value: "regular"
+                    },
+                    {
+                        name: "Big",
+                        value: "big"
+                    }
+                ]
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated"
+            },
+            {
+                name: "sparkline",
+                display_name: "Include Sparkline",
+                type: "boolean"
+            },
+            {
+                name: "animate",
+                display_name: "Animate Value Changes",
+                type: "boolean",
+                default_value: true
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new textWidget(settings));
+        }
+    });
+
+    var gaugeID = 0;
+	freeboard.addStyle('.gauge-widget-wrapper', "width: 100%;text-align: center;");
+	freeboard.addStyle('.gauge-widget', "width:200px;height:160px;display:inline-block;");
+
+    var gaugeWidget = function (settings) {
+        var self = this;
+
+        var thisGaugeID = "gauge-" + gaugeID++;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var gaugeElement = $('<div class="gauge-widget" id="' + thisGaugeID + '"></div>');
+
+        var gaugeObject;
+        var rendered = false;
+
+        var currentSettings = settings;
+
+        function createGauge() {
+            if (!rendered) {
+                return;
+            }
+
+            gaugeElement.empty();
+
+            gaugeObject = new JustGage({
+                id: thisGaugeID,
+                value: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                min: (_.isUndefined(currentSettings.min_value) ? 0 : currentSettings.min_value),
+                max: (_.isUndefined(currentSettings.max_value) ? 0 : currentSettings.max_value),
+                label: currentSettings.units,
+                showInnerShadow: false,
+                valueFontColor: "#d3d4d4"
+            });
+        }
+
+        this.render = function (element) {
+            rendered = true;
+            $(element).append(titleElement).append($('<div class="gauge-widget-wrapper"></div>').append(gaugeElement));
+            createGauge();
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            if (newSettings.min_value != currentSettings.min_value || newSettings.max_value != currentSettings.max_value || newSettings.units != currentSettings.units) {
+                currentSettings = newSettings;
+                createGauge();
+            }
+            else {
+                currentSettings = newSettings;
+            }
+
+            titleElement.html(newSettings.title);
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (!_.isUndefined(gaugeObject)) {
+                gaugeObject.refresh(Number(newValue));
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 3;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "gauge",
+        display_name: "Gauge",
+        "external_scripts" : [
+            "plugins/thirdparty/raphael.2.1.0.min.js",
+            "plugins/thirdparty/justgage.1.0.1.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated"
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            },
+            {
+                name: "min_value",
+                display_name: "Minimum",
+                type: "text",
+                default_value: 0
+            },
+            {
+                name: "max_value",
+                display_name: "Maximum",
+                type: "text",
+                default_value: 100
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new gaugeWidget(settings));
+        }
+    });
+
+
+	freeboard.addStyle('.sparkline', "width:100%;height: 75px;");
+    var sparklineWidget = function (settings) {
+        var self = this;
+
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var sparklineElement = $('<div class="sparkline"></div>');
+		var sparklineLegend = $('<div></div>');
+		var currentSettings = settings;
+
+        this.render = function (element) {
+            $(element).append(titleElement).append(sparklineElement).append(sparklineLegend);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+			currentSettings = newSettings;
+            titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+
+			if(newSettings.include_legend) {
+				addSparklineLegend(sparklineLegend,  newSettings.legend.split(","));
+			}
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+			if (currentSettings.legend) {
+				addValueToSparkline(sparklineElement, newValue, currentSettings.legend.split(","));
+			} else {
+				addValueToSparkline(sparklineElement, newValue);
+			}
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+			var legendHeight = 0;
+			if (currentSettings.include_legend && currentSettings.legend) {
+				var legendLength = currentSettings.legend.split(",").length;
+				if (legendLength > 4) {
+					legendHeight = Math.floor((legendLength-1) / 4) * 0.5;
+				} else if (legendLength) {
+					legendHeight = 0.5;
+				}
+			}
+			return 2 + legendHeight;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "sparkline",
+        display_name: "Sparkline",
+        "external_scripts" : [
+            "plugins/thirdparty/jquery.sparkline.min.js"
+        ],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value",
+                type: "calculated",
+				multi_input: "true"
+            },
+			{
+				name: "include_legend",
+				display_name: "Include Legend",
+				type: "boolean"
+			},
+			{
+				name: "legend",
+				display_name: "Legend",
+				type: "text",
+				description: "Comma-separated for multiple sparklines"
+			}
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new sparklineWidget(settings));
+        }
+    });
+
+	freeboard.addStyle('div.pointer-value', "position:absolute;height:95px;margin: auto;top: 0px;bottom: 0px;width: 100%;text-align:center;");
+    var pointerWidget = function (settings) {
+        var self = this;
+        var paper;
+        var strokeWidth = 3;
+        var triangle;
+        var width, height;
+        var currentValue = 0;
+        var valueDiv = $('<div class="widget-big-text"></div>');
+        var unitsDiv = $('<div></div>');
+
+        function polygonPath(points) {
+            if (!points || points.length < 2)
+                return [];
+            var path = []; //will use path object type
+            path.push(['m', points[0], points[1]]);
+            for (var i = 2; i < points.length; i += 2) {
+                path.push(['l', points[i], points[i + 1]]);
+            }
+            path.push(['z']);
+            return path;
+        }
+
+        this.render = function (element) {
+            width = $(element).width();
+            height = $(element).height();
+
+            var radius = Math.min(width, height) / 2 - strokeWidth * 2;
+
+            paper = Raphael($(element).get()[0], width, height);
+            var circle = paper.circle(width / 2, height / 2, radius);
+            circle.attr("stroke", "#FF9900");
+            circle.attr("stroke-width", strokeWidth);
+
+            triangle = paper.path(polygonPath([width / 2, (height / 2) - radius + strokeWidth, 15, 20, -30, 0]));
+            triangle.attr("stroke-width", 0);
+            triangle.attr("fill", "#fff");
+
+            $(element).append($('<div class="pointer-value"></div>').append(valueDiv).append(unitsDiv));
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            unitsDiv.html(newSettings.units);
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "direction") {
+                if (!_.isUndefined(triangle)) {
+                    var direction = "r";
+
+                    var oppositeCurrent = currentValue + 180;
+
+                    if (oppositeCurrent < newValue) {
+                        //direction = "l";
+                    }
+
+                    triangle.animate({transform: "r" + newValue + "," + (width / 2) + "," + (height / 2)}, 250, "bounce");
+                }
+
+                currentValue = newValue;
+            }
+            else if (settingName == "value_text") {
+                valueDiv.html(newValue);
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "pointer",
+        display_name: "Pointer",
+        "external_scripts" : [
+            "plugins/thirdparty/raphael.2.1.0.min.js"
+        ],
+        settings: [
+            {
+                name: "direction",
+                display_name: "Direction",
+                type: "calculated",
+                description: "In degrees"
+            },
+            {
+                name: "value_text",
+                display_name: "Value Text",
+                type: "calculated"
+            },
+            {
+                name: "units",
+                display_name: "Units",
+                type: "text"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new pointerWidget(settings));
+        }
+    });
+
+    var pictureWidget = function(settings)
+    {
+        var self = this;
+        var widgetElement;
+        var timer;
+        var imageURL;
+
+        function stopTimer()
+        {
+            if(timer)
+            {
+                clearInterval(timer);
+                timer = null;
+            }
+        }
+
+        function updateImage()
+        {
+            if(widgetElement && imageURL)
+            {
+                var cacheBreakerURL = imageURL + (imageURL.indexOf("?") == -1 ? "?" : "&") + Date.now();
+
+                $(widgetElement).css({
+                    "background-image" :  "url(" + cacheBreakerURL + ")"
+                });
+            }
+        }
+
+        this.render = function(element)
+        {
+            $(element).css({
+                width : "100%",
+                height: "100%",
+                "background-size" : "cover",
+                "background-position" : "center"
+            });
+
+            widgetElement = element;
+        }
+
+        this.onSettingsChanged = function(newSettings)
+        {
+            stopTimer();
+
+            if(newSettings.refresh && newSettings.refresh > 0)
+            {
+                timer = setInterval(updateImage, Number(newSettings.refresh) * 1000);
+            }
+        }
+
+        this.onCalculatedValueChanged = function(settingName, newValue)
+        {
+            if(settingName == "src")
+            {
+                imageURL = newValue;
+            }
+
+            updateImage();
+        }
+
+        this.onDispose = function()
+        {
+            stopTimer();
+        }
+
+        this.getHeight = function()
+        {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "picture",
+        display_name: "Picture",
+        fill_size: true,
+        settings: [
+            {
+                name: "src",
+                display_name: "Image URL",
+                type: "calculated"
+            },
+            {
+                "type": "number",
+                "display_name": "Refresh every",
+                "name": "refresh",
+                "suffix": "seconds",
+                "description":"Leave blank if the image doesn't need to be refreshed"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new pictureWidget(settings));
+        }
+    });
+
+	freeboard.addStyle('.indicator-light', "border-radius:50%;width:22px;height:22px;border:2px solid #3d3d3d;margin-top:5px;float:left;background-color:#222;margin-right:10px;");
+	freeboard.addStyle('.indicator-light.on', "background-color:#31F015;box-shadow: 0px 0px 15px #89F944;border-color:#47C620;");
+	freeboard.addStyle('.indicator-text', "margin-top:10px;");
+    var indicatorWidget = function (settings) {
+        var self = this;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var stateElement = $('<div class="indicator-text"></div>');
+        var indicatorElement = $('<div class="indicator-light"></div>');
+        var currentSettings = settings;
+        var isOn = false;
+        var onText;
+        var offText;
+
+        function updateState() {
+            indicatorElement.toggleClass("on", isOn);
+
+            if (isOn) {
+                stateElement.text((_.isUndefined(onText) ? (_.isUndefined(currentSettings.on_text) ? "" : currentSettings.on_text) : onText));
+            }
+            else {
+                stateElement.text((_.isUndefined(offText) ? (_.isUndefined(currentSettings.off_text) ? "" : currentSettings.off_text) : offText));
+            }
+        }
+
+        this.render = function (element) {
+            $(element).append(titleElement).append(indicatorElement).append(stateElement);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+            titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+            updateState();
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "value") {
+                isOn = Boolean(newValue);
+            }
+            if (settingName == "on_text") {
+                onText = newValue;
+            }
+            if (settingName == "off_text") {
+                offText = newValue;
+            }
+
+            updateState();
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 1;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "indicator",
+        display_name: "Indicator Light",
+        settings: [
+	        {
+	            name: "title",
+	            display_name: "Title",
+	            type: "text"
+	        },
+	        {
+	            name: "value",
+	            display_name: "Value",
+	            type: "calculated"
+	        },
+	        {
+	            name: "on_text",
+	            display_name: "On Text",
+	            type: "calculated"
+	        },
+	        {
+	            name: "off_text",
+	            display_name: "Off Text",
+	            type: "calculated"
+	        }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new indicatorWidget(settings));
+        }
+    });
+
+    freeboard.addStyle('.gm-style-cc a', "text-shadow:none;");
+
+    var googleMapWidget = function (settings) {
+        var self = this;
+        var currentSettings = settings;
+        var map;
+        var marker;
+        var currentPosition = {};
+
+        function updatePosition() {
+            if (map && marker && currentPosition.lat && currentPosition.lon) {
+                var newLatLon = new google.maps.LatLng(currentPosition.lat, currentPosition.lon);
+                marker.setPosition(newLatLon);
+                map.panTo(newLatLon);
+            }
+        }
+
+        this.render = function (element) {
+            function initializeMap() {
+                var mapOptions = {
+                    zoom: 13,
+                    center: new google.maps.LatLng(37.235, -115.811111),
+                    disableDefaultUI: true,
+                    draggable: false,
+                    styles: [
+                        {"featureType": "water", "elementType": "geometry", "stylers": [
+                            {"color": "#2a2a2a"}
+                        ]},
+                        {"featureType": "landscape", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 20}
+                        ]},
+                        {"featureType": "road.highway", "elementType": "geometry.fill", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 17}
+                        ]},
+                        {"featureType": "road.highway", "elementType": "geometry.stroke", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 29},
+                            {"weight": 0.2}
+                        ]},
+                        {"featureType": "road.arterial", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 18}
+                        ]},
+                        {"featureType": "road.local", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 16}
+                        ]},
+                        {"featureType": "poi", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 21}
+                        ]},
+                        {"elementType": "labels.text.stroke", "stylers": [
+                            {"visibility": "on"},
+                            {"color": "#000000"},
+                            {"lightness": 16}
+                        ]},
+                        {"elementType": "labels.text.fill", "stylers": [
+                            {"saturation": 36},
+                            {"color": "#000000"},
+                            {"lightness": 40}
+                        ]},
+                        {"elementType": "labels.icon", "stylers": [
+                            {"visibility": "off"}
+                        ]},
+                        {"featureType": "transit", "elementType": "geometry", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 19}
+                        ]},
+                        {"featureType": "administrative", "elementType": "geometry.fill", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 20}
+                        ]},
+                        {"featureType": "administrative", "elementType": "geometry.stroke", "stylers": [
+                            {"color": "#000000"},
+                            {"lightness": 17},
+                            {"weight": 1.2}
+                        ]}
+                    ]
+                };
+
+                map = new google.maps.Map(element, mapOptions);
+
+                google.maps.event.addDomListener(element, 'mouseenter', function (e) {
+                    e.cancelBubble = true;
+                    if (!map.hover) {
+                        map.hover = true;
+                        map.setOptions({zoomControl: true});
+                    }
+                });
+
+                google.maps.event.addDomListener(element, 'mouseleave', function (e) {
+                    if (map.hover) {
+                        map.setOptions({zoomControl: false});
+                        map.hover = false;
+                    }
+                });
+
+                marker = new google.maps.Marker({map: map});
+
+                updatePosition();
+            }
+
+            if (window.google && window.google.maps) {
+                initializeMap();
+            }
+            else {
+                window.gmap_initialize = initializeMap;
+                head.js("https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=gmap_initialize");
+            }
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "lat") {
+                currentPosition.lat = newValue;
+            }
+            else if (settingName == "lon") {
+                currentPosition.lon = newValue;
+            }
+
+            updatePosition();
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 4;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "google_map",
+        display_name: "Google Map",
+        fill_size: true,
+        settings: [
+            {
+                name: "lat",
+                display_name: "Latitude",
+                type: "calculated"
+            },
+            {
+                name: "lon",
+                display_name: "Longitude",
+                type: "calculated"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new googleMapWidget(settings));
+        }
+    });
+
+    freeboard.addStyle('.html-widget', "white-space:normal;width:100%;height:100%");
+
+    var htmlWidget = function (settings) {
+        var self = this;
+        var htmlElement = $('<div class="html-widget"></div>');
+        var currentSettings = settings;
+
+        this.render = function (element) {
+            $(element).append(htmlElement);
+        }
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            if (settingName == "html") {
+                htmlElement.html(newValue);
+            }
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return Number(currentSettings.height);
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        "type_name": "html",
+        "display_name": "HTML",
+        "fill_size": true,
+        "settings": [
+            {
+                "name": "html",
+                "display_name": "HTML",
+                "type": "calculated",
+                "description": "Can be literal HTML, or javascript that outputs HTML."
+            },
+            {
+                "name": "height",
+                "display_name": "Height Blocks",
+                "type": "number",
+                "default_value": 4,
+                "description": "A height block is around 60 pixels"
+            }
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new htmlWidget(settings));
+        }
+    });
+
+}());
diff --git a/WebSites/errors/403/plugins/thirdparty/flot_extended.plugin.js b/WebSites/errors/403/plugins/thirdparty/flot_extended.plugin.js
new file mode 100755
index 0000000..7a2c747
--- /dev/null
+++ b/WebSites/errors/403/plugins/thirdparty/flot_extended.plugin.js
@@ -0,0 +1,295 @@
+/*****************************************************************************
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 Sam Wilson
+ * Copyright (c) 2016 Stu Fisher
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *****************************************************************************/
+(function() {
+    var FlotExtendedWidgetPlugin = function (settings) {
+        var self = this;
+        var currentSettings = settings;
+
+        var currentData = [];
+        var $holder;
+        var plot;
+        var myContainer;
+
+        var tooltip = $("<div class='tooltip'></div>").css({
+            position: "absolute",
+            display: "none",
+            padding: "2px",
+            "background-color": "#111",
+            "border-radius": "3px",
+            opacity: 0.70,
+            fontSize: "10px",
+            padding: "3px",
+        })
+
+
+        function dispose(erase) {
+            myContainer = undefined;
+
+            if (erase) {
+                currentData = [];
+            }
+
+            if (plot) {
+                plot.shutdown();
+                plot = undefined;
+            }
+
+            if ($holder) {
+                $holder.remove();
+                $holder = undefined;
+            }
+        }
+
+
+        self.reset = function(e) {
+            self.zoom(e, { 
+                xaxis: {from: null, to: null},
+                yaxis: {from: null, to: null},
+            })
+        };
+
+
+        self.zoom = function (event, ranges) {
+            if (!ranges.xaxis) return
+            
+            var opts = plot.getOptions()
+            _.each(opts.xaxes, function(axis) {
+                axis.min = ranges.xaxis.from
+                axis.max = ranges.xaxis.to
+            })
+            _.each(opts.yaxes, function(axis) {
+                axis.min = ranges.yaxis.from
+                axis.max = ranges.yaxis.to
+            })
+            
+            plot.setupGrid()
+            plot.draw()
+            plot.clearSelection()
+        };
+
+
+        self.hover = function(event, pos, item) {
+            if (!currentSettings.tooltip) return;
+
+            if (item) {
+                var y = item.datapoint[1].toFixed(2);
+                var x = item.datapoint[0].toFixed(2);
+
+                var val = (currentSettings.plot_type == 'horiz_stacked_bar' || currentSettings.plot_type == 'horiz_bar') ? x : y
+
+                tooltip.html(val)
+                    .css({top: item.pageY+5-$(myContainer).offset().top, left: item.pageX+5-$(myContainer).offset().left})
+                    .fadeIn(200);
+            } else {
+                tooltip.hide();
+            }
+        };
+
+
+        self.render = function(container) {
+            dispose(false);
+            var $container = $(container);
+            myContainer = container;
+            $holder = $('<div></div>')
+                .height(currentSettings.height*60 - 10)
+                .appendTo($container)
+                .bind("plotselected", self.zoom)
+                .bind("dblclick", self.reset)
+                .bind("plothover", self.hover);
+
+
+            tooltip.appendTo($container);
+            console.log(currentSettings.zoom, currentSettings.zoom == "")
+
+            var options = { 
+                grid: {
+                    borderWidth: 0,
+                    hoverable: currentSettings.tooltip,
+                    color: "#ffffff",
+                },
+                legend: {
+                    show: currentSettings.legend
+                },
+                series: {
+                    points: {
+                        show: currentSettings.points
+                    },
+                    lines: {
+                        show: currentSettings.plot_type == 'line' || currentSettings.plot_type == 'area' || currentSettings.plot_type == 'stacked_area',
+                        fill: currentSettings.plot_type == 'area' || currentSettings.plot_type == 'stacked_area',
+                    },
+                    bars: {
+                        show: currentSettings.plot_type == 'bar' || currentSettings.plot_type == 'stacked_bar' || currentSettings.plot_type == 'horiz_bar' || currentSettings.plot_type == 'horiz_stacked_bar',
+                        align: 'center',
+                        horizontal: currentSettings.plot_type == 'horiz_bar' || currentSettings.plot_type == 'horiz_stacked_bar',
+                    },
+                    stack: currentSettings.plot_type == 'stacked_bar' || currentSettings.plot_type == 'stacked_area' || currentSettings.plot_type == 'horiz_stacked_bar',
+                    pie: {
+                        show: currentSettings.plot_type == 'pie',
+                        radius: 1,
+                        label: {
+                            show: true,
+                            radius: 0.6,
+                            formatter: function (label, series) {
+                                return "<div style='font-size:20pt; text-align:center; padding:2px; color:white;'>" + label + "<br/>" + Math.round(series.percent) + "%</div>";
+                            }
+                        }
+                    },
+                },
+                xaxis: {},
+                yaxis: {},
+            };
+
+            if (currentSettings.zoom != "") options.selection = { mode: currentSettings.zoom };
+
+            if (currentSettings.x_timestamp) options.xaxis.mode = "time";
+            plot = $.plot($holder, currentData, options);
+        };
+
+        self.getHeight = function() {
+            return currentSettings.height;
+        };
+
+        self.onSettingsChanged = function(newSettings) {
+            currentSettings = newSettings;
+            self.render(myContainer);
+            plot.getOptions().series.points.show = currentSettings.points;
+        };
+
+        self.onCalculatedValueChanged = function(settingName, newValue) {
+            if (settingName == 'xticks' || settingName == 'yticks') {
+                axes = plot.getAxes()
+                if (settingName == 'xticks') axes.xaxis.options.ticks = newValue;
+                if (settingName == 'yticks') axes.yaxis.options.ticks = newValue;
+            }
+
+
+            if (settingName == "value") {
+                currentData = newValue;
+                plot.setData(currentData);
+            }
+
+
+            plot.setupGrid();
+            plot.draw();
+        };
+
+        self.onDispose = function() {
+            dispose(true);
+        };
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name:          "flot_extended_plugin",
+        display_name:       "Flot Extended",
+        description:        "Flot Plot",
+        external_scripts:   [
+                                "//cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min.js",
+                                "//cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.selection.js",
+                                "//cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.resize.js",
+                                "//cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.pie.js",
+                                "//cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.stack.js",
+                                "https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.time.js"
+                            ],
+        settings:           [
+                                {
+                                    name:           "plot_type",
+                                    display_name:   "Plot Type",
+                                    type:           "option",
+                                    description:    "This can be customised per series by your datasource",
+                                    options: [
+                                                    { name: 'Line', value: 'line' },
+                                                    { name: 'Pie', value: 'pie' },
+                                                    { name: 'Bar', value: 'bar' },
+                                                    { name: 'Area', value: 'area' },
+                                                    { name: 'Stacked Area', value: 'stacked_area' },
+                                                    { name: 'Stacked Bar', value: 'stacked_bar' },
+                                                    { name: 'None (Enable Points)', value: null },
+                                                    { name: 'Horizontal Bar', value: 'horiz_bar' },
+                                                    { name: 'Horizontal Stacked Bar', value: 'horiz_stacked_bar' },
+                                    ]
+                                },
+                                {
+                                    name:           "legend",
+                                    display_name:   "Show Legend",
+                                    type:           "boolean",
+                                    default_value:  true,
+                                },
+                                {
+                                    name:           "height",
+                                    display_name:   "Height",
+                                    type:           "number",
+                                    description:    "in blocks",
+                                    default_value:  2
+                                },
+                                {
+                                    name:           "value",
+                                    display_name:   "Value",
+                                    type:           "calculated",
+                                },
+                                {
+                                    name:           "xticks",
+                                    display_name:   "X Axis Ticks",
+                                    type:           "calculated",
+                                },
+                                {
+                                    name:           "yticks",
+                                    display_name:   "Y Axis Ticks",
+                                    type:           "calculated",
+                                },
+                                {
+                                    name:           "x_timestamp",
+                                    display_name:   "X Axis Timestamp",
+                                    type:           "boolean"
+                                },
+                                {
+                                    name:           "points",
+                                    display_name:   "Show Points",
+                                    type:           "boolean"
+                                },
+                                {
+                                    name:           "tooltip",
+                                    display_name:   "Show Tooltip",
+                                    type:           "boolean"
+                                },
+                                {
+                                    name:           "zoom",
+                                    display_name:   "Enable Zoom",
+                                    description:    "Double click to zoom out",
+                                    type:           "option",
+                                    options: [
+                                                    { name: 'X Axis', value: 'x' },
+                                                    { name: 'X and Y Axis', value: 'xy' },
+                                                    { name: 'None', value: '' },
+                                    ],
+                                    default_value: '',
+                                }
+                            ],
+
+        newInstance:        function(settings, newInstanceCB) {
+                                newInstanceCB(new FlotExtendedWidgetPlugin(settings));
+                            }
+    });
+}());
diff --git a/WebSites/errors/403/plugins/thirdparty/jquery.keyframes.min.js b/WebSites/errors/403/plugins/thirdparty/jquery.keyframes.min.js
new file mode 100644
index 0000000..7ccb755
--- /dev/null
+++ b/WebSites/errors/403/plugins/thirdparty/jquery.keyframes.min.js
@@ -0,0 +1,8 @@
+/**
+ * StyleFix 1.0.3 & PrefixFree 1.0.7
+ * @author Lea Verou
+ * MIT license
+ */
+(function(){function t(e,t){return[].slice.call((t||document).querySelectorAll(e))}if(!window.addEventListener)return;var e=window.StyleFix={link:function(t){try{if(t.rel!=="stylesheet"||t.hasAttribute("data-noprefix"))return}catch(n){return}var r=t.href||t.getAttribute("data-href"),i=r.replace(/[^\/]+$/,""),s=(/^[a-z]{3,10}:/.exec(i)||[""])[0],o=(/^[a-z]{3,10}:\/\/[^\/]+/.exec(i)||[""])[0],u=/^([^?]*)\??/.exec(r)[1],a=t.parentNode,f=new XMLHttpRequest,l;f.onreadystatechange=function(){f.readyState===4&&l()};l=function(){var n=f.responseText;if(n&&t.parentNode&&(!f.status||f.status<400||f.status>600)){n=e.fix(n,!0,t);if(i){n=n.replace(/url\(\s*?((?:"|')?)(.+?)\1\s*?\)/gi,function(e,t,n){return/^([a-z]{3,10}:|#)/i.test(n)?e:/^\/\//.test(n)?'url("'+s+n+'")':/^\//.test(n)?'url("'+o+n+'")':/^\?/.test(n)?'url("'+u+n+'")':'url("'+i+n+'")'});var r=i.replace(/([\\\^\$*+[\]?{}.=!:(|)])/g,"\\$1");n=n.replace(RegExp("\\b(behavior:\\s*?url\\('?\"?)"+r,"gi"),"$1")}var l=document.createElement("style");l.textContent=n;l.media=t.media;l.disabled=t.disabled;l.setAttribute("data-href",t.getAttribute("href"));a.insertBefore(l,t);a.removeChild(t);l.media=t.media}};try{f.open("GET",r);f.send(null)}catch(n){if(typeof XDomainRequest!="undefined"){f=new XDomainRequest;f.onerror=f.onprogress=function(){};f.onload=l;f.open("GET",r);f.send(null)}}t.setAttribute("data-inprogress","")},styleElement:function(t){if(t.hasAttribute("data-noprefix"))return;var n=t.disabled;t.textContent=e.fix(t.textContent,!0,t);t.disabled=n},styleAttribute:function(t){var n=t.getAttribute("style");n=e.fix(n,!1,t);t.setAttribute("style",n)},process:function(){t('link[rel="stylesheet"]:not([data-inprogress])').forEach(StyleFix.link);t("style").forEach(StyleFix.styleElement);t("[style]").forEach(StyleFix.styleAttribute)},register:function(t,n){(e.fixers=e.fixers||[]).splice(n===undefined?e.fixers.length:n,0,t)},fix:function(t,n,r){for(var i=0;i<e.fixers.length;i++)t=e.fixers[i](t,n,r)||t;return t},camelCase:function(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()}).replace("-","")},deCamelCase:function(e){return e.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()})}};(function(){setTimeout(function(){t('link[rel="stylesheet"]').forEach(StyleFix.link)},10);document.addEventListener("DOMContentLoaded",StyleFix.process,!1)})()})();(function(e){function t(e,t,r,i,s){e=n[e];if(e.length){var o=RegExp(t+"("+e.join("|")+")"+r,"gi");s=s.replace(o,i)}return s}if(!window.StyleFix||!window.getComputedStyle)return;var n=window.PrefixFree={prefixCSS:function(e,r,i){var s=n.prefix;n.functions.indexOf("linear-gradient")>-1&&(e=e.replace(/(\s|:|,)(repeating-)?linear-gradient\(\s*(-?\d*\.?\d*)deg/ig,function(e,t,n,r){return t+(n||"")+"linear-gradient("+(90-r)+"deg"}));e=t("functions","(\\s|:|,)","\\s*\\(","$1"+s+"$2(",e);e=t("keywords","(\\s|:)","(\\s|;|\\}|$)","$1"+s+"$2$3",e);e=t("properties","(^|\\{|\\s|;)","\\s*:","$1"+s+"$2:",e);if(n.properties.length){var o=RegExp("\\b("+n.properties.join("|")+")(?!:)","gi");e=t("valueProperties","\\b",":(.+?);",function(e){return e.replace(o,s+"$1")},e)}if(r){e=t("selectors","","\\b",n.prefixSelector,e);e=t("atrules","@","\\b","@"+s+"$1",e)}e=e.replace(RegExp("-"+s,"g"),"-");e=e.replace(/-\*-(?=[a-z]+)/gi,n.prefix);return e},property:function(e){return(n.properties.indexOf(e)>=0?n.prefix:"")+e},value:function(e,r){e=t("functions","(^|\\s|,)","\\s*\\(","$1"+n.prefix+"$2(",e);e=t("keywords","(^|\\s)","(\\s|$)","$1"+n.prefix+"$2$3",e);n.valueProperties.indexOf(r)>=0&&(e=t("properties","(^|\\s|,)","($|\\s|,)","$1"+n.prefix+"$2$3",e));return e},prefixSelector:function(e){return e.replace(/^:{1,2}/,function(e){return e+n.prefix})},prefixProperty:function(e,t){var r=n.prefix+e;return t?StyleFix.camelCase(r):r}};(function(){var e={},t=[],r={},i=getComputedStyle(document.documentElement,null),s=document.createElement("div").style,o=function(n){if(n.charAt(0)==="-"){t.push(n);var r=n.split("-"),i=r[1];e[i]=++e[i]||1;while(r.length>3){r.pop();var s=r.join("-");u(s)&&t.indexOf(s)===-1&&t.push(s)}}},u=function(e){return StyleFix.camelCase(e)in s};if(i.length>0)for(var a=0;a<i.length;a++)o(i[a]);else for(var f in i)o(StyleFix.deCamelCase(f));var l={uses:0};for(var c in e){var h=e[c];l.uses<h&&(l={prefix:c,uses:h})}n.prefix="-"+l.prefix+"-";n.Prefix=StyleFix.camelCase(n.prefix);n.properties=[];for(var a=0;a<t.length;a++){var f=t[a];if(f.indexOf(n.prefix)===0){var p=f.slice(n.prefix.length);u(p)||n.properties.push(p)}}n.Prefix=="Ms"&&!("transform"in s)&&!("MsTransform"in s)&&"msTransform"in s&&n.properties.push("transform","transform-origin");n.properties.sort()})();(function(){function i(e,t){r[t]="";r[t]=e;return!!r[t]}var e={"linear-gradient":{property:"backgroundImage",params:"red, teal"},calc:{property:"width",params:"1px + 5%"},element:{property:"backgroundImage",params:"#foo"},"cross-fade":{property:"backgroundImage",params:"url(a.png), url(b.png), 50%"}};e["repeating-linear-gradient"]=e["repeating-radial-gradient"]=e["radial-gradient"]=e["linear-gradient"];var t={initial:"color","zoom-in":"cursor","zoom-out":"cursor",box:"display",flexbox:"display","inline-flexbox":"display",flex:"display","inline-flex":"display",grid:"display","inline-grid":"display","min-content":"width"};n.functions=[];n.keywords=[];var r=document.createElement("div").style;for(var s in e){var o=e[s],u=o.property,a=s+"("+o.params+")";!i(a,u)&&i(n.prefix+a,u)&&n.functions.push(s)}for(var f in t){var u=t[f];!i(f,u)&&i(n.prefix+f,u)&&n.keywords.push(f)}})();(function(){function s(e){i.textContent=e+"{}";return!!i.sheet.cssRules.length}var t={":read-only":null,":read-write":null,":any-link":null,"::selection":null},r={keyframes:"name",viewport:null,document:'regexp(".")'};n.selectors=[];n.atrules=[];var i=e.appendChild(document.createElement("style"));for(var o in t){var u=o+(t[o]?"("+t[o]+")":"");!s(u)&&s(n.prefixSelector(u))&&n.selectors.push(o)}for(var a in r){var u=a+" "+(r[a]||"");!s("@"+u)&&s("@"+n.prefix+u)&&n.atrules.push(a)}e.removeChild(i)})();n.valueProperties=["transition","transition-property"];e.className+=" "+n.prefix;StyleFix.register(n.prefixCSS)})(document.documentElement);
+
+(function(){var e=!1,n="animation",t=prefix="",i=["Webkit","Moz","O","ms","Khtml"];$(window).load(function(){var a=document.body.style;if(void 0!==a.animationName&&(e=!0),e===!1)for(var o=0;o<i.length;o++)if(void 0!==a[i[o]+"AnimationName"]){prefix=i[o],n=prefix+"Animation",t="-"+prefix.toLowerCase()+"-",e=!0;break}});var a=function(e,n){return $.keyframe.debug&&console.log(e+" "+n),$("<style>"+n+"</style>").attr({"class":"keyframe-style",id:e,type:"text/css"}).appendTo("head")};$.keyframe={debug:!1,getVendorPrefix:function(){return t},isSupported:function(){return e},generate:function(e){var i=e.name||"",o="@"+t+"keyframes "+i+" {";for(var r in e)if("name"!==r&&"media"!==r&&"complete"!==r){o+=r+" {";for(var s in e[r])o+=s+":"+e[r][s]+";";o+="}"}o=PrefixFree.prefixCSS(o+"}"),e.media&&(o="@media "+e.media+"{"+o+"}");var f=$("style#"+e.name);if(f.length>0){f.append(o);var l=$("*").filter(function(){return this.style[n+"Name"]===i});l.each(function(){var e=$(this),n=e.data("keyframeOptions");e.resetKeyframe(function(){e.playKeyframe(n)})})}else a(i,o)},define:function(e){if(e.length)for(var n=0;n<e.length;n++){var t=e[n];this.generate(t)}else this.generate(e)}};var o="animation-play-state",r="running";$.fn.resetKeyframe=function(e){$(this).css(t+o,r).css(t+"animation","none");e&&setTimeout(e,1)},$.fn.pauseKeyframe=function(){$(this).css(t+o,"paused")},$.fn.resumeKeyframe=function(){$(this).css(t+o,r)},$.fn.playKeyframe=function(e,n){var i=function(e){return e=$.extend({duration:"0s",timingFunction:"ease",delay:"0s",iterationCount:1,direction:"normal",fillMode:"forwards"},e),[e.name,e.duration,e.timingFunction,e.delay,e.iterationCount,e.direction,e.fillMode].join(" ")},a="";if($.isArray(e)){for(var s=[],f=0;f<e.length;f++)s.push("string"==typeof e[f]?e[f]:i(e[f]));a=s.join(", ")}else a="string"==typeof e?e:i(e);var l=t+"animation",m=["webkit","moz","MS","o",""];!n&&e.complete&&(n=e.complete);var c=function(e,n,t){for(var i=0;i<m.length;i++){m[i]||(n=n.toLowerCase());var a=m[i]+n;e.off(a).on(a,t)}};return this.each(function(){var i=$(this).addClass("boostKeyframe").css(t+o,r).css(l,a).data("keyframeOptions",e);if($.keyframe.debug){console.group(),t&&console.log("Vendor Prefix: "+t),console.log("Style Applied: "+a);var s=i.css(l);console.log("Rendered Style: "+(s?s:i[0].style.animation)),console.groupEnd()}n&&(c(i,"AnimationIteration",n),c(i,"AnimationEnd",n))}),this},a("boost-keyframe"," .boostKeyframe{"+t+"transform:scale3d(1,1,1);}")}).call(this);
diff --git a/WebSites/errors/403/plugins/thirdparty/jquery.sparkline.min.js b/WebSites/errors/403/plugins/thirdparty/jquery.sparkline.min.js
new file mode 100755
index 0000000..1a54b29
--- /dev/null
+++ b/WebSites/errors/403/plugins/thirdparty/jquery.sparkline.min.js
@@ -0,0 +1,5 @@
+/* jquery.sparkline 2.1.2 - http://omnipotent.net/jquery.sparkline/
+** Licensed under the New BSD License - see above site for details */
+
+(function(a,b,c){(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.sparkline&&a(jQuery)})(function(d){"use strict";var e={},f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L=0;f=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:c,normalRangeMax:c,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:c,chartRangeMax:c,chartRangeMinX:c,chartRangeMaxX:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:c,nullColor:c,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,colorMap:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:c,thresholdValue:0,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,tooltipFormat:new h("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:c,tooltipFormat:new h("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:c,targetColor:"#4a2",chartRangeMax:c,chartRangeMin:c,tooltipFormat:new h("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},E='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',g=function(){var a,b;return a=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(a.prototype=d.extend(new arguments[0],arguments[arguments.length-1]),a._super=arguments[0].prototype):a.prototype=arguments[arguments.length-1],arguments.length>2&&(b=Array.prototype.slice.call(arguments,1,-1),b.unshift(a.prototype),d.extend.apply(d,b))):a.prototype=arguments[0],a.prototype.cls=a,a},d.SPFormatClass=h=g({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,d){var e=this,f=a,g,h,i,j,k;return this.format.replace(this.fre,function(){var a;return h=arguments[1],i=arguments[3],g=e.precre.exec(h),g?(k=g[2],h=g[1]):k=!1,j=f[h],j===c?"":i&&b&&b[i]?(a=b[i],a.get?b[i].get(j)||j:b[i][j]||j):(n(j)&&(d.get("numberFormatter")?j=d.get("numberFormatter")(j):j=s(j,k,d.get("numberDigitGroupCount"),d.get("numberDigitGroupSep"),d.get("numberDecimalMark"))),j)})}}),d.spformat=function(a,b){return new h(a,b)},i=function(a,b,c){return a<b?b:a>c?c:a},j=function(a,c){var d;return c===2?(d=b.floor(a.length/2),a.length%2?a[d]:(a[d-1]+a[d])/2):a.length%2?(d=(a.length*c+c)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1]):(d=(a.length*c+2)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1])},k=function(a){var b;switch(a){case"undefined":a=c;break;case"null":a=null;break;case"true":a=!0;break;case"false":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},l=function(a){var b,c=[];for(b=a.length;b--;)c[b]=k(a[b]);return c},m=function(a,b){var c,d,e=[];for(c=0,d=a.length;c<d;c++)a[c]!==b&&e.push(a[c]);return e},n=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},s=function(a,b,c,e,f){var g,h;a=(b===!1?parseFloat(a).toString():a.toFixed(b)).split(""),g=(g=d.inArray(".",a))<0?a.length:g,g<a.length&&(a[g]=f);for(h=g-c;h>0;h-=c)a.splice(h,0,e);return a.join("")},o=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},p=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]=="number"?a[c]:0;return b},r=function(a){return d.isArray(a)?a:[a]},q=function(b){var c;a.createStyleSheet?a.createStyleSheet().cssText=b:(c=a.createElement("style"),c.type="text/css",a.getElementsByTagName("head")[0].appendChild(c),c[typeof a.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=b)},d.fn.simpledraw=function(b,e,f,g){var h,i;if(f&&(h=this.data("_jqs_vcanvas")))return h;if(d.fn.sparkline.canvas===!1)return!1;if(d.fn.sparkline.canvas===c){var j=a.createElement("canvas");if(!j.getContext||!j.getContext("2d")){if(!a.namespaces||!!a.namespaces.v)return d.fn.sparkline.canvas=!1,!1;a.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),d.fn.sparkline.canvas=function(a,b,c,d){return new J(a,b,c)}}else d.fn.sparkline.canvas=function(a,b,c,d){return new I(a,b,c,d)}}return b===c&&(b=d(this).innerWidth()),e===c&&(e=d(this).innerHeight()),h=d.fn.sparkline.canvas(b,e,this,g),i=d(this).data("_jqs_mhandler"),i&&i.registerCanvas(h),h},d.fn.cleardraw=function(){var a=this.data("_jqs_vcanvas");a&&a.reset()},d.RangeMapClass=t=g({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b=="string"&&b.indexOf(":")>-1&&(c=b.split(":"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,d,e,f;if((f=this.map[a])!==c)return f;if(b)for(d=b.length;d--;){e=b[d];if(e[0]<=a&&e[1]>=a)return e[2]}return c}}),d.range_map=function(a){return new t(a)},u=g({init:function(a,b){var c=d(a);this.$el=c,this.options=b,this.currentPageX=0,this.currentPageY=0,this.el=a,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!b.get("disableTooltips"),this.highlightEnabled=!b.get("disableHighlight")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(a){var b=d(a.canvas);this.canvas=a,this.$canvas=b,b.mouseenter(d.proxy(this.mouseenter,this)),b.mouseleave(d.proxy(this.mouseleave,this)),b.click(d.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=c)},mouseclick:function(a){var b=d.Event("sparklineClick");b.originalEvent=a,b.sparklines=this.splist,this.$el.trigger(b)},mouseenter:function(b){d(a.body).unbind("mousemove.jqs"),d(a.body).bind("mousemove.jqs",d.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new v(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){d(a.body).unbind("mousemove.jqs");var b=this.splist,c=b.length,e=!1,f,g;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(g=0;g<c;g++)f=b[g],f.clearRegionHighlight()&&(e=!0);e&&this.canvas.render()},mousemove:function(a){this.currentPageX=a.pageX,this.currentPageY=a.pageY,this.currentEl=a.target,this.tooltip&&this.tooltip.updatePosition(a.pageX,a.pageY),this.updateDisplay()},updateDisplay:function(){var a=this.splist,b=a.length,c=!1,e=this.$canvas.offset(),f=this.currentPageX-e.left,g=this.currentPageY-e.top,h,i,j,k,l;if(!this.over)return;for(j=0;j<b;j++)i=a[j],k=i.setRegionHighlight(this.currentEl,f,g),k&&(c=!0);if(c){l=d.Event("sparklineRegionChange"),l.sparklines=this.splist,this.$el.trigger(l);if(this.tooltip){h="";for(j=0;j<b;j++)i=a[j],h+=i.getCurrentRegionTooltip();this.tooltip.setContent(h)}this.disableHighlight||this.canvas.render()}k===null&&this.mouseleave()}}),v=g({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(b){var c=b.get("tooltipClassname","jqstooltip"),e=this.sizeStyle,f;this.container=b.get("tooltipContainer")||a.body,this.tooltipOffsetX=b.get("tooltipOffsetX",10),this.tooltipOffsetY=b.get("tooltipOffsetY",12),d("#jqssizetip").remove(),d("#jqstooltip").remove(),this.sizetip=d("<div/>",{id:"jqssizetip",style:e,"class":c}),this.tooltip=d("<div/>",{id:"jqstooltip","class":c}).appendTo(this.container),f=this.tooltip.offset(),this.offsetLeft=f.left,this.offsetTop=f.top,this.hidden=!0,d(window).unbind("resize.jqs scroll.jqs"),d(window).bind("resize.jqs scroll.jqs",d.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=d(window).scrollTop(),this.scrollLeft=d(window).scrollLeft(),this.scrollRight=this.scrollLeft+d(window).width(),this.updatePosition()},getSize:function(a){this.sizetip.html(a).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(a){if(!a){this.tooltip.css("visibility","hidden"),this.hidden=!0;return}this.getSize(a),this.tooltip.html(a).css({width:this.width,height:this.height,visibility:"visible"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(a,b){if(a===c){if(this.mousex===c)return;a=this.mousex-this.offsetLeft,b=this.mousey-this.offsetTop}else this.mousex=a-=this.offsetLeft,this.mousey=b-=this.offsetTop;if(!this.height||!this.width||this.hidden)return;b-=this.height+this.tooltipOffsetY,a+=this.tooltipOffsetX,b<this.scrollTop&&(b=this.scrollTop),a<this.scrollLeft?a=this.scrollLeft:a+this.width>this.scrollRight&&(a=this.scrollRight-this.width),this.tooltip.css({left:a,top:b})},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=c,d(window).unbind("resize.jqs scroll.jqs")}}),F=function(){q(E)},d(F),K=[],d.fn.sparkline=function(b,e){return this.each(function(){var f=new d.fn.sparkline.options(this,e),g=d(this),h,i;h=function(){var e,h,i,j,k,l,m;if(b==="html"||b===c){m=this.getAttribute(f.get("tagValuesAttribute"));if(m===c||m===null)m=g.html();e=m.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")}else e=b;h=f.get("width")==="auto"?e.length*f.get("defaultPixelsPerValue"):f.get("width");if(f.get("height")==="auto"){if(!f.get("composite")||!d.data(this,"_jqs_vcanvas"))j=a.createElement("span"),j.innerHTML="a",g.html(j),i=d(j).innerHeight()||d(j).height(),d(j).remove(),j=null}else i=f.get("height");f.get("disableInteraction")?k=!1:(k=d.data(this,"_jqs_mhandler"),k?f.get("composite")||k.reset():(k=new u(this,f),d.data(this,"_jqs_mhandler",k)));if(f.get("composite")&&!d.data(this,"_jqs_vcanvas")){d.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),d.data(this,"_jqs_errnotify",!0));return}l=new(d.fn.sparkline[f.get("type")])(this,e,f,h,i),l.render(),k&&k.registerSparkline(l)};if(d(this).html()&&!f.get("disableHiddenCheck")&&d(this).is(":hidden")||!d(this).parents("body").length){if(!f.get("composite")&&d.data(this,"_jqs_pending"))for(i=K.length;i;i--)K[i-1][0]==this&&K.splice(i-1,1);K.push([this,h]),d.data(this,"_jqs_pending",!0)}else h.call(this)})},d.fn.sparkline.defaults=f(),d.sparkline_display_visible=function(){var a,b,c,e=[];for(b=0,c=K.length;b<c;b++)a=K[b][0],d(a).is(":visible")&&!d(a).parents().is(":hidden")?(K[b][1].call(a),d.data(K[b][0],"_jqs_pending",!1),e.push(b)):!d(a).closest("html").length&&!d.data(a,"_jqs_pending")&&(d.data(K[b][0],"_jqs_pending",!1),e.push(b));for(b=e.length;b;b--)K.splice(e[b-1],1)},d.fn.sparkline.options=g({init:function(a,b){var c,f,g,h;this.userOptions=b=b||{},this.tag=a,this.tagValCache={},f=d.fn.sparkline.defaults,g=f.common,this.tagOptionsPrefix=b.enableTagOptions&&(b.tagOptionsPrefix||g.tagOptionsPrefix),h=this.getTagSetting("type"),h===e?c=f[b.type||g.type]:c=f[h],this.mergedOptions=d.extend({},g,c,b)},getTagSetting:function(a){var b=this.tagOptionsPrefix,d,f,g,h;if(b===!1||b===c)return e;if(this.tagValCache.hasOwnProperty(a))d=this.tagValCache.key;else{d=this.tag.getAttribute(b+a);if(d===c||d===null)d=e;else if(d.substr(0,1)==="["){d=d.substr(1,d.length-2).split(",");for(f=d.length;f--;)d[f]=k(d[f].replace(/(^\s*)|(\s*$)/g,""))}else if(d.substr(0,1)==="{"){g=d.substr(1,d.length-2).split(","),d={};for(f=g.length;f--;)h=g[f].split(":",2),d[h[0].replace(/(^\s*)|(\s*$)/g,"")]=k(h[1].replace(/(^\s*)|(\s*$)/g,""))}else d=k(d);this.tagValCache.key=d}return d},get:function(a,b){var d=this.getTagSetting(a),f;return d!==e?d:(f=this.mergedOptions[a])===c?b:f}}),d.fn.sparkline._base=g({disabled:!1,init:function(a,b,e,f,g){this.el=a,this.$el=d(a),this.values=b,this.options=e,this.width=f,this.height=g,this.currentRegion=c},initTarget:function(){var a=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),a))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return this.disabled?(this.el.innerHTML="",!1):!0},getRegion:function(a,b){},setRegionHighlight:function(a,b,d){var e=this.currentRegion,f=!this.options.get("disableHighlight"),g;return b>this.canvasWidth||d>this.canvasHeight||b<0||d<0?null:(g=this.getRegion(a,b,d),e!==g?(e!==c&&f&&this.removeHighlight(),this.currentRegion=g,g!==c&&f&&this.renderHighlight(),!0):!1)},clearRegionHighlight:function(){return this.currentRegion!==c?(this.removeHighlight(),this.currentRegion=c,!0):!1},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(a){},getCurrentRegionTooltip:function(){var a=this.options,b="",e=[],f,g,i,j,k,l,m,n,o,p,q,r,s,t;if(this.currentRegion===c)return"";f=this.getCurrentRegionFields(),q=a.get("tooltipFormatter");if(q)return q(this,a,f);a.get("tooltipChartTitle")&&(b+='<div class="jqs jqstitle">'+a.get("tooltipChartTitle")+"</div>\n"),g=this.options.get("tooltipFormat");if(!g)return"";d.isArray(g)||(g=[g]),d.isArray(f)||(f=[f]),m=this.options.get("tooltipFormatFieldlist"),n=this.options.get("tooltipFormatFieldlistKey");if(m&&n){o=[];for(l=f.length;l--;)p=f[l][n],(t=d.inArray(p,m))!=-1&&(o[t]=f[l]);f=o}i=g.length,s=f.length;for(l=0;l<i;l++){r=g[l],typeof r=="string"&&(r=new h(r)),j=r.fclass||"jqsfield";for(t=0;t<s;t++)if(!f[t].isNull||!a.get("tooltipSkipNull"))d.extend(f[t],{prefix:a.get("tooltipPrefix"),suffix:a.get("tooltipSuffix")}),k=r.render(f[t],a.get("tooltipValueLookups"),a),e.push('<div class="'+j+'">'+k+"</div>")}return e.length?b+e.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(a,c){var d=c.get("highlightColor"),e=c.get("highlightLighten"),f,g,h,j;if(d)return d;if(e){f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(a)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(a);if(f){h=[],g=a.length===4?16:1;for(j=0;j<3;j++)h[j]=i(b.round(parseInt(f[j+1],16)*g*e),0,255);return"rgb("+h.join(",")+")"}}return a}}),w={changeHighlight:function(a){var b=this.currentRegion,c=this.target,e=this.regionShapes[b],f;e&&(f=this.renderRegion(b,a),d.isArray(f)||d.isArray(e)?(c.replaceWithShapes(e,f),this.regionShapes[b]=d.map(f,function(a){return a.id})):(c.replaceWithShape(e,f),this.regionShapes[b]=f.id))},render:function(){var a=this.values,b=this.target,c=this.regionShapes,e,f,g,h;if(!this.cls._super.render.call(this))return;for(g=a.length;g--;){e=this.renderRegion(g);if(e)if(d.isArray(e)){f=[];for(h=e.length;h--;)e[h].append(),f.push(e[h].id);c[g]=f}else e.append(),c[g]=e.id;else c[g]=null}b.render()}},d.fn.sparkline.line=x=g(d.fn.sparkline._base,{type:"line",init:function(a,b,c,d,e){x._super.init.call(this,a,b,c,d,e),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(a,b,d){var e,f=this.regionMap;for(e=f.length;e--;)if(f[e]!==null&&b>=f[e][0]&&b<=f[e][1])return f[e][2];return c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.yvalues[a]===null,x:this.xvalues[a],y:this.yvalues[a],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:a}},renderHighlight:function(){var a=this.currentRegion,b=this.target,d=this.vertices[a],e=this.options,f=e.get("spotRadius"),g=e.get("highlightSpotColor"),h=e.get("highlightLineColor"),i,j;if(!d)return;f&&g&&(i=b.drawCircle(d[0],d[1],f,c,g),this.highlightSpotId=i.id,b.insertAfterShape(this.lastShapeId,i)),h&&(j=b.drawLine(d[0],this.canvasTop,d[0],this.canvasTop+this.canvasHeight,h),this.highlightLineId=j.id,b.insertAfterShape(this.lastShapeId,j))},removeHighlight:function(){var a=this.target;this.highlightSpotId&&(a.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(a.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var a=this.values,c=a.length,d=this.xvalues,e=this.yvalues,f=this.yminmax,g,h,i,j,k;for(g=0;g<c;g++)h=a[g],i=typeof a[g]=="string",j=typeof a[g]=="object"&&a[g]instanceof Array,k=i&&a[g].split(":"),i&&k.length===2?(d.push(Number(k[0])),e.push(Number(k[1])),f.push(Number(k[1]))):j?(d.push(h[0]),e.push(h[1]),f.push(h[1])):(d.push(g),a[g]===null||a[g]==="null"?e.push(null):(e.push(Number(h)),f.push(Number(h))));this.options.get("xvalues")&&(d=this.options.get("xvalues")),this.maxy=this.maxyorg=b.max.apply(b,f),this.miny=this.minyorg=b.min.apply(b,f),this.maxx=b.max.apply(b,d),this.minx=b.min.apply(b,d),this.xvalues=d,this.yvalues=e,this.yminmax=f},processRangeOptions:function(){var a=this.options,b=a.get("normalRangeMin"),d=a.get("normalRangeMax");b!==c&&(b<this.miny&&(this.miny=b),d>this.maxy&&(this.maxy=d)),a.get("chartRangeMin")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMin")<this.miny)&&(this.miny=a.get("chartRangeMin")),a.get("chartRangeMax")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMax")>this.maxy)&&(this.maxy=a.get("chartRangeMax")),a.get("chartRangeMinX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMinX")<this.minx)&&(this.minx=a.get("chartRangeMinX")),a.get("chartRangeMaxX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMaxX")>this.maxx)&&(this.maxx=a.get("chartRangeMaxX"))},drawNormalRange:function(a,d,e,f,g){var h=this.options.get("normalRangeMin"),i=this.options.get("normalRangeMax"),j=d+b.round(e-e*((i-this.miny)/g)),k=b.round(e*(i-h)/g);this.target.drawRect(a,j,f,k,c,this.options.get("normalRangeColor")).append()},render:function(){var a=this.options,e=this.target,f=this.canvasWidth,g=this.canvasHeight,h=this.vertices,i=a.get("spotRadius"),j=this.regionMap,k,l,m,n,o,p,q,r,s,u,v,w,y,z,A,B,C,D,E,F,G,H,I,J,K;if(!x._super.render.call(this))return;this.scanValues(),this.processRangeOptions(),I=this.xvalues,J=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2)return;n=o=0,k=this.maxx-this.minx===0?1:this.maxx-this.minx,l=this.maxy-this.miny===0?1:this.maxy-this.miny,m=this.yvalues.length-1,i&&(f<i*4||g<i*4)&&(i=0);if(i){G=a.get("highlightSpotColor")&&!a.get("disableInteraction");if(G||a.get("minSpotColor")||a.get("spotColor")&&J[m]===this.miny)g-=b.ceil(i);if(G||a.get("maxSpotColor")||a.get("spotColor")&&J[m]===this.maxy)g-=b.ceil(i),n+=b.ceil(i);if(G||(a.get("minSpotColor")||a.get("maxSpotColor"))&&(J[0]===this.miny||J[0]===this.maxy))o+=b.ceil(i),f-=b.ceil(i);if(G||a.get("spotColor")||a.get("minSpotColor")||a.get("maxSpotColor")&&(J[m]===this.miny||J[m]===this.maxy))f-=b.ceil(i)}g--,a.get("normalRangeMin")!==c&&!a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),q=[],r=[q],z=A=null,B=J.length;for(K=0;K<B;K++)s=I[K],v=I[K+1],u=J[K],w=o+b.round((s-this.minx)*(f/k)),y=K<B-1?o+b.round((v-this.minx)*(f/k)):f,A=w+(y-w)/2,j[K]=[z||0,A,K],z=A,u===null?K&&(J[K-1]!==null&&(q=[],r.push(q)),h.push(null)):(u<this.miny&&(u=this.miny),u>this.maxy&&(u=this.maxy),q.length||q.push([w,n+g]),p=[w,n+b.round(g-g*((u-this.miny)/l))],q.push(p),h.push(p));C=[],D=[],E=r.length;for(K=0;K<E;K++)q=r[K],q.length&&(a.get("fillColor")&&(q.push([q[q.length-1][0],n+g]),D.push(q.slice(0)),q.pop()),q.length>2&&(q[0]=[q[0][0],q[1][1]]),C.push(q));E=D.length;for(K=0;K<E;K++)e.drawShape(D[K],a.get("fillColor"),a.get("fillColor")).append();a.get("normalRangeMin")!==c&&a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),E=C.length;for(K=0;K<E;K++)e.drawShape(C[K],a.get("lineColor"),c,a.get("lineWidth")).append();if(i&&a.get("valueSpots")){F=a.get("valueSpots"),F.get===c&&(F=new t(F));for(K=0;K<B;K++)H=F.get(J[K]),H&&e.drawCircle(o+b.round((I[K]-this.minx)*(f/k)),n+b.round(g-g*((J[K]-this.miny)/l)),i,c,H).append()}i&&a.get("spotColor")&&J[m]!==null&&e.drawCircle(o+b.round((I[I.length-1]-this.minx)*(f/k)),n+b.round(g-g*((J[m]-this.miny)/l)),i,c,a.get("spotColor")).append(),this.maxy!==this.minyorg&&(i&&a.get("minSpotColor")&&(s=I[d.inArray(this.minyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.minyorg-this.miny)/l)),i,c,a.get("minSpotColor")).append()),i&&a.get("maxSpotColor")&&(s=I[d.inArray(this.maxyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.maxyorg-this.miny)/l)),i,c,a.get("maxSpotColor")).append())),this.lastShapeId=e.getLastShapeId(),this.canvasTop=n,e.render()}}),d.fn.sparkline.bar=y=g(d.fn.sparkline._base,w,{type:"bar",init:function(a,e,f,g,h){var j=parseInt(f.get("barWidth"),10),n=parseInt(f.get("barSpacing"),10),o=f.get("chartRangeMin"),p=f.get("chartRangeMax"),q=f.get("chartRangeClip"),r=Infinity,s=-Infinity,u,v,w,x,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R;y._super.init.call(this,a,e,f,g,h);for(A=0,B=e.length;A<B;A++){O=e[A],u=typeof O=="string"&&O.indexOf(":")>-1;if(u||d.isArray(O))J=!0,u&&(O=e[A]=l(O.split(":"))),O=m(O,null),v=b.min.apply(b,O),w=b.max.apply(b,O),v<r&&(r=v),w>s&&(s=w)}this.stacked=J,this.regionShapes={},this.barWidth=j,this.barSpacing=n,this.totalBarWidth=j+n,this.width=g=e.length*j+(e.length-1)*n,this.initTarget(),q&&(H=o===c?-Infinity:o,I=p===c?Infinity:p),z=[],x=J?[]:z;var S=[],T=[];for(A=0,B=e.length;A<B;A++)if(J){K=e[A],e[A]=N=[],S[A]=0,x[A]=T[A]=0;for(L=0,M=K.length;L<M;L++)O=N[L]=q?i(K[L],H,I):K[L],O!==null&&(O>0&&(S[A]+=O),r<0&&s>0?O<0?T[A]+=b.abs(O):x[A]+=O:x[A]+=b.abs(O-(O<0?s:r)),z.push(O))}else O=q?i(e[A],H,I):e[A],O=e[A]=k(O),O!==null&&z.push(O);this.max=G=b.max.apply(b,z),this.min=F=b.min.apply(b,z),this.stackMax=s=J?b.max.apply(b,S):G,this.stackMin=r=J?b.min.apply(b,z):F,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<F)&&(F=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>G)&&(G=f.get("chartRangeMax")),this.zeroAxis=D=f.get("zeroAxis",!0),F<=0&&G>=0&&D?E=0:D==0?E=F:F>0?E=F:E=G,this.xaxisOffset=E,C=J?b.max.apply(b,x)+b.max.apply(b,T):G-F,this.canvasHeightEf=D&&F<0?this.canvasHeight-2:this.canvasHeight-1,F<E?(Q=J&&G>=0?s:G,P=(Q-E)/C*this.canvasHeight,P!==b.ceil(P)&&(this.canvasHeightEf-=2,P=b.ceil(P))):P=this.canvasHeight,this.yoffset=P,d.isArray(f.get("colorMap"))?(this.colorMapByIndex=f.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=f.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.range=C},getRegion:function(a,d,e){var f=b.floor(d/this.totalBarWidth);return f<0||f>=this.values.length?c:f},getCurrentRegionFields:function(){var a=this.currentRegion,b=r(this.values[a]),c=[],d,e;for(e=b.length;e--;)d=b[e],c.push({isNull:d===null,value:d,color:this.calcColor(e,d,a),offset:a});return c},calcColor:function(a,b,e){var f=this.colorMapByIndex,g=this.colorMapByValue,h=this.options,i,j;return this.stacked?i=h.get("stackedBarColor"):i=b<0?h.get("negBarColor"):h.get("barColor"),b===0&&h.get("zeroColor")!==c&&(i=h.get("zeroColor")),g&&(j=g.get(b))?i=j:f&&f.length>e&&(i=f[e]),d.isArray(i)?i[a%i.length]:i},renderRegion:function(a,e){var f=this.values[a],g=this.options,h=this.xaxisOffset,i=[],j=this.range,k=this.stacked,l=this.target,m=a*this.totalBarWidth,n=this.canvasHeightEf,p=this.yoffset,q,r,s,t,u,v,w,x,y,z;f=d.isArray(f)?f:[f],w=f.length,x=f[0],t=o(null,f),z=o(h,f,!0);if(t)return g.get("nullColor")?(s=e?g.get("nullColor"):this.calcHighlightColor(g.get("nullColor"),g),q=p>0?p-1:p,l.drawRect(m,q,this.barWidth-1,0,s,s)):c;u=p;for(v=0;v<w;v++){x=f[v];if(k&&x===h){if(!z||y)continue;y=!0}j>0?r=b.floor(n*(b.abs(x-h)/j))+1:r=1,x<h||x===h&&p===0?(q=u,u+=r):(q=p-r,p-=r),s=this.calcColor(v,x,a),e&&(s=this.calcHighlightColor(s,g)),i.push(l.drawRect(m,q,this.barWidth-1,r-1,s,s))}return i.length===1?i[0]:i}}),d.fn.sparkline.tristate=z=g(d.fn.sparkline._base,w,{type:"tristate",init:function(a,b,e,f,g){var h=parseInt(e.get("barWidth"),10),i=parseInt(e.get("barSpacing"),10);z._super.init.call(this,a,b,e,f,g),this.regionShapes={},this.barWidth=h,this.barSpacing=i,this.totalBarWidth=h+i,this.values=d.map(b,Number),this.width=f=b.length*h+(b.length-1)*i,d.isArray(e.get("colorMap"))?(this.colorMapByIndex=e.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=e.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.initTarget()},getRegion:function(a,c,d){return b.floor(c/this.totalBarWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],color:this.calcColor(this.values[a],a),offset:a}},calcColor:function(a,b){var c=this.values,d=this.options,e=this.colorMapByIndex,f=this.colorMapByValue,g,h;return f&&(h=f.get(a))?g=h:e&&e.length>b?g=e[b]:c[b]<0?g=d.get("negBarColor"):c[b]>0?g=d.get("posBarColor"):g=d.get("zeroBarColor"),g},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.target,g,h,i,j,k,l;g=f.pixelHeight,i=b.round(g/2),j=a*this.totalBarWidth,d[a]<0?(k=i,h=i-1):d[a]>0?(k=0,h=i-1):(k=i-1,h=2),l=this.calcColor(d[a],a);if(l===null)return;return c&&(l=this.calcHighlightColor(l,e)),f.drawRect(j,k,this.barWidth-1,h-1,l,l)}}),d.fn.sparkline.discrete=A=g(d.fn.sparkline._base,w,{type:"discrete",init:function(a,e,f,g,h){A._super.init.call(this,a,e,f,g,h),this.regionShapes={},this.values=e=d.map(e,Number),this.min=b.min.apply(b,e),this.max=b.max.apply(b,e),this.range=this.max-this.min,this.width=g=f.get("width")==="auto"?e.length*2:this.width,this.interval=b.floor(g/e.length),this.itemWidth=g/e.length,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<this.min)&&(this.min=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>this.max)&&(this.max=f.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight=f.get("lineHeight")==="auto"?b.round(this.canvasHeight*.3):f.get("lineHeight"))},getRegion:function(a,c,d){return b.floor(c/this.itemWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],offset:a}},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.min,g=this.max,h=this.range,j=this.interval,k=this.target,l=this.canvasHeight,m=this.lineHeight,n=l-m,o,p,q,r;return p=i(d[a],f,g),r=a*j,o=b.round(n-n*((p-f)/h)),q=e.get("thresholdColor")&&p<e.get("thresholdValue")?e.get("thresholdColor"):e.get("lineColor"),c&&(q=this.calcHighlightColor(q,e)),k.drawLine(r,o,r,o+m,q)}}),d.fn.sparkline.bullet=B=g(d.fn.sparkline._base,{type:"bullet",init:function(a,d,e,f,g){var h,i,j;B._super.init.call(this,a,d,e,f,g),this.values=d=l(d),j=d.slice(),j[0]=j[0]===null?j[2]:j[0],j[1]=d[1]===null?j[2]:j[1],h=b.min.apply(b,d),i=b.max.apply(b,d),e.get("base")===c?h=h<0?h:0:h=e.get("base"),this.min=h,this.max=i,this.range=i-h,this.shapes={},this.valueShapes={},this.regiondata={},this.width=f=e.get("width")==="auto"?"4.0em":f,this.target=this.$el.simpledraw(f,g,e.get("composite")),d.length||(this.disabled=!0),this.initTarget()},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{fieldkey:a.substr(0,1),value:this.values[a.substr(1)],region:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.valueShapes[b],d;delete this.shapes[c];switch(b.substr(0,1)){case"r":d=this.renderRange(b.substr(1),a);break;case"p":d=this.renderPerformance(a);break;case"t":d=this.renderTarget(a)}this.valueShapes[b]=d.id,this.shapes[d.id]=b,this.target.replaceWithShape(c,d)},renderRange:function(a,c){var d=this.values[a],e=b.round(this.canvasWidth*((d-this.min)/this.range)),f=this.options.get("rangeColors")[a-2];return c&&(f=this.calcHighlightColor(f,this.options)),this.target.drawRect(0,0,e-1,this.canvasHeight-1,f,f)},renderPerformance:function(a){var c=this.values[1],d=b.round(this.canvasWidth*((c-this.min)/this.range)),e=this.options.get("performanceColor");return a&&(e=this.calcHighlightColor(e,this.options)),this.target.drawRect(0,b.round(this.canvasHeight*.3),d-1,b.round(this.canvasHeight*.4)-1,e,e)},renderTarget:function(a){var c=this.values[0],d=b.round(this.canvasWidth*((c-this.min)/this.range)-this.options.get("targetWidth")/2),e=b.round(this.canvasHeight*.1),f=this.canvasHeight-e*2,g=this.options.get("targetColor");return a&&(g=this.calcHighlightColor(g,this.options)),this.target.drawRect(d,e,this.options.get("targetWidth")-1,f-1,g,g)},render:function(){var a=this.values.length,b=this.target,c,d;if(!B._super.render.call(this))return;for(c=2;c<a;c++)d=this.renderRange(c).append(),this.shapes[d.id]="r"+c,this.valueShapes["r"+c]=d.id;this.values[1]!==null&&(d=this.renderPerformance().append(),this.shapes[d.id]="p1",this.valueShapes.p1=d.id),this.values[0]!==null&&(d=this.renderTarget().append(),this.shapes[d.id]="t0",this.valueShapes.t0=d.id),b.render()}}),d.fn.sparkline.pie=C=g(d.fn.sparkline._base,{type:"pie",init:function(a,c,e,f,g){var h=0,i;C._super.init.call(this,a,c,e,f,g),this.shapes={},this.valueShapes={},this.values=c=d.map(c,Number),e.get("width")==="auto"&&(this.width=this.height);if(c.length>0)for(i=c.length;i--;)h+=c[i];this.total=h,this.initTarget(),this.radius=b.floor(b.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],percent:this.values[a]/this.total*100,color:this.options.get("sliceColors")[a%this.options.get("sliceColors").length],offset:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.renderSlice(b,a),d=this.valueShapes[b];delete this.shapes[d],this.target.replaceWithShape(d,c),this.valueShapes[b]=c.id,this.shapes[c.id]=b},renderSlice:function(a,d){var e=this.target,f=this.options,g=this.radius,h=f.get("borderWidth"),i=f.get("offset"),j=2*b.PI,k=this.values,l=this.total,m=i?2*b.PI*(i/360):0,n,o,p,q,r;q=k.length;for(p=0;p<q;p++){n=m,o=m,l>0&&(o=m+j*(k[p]/l));if(a===p)return r=f.get("sliceColors")[p%f.get("sliceColors").length],d&&(r=this.calcHighlightColor(r,f)),e.drawPieSlice(g,g,g-h,n,o,c,r);m=o}},render:function(){var a=this.target,d=this.values,e=this.options,f=this.radius,g=e.get("borderWidth"),h,i;if(!C._super.render.call(this))return;g&&a.drawCircle(f,f,b.floor(f-g/2),e.get("borderColor"),c,g).append();for(i=d.length;i--;)d[i]&&(h=this.renderSlice(i).append(),this.valueShapes[i]=h.id,this.shapes[h.id]=i);a.render()}}),d.fn.sparkline.box=D=g(d.fn.sparkline._base,{type:"box",init:function(a,b,c,e,f){D._super.init.call(this,a,b,c,e,f),this.values=d.map(b,Number),this.width=c.get("width")==="auto"?"4.0em":e,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var a=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles
+[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==c&&a.push({field:"lo",value:this.loutlier}),this.routlier!==c&&a.push({field:"ro",value:this.routlier}),this.lwhisker!==c&&a.push({field:"lw",value:this.lwhisker}),this.rwhisker!==c&&a.push({field:"rw",value:this.rwhisker}),a},render:function(){var a=this.target,d=this.values,e=d.length,f=this.options,g=this.canvasWidth,h=this.canvasHeight,i=f.get("chartRangeMin")===c?b.min.apply(b,d):f.get("chartRangeMin"),k=f.get("chartRangeMax")===c?b.max.apply(b,d):f.get("chartRangeMax"),l=0,m,n,o,p,q,r,s,t,u,v,w;if(!D._super.render.call(this))return;if(f.get("raw"))f.get("showOutliers")&&d.length>5?(n=d[0],m=d[1],p=d[2],q=d[3],r=d[4],s=d[5],t=d[6]):(m=d[0],p=d[1],q=d[2],r=d[3],s=d[4]);else{d.sort(function(a,b){return a-b}),p=j(d,1),q=j(d,2),r=j(d,3),o=r-p;if(f.get("showOutliers")){m=s=c;for(u=0;u<e;u++)m===c&&d[u]>p-o*f.get("outlierIQR")&&(m=d[u]),d[u]<r+o*f.get("outlierIQR")&&(s=d[u]);n=d[0],t=d[e-1]}else m=d[0],s=d[e-1]}this.quartiles=[p,q,r],this.lwhisker=m,this.rwhisker=s,this.loutlier=n,this.routlier=t,w=g/(k-i+1),f.get("showOutliers")&&(l=b.ceil(f.get("spotRadius")),g-=2*b.ceil(f.get("spotRadius")),w=g/(k-i+1),n<m&&a.drawCircle((n-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append(),t>s&&a.drawCircle((t-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append()),a.drawRect(b.round((p-i)*w+l),b.round(h*.1),b.round((r-p)*w),b.round(h*.8),f.get("boxLineColor"),f.get("boxFillColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/2),b.round((p-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/4),b.round((m-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/2),b.round((r-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/4),b.round((s-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((q-i)*w+l),b.round(h*.1),b.round((q-i)*w+l),b.round(h*.9),f.get("medianColor")).append(),f.get("target")&&(v=b.ceil(f.get("spotRadius")),a.drawLine(b.round((f.get("target")-i)*w+l),b.round(h/2-v),b.round((f.get("target")-i)*w+l),b.round(h/2+v),f.get("targetColor")).append(),a.drawLine(b.round((f.get("target")-i)*w+l-v),b.round(h/2),b.round((f.get("target")-i)*w+l+v),b.round(h/2),f.get("targetColor")).append()),a.render()}}),G=g({init:function(a,b,c,d){this.target=a,this.id=b,this.type=c,this.args=d},append:function(){return this.target.appendShape(this),this}}),H=g({_pxregex:/(\d+)(px)?\s*$/i,init:function(a,b,c){if(!a)return;this.width=a,this.height=b,this.target=c,this.lastShapeId=null,c[0]&&(c=c[0]),d.data(c,"_jqs_vcanvas",this)},drawLine:function(a,b,c,d,e,f){return this.drawShape([[a,b],[c,d]],e,f)},drawShape:function(a,b,c,d){return this._genShape("Shape",[a,b,c,d])},drawCircle:function(a,b,c,d,e,f){return this._genShape("Circle",[a,b,c,d,e,f])},drawPieSlice:function(a,b,c,d,e,f,g){return this._genShape("PieSlice",[a,b,c,d,e,f,g])},drawRect:function(a,b,c,d,e,f){return this._genShape("Rect",[a,b,c,d,e,f])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(a,b){d(b).html(a)},_calculatePixelDims:function(a,b,c){var e;e=this._pxregex.exec(b),e?this.pixelHeight=e[1]:this.pixelHeight=d(c).height(),e=this._pxregex.exec(a),e?this.pixelWidth=e[1]:this.pixelWidth=d(c).width()},_genShape:function(a,b){var c=L++;return b.unshift(c),new G(this,c,a,b)},appendShape:function(a){alert("appendShape not implemented")},replaceWithShape:function(a,b){alert("replaceWithShape not implemented")},insertAfterShape:function(a,b){alert("insertAfterShape not implemented")},removeShapeId:function(a){alert("removeShapeId not implemented")},getShapeAt:function(a,b,c){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),I=g(H,{init:function(b,e,f,g){I._super.init.call(this,b,e,f),this.canvas=a.createElement("canvas"),f[0]&&(f=f[0]),d.data(f,"_jqs_vcanvas",this),d(this.canvas).css({display:"inline-block",width:b,height:e,verticalAlign:"top"}),this._insert(this.canvas,f),this._calculatePixelDims(b,e,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=g,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c,d(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(a,b,d){var e=this.canvas.getContext("2d");return a!==c&&(e.strokeStyle=a),e.lineWidth=d===c?1:d,b!==c&&(e.fillStyle=b),e},reset:function(){var a=this._getContext();a.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c},_drawShape:function(a,b,d,e,f){var g=this._getContext(d,e,f),h,i;g.beginPath(),g.moveTo(b[0][0]+.5,b[0][1]+.5);for(h=1,i=b.length;h<i;h++)g.lineTo(b[h][0]+.5,b[h][1]+.5);d!==c&&g.stroke(),e!==c&&g.fill(),this.targetX!==c&&this.targetY!==c&&g.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawCircle:function(a,d,e,f,g,h,i){var j=this._getContext(g,h,i);j.beginPath(),j.arc(d,e,f,0,2*b.PI,!1),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a),g!==c&&j.stroke(),h!==c&&j.fill()},_drawPieSlice:function(a,b,d,e,f,g,h,i){var j=this._getContext(h,i);j.beginPath(),j.moveTo(b,d),j.arc(b,d,e,f,g,!1),j.lineTo(b,d),j.closePath(),h!==c&&j.stroke(),i&&j.fill(),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b+d,c],[b+d,c+e],[b,c+e],[b,c]],f,g)},appendShape:function(a){return this.shapes[a.id]=a,this.shapeseq.push(a.id),this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=this.shapeseq,d;this.shapes[b.id]=b;for(d=c.length;d--;)c[d]==a&&(c[d]=b.id);delete this.shapes[a]},replaceWithShapes:function(a,b){var c=this.shapeseq,d={},e,f,g;for(f=a.length;f--;)d[a[f]]=!0;for(f=c.length;f--;)e=c[f],d[e]&&(c.splice(f,1),delete this.shapes[e],g=f);for(f=b.length;f--;)c.splice(g,0,b[f].id),this.shapes[b[f].id]=b[f]},insertAfterShape:function(a,b){var c=this.shapeseq,d;for(d=c.length;d--;)if(c[d]===a){c.splice(d+1,0,b.id),this.shapes[b.id]=b;return}},removeShapeId:function(a){var b=this.shapeseq,c;for(c=b.length;c--;)if(b[c]===a){b.splice(c,1);break}delete this.shapes[a]},getShapeAt:function(a,b,c){return this.targetX=b,this.targetY=c,this.render(),this.currentTargetShapeId},render:function(){var a=this.shapeseq,b=this.shapes,c=a.length,d=this._getContext(),e,f,g;d.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(g=0;g<c;g++)e=a[g],f=b[e],this["_draw"+f.type].apply(this,f.args);this.interact||(this.shapes={},this.shapeseq=[])}}),J=g(H,{init:function(b,c,e){var f;J._super.init.call(this,b,c,e),e[0]&&(e=e[0]),d.data(e,"_jqs_vcanvas",this),this.canvas=a.createElement("span"),d(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:b,height:c,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,e),this._calculatePixelDims(b,c,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,f='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"'+' style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",f),this.group=d(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(a,b,d,e,f){var g=[],h,i,j,k,l,m,n;for(n=0,m=b.length;n<m;n++)g[n]=""+b[n][0]+","+b[n][1];return h=g.splice(0,1),f=f===c?1:f,i=d===c?' stroked="false" ':' strokeWeight="'+f+'px" strokeColor="'+d+'" ',j=e===c?' filled="false"':' fillColor="'+e+'" filled="true" ',k=g[0]===g[g.length-1]?"x ":"",l='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+i+j+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+h+" l "+g.join(", ")+" "+k+'e">'+" </v:shape>",l},_drawCircle:function(a,b,d,e,f,g,h){var i,j,k;return b-=e,d-=e,i=f===c?' stroked="false" ':' strokeWeight="'+h+'px" strokeColor="'+f+'" ',j=g===c?' filled="false"':' fillColor="'+g+'" filled="true" ',k='<v:oval  id="jqsshape'+a+'" '+i+j+' style="position:absolute;top:'+d+"px; left:"+b+"px; width:"+e*2+"px; height:"+e*2+'px"></v:oval>',k},_drawPieSlice:function(a,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r;if(g===h)return"";h-g===2*b.PI&&(g=0,h=2*b.PI),l=d+b.round(b.cos(g)*f),m=e+b.round(b.sin(g)*f),n=d+b.round(b.cos(h)*f),o=e+b.round(b.sin(h)*f);if(l===n&&m===o){if(h-g<b.PI)return"";l=n=d+f,m=o=e}return l===n&&m===o&&h-g<b.PI?"":(k=[d-f,e-f,d+f,e+f,l,m,n,o],p=i===c?' stroked="false" ':' strokeWeight="1px" strokeColor="'+i+'" ',q=j===c?' filled="false"':' fillColor="'+j+'" filled="true" ',r='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+p+q+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+d+","+e+" wa "+k.join(", ")+' x e">'+" </v:shape>",r)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b,c+e],[b+d,c+e],[b+d,c],[b,c]],f,g)},reset:function(){this.group.innerHTML=""},appendShape:function(a){var b=this["_draw"+a.type].apply(this,a.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",b):this.prerender+=b,this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].outerHTML=e},replaceWithShapes:function(a,b){var c=d("#jqsshape"+a[0]),e="",f=b.length,g;for(g=0;g<f;g++)e+=this["_draw"+b[g].type].apply(this,b[g].args);c[0].outerHTML=e;for(g=1;g<a.length;g++)d("#jqsshape"+a[g]).remove()},insertAfterShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].insertAdjacentHTML("afterEnd",e)},removeShapeId:function(a){var b=d("#jqsshape"+a);this.group.removeChild(b[0])},getShapeAt:function(a,b,c){var d=a.id.substr(8);return d},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})})(document,Math);
\ No newline at end of file
diff --git a/WebSites/errors/403/plugins/thirdparty/justgage.1.0.1.js b/WebSites/errors/403/plugins/thirdparty/justgage.1.0.1.js
new file mode 100755
index 0000000..a6cfe70
--- /dev/null
+++ b/WebSites/errors/403/plugins/thirdparty/justgage.1.0.1.js
@@ -0,0 +1,491 @@
+/**
+ * JustGage - a handy JavaScript plugin for generating and animating nice & clean dashboard gauges.
+ * Copyright (c) 2012 Bojan Djuricic - pindjur(at)gmail(dot)com | http://www.madcog.com
+ * Licensed under MIT.
+ * Date: 31/07/2012
+ * @author Bojan Djuricic  (@Toorshia)
+ * @version 1.0
+ *
+ * http://www.justgage.com
+ */
+
+JustGage = function(config)
+{
+
+	if(!config.id)
+	{
+		alert("Missing id parameter for gauge!");
+		return false;
+	}
+	if(!document.getElementById(config.id))
+	{
+		alert("No element with id: \"" + config.id + "\" found!");
+		return false;
+	}
+
+	// configurable parameters
+	this.config = {
+		// id : string
+		// this is container element id
+		id                  : config.id,
+
+		// value : int
+		// value gauge is showing
+		value               : (config.value) ? config.value : 0,
+
+		// valueFontColor : string
+		// color of label showing current value
+		valueFontColor      : (config.valueFontColor) ? config.valueFontColor : "#010101",
+
+		// min : int
+		// min value
+		min                 : (config.min) ? config.min : 0,
+
+		// max : int
+		// max value
+		max                 : (config.max) ? config.max : 100,
+
+		// showMinMax : bool
+		// hide or display min and max values
+		showMinMax          : (config.showMinMax != null) ? config.showMinMax : true,
+
+		// gaugeWidthScale : float
+		// width of the gauge element
+		gaugeWidthScale     : (config.gaugeWidthScale) ? config.gaugeWidthScale : 1.0,
+
+		// gaugeColor : string
+		// background color of gauge element
+		gaugeColor          : (config.gaugeColor) ? config.gaugeColor : "#edebeb",
+
+		// label : string
+		// text to show below value
+		label               : (config.label) ? config.label : "",
+
+		// showInnerShadow : bool
+		// give gauge element small amount of inner shadow
+		showInnerShadow     : (config.showInnerShadow != null) ? config.showInnerShadow : true,
+
+		// shadowOpacity : int
+		// 0 ~ 1
+		shadowOpacity       : (config.shadowOpacity) ? config.shadowOpacity : 0.2,
+
+		// shadowSize: int
+		// inner shadow size
+		shadowSize          : (config.shadowSize) ? config.shadowSize : 5,
+
+		// shadowVerticalOffset : int
+		// how much shadow is offset from top
+		shadowVerticalOffset: (config.shadowVerticalOffset) ? config.shadowVerticalOffset : 3,
+
+		// levelColors : string[]
+		// colors of indicator, from lower to upper, in RGB format
+		levelColors         : (config.levelColors) ? config.levelColors : percentColors,
+
+		// levelColorsGradient : bool
+		// whether to use gradual color change for value, or sector-based
+		levelColorsGradient : (config.levelColorsGradient != null) ? config.levelColorsGradient : true,
+
+		// labelFontColor : string
+		// color of label showing label under value
+		labelFontColor      : (config.labelFontColor) ? config.labelFontColor : "#b3b3b3",
+
+		// startAnimationTime : int
+		// length of initial animation
+		startAnimationTime  : (config.startAnimationTime) ? config.startAnimationTime : 700,
+
+		// startAnimationType : string
+		// type of initial animation (linear, >, <,  <>, bounce)
+		startAnimationType  : (config.startAnimationType) ? config.startAnimationType : ">",
+
+		// refreshAnimationTime : int
+		// length of refresh animation
+		refreshAnimationTime: (config.refreshAnimationTime) ? config.refreshAnimationTime : 700,
+
+		// refreshAnimationType : string
+		// type of refresh animation (linear, >, <,  <>, bounce)
+		refreshAnimationType: (config.refreshAnimationType) ? config.refreshAnimationType : ">"
+	};
+
+	// overflow values
+	if(config.value > this.config.max) this.config.value = this.config.max;
+	if(config.value < this.config.min) this.config.value = this.config.min;
+	this.originalValue = config.value;
+
+	// canvas
+	this.canvas = Raphael(this.config.id, "100%", "100%");
+
+	// canvas dimensions
+	//var canvasW = document.getElementById(this.config.id).clientWidth;
+	//var canvasH = document.getElementById(this.config.id).clientHeight;
+	var canvasW = getStyle(document.getElementById(this.config.id), "width").slice(0, -2) * 1;
+	var canvasH = getStyle(document.getElementById(this.config.id), "height").slice(0, -2) * 1;
+
+	// widget dimensions
+	var widgetW, widgetH;
+	if((canvasW / canvasH) > 1.25)
+	{
+		widgetW = 1.25 * canvasH;
+		widgetH = canvasH;
+	}
+	else
+	{
+		widgetW = canvasW;
+		widgetH = canvasW / 1.25;
+	}
+
+	// delta
+	var dx = (canvasW - widgetW) / 2;
+	var dy = (canvasH - widgetH) / 2;
+
+	// value
+	var valueFontSize = ((widgetH / 6.4) > 16) ? (widgetH / 6.4) : 16;
+	var valueX = dx + widgetW / 2;
+	var valueY = dy + widgetH / 1.4;
+
+	// label
+	var labelFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+	var labelX = dx + widgetW / 2;
+	//var labelY = dy + widgetH / 1.126760563380282;
+	var labelY = valueY + valueFontSize / 2 + 6;
+
+	// min
+	var minFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+	var minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * this.config.gaugeWidthScale) / 2;
+	var minY = dy + widgetH / 1.126760563380282;
+
+	// max
+	var maxFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+	var maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * this.config.gaugeWidthScale) / 2;
+	var maxY = dy + widgetH / 1.126760563380282;
+
+	// parameters
+	this.params = {
+		canvasW      : canvasW,
+		canvasH      : canvasH,
+		widgetW      : widgetW,
+		widgetH      : widgetH,
+		dx           : dx,
+		dy           : dy,
+		valueFontSize: valueFontSize,
+		valueX       : valueX,
+		valueY       : valueY,
+		labelFontSize: labelFontSize,
+		labelX       : labelX,
+		labelY       : labelY,
+		minFontSize  : minFontSize,
+		minX         : minX,
+		minY         : minY,
+		maxFontSize  : maxFontSize,
+		maxX         : maxX,
+		maxY         : maxY
+	};
+
+	// pki - custom attribute for generating gauge paths
+	this.canvas.customAttributes.pki = function(value, min, max, w, h, dx, dy, gws)
+	{
+
+		var alpha = (1 - (value - min) / (max - min)) * Math.PI , Ro = w / 2 - w / 10, Ri = Ro - w / 6.666666666666667 * gws,
+
+			Cx = w / 2 + dx, Cy = h / 1.25 + dy,
+
+			Xo = w / 2 + dx + Ro * Math.cos(alpha), Yo = h - (h - Cy) + dy - Ro * Math.sin(alpha), Xi = w / 2 + dx + Ri * Math.cos(alpha), Yi = h - (h - Cy) + dy - Ri * Math.sin(alpha), path;
+
+		path += "M" + (Cx - Ri) + "," + Cy + " ";
+		path += "L" + (Cx - Ro) + "," + Cy + " ";
+		path += "A" + Ro + "," + Ro + " 0 0,1 " + Xo + "," + Yo + " ";
+		path += "L" + Xi + "," + Yi + " ";
+		path += "A" + Ri + "," + Ri + " 0 0,0 " + (Cx - Ri) + "," + Cy + " ";
+		path += "z ";
+		return { path: path };
+	}
+
+	// gauge
+	this.gauge = this.canvas.path().attr({
+		"stroke": "none",
+		"fill"  : this.config.gaugeColor,
+		pki     : [this.config.max, this.config.min, this.config.max, this.params.widgetW, this.params.widgetH,
+		           this.params.dx, this.params.dy, this.config.gaugeWidthScale]
+	});
+	this.gauge.id = this.config.id + "-gauge";
+
+	// level
+	this.level = this.canvas.path().attr({
+		"stroke": "none",
+		"fill"  : getColorForPercentage((this.config.value - this.config.min) / (this.config.max - this.config.min), this.config.levelColors, this.config.levelColorsGradient),
+		pki     : [this.config.min, this.config.min, this.config.max, this.params.widgetW, this.params.widgetH,
+		           this.params.dx, this.params.dy, this.config.gaugeWidthScale]
+	});
+	this.level.id = this.config.id + "-level";
+
+	// value
+	this.txtValue = this.canvas.text(this.params.valueX, this.params.valueY, this.originalValue);
+	this.txtValue.attr({
+		"font-size"   : this.params.valueFontSize,
+		"font-weight" : "bold",
+		"font-family" : "Arial",
+		"fill"        : this.config.valueFontColor,
+		"fill-opacity": "0"
+	});
+	this.txtValue.id = this.config.id + "-txtvalue";
+
+	// label
+	this.txtLabel = this.canvas.text(this.params.labelX, this.params.labelY, this.config.label);
+	this.txtLabel.attr({
+		"font-size"   : this.params.labelFontSize,
+		"font-weight" : "normal",
+		"font-family" : "Arial",
+		"fill"        : this.config.labelFontColor,
+		"fill-opacity": "0"
+	});
+	this.txtLabel.id = this.config.id + "-txtlabel";
+
+	// min
+	this.txtMin = this.canvas.text(this.params.minX, this.params.minY, this.config.min);
+	this.txtMin.attr({
+		"font-size"   : this.params.minFontSize,
+		"font-weight" : "normal",
+		"font-family" : "Arial",
+		"fill"        : this.config.labelFontColor,
+		"fill-opacity": (this.config.showMinMax == true) ? "1" : "0"
+	});
+	this.txtMin.id = this.config.id + "-txtmin";
+
+	// max
+	this.txtMax = this.canvas.text(this.params.maxX, this.params.maxY, this.config.max);
+	this.txtMax.attr({
+		"font-size"   : this.params.maxFontSize,
+		"font-weight" : "normal",
+		"font-family" : "Arial",
+		"fill"        : this.config.labelFontColor,
+		"fill-opacity": (this.config.showMinMax == true) ? "1" : "0"
+	});
+	this.txtMax.id = this.config.id + "-txtmax";
+
+	var defs = this.canvas.canvas.childNodes[1];
+	var svg = "http://www.w3.org/2000/svg";
+
+
+	if(ie < 9)
+	{
+		onCreateElementNsReady(function()
+		{
+			this.generateShadow();
+		});
+	}
+	else
+	{
+		this.generateShadow(svg, defs);
+	}
+
+	// animate
+	this.level.animate({pki: [this.config.value, this.config.min, this.config.max, this.params.widgetW,
+	                          this.params.widgetH, this.params.dx, this.params.dy, this.config.gaugeWidthScale
+	]}, this.config.startAnimationTime, this.config.startAnimationType);
+
+	this.txtValue.animate({"fill-opacity": "1"}, this.config.startAnimationTime, this.config.startAnimationType);
+	this.txtLabel.animate({"fill-opacity": "1"}, this.config.startAnimationTime, this.config.startAnimationType);
+};
+
+// refresh gauge level
+JustGage.prototype.refresh = function(val)
+{
+	// overflow values
+	originalVal = val;
+	if(val > this.config.max)
+	{
+		val = this.config.max;
+	}
+	if(val < this.config.min)
+	{
+		val = this.config.min;
+	}
+
+	var color = getColorForPercentage((val - this.config.min) / (this.config.max - this.config.min), this.config.levelColors, this.config.levelColorsGradient);
+	this.canvas.getById(this.config.id + "-txtvalue").attr({"text": originalVal});
+	this.canvas.getById(this.config.id + "-level").animate({pki                                       : [val,
+	                                                                                                     this.config.min,
+	                                                                                                     this.config.max,
+	                                                                                                     this.params.widgetW,
+	                                                                                                     this.params.widgetH,
+	                                                                                                     this.params.dx,
+	                                                                                                     this.params.dy,
+	                                                                                                     this.config.gaugeWidthScale
+	], "fill"                                                                                         : color}, this.config.refreshAnimationTime, this.config.refreshAnimationType);
+};
+
+var percentColors = [
+	"#a9d70b", "#f9c802", "#ff0000"
+]
+
+JustGage.prototype.generateShadow = function(svg, defs)
+{
+	// FILTER
+	var gaussFilter = document.createElementNS(svg, "filter");
+	gaussFilter.setAttribute("id", this.config.id + "-inner-shadow");
+	defs.appendChild(gaussFilter);
+
+	// offset
+	var feOffset = document.createElementNS(svg, "feOffset");
+	feOffset.setAttribute("dx", 0);
+	feOffset.setAttribute("dy", this.config.shadowVerticalOffset);
+	gaussFilter.appendChild(feOffset);
+
+	// blur
+	var feGaussianBlur = document.createElementNS(svg, "feGaussianBlur");
+	feGaussianBlur.setAttribute("result", "offset-blur");
+	feGaussianBlur.setAttribute("stdDeviation", this.config.shadowSize);
+	gaussFilter.appendChild(feGaussianBlur);
+
+	// composite 1
+	var feComposite1 = document.createElementNS(svg, "feComposite");
+	feComposite1.setAttribute("operator", "out");
+	feComposite1.setAttribute("in", "SourceGraphic");
+	feComposite1.setAttribute("in2", "offset-blur");
+	feComposite1.setAttribute("result", "inverse");
+	gaussFilter.appendChild(feComposite1);
+
+	// flood
+	var feFlood = document.createElementNS(svg, "feFlood");
+	feFlood.setAttribute("flood-color", "black");
+	feFlood.setAttribute("flood-opacity", this.config.shadowOpacity);
+	feFlood.setAttribute("result", "color");
+	gaussFilter.appendChild(feFlood);
+
+	// composite 2
+	var feComposite2 = document.createElementNS(svg, "feComposite");
+	feComposite2.setAttribute("operator", "in");
+	feComposite2.setAttribute("in", "color");
+	feComposite2.setAttribute("in2", "inverse");
+	feComposite2.setAttribute("result", "shadow");
+	gaussFilter.appendChild(feComposite2);
+
+	// composite 3
+	var feComposite3 = document.createElementNS(svg, "feComposite");
+	feComposite3.setAttribute("operator", "over");
+	feComposite3.setAttribute("in", "shadow");
+	feComposite3.setAttribute("in2", "SourceGraphic");
+	gaussFilter.appendChild(feComposite3);
+
+	// set shadow
+	if(this.config.showInnerShadow == true)
+	{
+		this.canvas.canvas.childNodes[2].setAttribute("filter", "url(#" + this.config.id + "-inner-shadow)");
+		this.canvas.canvas.childNodes[3].setAttribute("filter", "url(#" + this.config.id + "-inner-shadow)");
+	}
+}
+
+var getColorForPercentage = function(pct, col, grad)
+{
+
+	var no = col.length;
+	if(no === 1) return col[0];
+	var inc = (grad) ? (1 / (no - 1)) : (1 / no);
+	var colors = new Array();
+	for(var i = 0; i < col.length; i++)
+	{
+		var percentage = (grad) ? (inc * i) : (inc * (i + 1));
+		var rval = parseInt((cutHex(col[i])).substring(0, 2), 16);
+		var gval = parseInt((cutHex(col[i])).substring(2, 4), 16);
+		var bval = parseInt((cutHex(col[i])).substring(4, 6), 16);
+		colors[i] = { pct: percentage, color: { r: rval, g: gval, b: bval  } };
+	}
+
+	if(pct == 0) return 'rgb(' + [colors[0].color.r, colors[0].color.g, colors[0].color.b].join(',') + ')';
+	for(var i = 0; i < colors.length; i++)
+	{
+		if(pct <= colors[i].pct)
+		{
+			if(grad == true)
+			{
+				var lower = colors[i - 1];
+				var upper = colors[i];
+				var range = upper.pct - lower.pct;
+				var rangePct = (pct - lower.pct) / range;
+				var pctLower = 1 - rangePct;
+				var pctUpper = rangePct;
+				var color = {
+					r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),
+					g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),
+					b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)
+				};
+				return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
+			}
+			else
+			{
+				return 'rgb(' + [colors[i].color.r, colors[i].color.g, colors[i].color.b].join(',') + ')';
+			}
+		}
+	}
+}
+
+function getRandomInt(min, max)
+{
+	return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
+function cutHex(str)
+{
+	return (str.charAt(0) == "#") ? str.substring(1, 7) : str
+}
+
+function getStyle(oElm, strCssRule)
+{
+	var strValue = "";
+	if(document.defaultView && document.defaultView.getComputedStyle)
+	{
+		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
+	}
+	else if(oElm.currentStyle)
+	{
+		strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1)
+		{
+			return p1.toUpperCase();
+		});
+		strValue = oElm.currentStyle[strCssRule];
+	}
+	return strValue;
+}
+
+function onCreateElementNsReady(func)
+{
+	if(document.createElementNS != undefined)
+	{
+		func();
+	}
+	else
+	{
+		setTimeout(function()
+		{
+			onCreateElementNsReady(func);
+		}, 100);
+	}
+}
+
+// ----------------------------------------------------------
+// A short snippet for detecting versions of IE in JavaScript
+// without resorting to user-agent sniffing
+// ----------------------------------------------------------
+// If you're not in IE (or IE version is less than 5) then:
+// ie === undefined
+// If you're in IE (>=5) then you can determine which version:
+// ie === 7; // IE7
+// Thus, to detect IE:
+// if (ie) {}
+// And to detect the version:
+// ie === 6 // IE6
+// ie > 7 // IE8, IE9 ...
+// ie < 9 // Anything less than IE9
+// ----------------------------------------------------------
+
+// UPDATE: Now using Live NodeList idea from @jdalton
+
+var ie = (function()
+{
+
+	var undef, v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i');
+
+	while(div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[0]);
+
+	return v > 4 ? v : undef;
+
+}());
\ No newline at end of file
diff --git a/WebSites/errors/403/plugins/thirdparty/raphael.2.1.0.min.js b/WebSites/errors/403/plugins/thirdparty/raphael.2.1.0.min.js
new file mode 100755
index 0000000..3eb388e
--- /dev/null
+++ b/WebSites/errors/403/plugins/thirdparty/raphael.2.1.0.min.js
@@ -0,0 +1,10 @@
+// +--------------------------------------------------------------------+ \\
+// ¦ Raphaël 2.1.0 - JavaScript Vector Library                          ¦ \\
+// +--------------------------------------------------------------------¦ \\
+// ¦ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com)    ¦ \\
+// ¦ Copyright © 2008-2012 Sencha Labs (http://sencha.com)              ¦ \\
+// +--------------------------------------------------------------------¦ \\
+// ¦ Licensed under the MIT (http://raphaeljs.com/license.html) license.¦ \\
+// +--------------------------------------------------------------------+ \\
+
+(function(a){var b="0.3.4",c="hasOwnProperty",d=/[\.\/]/,e="*",f=function(){},g=function(a,b){return a-b},h,i,j={n:{}},k=function(a,b){var c=j,d=i,e=Array.prototype.slice.call(arguments,2),f=k.listeners(a),l=0,m=!1,n,o=[],p={},q=[],r=h,s=[];h=a,i=0;for(var t=0,u=f.length;t<u;t++)"zIndex"in f[t]&&(o.push(f[t].zIndex),f[t].zIndex<0&&(p[f[t].zIndex]=f[t]));o.sort(g);while(o[l]<0){n=p[o[l++]],q.push(n.apply(b,e));if(i){i=d;return q}}for(t=0;t<u;t++){n=f[t];if("zIndex"in n)if(n.zIndex==o[l]){q.push(n.apply(b,e));if(i)break;do{l++,n=p[o[l]],n&&q.push(n.apply(b,e));if(i)break}while(n)}else p[n.zIndex]=n;else{q.push(n.apply(b,e));if(i)break}}i=d,h=r;return q.length?q:null};k.listeners=function(a){var b=a.split(d),c=j,f,g,h,i,k,l,m,n,o=[c],p=[];for(i=0,k=b.length;i<k;i++){n=[];for(l=0,m=o.length;l<m;l++){c=o[l].n,g=[c[b[i]],c[e]],h=2;while(h--)f=g[h],f&&(n.push(f),p=p.concat(f.f||[]))}o=n}return p},k.on=function(a,b){var c=a.split(d),e=j;for(var g=0,h=c.length;g<h;g++)e=e.n,!e[c[g]]&&(e[c[g]]={n:{}}),e=e[c[g]];e.f=e.f||[];for(g=0,h=e.f.length;g<h;g++)if(e.f[g]==b)return f;e.f.push(b);return function(a){+a==+a&&(b.zIndex=+a)}},k.stop=function(){i=1},k.nt=function(a){if(a)return(new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)")).test(h);return h},k.off=k.unbind=function(a,b){var f=a.split(d),g,h,i,k,l,m,n,o=[j];for(k=0,l=f.length;k<l;k++)for(m=0;m<o.length;m+=i.length-2){i=[m,1],g=o[m].n;if(f[k]!=e)g[f[k]]&&i.push(g[f[k]]);else for(h in g)g[c](h)&&i.push(g[h]);o.splice.apply(o,i)}for(k=0,l=o.length;k<l;k++){g=o[k];while(g.n){if(b){if(g.f){for(m=0,n=g.f.length;m<n;m++)if(g.f[m]==b){g.f.splice(m,1);break}!g.f.length&&delete g.f}for(h in g.n)if(g.n[c](h)&&g.n[h].f){var p=g.n[h].f;for(m=0,n=p.length;m<n;m++)if(p[m]==b){p.splice(m,1);break}!p.length&&delete g.n[h].f}}else{delete g.f;for(h in g.n)g.n[c](h)&&g.n[h].f&&delete g.n[h].f}g=g.n}}},k.once=function(a,b){var c=function(){var d=b.apply(this,arguments);k.unbind(a,c);return d};return k.on(a,c)},k.version=b,k.toString=function(){return"You are running Eve "+b},typeof module!="undefined"&&module.exports?module.exports=k:typeof define!="undefined"?define("eve",[],function(){return k}):a.eve=k})(this),function(){function cF(a){for(var b=0;b<cy.length;b++)cy[b].el.paper==a&&cy.splice(b--,1)}function cE(b,d,e,f,h,i){e=Q(e);var j,k,l,m=[],o,p,q,t=b.ms,u={},v={},w={};if(f)for(y=0,z=cy.length;y<z;y++){var x=cy[y];if(x.el.id==d.id&&x.anim==b){x.percent!=e?(cy.splice(y,1),l=1):k=x,d.attr(x.totalOrigin);break}}else f=+v;for(var y=0,z=b.percents.length;y<z;y++){if(b.percents[y]==e||b.percents[y]>f*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(var A in j)if(j[g](A))if(U[g](A)||d.paper.customAttributes[g](A)){u[A]=d.attr(A),u[A]==null&&(u[A]=T[A]),v[A]=j[A];switch(U[A]){case C:w[A]=(v[A]-u[A])/t;break;case"colour":u[A]=a.getRGB(u[A]);var B=a.getRGB(v[A]);w[A]={r:(B.r-u[A].r)/t,g:(B.g-u[A].g)/t,b:(B.b-u[A].b)/t};break;case"path":var D=bR(u[A],v[A]),E=D[1];u[A]=D[0],w[A]=[];for(y=0,z=u[A].length;y<z;y++){w[A][y]=[0];for(var F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(E[y][F]-u[A][y][F])/t}break;case"transform":var H=d._,I=ca(H[A],v[A]);if(I){u[A]=I.from,v[A]=I.to,w[A]=[],w[A].real=!0;for(y=0,z=u[A].length;y<z;y++){w[A][y]=[u[A][y][0]];for(F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(v[A][y][F]-u[A][y][F])/t}}else{var J=d.matrix||new cb,K={_:{transform:H.transform},getBBox:function(){return d.getBBox(1)}};u[A]=[J.a,J.b,J.c,J.d,J.e,J.f],b$(K,v[A]),v[A]=K._.transform,w[A]=[(K.matrix.a-J.a)/t,(K.matrix.b-J.b)/t,(K.matrix.c-J.c)/t,(K.matrix.d-J.d)/t,(K.matrix.e-J.e)/t,(K.matrix.f-J.f)/t]}break;case"csv":var L=r(j[A])[s](c),M=r(u[A])[s](c);if(A=="clip-rect"){u[A]=M,w[A]=[],y=M.length;while(y--)w[A][y]=(L[y]-u[A][y])/t}v[A]=L;break;default:L=[][n](j[A]),M=[][n](u[A]),w[A]=[],y=d.paper.customAttributes[A].length;while(y--)w[A][y]=((L[y]||0)-(M[y]||0))/t}}var O=j.easing,P=a.easing_formulas[O];if(!P){P=r(O).match(N);if(P&&P.length==5){var R=P;P=function(a){return cC(a,+R[1],+R[2],+R[3],+R[4],t)}}else P=bf}q=j.start||b.start||+(new Date),x={anim:b,percent:e,timestamp:q,start:q+(b.del||0),status:0,initstatus:f||0,stop:!1,ms:t,easing:P,from:u,diff:w,to:v,el:d,callback:j.callback,prev:p,next:o,repeat:i||b.times,origin:d.attr(),totalOrigin:h},cy.push(x);if(f&&!k&&!l){x.stop=!0,x.start=new Date-t*f;if(cy.length==1)return cA()}l&&(x.start=new Date-x.ms*f),cy.length==1&&cz(cA)}else k.initstatus=f,k.start=new Date-k.ms*f;eve("raphael.anim.start."+d.id,d,b)}}function cD(a,b){var c=[],d={};this.ms=b,this.times=1;if(a){for(var e in a)a[g](e)&&(d[Q(e)]=a[e],c.push(Q(e)));c.sort(bd)}this.anim=d,this.top=c[c.length-1],this.percents=c}function cC(a,b,c,d,e,f){function o(a,b){var c,d,e,f,j,k;for(e=a,k=0;k<8;k++){f=m(e)-a;if(z(f)<b)return e;j=(3*i*e+2*h)*e+g;if(z(j)<1e-6)break;e=e-f/j}c=0,d=1,e=a;if(e<c)return c;if(e>d)return d;while(c<d){f=m(e);if(z(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cq(){return this.x+q+this.y+q+this.width+" × "+this.height}function cp(){return this.x+q+this.y}function cb(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bH(b,c,d){b=a._path2curve(b),c=a._path2curve(c);var e,f,g,h,i,j,k,l,m,n,o=d?0:[];for(var p=0,q=b.length;p<q;p++){var r=b[p];if(r[0]=="M")e=i=r[1],f=j=r[2];else{r[0]=="C"?(m=[e,f].concat(r.slice(1)),e=m[6],f=m[7]):(m=[e,f,e,f,i,j,i,j],e=i,f=j);for(var s=0,t=c.length;s<t;s++){var u=c[s];if(u[0]=="M")g=k=u[1],h=l=u[2];else{u[0]=="C"?(n=[g,h].concat(u.slice(1)),g=n[6],h=n[7]):(n=[g,h,g,h,k,l,k,l],g=k,h=l);var v=bG(m,n,d);if(d)o+=v;else{for(var w=0,x=v.length;w<x;w++)v[w].segment1=p,v[w].segment2=s,v[w].bez1=m,v[w].bez2=n;o=o.concat(v)}}}}}return o}function bG(b,c,d){var e=a.bezierBBox(b),f=a.bezierBBox(c);if(!a.isBBoxIntersect(e,f))return d?0:[];var g=bB.apply(0,b),h=bB.apply(0,c),i=~~(g/5),j=~~(h/5),k=[],l=[],m={},n=d?0:[];for(var o=0;o<i+1;o++){var p=a.findDotsAtSegment.apply(a,b.concat(o/i));k.push({x:p.x,y:p.y,t:o/i})}for(o=0;o<j+1;o++)p=a.findDotsAtSegment.apply(a,c.concat(o/j)),l.push({x:p.x,y:p.y,t:o/j});for(o=0;o<i;o++)for(var q=0;q<j;q++){var r=k[o],s=k[o+1],t=l[q],u=l[q+1],v=z(s.x-r.x)<.001?"y":"x",w=z(u.x-t.x)<.001?"y":"x",x=bD(r.x,r.y,s.x,s.y,t.x,t.y,u.x,u.y);if(x){if(m[x.x.toFixed(4)]==x.y.toFixed(4))continue;m[x.x.toFixed(4)]=x.y.toFixed(4);var y=r.t+z((x[v]-r[v])/(s[v]-r[v]))*(s.t-r.t),A=t.t+z((x[w]-t[w])/(u[w]-t[w]))*(u.t-t.t);y>=0&&y<=1&&A>=0&&A<=1&&(d?n++:n.push({x:x.x,y:x.y,t1:y,t2:A}))}}return n}function bF(a,b){return bG(a,b,1)}function bE(a,b){return bG(a,b)}function bD(a,b,c,d,e,f,g,h){if(!(x(a,c)<y(e,g)||y(a,c)>x(e,g)||x(b,d)<y(f,h)||y(b,d)>x(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(!k)return;var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(n<+y(a,c).toFixed(2)||n>+x(a,c).toFixed(2)||n<+y(e,g).toFixed(2)||n>+x(e,g).toFixed(2)||o<+y(b,d).toFixed(2)||o>+x(b,d).toFixed(2)||o<+y(f,h).toFixed(2)||o>+x(f,h).toFixed(2))return;return{x:l,y:m}}}function bC(a,b,c,d,e,f,g,h,i){if(!(i<0||bB(a,b,c,d,e,f,g,h)<i)){var j=1,k=j/2,l=j-k,m,n=.01;m=bB(a,b,c,d,e,f,g,h,l);while(z(m-i)>n)k/=2,l+=(m<i?1:-1)*k,m=bB(a,b,c,d,e,f,g,h,l);return l}}function bB(a,b,c,d,e,f,g,h,i){i==null&&(i=1),i=i>1?1:i<0?0:i;var j=i/2,k=12,l=[-0.1252,.1252,-0.3678,.3678,-0.5873,.5873,-0.7699,.7699,-0.9041,.9041,-0.9816,.9816],m=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],n=0;for(var o=0;o<k;o++){var p=j*l[o]+j,q=bA(p,a,c,e,g),r=bA(p,b,d,f,h),s=q*q+r*r;n+=m[o]*w.sqrt(s)}return j*n}function bA(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function by(a,b){var c=[];for(var d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function bx(){return this.hex}function bv(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("?"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bu(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bu(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function bm(a){if(Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[g](c)&&(b[c]=bm(a[c]));return b}function a(c){if(a.is(c,"function"))return b?c():eve.on("raphael.DOMload",c);if(a.is(c,E))return a._engine.create[m](a,c.splice(0,3+a.is(c[0],C))).add(c);var d=Array.prototype.slice.call(arguments,0);if(a.is(d[d.length-1],"function")){var e=d.pop();return b?e.call(a._engine.create[m](a,d)):eve.on("raphael.DOMload",function(){e.call(a._engine.create[m](a,d))})}return a._engine.create[m](a,arguments)}a.version="2.1.0",a.eve=eve;var b,c=/[, ]+/,d={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},e=/\{(\d+)\}/g,f="prototype",g="hasOwnProperty",h={doc:document,win:window},i={was:Object.prototype[g].call(h.win,"Raphael"),is:h.win.Raphael},j=function(){this.ca=this.customAttributes={}},k,l="appendChild",m="apply",n="concat",o="createTouch"in h.doc,p="",q=" ",r=String,s="split",t="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[s](q),u={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},v=r.prototype.toLowerCase,w=Math,x=w.max,y=w.min,z=w.abs,A=w.pow,B=w.PI,C="number",D="string",E="array",F="toString",G="fill",H=Object.prototype.toString,I={},J="push",K=a._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,L=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,M={NaN:1,Infinity:1,"-Infinity":1},N=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,O=w.round,P="setAttribute",Q=parseFloat,R=parseInt,S=r.prototype.toUpperCase,T=a._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},U=a._availableAnimAttrs={blur:C,"clip-rect":"csv",cx:C,cy:C,fill:"colour","fill-opacity":C,"font-size":C,height:C,opacity:C,path:"path",r:C,rx:C,ry:C,stroke:"colour","stroke-opacity":C,"stroke-width":C,transform:"transform",width:C,x:C,y:C},V=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]/g,W=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,X={hs:1,rg:1},Y=/,?([achlmqrstvxz]),?/gi,Z=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,$=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,_=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig,ba=a._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,bb={},bc=function(a,b){return a.key-b.key},bd=function(a,b){return Q(a)-Q(b)},be=function(){},bf=function(a){return a},bg=a._rectPath=function(a,b,c,d,e){if(e)return[["M",a+e,b],["l",c-e*2,0],["a",e,e,0,0,1,e,e],["l",0,d-e*2],["a",e,e,0,0,1,-e,e],["l",e*2-c,0],["a",e,e,0,0,1,-e,-e],["l",0,e*2-d],["a",e,e,0,0,1,e,-e],["z"]];return[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},bh=function(a,b,c,d){d==null&&(d=c);return[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},bi=a._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return bg(b.x,b.y,b.width,b.height)}},bj=a.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;a=bR(a);for(e=0,g=a.length;e<g;e++){i=a[e];for(f=1,h=i.length;f<h;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d}return a};a._g=h,a.type=h.win.SVGAngle||h.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML";if(a.type=="VML"){var bk=h.doc.createElement("div"),bl;bk.innerHTML='<v:shape adj="1"/>',bl=bk.firstChild,bl.style.behavior="url(#default#VML)";if(!bl||typeof bl.adj!="object")return a.type=p;bk=null}a.svg=!(a.vml=a.type=="VML"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b=="finite")return!M[g](+a);if(b=="array")return a instanceof Array;return b=="null"&&a===null||b==typeof a&&a!==null||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(f<d)return c-f;if(f>b-d)return c-f+b}return c};var bn=a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve("raphael.setWindow",a,h.win,b),h.win=b,h.doc=h.win.document,a._engine.initWin&&a._engine.initWin(h.win)};var bo=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bo=bv(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=h.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",h.doc.body.appendChild(i),bo=bv(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bo(b)},bp=function(){return"hsb("+[this.h,this.s,this.b]+")"},bq=function(){return"hsl("+[this.h,this.s,this.l]+")"},br=function(){return this.hex},bs=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bt=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:br};a.is(e,"finite")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=br;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bp}},a.rgb2hsl=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bq}},a._path2string=function(){return this.join(",").replace(Y,"$1")};var bw=a._preload=function(a,b){var c=h.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bv(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:bx};!X[g](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bo(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bx},k.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx}},a),a.hsb=bv(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bv(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bv(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=function(b){if(!b)return null;var c=bz(b);if(c.arr)return bJ(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];a.is(b,E)&&a.is(b[0],E)&&(e=bJ(b)),e.length||r(b).replace(Z,function(a,b,c){var f=[],g=b.toLowerCase();c.replace(_,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(e.push([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");if(g=="r")e.push([b][n](f));else while(f.length>=d[g]){e.push([b][n](f.splice(0,d[g])));if(!d[g])break}}),e.toString=a._path2string,c.arr=bJ(e);return e},a.parseTransformString=bv(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=bJ(b)),d.length||r(b).replace($,function(a,b,c){var e=[],f=v.call(b);c.replace(_,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d});var bz=function(a){var b=bz.ps=bz.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[g](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r<t)&&(z+=180);return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:x,y:y},alpha:z}},a.bezierBBox=function(b,c,d,e,f,g,h,i){a.is(b,"array")||(b=[b,c,d,e,f,g,h,i]);var j=bQ.apply(null,b);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},a.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},a.isBBoxIntersect=function(b,c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.x<c.x2&&b.x>c.x||c.x<b.x2&&c.x>b.x)&&(b.y<c.y2&&b.y>c.y||c.y<b.y2&&c.y>b.y)},a.pathIntersection=function(a,b){return bH(a,b)},a.pathIntersectionNumber=function(a,b){return bH(a,b,1)},a.isPointInsidePath=function(b,c,d){var e=a.pathBBox(b);return a.isPointInsideBBox(e,c,d)&&bH(b,[["M",c,d],["H",e.x2+10]],1)%2==1},a._removedFactory=function(a){return function(){eve("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var bI=a.pathBBox=function(a){var b=bz(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=bR(a);var c=0,d=0,e=[],f=[],g;for(var h=0,i=a.length;h<i;h++){g=a[h];if(g[0]=="M")c=g[1],d=g[2],e.push(c),f.push(d);else{var j=bQ(c,d,g[1],g[2],g[3],g[4],g[5],g[6]);e=e[n](j.min.x,j.max.x),f=f[n](j.min.y,j.max.y),c=g[5],d=g[6]}}var k=y[m](0,e),l=y[m](0,f),o=x[m](0,e),p=x[m](0,f),q={x:k,y:l,x2:o,y2:p,width:o-k,height:p-l};b.bbox=bm(q);return q},bJ=function(b){var c=bm(b);c.toString=a._path2string;return c},bK=a._pathToRelative=function(b){var c=bz(b);if(c.rel)return bJ(c.rel);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=b[0][1],f=b[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=b.length;j<k;j++){var l=d[j]=[],m=b[j];if(m[0]!=v.call(m[0])){l[0]=v.call(m[0]);switch(l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;n<o;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}}else{l=d[j]=[],m[0]=="m"&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;p<q;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}d.toString=a._path2string,c.rel=bJ(d);return d},bL=a._pathToAbsolute=function(b){var c=bz(b);if(c.abs)return bJ(c.abs);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);if(!b||!b.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=+b[0][1],f=+b[0][2],g=e,h=f,i++,d[0]=["M",e,f]);var j=b.length==3&&b[0][0]=="M"&&b[1][0].toUpperCase()=="R"&&b[2][0].toUpperCase()=="Z";for(var k,l,m=i,o=b.length;m<o;m++){d.push(k=[]),l=b[m];if(l[0]!=S.call(l[0])){k[0]=S.call(l[0]);switch(k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":var p=[e,f][n](l.slice(1));for(var q=2,r=p.length;q<r;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[n](by(p,j));break;case"M":g=+l[1]+e,h=+l[2]+f;default:for(q=1,r=l.length;q<r;q++)k[q]=+l[q]+(q%2?e:f)}}else if(l[0]=="R")p=[e,f][n](l.slice(1)),d.pop(),d=d[n](by(p,j)),k=["R"][n](l.slice(-2));else for(var s=0,t=l.length;s<t;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=h;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],h=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}d.toString=a._path2string,c.abs=bJ(d);return d},bM=function(a,b,c,d){return[a,b,c,d,c,d]},bN=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},bO=function(a,b,c,d,e,f,g,h,i,j){var k=B*120/180,l=B/180*(+e||0),m=[],o,p=bv(function(a,b,c){var d=a*w.cos(c)-b*w.sin(c),e=a*w.sin(c)+b*w.cos(c);return{x:d,y:e}});if(!j){o=p(a,b,-l),a=o.x,b=o.y,o=p(h,i,-l),h=o.x,i=o.y;var q=w.cos(B/180*e),r=w.sin(B/180*e),t=(a-h)/2,u=(b-i)/2,v=t*t/(c*c)+u*u/(d*d);v>1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=a<C?B-E:E,F=h<C?B-F:F,E<0&&(E=B*2+E),F<0&&(F=B*2+F),g&&E>F&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bO(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](",");var V=[];for(var W=0,X=m.length;W<X;W++)V[W]=W%2?p(m[W-1],m[W],l).y:p(m[W],m[W+1],l).x;return V},bP=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:A(j,3)*a+A(j,2)*3*i*c+j*3*i*i*e+A(i,3)*g,y:A(j,3)*b+A(j,2)*3*i*d+j*3*i*i*f+A(i,3)*h}},bQ=bv(function(a,b,c,d,e,f,g,h){var i=e-2*c+a-(g-2*e+c),j=2*(c-a)-2*(e-c),k=a-c,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,o=[b,h],p=[a,g],q;z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bR=a._path2curve=bv(function(a,b){var c=!b&&bz(a);if(!b&&c.curve)return bJ(c.curve);var d=bL(a),e=b&&bL(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bO[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bN(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bN(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](bM(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](bM(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](bM(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](bM(b.x,b.y,b.X,b.Y))}return a},i=function(a,b){if(a[b].length>7){a[b].shift();var c=a[b];while(c.length)a.splice(b++,0,["C"][n](c.splice(0,6)));a.splice(b,1),l=x(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=x(d.length,e&&e.length||0))};for(var k=0,l=x(d.length,e&&e.length||0);k<l;k++){d[k]=h(d[k],f),i(d,k),e&&(e[k]=h(e[k],g)),e&&i(e,k),j(d,e,f,g,k),j(e,d,g,f,k);var o=d[k],p=e&&e[k],q=o.length,r=e&&p.length;f.x=o[q-2],f.y=o[q-1],f.bx=Q(o[q-4])||f.x,f.by=Q(o[q-3])||f.y,g.bx=e&&(Q(p[r-4])||g.x),g.by=e&&(Q(p[r-3])||g.y),g.x=e&&p[r-2],g.y=e&&p[r-1]}e||(c.curve=bJ(d));return e?[d,e]:d},null,bJ),bS=a._parseDots=bv(function(b){var c=[];for(var d=0,e=b.length;d<e;d++){var f={},g=b[d].match(/^([^:]*):?([\d\.]*)/);f.color=a.getRGB(g[1]);if(f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;d<e;d++)if(!c[d].offset){var h=Q(c[d-1].offset||0),i=0;for(var j=d+1;j<e;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=Q(i);var k=(i-h)/(j-d+1);for(;d<j;d++)h+=k,c[d].offset=h+"%"}return c}),bT=a._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)},bU=a._tofront=function(a,b){b.top!==a&&(bT(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},bV=a._toback=function(a,b){b.bottom!==a&&(bT(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},bW=a._insertafter=function(a,b,c){bT(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},bX=a._insertbefore=function(a,b,c){bT(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},bY=a.toMatrix=function(a,b){var c=bI(a),d={_:{transform:p},getBBox:function(){return c}};b$(d,b);return d.matrix},bZ=a.transformPath=function(a,b){return bj(a,bY(a,b))},b$=a._extractTransform=function(b,c){if(c==null)return b._.transform;c=r(c).replace(/\.{3}|\u2026/g,b._.transform||p);var d=a.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=b._,k=new cb;j.transform=d||[];if(d)for(var l=0,m=d.length;l<m;l++){var n=d[l],o=n.length,q=r(n[0]).toLowerCase(),s=n[0]!=q,t=s?k.invert():0,u,v,w,x,y;q=="t"&&o==3?s?(u=t.x(0,0),v=t.y(0,0),w=t.x(n[1],n[2]),x=t.y(n[1],n[2]),k.translate(w-u,x-v)):k.translate(n[1],n[2]):q=="r"?o==2?(y=y||b.getBBox(1),k.rotate(n[1],y.x+y.width/2,y.y+y.height/2),e+=n[1]):o==4&&(s?(w=t.x(n[2],n[3]),x=t.y(n[2],n[3]),k.rotate(n[1],w,x)):k.rotate(n[1],n[2],n[3]),e+=n[1]):q=="s"?o==2||o==3?(y=y||b.getBBox(1),k.scale(n[1],n[o-1],y.x+y.width/2,y.y+y.height/2),h*=n[1],i*=n[o-1]):o==5&&(s?(w=t.x(n[3],n[4]),x=t.y(n[3],n[4]),k.scale(n[1],n[2],w,x)):k.scale(n[1],n[2],n[3],n[4]),h*=n[1],i*=n[2]):q=="m"&&o==7&&k.add(n[1],n[2],n[3],n[4],n[5],n[6]),j.dirtyT=1,b.matrix=k}b.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,h==1&&i==1&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1},b_=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return a.length==4?[b,0,a[2],a[3]]:[b,0];case"s":return a.length==5?[b,1,1,a[3],a[4]]:a.length==3?[b,1,1]:[b,1]}},ca=a._equaliseTransform=function(b,c){c=r(c).replace(/\.{3}|\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];var d=x(b.length,c.length),e=[],f=[],g=0,h,i,j,k;for(;g<d;g++){j=b[g]||b_(c[g]),k=c[g]||b_(j);if(j[0]!=k[0]||j[0].toLowerCase()=="r"&&(j[2]!=k[2]||j[3]!=k[3])||j[0].toLowerCase()=="s"&&(j[3]!=k[3]||j[4]!=k[4]))return;e[g]=[],f[g]=[];for(h=0,i=x(j.length,k.length);h<i;h++)h in j&&(e[g][h]=j[h]),h in k&&(f[g][h]=k[h])}return{from:e,to:f}};a._getContainer=function(b,c,d,e){var f;f=e==null&&!a.is(b,"object")?h.doc.getElementById(b):b;if(f!=null){if(f.tagName)return c==null?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d};return{container:1,x:b,y:c,width:d,height:e}}},a.pathToRelative=bK,a._engine={},a.path2curve=bR,a.matrix=function(a,b,c,d,e,f){return new cb(a,b,c,d,e,f)},function(b){function d(a){var b=w.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}function c(a){return a[0]*a[0]+a[1]*a[1]}b.add=function(a,b,c,d,e,f){var g=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],i=[[a,c,e],[b,d,f],[0,0,1]],j,k,l,m;a&&a instanceof cb&&(i=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(j=0;j<3;j++)for(k=0;k<3;k++){m=0;for(l=0;l<3;l++)m+=h[j][l]*i[l][k];g[j][k]=m}this.a=g[0][0],this.b=g[1][0],this.c=g[0][1],this.d=g[1][1],this.e=g[0][2],this.f=g[1][2]},b.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new cb(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},b.clone=function(){return new cb(this.a,this.b,this.c,this.d,this.e,this.f)},b.translate=function(a,b){this.add(1,0,0,1,a,b)},b.scale=function(a,b,c,d){b==null&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},b.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var e=+w.cos(b).toFixed(9),f=+w.sin(b).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},b.x=function(a,b){return a*this.a+b*this.c+this.e},b.y=function(a,b){return a*this.b+b*this.d+this.f},b.get=function(a){return+this[r.fromCharCode(97+a)].toFixed(4)},b.toString=function(){return a.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},b.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},b.split=function(){var b={};b.dx=this.e,b.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];b.scalex=w.sqrt(c(e[0])),d(e[0]),b.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*b.shear,e[1][1]-e[0][1]*b.shear],b.scaley=w.sqrt(c(e[1])),d(e[1]),b.shear/=b.scaley;var f=-e[0][1],g=e[1][1];g<0?(b.rotate=a.deg(w.acos(g)),f<0&&(b.rotate=360-b.rotate)):b.rotate=a.deg(w.asin(f)),b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b},b.toTransformString=function(a){var b=a||this[s]();if(b.isSimple){b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4);return(b.dx||b.dy?"t"+[b.dx,b.dy]:p)+(b.scalex!=1||b.scaley!=1?"s"+[b.scalex,b.scaley,0,0]:p)+(b.rotate?"r"+[b.rotate,0,0]:p)}return"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(cb.prototype);var cc=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);navigator.vendor=="Apple Computer, Inc."&&(cc&&cc[1]<4||navigator.platform.slice(0,2)=="iP")||navigator.vendor=="Google Inc."&&cc&&cc[1]<8?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:k.safari=be;var cd=function(){this.returnValue=!1},ce=function(){return this.originalEvent.preventDefault()},cf=function(){this.cancelBubble=!0},cg=function(){return this.originalEvent.stopPropagation()},ch=function(){if(h.doc.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,f=function(e){var f=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,i=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,j=e.clientX+i,k=e.clientY+f;if(o&&u[g](b))for(var l=0,m=e.targetTouches&&e.targetTouches.length;l<m;l++)if(e.targetTouches[l].target==a){var n=e;e=e.targetTouches[l],e.originalEvent=n,e.preventDefault=ce,e.stopPropagation=cg;break}return c.call(d,e,j,k)};a.addEventListener(e,f,!1);return function(){a.removeEventListener(e,f,!1);return!0}};if(h.doc.attachEvent)return function(a,b,c,d){var e=function(a){a=a||h.win.event;var b=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;a.preventDefault=a.preventDefault||cd,a.stopPropagation=a.stopPropagation||cf;return c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){a.detachEvent("on"+b,e);return!0};return f}}(),ci=[],cj=function(a){var b=a.clientX,c=a.clientY,d=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f,g=ci.length;while(g--){f=ci[g];if(o){var i=a.touches.length,j;while(i--){j=a.touches[i];if(j.identifier==f.el._drag.id){b=j.clientX,c=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}}else a.preventDefault();var k=f.el.node,l,m=k.nextSibling,n=k.parentNode,p=k.style.display;h.win.opera&&n.removeChild(k),k.style.display="none",l=f.el.paper.getElementByPoint(b,c),k.style.display=p,h.win.opera&&(m?n.insertBefore(k,m):n.appendChild(k)),l&&eve("raphael.drag.over."+f.el.id,f.el,l),b+=e,c+=d,eve("raphael.drag.move."+f.el.id,f.move_scope||f.el,b-f.el._drag.x,c-f.el._drag.y,b,c,a)}},ck=function(b){a.unmousemove(cj).unmouseup(ck);var c=ci.length,d;while(c--)d=ci[c],d.el._drag={},eve("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,b);ci=[]},cl=a.el={};for(var cm=t.length;cm--;)(function(b){a[b]=cl[b]=function(c,d){a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:ch(this.shape||this.node||h.doc,b,c,d||this)}));return this},a["un"+b]=cl["un"+b]=function(a){var c=this.events||[],d=c.length;while(d--)if(c[d].name==b&&c[d].f==a){c[d].unbind(),c.splice(d,1),!c.length&&delete this.events;return this}return this}})(t[cm]);cl.data=function(b,c){var d=bb[this.id]=bb[this.id]||{};if(arguments.length==1){if(a.is(b,"object")){for(var e in b)b[g](e)&&this.data(e,b[e]);return this}eve("raphael.data.get."+this.id,this,d[b],b);return d[b]}d[b]=c,eve("raphael.data.set."+this.id,this,c,b);return this},cl.removeData=function(a){a==null?bb[this.id]={}:bb[this.id]&&delete bb[this.id][a];return this},cl.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},cl.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var cn=[];cl.drag=function(b,c,d,e,f,g){function i(i){(i.originalEvent||i).preventDefault();var j=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,k=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft;this._drag.x=i.clientX+k,this._drag.y=i.clientY+j,this._drag.id=i.identifier,!ci.length&&a.mousemove(cj).mouseup(ck),ci.push({el:this,move_scope:e,start_scope:f,end_scope:g}),c&&eve.on("raphael.drag.start."+this.id,c),b&&eve.on("raphael.drag.move."+this.id,b),d&&eve.on("raphael.drag.end."+this.id,d),eve("raphael.drag.start."+this.id,f||e||this,i.clientX+k,i.clientY+j,i)}this._drag={},cn.push({el:this,start:i}),this.mousedown(i);return this},cl.onDragOver=function(a){a?eve.on("raphael.drag.over."+this.id,a):eve.unbind("raphael.drag.over."+this.id)},cl.undrag=function(){var b=cn.length;while(b--)cn[b].el==this&&(this.unmousedown(cn[b].start),cn.splice(b,1),eve.unbind("raphael.drag.*."+this.id));!cn.length&&a.unmousemove(cj).unmouseup(ck)},k.circle=function(b,c,d){var e=a._engine.circle(this,b||0,c||0,d||0);this.__set__&&this.__set__.push(e);return e},k.rect=function(b,c,d,e,f){var g=a._engine.rect(this,b||0,c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.ellipse=function(b,c,d,e){var f=a._engine.ellipse(this,b||0,c||0,d||0,e||0);this.__set__&&this.__set__.push(f);return f},k.path=function(b){b&&!a.is(b,D)&&!a.is(b[0],E)&&(b+=p);var c=a._engine.path(a.format[m](a,arguments),this);this.__set__&&this.__set__.push(c);return c},k.image=function(b,c,d,e,f){var g=a._engine.image(this,b||"about:blank",c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.text=function(b,c,d){var e=a._engine.text(this,b||0,c||0,r(d));this.__set__&&this.__set__.push(e);return e},k.set=function(b){!a.is(b,"array")&&(b=Array.prototype.splice.call(arguments,0,arguments.length));var c=new cG(b);this.__set__&&this.__set__.push(c);return c},k.setStart=function(a){this.__set__=a||this.set()},k.setFinish=function(a){var b=this.__set__;delete this.__set__;return b},k.setSize=function(b,c){return a._engine.setSize.call(this,b,c)},k.setViewBox=function(b,c,d,e,f){return a._engine.setViewBox.call(this,b,c,d,e,f)},k.top=k.bottom=null,k.raphael=a;var co=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,i=b.top+(h.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(h.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:i,x:j}};k.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=h.doc.elementFromPoint(a,b);if(h.win.opera&&e.tagName=="svg"){var f=co(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var i=d.getIntersectionList(g,null);i.length&&(e=i[i.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},k.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},k.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},k.getElementsByPoint=function(a,b){var c=this.set();this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)});return c},cl.isPointInside=function(b,c){var d=this.realPath=this.realPath||bi[this.type](this);return a.isPointInsidePath(d,b,c)},cl.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bi[this.type](this),b.bboxwt=bI(this.realPath),b.bboxwt.toString=cq,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bi[this.type](this);b.bbox=bI(bj(this.realPath,this.matrix)),b.bbox.toString=cq,b.dirty=b.dirtyT=0}return b.bbox},cl.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a},cl.glow=function(a){if(this.type=="text")return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bi[this.type](this);f=this.matrix?bj(f,this.matrix):f;for(var g=1;g<c+1;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cr={},cs=function(b,c,d,e,f,g,h,i,j){return j==null?bB(b,c,d,e,f,g,h,i):a.findDotsAtSegment(b,c,d,e,f,g,h,i,bC(b,c,d,e,f,g,h,i,j))},ct=function(b,c){return function(d,e,f){d=bR(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;o<p;o++){i=d[o];if(i[0]=="M")g=+i[1],h=+i[2];else{j=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6]);if(n+j>e){if(c&&!l.start){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cu=ct(1),cv=ct(),cw=ct(0,1);a.getTotalLength=cu,a.getPointAtLength=cv,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cw(a,b).end;var d=cw(a,c,1);return b?cw(d,b).end:d},cl.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cu(this.attrs.path)}},cl.getPointAtLength=function(a){if(this.type=="path")return cv(this.attrs.path,a)},cl.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cx=a.easing_formulas={linear:function(a){return a},"<":function(a){return A(a,1.7)},">":function(a){return A(a,.48)},"<>":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cx.easeIn=cx["ease-in"]=cx["<"],cx.easeOut=cx["ease-out"]=cx[">"],cx.easeInOut=cx["ease-in-out"]=cx["<>"],cx["back-in"]=cx.backIn,cx["back-out"]=cx.backOut;var cy=[],cz=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cA=function(){var b=+(new Date),c=0;for(;c<cy.length;c++){var d=cy[c];if(d.el.removed||d.paused)continue;var e=b-d.start,f=d.ms,h=d.easing,i=d.from,j=d.diff,k=d.to,l=d.t,m=d.el,o={},p,r={},s;d.initstatus?(e=(d.initstatus*d.anim.top-d.prev)/(d.percent-d.prev)*f,d.status=d.initstatus,delete d.initstatus,d.stop&&cy.splice(c--,1)):d.status=(d.prev+(d.percent-d.prev)*(e/f))/d.anim.top;if(e<0)continue;if(e<f){var t=h(e/f);for(var u in i)if(i[g](u)){switch(U[u]){case C:p=+i[u]+t*f*j[u];break;case"colour":p="rgb("+[cB(O(i[u].r+t*f*j[u].r)),cB(O(i[u].g+t*f*j[u].g)),cB(O(i[u].b+t*f*j[u].b))].join(",")+")";break;case"path":p=[];for(var v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(var x=1,y=i[u][v].length;x<y;x++)p[v][x]=+i[u][v][x]+t*f*j[u][v][x];p[v]=p[v].join(q)}p=p.join(q);break;case"transform":if(j[u].real){p=[];for(v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(x=1,y=i[u][v].length;x<y;x++)p[v][x]=i[u][v][x]+t*f*j[u][v][x]}}else{var z=function(a){return+i[u][a]+t*f*j[u][a]};p=[["m",z(0),z(1),z(2),z(3),z(4),z(5)]]}break;case"csv":if(u=="clip-rect"){p=[],v=4;while(v--)p[v]=+i[u][v]+t*f*j[u][v]}break;default:var A=[][n](i[u]);p=[],v=m.paper.customAttributes[u].length;while(v--)p[v]=+A[v]+t*f*j[u][v]}o[u]=p}m.attr(o),function(a,b,c){setTimeout(function(){eve("raphael.anim.frame."+a,b,c)})}(m.id,m,d.anim)}else{(function(b,c,d){setTimeout(function(){eve("raphael.anim.frame."+c.id,c,d),eve("raphael.anim.finish."+c.id,c,d),a.is(b,"function")&&b.call(c)})})(d.callback,m,d.anim),m.attr(k),cy.splice(c--,1);if(d.repeat>1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cE(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cE(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cy.length&&cz(cA)},cB=function(a){return a>255?255:a<0?0:a};cl.animateWith=function(b,c,d,e,f,g){var h=this;if(h.removed){g&&g.call(h);return h}var i=d instanceof cD?d:a.animation(d,e,f,g),j,k;cE(i,h,i.percents[0],null,h.attr());for(var l=0,m=cy.length;l<m;l++)if(cy[l].anim==c&&cy[l].el==b){cy[m-1].start=cy[l].start;break}return h},cl.onAnimation=function(a){a?eve.on("raphael.anim.frame."+this.id,a):eve.unbind("raphael.anim.frame."+this.id);return this},cD.prototype.delay=function(a){var b=new cD(this.anim,this.ms);b.times=this.times,b.del=+a||0;return b},cD.prototype.repeat=function(a){var b=new cD(this.anim,this.ms);b.del=this.del,b.times=w.floor(x(a,0))||1;return b},a.animation=function(b,c,d,e){if(b instanceof cD)return b;if(a.is(d,"function")||!d)e=e||d||null,d=null;b=Object(b),c=+c||0;var f={},h,i;for(i in b)b[g](i)&&Q(i)!=i&&Q(i)+"%"!=i&&(h=!0,f[i]=b[i]);if(!h)return new cD(b,c);d&&(f.easing=d),e&&(f.callback=e);return new cD({100:f},c)},cl.animate=function(b,c,d,e){var f=this;if(f.removed){e&&e.call(f);return f}var g=b instanceof cD?b:a.animation(b,c,d,e);cE(g,f,g.percents[0],null,f.attr());return f},cl.setTime=function(a,b){a&&b!=null&&this.status(a,y(b,a.ms)/a.ms);return this},cl.status=function(a,b){var c=[],d=0,e,f;if(b!=null){cE(a,this,-1,y(b,1));return this}e=cy.length;for(;d<e;d++){f=cy[d];if(f.el.id==this.id&&(!a||f.anim==a)){if(a)return f.status;c.push({anim:f.anim,status:f.status})}}if(a)return 0;return c},cl.pause=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.pause."+this.id,this,cy[b].anim)!==!1&&(cy[b].paused=!0);return this},cl.resume=function(a){for(var b=0;b<cy.length;b++)if(cy[b].el.id==this.id&&(!a||cy[b].anim==a)){var c=cy[b];eve("raphael.anim.resume."+this.id,this,c.anim)!==!1&&(delete c.paused,this.status(c.anim,c.status))}return this},cl.stop=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.stop."+this.id,this,cy[b].anim)!==!1&&cy.splice(b--,1);return this},eve.on("raphael.remove",cF),eve.on("raphael.clear",cF),cl.toString=function(){return"Raphaël’s object"};var cG=function(a){this.items=[],this.length=0,this.type="set";if(a)for(var b=0,c=a.length;b<c;b++)a[b]&&(a[b].constructor==cl.constructor||a[b].constructor==cG)&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},cH=cG.prototype;cH.push=function(){var a,b;for(var c=0,d=arguments.length;c<d;c++)a=arguments[c],a&&(a.constructor==cl.constructor||a.constructor==cG)&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},cH.pop=function(){this.length&&delete this[this.length--];return this.items.pop()},cH.forEach=function(a,b){for(var c=0,d=this.items.length;c<d;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var cI in cl)cl[g](cI)&&(cH[cI]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][m](c,b)})}}(cI));cH.attr=function(b,c){if(b&&a.is(b,E)&&a.is(b[0],"object"))for(var d=0,e=b.length;d<e;d++)this.items[d].attr(b[d]);else for(var f=0,g=this.items.length;f<g;f++)this.items[f].attr(b,c);return this},cH.clear=function(){while(this.length)this.pop()},cH.splice=function(a,b,c){a=a<0?x(this.length+a,0):a,b=x(0,y(this.length-a,b));var d=[],e=[],f=[],g;for(g=2;g<arguments.length;g++)f.push(arguments[g]);for(g=0;g<b;g++)e.push(this[a+g]);for(;g<this.length-a;g++)d.push(this[a+g]);var h=f.length;for(g=0;g<h+d.length;g++)this.items[a+g]=this[a+g]=g<h?f[g]:d[g-h];g=this.items.length=this.length-=b-h;while(this[g])delete this[g++];return new cG(e)},cH.exclude=function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]==a){this.splice(b,1);return!0}},cH.animate=function(b,c,d,e){(a.is(d,"function")||!d)&&(e=d||null);var f=this.items.length,g=f,h,i=this,j;if(!f)return this;e&&(j=function(){!--f&&e.call(i)}),d=a.is(d,D)?d:j;var k=a.animation(b,c,d,j);h=this.items[--g].animate(k);while(g--)this.items[g]&&!this.items[g].removed&&this.items[g].animateWith(h,k,k);return this},cH.insertAfter=function(a){var b=this.items.length;while(b--)this.items[b].insertAfter(a);return this},cH.getBBox=function(){var a=[],b=[],c=[],d=[];for(var e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}a=y[m](0,a),b=y[m](0,b),c=x[m](0,c),d=x[m](0,d);return{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},cH.clone=function(a){a=new cG;for(var b=0,c=this.items.length;b<c;b++)a.push(this.items[b].clone());return a},cH.toString=function(){return"Raphaël‘s set"},a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[g](d)&&(b.face[d]=a.face[d]);this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b];if(!a.svg){b.face["units-per-em"]=R(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[g](e)){var f=a.glyphs[e];b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"};if(f.k)for(var h in f.k)f[g](h)&&(b.glyphs[e].k[h]=f.k[h])}}return a},k.getFont=function(b,c,d,e){e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;if(!!a.fonts){var f=a.fonts[b];if(!f){var h=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,p)+"(\\s|$)","i");for(var i in a.fonts)if(a.fonts[g](i)&&h.test(i)){f=a.fonts[i];break}}var j;if(f)for(var k=0,l=f.length;k<l;k++){j=f[k];if(j.face["font-weight"]==c&&(j.face["font-style"]==d||!j.face["font-style"])&&j.face["font-stretch"]==e)break}return j}},k.print=function(b,d,e,f,g,h,i){h=h||"middle",i=x(y(i||0,1),-1);var j=r(e)[s](p),k=0,l=0,m=p,n;a.is(f,e)&&(f=this.getFont(f));if(f){n=(g||16)/f.face["units-per-em"];var o=f.face.bbox[s](c),q=+o[0],t=o[3]-o[1],u=0,v=+o[1]+(h=="baseline"?t+ +f.face.descent:t/2);for(var w=0,z=j.length;w<z;w++){if(j[w]=="\n")k=0,B=0,l=0,u+=t;else{var A=l&&f.glyphs[j[w-1]]||{},B=f.glyphs[j[w]];k+=l?(A.w||f.w)+(A.k&&A.k[j[w]]||0)+f.w*i:0,l=1}B&&B.d&&(m+=a.transformPath(B.d,["t",k*n,u*n,"s",n,n,q,v,"t",(b-q)/n,(d-v)/n]))}}return this.path(m).attr({fill:"#000",stroke:"none"})},k.add=function(b){if(a.is(b,"array")){var c=this.set(),e=0,f=b.length,h;for(;e<f;e++)h=b[e]||{},d[g](h.type)&&c.push(this[h.type]().attr(h))}return c},a.format=function(b,c){var d=a.is(c,E)?[0][n](c):arguments;b&&a.is(b,D)&&d.length-1&&(b=b.replace(e,function(a,b){return d[++b]==null?p:d[b]}));return b||p},a.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),typeof e=="function"&&f&&(e=e()))}),e=(e==null||e==d?a:e)+"";return e};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),a.ninja=function(){i.was?h.win.Raphael=i.is:delete Raphael;return a},a.st=cH,function(b,c,d){function e(){/in/.test(b.readyState)?setTimeout(e,9):a.eve("raphael.DOMload")}b.readyState==null&&b.addEventListener&&(b.addEventListener(c,d=function(){b.removeEventListener(c,d,!1),b.readyState="complete"},!1),b.readyState="loading"),e()}(document,"DOMContentLoaded"),i.was?h.win.Raphael=a:Raphael=a,eve.on("raphael.DOMload",function(){b=!0})}(),window.Raphael.svg&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){typeof d=="string"&&(d=q(d));for(var f in e)e[b](f)&&(f.substring(0,6)=="xlink:"?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){e=c(e).replace(a._radial_gradient,function(a,b,c){j="radial";if(b&&c){m=d(b),n=d(c);var e=(n>.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/);if(j=="linear"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient);if(!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,j=="radial"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x<y;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}q(o,{fill:"url(#"+k+")",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1;return 1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if(d.type=="path"){var g=c(e).toLowerCase().split("-"),h=d.paper,i=f?"end":"start",j=d.node,k=d.attrs,m=k["stroke-width"],n=g.length,r="classic",s,t,u,v,w,x=3,y=3,z=5;while(n--)switch(g[n]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":r=g[n];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}r=="open"?(x+=2,y+=2,z+=2,u=1,v=f?4:1,w={fill:"none",stroke:k.stroke}):(v=u=x/2,w={fill:k.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={};if(r!="none"){var A="raphael-marker-"+r,B="raphael-marker-"+i+r+x+y;a._g.doc.getElementById(A)?p[A]++:(h.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[r],id:A})),p[A]=1);var C=a._g.doc.getElementById(B),D;C?(p[B]++,D=C.getElementsByTagName("use")[0]):(C=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:v,refY:y/2}),D=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),C.appendChild(D),h.defs.appendChild(C),p[B]=1),q(D,w);var F=u*(r!="diamond"&&r!="oval");f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-F*m):(s=F*m,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),w={},w["marker-"+i]="url(#"+B+")";if(t||s)w.d=Raphael.getSubpath(k.path,s,t);q(j,w),d._.arrows[i+"Path"]=A,d._.arrows[i+"Marker"]=B,d._.arrows[i+"dx"]=F,d._.arrows[i+"Type"]=r,d._.arrows[i+"String"]=e}else f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-s):(s=0,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),d._.arrows[i+"Path"]&&q(j,{d:Raphael.getSubpath(k.path,s,t)}),delete d._.arrows[i+"Path"],delete d._.arrows[i+"Marker"],delete d._.arrows[i+"dx"],delete d._.arrows[i+"Type"],delete d._.arrows[i+"String"];for(w in p)if(p[b](w)&&!p[w]){var G=a._g.doc.getElementById(w);G&&G.parentNode.removeChild(G)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){b=u[c(b).toLowerCase()];if(b){var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;while(h--)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];k[o]=p;switch(o){case"blur":d.blur(p);break;case"href":case"title":case"target":var u=i.parentNode;if(u.tagName.toLowerCase()!="a"){var w=q("a");u.insertBefore(w,i),w.appendChild(i),u=w}o=="target"?u.setAttributeNS(n,"show",p=="blank"?"new":p):u.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var x=c(p).split(j);if(x.length==4){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var z=q("clipPath"),A=q("rect");z.id=a.createUUID(),q(A,{x:x[0],y:x[1],width:x[2],height:x[3]}),z.appendChild(A),d.paper.defs.appendChild(z),q(i,{"clip-path":"url(#"+z.id+")"}),d.clip=A}if(!p){var B=i.getAttribute("clip-path");if(B){var C=a._g.doc.getElementById(B.replace(/(^url\(#|\)$)/g,l));C&&C.parentNode.removeChild(C),q(i,{"clip-path":l}),delete d.clip}}break;case"path":d.type=="path"&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":i.setAttribute(o,p),d._.dirty=1;if(k.fx)o="x",p=k.x;else break;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if(o=="rx"&&d.type=="rect")break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":i.setAttribute(o,p),d._.dirty=1;if(k.fy)o="y",p=k.y;else break;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if(o=="ry"&&d.type=="rect")break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":d.type=="rect"?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":d.type=="image"&&i.setAttributeNS(n,"href",p);break;case"stroke-width":if(d._.sx!=1||d._.sy!=1)p/=g(h(d._.sx),h(d._.sy))||1;d.paper._vbSize&&(p*=d.paper._vbSize),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var D=c(p).match(a._ISURL);if(D){z=q("pattern");var F=q("image");z.id=a.createUUID(),q(z,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(F,{x:0,y:0,"xlink:href":D[1]}),z.appendChild(F),function(b){a._preload(D[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(F,{width:a,height:c}),d.paper.safari()})}(z),d.paper.defs.appendChild(z),q(i,{fill:"url(#"+z.id+")"}),d.pattern=z,d.pattern&&s(d);break}var G=a.getRGB(p);if(!G.error)delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});else if((d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(H){var I=H.getElementsByTagName("stop");q(I[I.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}G[b]("opacity")&&q(i,{"fill-opacity":G.opacity>1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(p),i.setAttribute(o,G.hex),o=="stroke"&&G[b]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),o=="stroke"&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":(d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break};default:o=="font-size"&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if(d.type=="text"&&!!(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split("\n"),k=[],m;for(var n=0,o=j.length;n<o;n++)m=q("tspan"),n&&q(m,{dy:i*x,x:g.x}),m.appendChild(a._g.doc.createTextNode(j[n])),h.appendChild(m),k[n]=m}else{k=h.getElementsByTagName("tspan");for(n=0,o=k.length;n<o;n++)n?q(k[n],{dy:i*x,x:g.x}):q(k[0],{dy:0})}q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(k[0],{dy:r})}},z=function(b,c){var d=0,e=0;this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},A=a.el;z.prototype=A,A.constructor=z,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new z(c,b);d.type="path",w(d,{fill:"none",stroke:"#000",path:a});return d},A.rotate=function(a,b,e){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this.transform(this._.transform.concat([["r",a,b,e]]));return this},A.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]]));return this},A.translate=function(a,b){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]]));return this},A.transform=function(c){var d=this._;if(c==null)return d.transform;a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix});if(d.sx!=1||d.sy!=1){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},A.hide=function(){!this.removed&&this.paper.safari(this.node.style.display="none");return this},A.show=function(){!this.removed&&this.paper.safari(this.node.style.display="");return this},A.remove=function(){if(!this.removed&&!!this.node.parentNode){var b=this.paper;b.__set__&&b.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&b.defs.removeChild(this.gradient),a._tear(this,b),this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.removeChild(this.node.parentNode):this.node.parentNode.removeChild(this.node);for(var c in this)this[c]=typeof this[c]=="function"?a._removedFactory(c):null;this.removed=!0}},A._getBBox=function(){if(this.node.style.display=="none"){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}a&&this.hide();return b},A.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;if(c=="transform")return this._.transform;var g=c.split(j),h={};for(var i=0,l=g.length;i<l;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(d==null&&a.is(c,"array")){h={};for(i=0,l=c.length;i<l;i++)h[c[i]]=this.attr(c[i]);return h}if(d!=null){var m={};m[c]=d}else c!=null&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}w(this,m);return this},A.toFront=function(){if(this.removed)return this;this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.appendChild(this.node.parentNode):this.node.parentNode.appendChild(this.node);var b=this.paper;b.top!=this&&a._tofront(this,b);return this},A.toBack=function(){if(this.removed)return this;var b=this.node.parentNode;b.tagName.toLowerCase()=="a"?b.parentNode.insertBefore(this.node.parentNode,this.node.parentNode.parentNode.firstChild):b.firstChild!=this.node&&b.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper);var c=this.paper;return this},A.insertAfter=function(b){if(this.removed)return this;var c=b.node||b[b.length-1].node;c.nextSibling?c.parentNode.insertBefore(this.node,c.nextSibling):c.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},A.insertBefore=function(b){if(this.removed)return this;var c=b.node||b[0].node;c.parentNode.insertBefore(this.node,c),a._insertbefore(this,b,this.paper);return this},A.blur=function(b){var c=this;if(+b!==0){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter")},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new z(e,a);f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs);return f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs);return h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new z(f,a);g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs);return g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image";return h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new z(f,b);g.attrs={x:c,y:d,"text-anchor":"middle",text:e,font:a._availableAttrs.font,stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs);return g},a._engine.setSize=function(a,b){this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox);return this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h=q("svg"),i="overflow:hidden;",j;d=d||0,e=e||0,f=f||512,g=g||342,q(h,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg"}),c==1?(h.style.cssText=i+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(h),j=1):(h.style.cssText=i+"position:relative",c.firstChild?c.insertBefore(h,c.firstChild):c.appendChild(h)),c=new a._Paper,c.width=f,c.height=g,c.canvas=h,c.clear(),c._left=c._top=0,j&&(c.renderfix=function(){}),c.renderfix();return c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f=g(c/this.width,d/this.height),h=this.top,i=e?"meet":"xMinYMin",j,l;a==null?(this._vbSize&&(f=1),delete this._vbSize,j="0 0 "+this.width+m+this.height):(this._vbSize=f,j=a+m+b+m+c+m+d),q(this.canvas,{viewBox:j,preserveAspectRatio:i});while(f&&h)l="stroke-width"in h.attrs?h.attrs["stroke-width"]:1,h.attr({"stroke-width":l}),h._.dirty=1,h._.dirtyT=1,h=h.prev;this._viewBox=[a,b,c,d,!!e];return this},a.prototype.renderfix=function(){var a=this.canvas,b=a.style,c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(d){c=a.createSVGMatrix()}var e=-c.e%1,f=-c.f%1;if(e||f)e&&(this._left=(this._left+e)%1,b.left=this._left+"px"),f&&(this._top=(this._top+f)%1,b.top=this._top+"px")},a.prototype.clear=function(){a.eve("raphael.clear",this);var b=this.canvas;while(b.firstChild)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null};var B=a.st;for(var C in A)A[b](C)&&!B[b](C)&&(B[C]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(C))}(window.Raphael),window.Raphael.vml&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/ig,e=a._pathToAbsolute;c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g;if(e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e=b.toLowerCase()=="m",g=p[b];c.replace(s,function(a){e&&d.length==2&&(g+=d+p[b=="m"?"l":"L"],d=[]),d.push(f(a*u))});return g+d});return g}var h=e(b),i,j;g=[];for(var k=0,l=h.length;k<l;k++){i=h[k],j=h[k][0].toLowerCase(),j=="z"&&(j="x");for(var m=1,r=i.length;m<r;m++)j+=f(i[m]*u)+(m!=r-1?",":o);g.push(j)}return g.join(n)},y=function(b,c,d){var e=a.matrix();e.rotate(-b,.5,.5);return{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q,r=u/b,s=u/c;m.visibility="hidden";if(!!b&&!!c){l.coordsize=i(r)+n+i(s),m.rotation=f*(b*c<0?-1:1);if(f){var t=y(f,d,e);d=t.dx,e=t.dy}b<0&&(p+="x"),c<0&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-r+n+e*-s;if(k||g.fillsize){var v=l.getElementsByTagName(j);v=v&&v[0],l.removeChild(v),k&&(t=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),v.position=t.dx*o+n+t.dy*o),g.fillsize&&(v.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(v)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";while(g--)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q,r=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),s=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),t=e;for(var y in i)i[b](y)&&(m[y]=i[y]);r&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur);if(i.path&&e.type=="path"||r)l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e.type=="image"&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0));"transform"in i&&e.transform(i.transform);if(s){var B=+m.cx,D=+m.cy,E=+m.rx||+m.r||0,G=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((B-E)*u),f((D-G)*u),f((B+E)*u),f((D+G)*u),f(B*u))}if("clip-rect"in i){var H=c(i["clip-rect"]).split(k);if(H.length==4){H[2]=+H[2]+ +H[0],H[3]=+H[3]+ +H[1];var I=l.clipRect||a._g.doc.createElement("div"),J=I.style;J.clip=a.format("rect({1}px {2}px {3}px {0}px)",H),l.clipRect||(J.position="absolute",J.top=0,J.left=0,J.width=e.paper.width+"px",J.height=e.paper.height+"px",l.parentNode.insertBefore(I,l),I.appendChild(l),l.clipRect=I)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var K=e.textpath.style;i.font&&(K.font=i.font),i["font-family"]&&(K.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(K.fontSize=i["font-size"]),i["font-weight"]&&(K.fontWeight=i["font-weight"]),i["font-style"]&&(K.fontStyle=i["font-style"])}"arrow-start"in i&&A(t,i["arrow-start"]),"arrow-end"in i&&A(t,i["arrow-end"],1);if(i.opacity!=null||i["stroke-width"]!=null||i.fill!=null||i.src!=null||i.stroke!=null||i["stroke-width"]!=null||i["stroke-opacity"]!=null||i["fill-opacity"]!=null||i["stroke-dasharray"]!=null||i["stroke-miterlimit"]!=null||i["stroke-linejoin"]!=null||i["stroke-linecap"]!=null){var L=l.getElementsByTagName(j),M=!1;L=L&&L[0],!L&&(M=L=F(j)),e.type=="image"&&i.src&&(L.src=i.src),i.fill&&(L.on=!0);if(L.on==null||i.fill=="none"||i.fill===null)L.on=!1;if(L.on&&i.fill){var N=c(i.fill).match(a._ISURL);if(N){L.parentNode==l&&l.removeChild(L),L.rotate=!0,L.src=N[1],L.type="tile";var O=e.getBBox(1);L.position=O.x+n+O.y,e._.fillpos=[O.x,O.y],a._preload(N[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else L.color=a.getRGB(i.fill).hex,L.src=o,L.type="solid",a.getRGB(i.fill).error&&(t.type in{circle:1,ellipse:1}||c(i.fill).charAt()!="r")&&C(t,i.fill,L)&&(m.fill="none",m.gradient=i.fill,L.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var P=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);P=h(g(P,0),1),L.opacity=P,L.src&&(L.color="none")}l.appendChild(L);var Q=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],T=!1;!Q&&(T=Q=F("stroke"));if(i.stroke&&i.stroke!="none"||i["stroke-width"]||i["stroke-opacity"]!=null||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])Q.on=!0;(i.stroke=="none"||i.stroke===null||Q.on==null||i.stroke==0||i["stroke-width"]==0)&&(Q.on=!1);var U=a.getRGB(i.stroke);Q.on&&i.stroke&&(Q.color=U.hex),P=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+U.o+1||2)-1);var V=(d(i["stroke-width"])||1)*.75;P=h(g(P,0),1),i["stroke-width"]==null&&(V=m["stroke-width"]),i["stroke-width"]&&(Q.weight=V),V&&V<1&&(P*=V)&&(Q.weight=1),Q.opacity=P,i["stroke-linejoin"]&&(Q.joinstyle=i["stroke-linejoin"]||"miter"),Q.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(Q.endcap=i["stroke-linecap"]=="butt"?"flat":i["stroke-linecap"]=="square"?"square":"round");if(i["stroke-dasharray"]){var W={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};Q.dashstyle=W[b](i["stroke-dasharray"])?W[i["stroke-dasharray"]]:o}T&&l.appendChild(Q)}if(t.type=="text"){t.paper.canvas.style.display=o;var X=t.paper.span,Y=100,Z=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=X.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),Z=d(m["font-size"]||Z&&Z[0])||10,p.fontSize=Z*Y+"px",t.textpath.string&&(X.innerHTML=c(t.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var $=X.getBoundingClientRect();t.W=m.w=($.right-$.left)/Y,t.H=m.h=($.bottom-$.top)/Y,t.X=m.x,t.Y=m.y+t.H/2,("x"in i||"y"in i)&&(t.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));var _=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var ba=0,bb=_.length;ba<bb;ba++)if(_[ba]in i){t._.dirty=1;break}switch(m["text-anchor"]){case"start":t.textpath.style["v-text-align"]="left",t.bbx=t.W/2;break;case"end":t.textpath.style["v-text-align"]="right",t.bbx=-t.W/2;break;default:t.textpath.style["v-text-align"]="center",t.bbx=0}t.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=b.attrs,i=Math.pow,j,k,l="linear",m=".5 .5";b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){l="radial",b&&c&&(b=d(b),c=d(c),i(b-.5,2)+i(c-.5,2)>.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\s*\-\s*/);if(l=="linear"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method="none",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s<t;s++)q[s].offset&&r.push(q[s].offset+n+q[s].color);g.colors=r.length?r.join():"0% "+g.color,l=="radial"?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=m,g.angle=0):(g.type="gradient",g.angle=(270-p)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(b==null)return this._.transform;var d=this.paper._viewBoxShift,e=d?"s"+[d.scale,d.scale]+"-1-1t"+[d.dx,d.dy]:o,f;d&&(f=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,e+b);var g=this.matrix.clone(),h=this.skew,i=this.node,j,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");g.translate(-0.5,-0.5);if(l||k||this.type=="image"){h.matrix="1 0 0 1",h.offset="0 0",j=g.split();if(k&&j.noRotation||!j.isSimple){i.style.filter=g.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;i.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else i.style.filter=o,z(this,j.scalex,j.scaley,j.dx,j.dy,j.rotate)}else i.style.filter=o,h.matrix=c(g),h.offset=g.offset();f&&(this._.transform=f);return this},E.rotate=function(a,b,e){if(this.removed)return this;if(a!=null){a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]]));return this}},E.translate=function(a,b){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]]));return this},E.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1;return this},E.hide=function(){!this.removed&&(this.node.style.display="none");return this},E.show=function(){!this.removed&&(this.node.style.display=o);return this},E._getBBox=function(){if(this.removed)return{};return{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&!!this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c==j&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;var g=c.split(k),h={};for(var i=0,m=g.length;i<m;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&d==null&&a.is(c,"array")){h={};for(i=0,m=c.length;i<m;i++)h[c[i]]=this.attr(c[i]);return h}var n;d!=null&&(n={},n[c]=d),d==null&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&this.type=="text"&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper);return this},E.toBack=function(){if(this.removed)return this;this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper));return this},E.insertAfter=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},E.insertBefore=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper);return this},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;d=d.replace(r,o),+b!==0?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur)},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");f.on=!0,c.appendChild(f),d.skew=f,d.transform(o);return d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect";return i},a._engine.ellipse=function(a,b,c,d,e){var f=a.path(),g=f.attrs;f.X=b-d,f.Y=c-e,f.W=d*2,f.H=e*2,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e});return f},a._engine.circle=function(a,b,c,d){var e=a.path(),f=e.attrs;e.X=b-d,e.Y=c-d,e.W=e.H=d*2,e.type="circle",B(e,{cx:b,cy:c,r:d});return e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0);return i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");m.on=!0,h.appendChild(m),k.skew=m,k.transform(o);return k},a._engine.setSize=function(b,c){var d=this.canvas.style;this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox);return this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var h=this.width,i=this.height,j=1/g(d/h,e/i),k,l;f&&(k=i/e,l=h/d,d*k<h&&(b-=(h-d*k)/2/k),e*l<i&&(c-=(i-e*l)/2/l)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:j},this.forEach(function(a){a.transform("...")});return this};var F;a._engine.initWin=function(a){var b=a.document;b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error("VML container not found.");var i=new a._Paper,j=i.canvas=a._g.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin="0 0",i.span=a._g.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}(window.Raphael)
\ No newline at end of file
diff --git a/WebSites/errors/403/plugins/thirdparty/widget.ragIndicator.js b/WebSites/errors/403/plugins/thirdparty/widget.ragIndicator.js
new file mode 100644
index 0000000..b63b132
--- /dev/null
+++ b/WebSites/errors/403/plugins/thirdparty/widget.ragIndicator.js
@@ -0,0 +1,157 @@
+(function()
+{
+	//Our RAG indicator styles
+	freeboard.addStyle('.rag-light', "border-radius:50%;width:22px;height:22px;border:2px solid #3d3d3d;margin-top:5px;float:left;background-color:#222;margin-right:10px;");
+	freeboard.addStyle('.rag-light.red', "background-color:#D90000;box-shadow: 0px 0px 15px #D90000;border-color:#FDF1DF;");
+	freeboard.addStyle('.rag-light.amber', "background-color:#E49B00;box-shadow: 0px 0px 15px #E49B00;border-color:#FDF1DF;");
+	freeboard.addStyle('.rag-light.green', "background-color:#00B60E;box-shadow: 0px 0px 15px #00B60E;border-color:#FDF1DF;");
+	freeboard.addStyle('.rag-text', "margin-top:10px;");
+    //Flashing status for the light
+	freeboard.addStyle('.red-flash', "animation: red-flash 500ms infinite alternate;")
+	freeboard.addStyle('.amber-flash', "animation: amber-flash 500ms infinite alternate;")
+	freeboard.addStyle('.green-flash', "animation: green-flash 500ms infinite alternate;")
+	//Dim status for the light
+	freeboard.addStyle('.dim', "opacity: 0.6;");
+	
+	var ragWidget = function (settings) {
+        var self = this;
+        var titleElement = $('<h2 class="section-title"></h2>');
+        var stateElement = $('<div class="rag-text"></div>');
+        var indicatorElement = $('<div class="rag-light"></div>');
+        var currentSettings = settings;
+		
+		//define our keyframes for our flashing lights
+		$.keyframe.define([{
+			name: 'green-flash',
+			'0%': {'background-color': '#2A2A2A', 'box-shadow': '0px 0px 0px #2A2A2A'},
+			'100%': {'background-color': '#00B60E', 'box-shadow': '0px 0px 15px #00B60E'}
+		
+		}]); 
+		$.keyframe.define([{
+			name: 'amber-flash',
+			'0%': {'background-color': '#2A2A2A', 'box-shadow': '0px 0px 0px #2A2A2A'},
+			'100%': {'background-color': '#E49B00', 'box-shadow': '0px 0px 15px #E49B00'}
+		
+		}]); 
+		$.keyframe.define([{
+			name: 'red-flash',
+			'0%': {'background-color': '#2A2A2A', 'box-shadow': '0px 0px 0px #2A2A2A'},
+			'100%': {'background-color': '#D90000', 'box-shadow': '0px 0px 15px #D90000'}
+		
+		}]); 
+		
+		//store our calculated values in an object
+		var stateObject = {};
+		
+		//array of our values: 0=Green, 2=Amber, 3=Red
+		var stateArray = ["green", "amber", "red"];
+        
+		function updateState() {         
+		
+			//Remove all classes from our indicator light
+			indicatorElement
+				.removeClass('red')
+				.removeClass('amber')					
+				.removeClass('green')	
+				.removeClass('green-flash')
+				.removeClass('amber-flash')
+				.removeClass('red-flash')
+				.removeClass('dim')
+			
+			var ragValue = _.isUndefined(stateObject.value) ? -1 : stateObject.value;			
+			//If we have a valid value set, continue
+			if (stateArray[stateObject.value]) {
+				indicatorElement.addClass(stateArray[stateObject.value]);
+				var indicatorText = stateArray[stateObject.value] + '_text';
+				//Get our Indicator Type
+				stateElement.html((_.isUndefined(stateObject[indicatorText]) ? "" : stateObject[indicatorText]));
+				var indicatorType = (_.isUndefined(stateObject.indicator_type) ? "" : stateObject.indicator_type.toLowerCase());
+				
+				switch (indicatorType) {
+					case 'dim' : 
+						indicatorElement.addClass('dim');
+						break;
+					case 'flash' :
+						var indicatorTypeClass = stateArray[stateObject.value] + '-flash';
+						indicatorElement.addClass(indicatorTypeClass);				
+						break;
+					default:
+						//this is normal					
+				}								
+			} else {
+				//stateElement.html('Error');
+			}
+		
+        }
+
+        this.render = function (element) {
+            $(element).append(titleElement).append(indicatorElement).append(stateElement);			
+        }		
+
+        this.onSettingsChanged = function (newSettings) {
+            currentSettings = newSettings;
+            titleElement.html((_.isUndefined(newSettings.title) ? "" : newSettings.title));
+            updateState();
+        }
+
+        this.onCalculatedValueChanged = function (settingName, newValue) {
+            //whenever a calculated value changes, store them in the variable 'stateObject'
+			stateObject[settingName] = newValue;
+            updateState();
+        }
+
+        this.onDispose = function () {
+        }
+
+        this.getHeight = function () {
+            return 1;
+        }
+
+        this.onSettingsChanged(settings);
+    };
+
+    freeboard.loadWidgetPlugin({
+        type_name: "ragIndicator",
+        display_name: "RAG Indicator",
+		external_scripts: [
+			"plugins/thirdparty/jquery.keyframes.min.js"
+		],
+        settings: [
+            {
+                name: "title",
+                display_name: "Title",
+                type: "text"
+            },
+            {
+                name: "value",
+                display_name: "Value (G=0, A=1, R=2)",
+                type: "calculated"
+            },
+			{
+                name: "green_text",
+                display_name: "Green Text",
+                type: "calculated"
+            },            
+            {
+                name: "amber_text",
+                display_name: "Amber Text",
+                type: "calculated"
+            },
+			{
+                name: "red_text",
+                display_name: "Red Text",
+                type: "calculated"
+            },
+			{
+                name: "indicator_type",
+                display_name: "Type (Normal, Dim, Flash)",
+                type: "calculated"
+            }
+            
+			
+        ],
+        newInstance: function (settings, newInstanceCallback) {
+            newInstanceCallback(new ragWidget(settings));
+        }
+    });
+}());	
diff --git a/WebSites/errors/403/test/casper/tests/smoke_test.js b/WebSites/errors/403/test/casper/tests/smoke_test.js
new file mode 100644
index 0000000..9e25a24
--- /dev/null
+++ b/WebSites/errors/403/test/casper/tests/smoke_test.js
@@ -0,0 +1,105 @@
+var util = require('../util/test_util.js');
+
+casper.options.viewportSize = {width: 1024, height: 768}
+casper.options.onError = function() {
+	casper.capture("error_screenshot.png");
+};
+
+casper.test.begin('Freeboard smoke test', function testFunction(test)
+{
+	casper.start(util.FREEBOARD_URL, function()
+	{
+		// Test initial page load state
+		test.assertTitle('freeboard');
+		test.assertVisible(util.SELECTORS.adminBar);
+		test.assertNotVisible(util.SELECTORS.modalOverlay);
+	});
+
+	util.addJSONDatasource(test, 'json_input', 'test/fixtures/input.json');
+
+	casper.then(function() {
+		// Click add pane
+		test.assertNotVisible(util.SELECTORS.allPanes);
+		test.assertVisible(util.SELECTORS.boardTools);
+		this.click(util.SELECTORS.addPane);
+		test.assertVisible(util.SELECTORS.allPanes);
+
+		// Click add widget
+		this.click(util.SELECTORS.addWidget);
+		test.assertVisible(util.SELECTORS.pluginTypeDropdown);
+
+		// Select text widget
+		util.setValueAndTriggerChange(test, util.SELECTORS.pluginTypeDropdown, 'text_widget');
+
+		// Click datasource autofill
+		test.assertVisible(util.SELECTORS.valueValueInput);
+		test.assertVisible(util.SELECTORS.autofillDatasource);
+		this.click(util.SELECTORS.autofillDatasource);
+		test.assertVisible(util.SELECTORS.autofillMenu);
+		var valueName = this.fetchText(util.getAutofillMenuItemSelector(1));
+		test.assertEquals(valueName, 'json_input');
+
+		// Select the first (and only) datasource
+		this.mouseEvent('mousedown', util.getAutofillMenuItemSelector(1));
+		test.assertVisible(util.SELECTORS.autofillMenu);
+
+		// Select the "meta" sub-object of the datasource
+		valueName = this.fetchText(util.getAutofillMenuItemSelector(4));
+		test.assertEquals(valueName, 'meta');
+		this.mouseEvent('mousedown', util.getAutofillMenuItemSelector(4));
+		test.assertVisible(util.SELECTORS.autofillMenu);
+
+		// Select the "year" field to be displayed
+		valueName = this.fetchText(util.getAutofillMenuItemSelector(5));
+		test.assertEquals(valueName, 'year');
+		this.mouseEvent('mousedown', util.getAutofillMenuItemSelector(5));
+		test.assertNotVisible(util.SELECTORS.autofillMenu);
+	});
+
+	// Click save
+	util.clickModalOK(test);
+
+	casper.then(function() {
+		// Assert that the new text widget displays the correct value
+		test.assertVisible(util.SELECTORS.singlePaneTextWidget);
+		var textValue = this.fetchText(util.SELECTORS.singlePaneTextWidget);
+		test.assertEquals(textValue, '2018');
+
+		// Click and confirm delete widget
+		this.click(util.SELECTORS.trashWidget);
+	});
+
+	util.clickModalOK(test);
+
+	casper.then(function() {
+		// Assert widget deleted, pane not deleted
+		test.assertNotVisible(util.SELECTORS.allWidgets);
+		test.assertVisible(util.SELECTORS.allPanes);
+
+		// Click and confirm delete pane
+		this.click(util.SELECTORS.trashPane);
+	});
+
+	util.clickModalOK(test);
+
+	casper.then(function() {
+		// Confirm pane deleted
+		test.assertNotVisible(util.SELECTORS.allPanes);
+
+		// Click and confirm delete datasource
+		test.assertVisible(util.SELECTORS.datasourceTable);
+		this.click(util.SELECTORS.trashDatasource);
+	});
+
+	util.clickModalOK(test);
+
+	casper.then(function() {
+		// Confirm datasource deleted
+		test.assertNotVisible(util.SELECTORS.datasourceTable);
+	});
+
+	casper.run(function() {
+		this.reload();
+		test.done();
+	});
+});
diff --git a/WebSites/errors/403/test/casper/util/test_util.js b/WebSites/errors/403/test/casper/util/test_util.js
new file mode 100644
index 0000000..f5288f7
--- /dev/null
+++ b/WebSites/errors/403/test/casper/util/test_util.js
@@ -0,0 +1,84 @@
+var fs = require('fs');
+
+exports.FREEBOARD_URL = fs.workingDirectory + '/index.html';
+
+exports.BOGUS = 'json_input';
+
+var SELECTORS = {
+	adminBar : '#admin-bar',
+	modelOverlay : '#modal_overlay',
+	addDatasource : '#datasources span.text-button',
+	pluginTypeDropdown : '#modal_overlay #setting-value-container-plugin-types select',
+	nameValueInput : '#modal_overlay #setting-value-container-name input',
+	urlValueInput : '#modal_overlay #setting-value-container-url input',
+	valueValueInput : '#modal_overlay #setting-value-container-value textarea',
+	modalOK : '#modal_overlay #dialog-ok',
+	modalValidationError : '#modal_overlay validation-error',
+	datasourceTable : '#datasources table#datasources-list',
+	datasourceName : '#datasources table#datasources-list span.datasource-name',
+	datasoureUpdated : '#datasources table#datasources-list tr td:nth-child(2)',
+	allPanes : '#board-content li',
+	allWidgets : '#board-content li section',
+	boardTools : '#board-tools',
+	addPane : '#board-tools #add-pane',
+	addWidget : '#board-content li header li i.icon-plus',
+	autofillDatasource : '#modal_overlay #setting-value-container-value li i.icon-plus',
+	autofillMenu : '#modal_overlay #value-selector',
+	autofillMenuItem : '#modal_overlay #value-selector li:nth-child(%s)',
+	singlePaneTextWidget : '#board-content li section div.tw-value',
+	trashWidget : '#board-content li section i.icon-trash',
+	trashPane : '#board-content li header i.icon-trash',
+	trashDatasource : '#datasources table#datasources-list i.icon-trash'
+};
+exports.SELECTORS = SELECTORS;
+
+function setValueAndTriggerChange(test, selector, value) {
+	test.assertVisible(selector);
+	casper.evaluate(function(selector, value) {
+		$(selector).val(value).change();
+	}, selector, value);
+}
+exports.setValueAndTriggerChange = setValueAndTriggerChange;
+
+function clickModalOK(test) {
+	casper.then(function() {
+		test.assertVisible(SELECTORS.modalOK);
+		casper.click(SELECTORS.modalOK);
+		test.assertNotVisible(SELECTORS.modalValidationError);
+	});
+	casper.waitWhileVisible('#modal_overlay');
+}
+exports.clickModalOK = clickModalOK;
+
+exports.getAutofillMenuItemSelector = function(index) {
+	return SELECTORS.autofillMenuItem.replace('%s', index);
+}
+
+exports.addJSONDatasource = function(test, name, url) {
+
+	casper.then(function() {
+		// Click Add datasource
+		casper.click(SELECTORS.addDatasource);
+
+		// Select JSON
+		setValueAndTriggerChange(test, SELECTORS.pluginTypeDropdown, 'JSON');
+
+		// Name the datasource "json_input"
+		setValueAndTriggerChange(test, SELECTORS.nameValueInput, name);
+
+		// Specify fixtures/input.json as the source
+		setValueAndTriggerChange(test, SELECTORS.urlValueInput, url);
+	});
+
+	// Click ok
+	clickModalOK(test);
+
+	casper.then(function() {
+		// Assert that the datasource displays correctly
+		test.assertVisible(SELECTORS.datasourceName);
+		var datasourceName = casper.fetchText(SELECTORS.datasourceName);
+		test.assertEquals(datasourceName, name);
+		var datasourceTime = casper.fetchText(SELECTORS.datasourceUpdated);
+		test.assertNotEquals(datasourceTime, 'never');
+	});
+};
diff --git a/WebSites/errors/403/test/fixtures/input.json b/WebSites/errors/403/test/fixtures/input.json
new file mode 100644
index 0000000..8a755f8
--- /dev/null
+++ b/WebSites/errors/403/test/fixtures/input.json
@@ -0,0 +1,40 @@
+{
+	"x" : 42,
+	"y" : 19,
+	"z" : 313,
+	"meta" : {
+		"owner" :
+		{
+			"first_name" : "Alfonso",
+			"last_name" : "Jones",
+			"maiden_name" : "Smith"
+		},
+		"country" : "USA",
+		"make" : "BMW",
+		"model" : "XL",
+		"year" : "2018"
+	},
+	"entries" : ["2000", "2003", "2004", "2006", "2011", "2014"],
+	"previous_owners" : [
+		{
+			"owner" : "Zelnit",
+			"country" : "Russia"
+		},
+		{
+			"owner" : "Yolga",
+			"country" : "Venezuela"
+		},
+		{
+			"owner" : "Xavier",
+			"country" : "Poland"
+		},
+		{
+			"owner" : "Voltron",
+			"country" : "Greenland"
+		},
+		{
+			"owner" : "Uther",
+			"country" : "Cambodia"
+		}
+	]
+}
diff --git a/WebSites/errors/403/test/run_browser_tests.sh b/WebSites/errors/403/test/run_browser_tests.sh
new file mode 100644
index 0000000..bcbe963
--- /dev/null
+++ b/WebSites/errors/403/test/run_browser_tests.sh
@@ -0,0 +1,3 @@
+cd "$( dirname "$0" )"
+cd ..
+casperjs test test/casper/tests/
diff --git a/default.conf b/default.conf
index abb38e8..6b81522 100644
--- a/default.conf
+++ b/default.conf
@@ -5,9 +5,25 @@ server {
         root   /usr/share/nginx/web/pos;
     }
 
-    location ~ ^/(menu|pvs|interlocks|instruments|ts2_cav|ts2_screens|ts2_tpcircuits|contacts|dev) {
+    location ~ ^/(menu|pvs|interlocks|instruments|ts2_cav|ts2_screens|ts2_tpcircuits|errors|dev) {
         root   /usr/share/nginx/web;
     }
+    
+    location ~ ^/(contacts) {
+        root   /usr/share/nginx/web;
+        allow 172.16.0.0/16;
+        allow 172.17.0.0/16;
+        allow 172.18.0.0/16;
+        allow 172.19.0.0/20;
+        allow 172.19.16.0/20;
+        allow 172.20.0.0/16;
+        allow 172.21.0.0/16;
+        allow 172.23.0.0/16;
+        allow 172.30.0.0/16;
+        allow 10.0.0.0/8;
+        deny all;
+        error_page 403 /errors/403;
+    }
 
     # static json and png data files
     location ~ ^/data/.*\.(png|json)$ {
-- 
GitLab