From 26001376c4bb78ec03561914bb99468b69c1733d Mon Sep 17 00:00:00 2001 From: fefa4ka Date: Wed, 22 Mar 2017 12:18:08 +0300 Subject: [PATCH] static from packages --- .../blog/static/blog/css/djangocms_blog.css | 0 .../static/blog/css/djangocms_blog_admin.css | 46 + .../static/cmsplugin_tabs/js/jquery.init.js | 4 + .../js/jquery.inlineordering.js | 23 + .../static/admin/css/codemirror.css | 249 + .../smartsnippets/static/admin/css/custom.css | 173 + .../static/admin/css/smartsnippets-extra.css | 11 + .../admin/css/snippet_plugin_default.css | 18 + .../static/admin/js/CMInstance.js | 41 + .../static/admin/js/SmartSnippetLib.js | 105 + .../js/SmartSnippets.PredefinedWidgets.js | 29 + .../admin/js/SmartSnippets.Variables.js | 421 + .../static/admin/js/codemirror/codemirror.js | 5637 ++++++++++++ .../static/admin/js/codemirror/css.js | 606 ++ .../static/admin/js/codemirror/htmlmixed.js | 104 + .../static/admin/js/codemirror/javascript.js | 471 + .../static/admin/js/codemirror/xml.js | 330 + .../smartsnippets/static/admin/js/custom.js | 3 + .../static/admin/js/default.jQuery.init.js | 1 + .../static/admin/js/snippet_plugin_default.js | 5 + packages/smartsnippets/static/css/tipTip.css | 113 + packages/smartsnippets/static/images/drag.gif | Bin 0 -> 200 bytes packages/smartsnippets/static/images/help.png | Bin 0 -> 4474 bytes .../smartsnippets/static/images/snippet.png | Bin 0 -> 7651 bytes .../static/js/jquery.tipTip.minified.js | 21 + .../static/libs/ace/css/ace.min.css | 2 + .../_alerts.scssc | Bin 0 -> 4122 bytes .../_background-variant.scssc | Bin 0 -> 3176 bytes .../_border-radius.scssc | Bin 0 -> 4292 bytes .../_buttons.scssc | Bin 0 -> 11443 bytes .../_center-block.scssc | Bin 0 -> 1929 bytes .../_clearfix.scssc | Bin 0 -> 3836 bytes .../_forms.scssc | Bin 0 -> 20699 bytes .../_gradients.scssc | Bin 0 -> 37430 bytes .../_grid-framework.scssc | Bin 0 -> 29640 bytes .../_grid.scssc | Bin 0 -> 29013 bytes .../_hide-text.scssc | Bin 0 -> 4132 bytes .../_image.scssc | Bin 0 -> 9565 bytes .../_labels.scssc | Bin 0 -> 3160 bytes .../_list-group.scssc | Bin 0 -> 6922 bytes .../_nav-divider.scssc | Bin 0 -> 3291 bytes .../_nav-vertical-align.scssc | Bin 0 -> 3011 bytes .../_opacity.scssc | Bin 0 -> 2919 bytes .../_pagination.scssc | Bin 0 -> 5382 bytes .../_panels.scssc | Bin 0 -> 5999 bytes .../_progress-bar.scssc | Bin 0 -> 2455 bytes .../_reset-filter.scssc | Bin 0 -> 1763 bytes .../_resize.scssc | Bin 0 -> 2083 bytes .../_responsive-visibility.scssc | Bin 0 -> 5140 bytes .../_size.scssc | Bin 0 -> 2382 bytes .../_tab-focus.scssc | Bin 0 -> 2066 bytes .../_table-row.scssc | Bin 0 -> 6996 bytes .../_text-emphasis.scssc | Bin 0 -> 3125 bytes .../_text-overflow.scssc | Bin 0 -> 2014 bytes .../_vendor-prefixes.scssc | Bin 0 -> 50539 bytes .../bootstrap.scssc | Bin 0 -> 6091 bytes .../bootstrapV320.scssc | Bin 0 -> 6086 bytes .../_alerts.scssc | Bin 0 -> 12177 bytes .../_badges.scssc | Bin 0 -> 11678 bytes .../_breadcrumbs.scssc | Bin 0 -> 6165 bytes .../_button-groups.scssc | Bin 0 -> 48185 bytes .../_buttons.scssc | Bin 0 -> 30337 bytes .../_carousel.scssc | Bin 0 -> 45408 bytes .../_close.scssc | Bin 0 -> 7412 bytes .../_code.scssc | Bin 0 -> 15674 bytes .../_component-animations.scssc | Bin 0 -> 7310 bytes .../_dropdowns.scssc | Bin 0 -> 41124 bytes .../_forms.scssc | Bin 0 -> 94156 bytes .../_glyphicons.scssc | Bin 0 -> 183982 bytes .../_grid.scssc | Bin 0 -> 8205 bytes .../_input-groups.scssc | Bin 0 -> 34033 bytes .../_jumbotron.scssc | Bin 0 -> 10511 bytes .../_labels.scssc | Bin 0 -> 11032 bytes .../_list-group.scssc | Bin 0 -> 22551 bytes .../_media.scssc | Bin 0 -> 7656 bytes .../_mixins.scssc | Bin 0 -> 4657 bytes .../_modals.scssc | Bin 0 -> 32372 bytes .../_navbar.scssc | Bin 0 -> 118979 bytes .../_navs.scssc | Bin 0 -> 40886 bytes .../_normalize.scssc | Bin 0 -> 47767 bytes .../_pager.scssc | Bin 0 -> 10499 bytes .../_pagination.scssc | Bin 0 -> 19063 bytes .../_panels.scssc | Bin 0 -> 49385 bytes .../_popovers.scssc | Bin 0 -> 35414 bytes .../_print.scssc | Bin 0 -> 16538 bytes .../_progress-bars.scssc | Bin 0 -> 19491 bytes .../_responsive-embed.scssc | Bin 0 -> 6626 bytes .../_responsive-utilities.scssc | Bin 0 -> 28739 bytes .../_scaffolding.scssc | Bin 0 -> 23649 bytes .../_tables.scssc | Bin 0 -> 37596 bytes .../_thumbnails.scssc | Bin 0 -> 8315 bytes .../_tooltip.scssc | Bin 0 -> 28743 bytes .../_type.scssc | Bin 0 -> 60487 bytes .../_utilities.scssc | Bin 0 -> 7637 bytes .../_variables.scssc | Bin 0 -> 140464 bytes .../_wells.scssc | Bin 0 -> 7636 bytes .../bootstrap.scssc | Bin 0 -> 5239 bytes .../static/libs/bootstrap/config.rb | 23 + .../static/libs/bootstrap/css/bootstrap.css | 8076 +++++++++++++++++ .../glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../glyphicons-halflings-regular.svg | 229 + .../glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../static/libs/bootstrap/js/bootstrap.js | 2114 +++++ .../static/libs/bootstrap/js/bootstrap.min.js | 6 + .../libs/bootstrap/sass/_pbs.overrides.scss | 39 + .../static/libs/bootstrap/sass/bootstrap.scss | 55 + .../bootstrap/sass/bootstrap/_alerts.scss | 68 + .../bootstrap/sass/bootstrap/_badges.scss | 57 + .../sass/bootstrap/_breadcrumbs.scss | 26 + .../sass/bootstrap/_button-groups.scss | 240 + .../bootstrap/sass/bootstrap/_buttons.scss | 157 + .../bootstrap/sass/bootstrap/_carousel.scss | 243 + .../libs/bootstrap/sass/bootstrap/_close.scss | 35 + .../libs/bootstrap/sass/bootstrap/_code.scss | 68 + .../sass/bootstrap/_component-animations.scss | 35 + .../bootstrap/sass/bootstrap/_dropdowns.scss | 215 + .../libs/bootstrap/sass/bootstrap/_forms.scss | 538 ++ .../bootstrap/sass/bootstrap/_glyphicons.scss | 237 + .../libs/bootstrap/sass/bootstrap/_grid.scss | 84 + .../sass/bootstrap/_input-groups.scss | 166 + .../bootstrap/sass/bootstrap/_jumbotron.scss | 48 + .../bootstrap/sass/bootstrap/_labels.scss | 66 + .../bootstrap/sass/bootstrap/_list-group.scss | 131 + .../libs/bootstrap/sass/bootstrap/_media.scss | 56 + .../bootstrap/sass/bootstrap/_mixins.scss | 39 + .../bootstrap/sass/bootstrap/_modals.scss | 150 + .../bootstrap/sass/bootstrap/_navbar.scss | 659 ++ .../libs/bootstrap/sass/bootstrap/_navs.scss | 242 + .../bootstrap/sass/bootstrap/_normalize.scss | 425 + .../libs/bootstrap/sass/bootstrap/_pager.scss | 55 + .../bootstrap/sass/bootstrap/_pagination.scss | 88 + .../bootstrap/sass/bootstrap/_panels.scss | 243 + .../bootstrap/sass/bootstrap/_popovers.scss | 133 + .../libs/bootstrap/sass/bootstrap/_print.scss | 101 + .../sass/bootstrap/_progress-bars.scss | 105 + .../sass/bootstrap/_responsive-embed.scss | 34 + .../sass/bootstrap/_responsive-utilities.scss | 174 + .../sass/bootstrap/_scaffolding.scss | 150 + .../bootstrap/sass/bootstrap/_tables.scss | 233 + .../libs/bootstrap/sass/bootstrap/_theme.scss | 258 + .../bootstrap/sass/bootstrap/_thumbnails.scss | 38 + .../bootstrap/sass/bootstrap/_tooltip.scss | 95 + .../libs/bootstrap/sass/bootstrap/_type.scss | 304 + .../bootstrap/sass/bootstrap/_utilities.scss | 57 + .../bootstrap/sass/bootstrap/_variables.scss | 850 ++ .../libs/bootstrap/sass/bootstrap/_wells.scss | 29 + .../sass/bootstrap/mixins/_alerts.scss | 14 + .../bootstrap/mixins/_background-variant.scss | 11 + .../sass/bootstrap/mixins/_border-radius.scss | 18 + .../sass/bootstrap/mixins/_buttons.scss | 50 + .../sass/bootstrap/mixins/_center-block.scss | 7 + .../sass/bootstrap/mixins/_clearfix.scss | 22 + .../sass/bootstrap/mixins/_forms.scss | 84 + .../sass/bootstrap/mixins/_gradients.scss | 58 + .../bootstrap/mixins/_grid-framework.scss | 81 + .../sass/bootstrap/mixins/_grid.scss | 122 + .../sass/bootstrap/mixins/_hide-text.scss | 21 + .../sass/bootstrap/mixins/_image.scss | 34 + .../sass/bootstrap/mixins/_labels.scss | 12 + .../sass/bootstrap/mixins/_list-group.scss | 31 + .../sass/bootstrap/mixins/_nav-divider.scss | 10 + .../bootstrap/mixins/_nav-vertical-align.scss | 9 + .../sass/bootstrap/mixins/_opacity.scss | 8 + .../sass/bootstrap/mixins/_pagination.scss | 23 + .../sass/bootstrap/mixins/_panels.scss | 24 + .../sass/bootstrap/mixins/_progress-bar.scss | 10 + .../sass/bootstrap/mixins/_reset-filter.scss | 8 + .../sass/bootstrap/mixins/_resize.scss | 6 + .../mixins/_responsive-visibility.scss | 21 + .../sass/bootstrap/mixins/_size.scss | 10 + .../sass/bootstrap/mixins/_tab-focus.scss | 9 + .../sass/bootstrap/mixins/_table-row.scss | 28 + .../sass/bootstrap/mixins/_text-emphasis.scss | 11 + .../sass/bootstrap/mixins/_text-overflow.scss | 8 + .../bootstrap/mixins/_vendor-prefixes.scss | 219 + .../static/libs/jquery-2.1.1.min.js | 4 + 177 files changed, 26860 insertions(+) create mode 100644 packages/blog/static/blog/css/djangocms_blog.css create mode 100644 packages/blog/static/blog/css/djangocms_blog_admin.css create mode 100644 packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.init.js create mode 100644 packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.inlineordering.js create mode 100644 packages/smartsnippets/static/admin/css/codemirror.css create mode 100644 packages/smartsnippets/static/admin/css/custom.css create mode 100644 packages/smartsnippets/static/admin/css/smartsnippets-extra.css create mode 100644 packages/smartsnippets/static/admin/css/snippet_plugin_default.css create mode 100644 packages/smartsnippets/static/admin/js/CMInstance.js create mode 100644 packages/smartsnippets/static/admin/js/SmartSnippetLib.js create mode 100644 packages/smartsnippets/static/admin/js/SmartSnippets.PredefinedWidgets.js create mode 100644 packages/smartsnippets/static/admin/js/SmartSnippets.Variables.js create mode 100644 packages/smartsnippets/static/admin/js/codemirror/codemirror.js create mode 100644 packages/smartsnippets/static/admin/js/codemirror/css.js create mode 100644 packages/smartsnippets/static/admin/js/codemirror/htmlmixed.js create mode 100644 packages/smartsnippets/static/admin/js/codemirror/javascript.js create mode 100644 packages/smartsnippets/static/admin/js/codemirror/xml.js create mode 100644 packages/smartsnippets/static/admin/js/custom.js create mode 100644 packages/smartsnippets/static/admin/js/default.jQuery.init.js create mode 100644 packages/smartsnippets/static/admin/js/snippet_plugin_default.js create mode 100644 packages/smartsnippets/static/css/tipTip.css create mode 100644 packages/smartsnippets/static/images/drag.gif create mode 100644 packages/smartsnippets/static/images/help.png create mode 100644 packages/smartsnippets/static/images/snippet.png create mode 100644 packages/smartsnippets/static/js/jquery.tipTip.minified.js create mode 100644 packages/smartsnippets/static/libs/ace/css/ace.min.css create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_alerts.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_background-variant.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_border-radius.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_buttons.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_center-block.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_clearfix.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_forms.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_gradients.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_grid-framework.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_grid.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_hide-text.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_image.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_labels.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_list-group.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_nav-divider.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_nav-vertical-align.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_opacity.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_pagination.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_panels.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_progress-bar.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_reset-filter.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_resize.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_responsive-visibility.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_size.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_tab-focus.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_table-row.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_text-emphasis.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_text-overflow.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_vendor-prefixes.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/a3fc55010a1edcf08f2f14e264cea00e2e5d53de/bootstrap.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/a3fc55010a1edcf08f2f14e264cea00e2e5d53de/bootstrapV320.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_alerts.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_badges.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_breadcrumbs.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_button-groups.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_buttons.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_carousel.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_close.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_code.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_component-animations.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_dropdowns.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_forms.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_glyphicons.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_grid.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_input-groups.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_jumbotron.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_labels.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_list-group.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_media.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_mixins.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_modals.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_navbar.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_navs.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_normalize.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_pager.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_pagination.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_panels.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_popovers.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_print.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_progress-bars.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_responsive-embed.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_responsive-utilities.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_scaffolding.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_tables.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_thumbnails.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_tooltip.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_type.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_utilities.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_variables.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_wells.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/bootstrap.scssc create mode 100644 packages/smartsnippets/static/libs/bootstrap/config.rb create mode 100644 packages/smartsnippets/static/libs/bootstrap/css/bootstrap.css create mode 100644 packages/smartsnippets/static/libs/bootstrap/css/bootstrap/glyphicons-halflings-regular.eot create mode 100644 packages/smartsnippets/static/libs/bootstrap/css/bootstrap/glyphicons-halflings-regular.svg create mode 100644 packages/smartsnippets/static/libs/bootstrap/css/bootstrap/glyphicons-halflings-regular.ttf create mode 100644 packages/smartsnippets/static/libs/bootstrap/css/bootstrap/glyphicons-halflings-regular.woff create mode 100644 packages/smartsnippets/static/libs/bootstrap/js/bootstrap.js create mode 100644 packages/smartsnippets/static/libs/bootstrap/js/bootstrap.min.js create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/_pbs.overrides.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_alerts.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_badges.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_breadcrumbs.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_button-groups.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_buttons.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_carousel.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_close.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_code.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_component-animations.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_dropdowns.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_forms.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_glyphicons.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_grid.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_input-groups.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_jumbotron.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_labels.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_list-group.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_media.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_mixins.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_modals.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_navbar.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_navs.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_normalize.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_pager.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_pagination.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_panels.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_popovers.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_print.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_progress-bars.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_responsive-embed.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_responsive-utilities.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_scaffolding.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_tables.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_theme.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_thumbnails.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_tooltip.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_type.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_utilities.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_variables.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/_wells.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_alerts.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_background-variant.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_border-radius.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_buttons.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_center-block.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_clearfix.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_forms.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_gradients.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_grid-framework.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_grid.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_hide-text.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_image.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_labels.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_list-group.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_nav-divider.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_nav-vertical-align.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_opacity.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_pagination.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_panels.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_progress-bar.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_reset-filter.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_resize.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_responsive-visibility.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_size.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_tab-focus.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_table-row.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_text-emphasis.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_text-overflow.scss create mode 100644 packages/smartsnippets/static/libs/bootstrap/sass/bootstrap/mixins/_vendor-prefixes.scss create mode 100644 packages/smartsnippets/static/libs/jquery-2.1.1.min.js diff --git a/packages/blog/static/blog/css/djangocms_blog.css b/packages/blog/static/blog/css/djangocms_blog.css new file mode 100644 index 0000000..e69de29 diff --git a/packages/blog/static/blog/css/djangocms_blog_admin.css b/packages/blog/static/blog/css/djangocms_blog_admin.css new file mode 100644 index 0000000..855da1b --- /dev/null +++ b/packages/blog/static/blog/css/djangocms_blog_admin.css @@ -0,0 +1,46 @@ +.select2-container-multi .select2-choices .select2-search-field input { + min-width: 100px; +} + +.selector select[multiple] { + display: block; +} + +.selector { + width: auto; + margin-right: 12px; +} + +.selector-available, .selector-chosen { + width: auto; +} + +.selector .selector-available input, .selector .selector-chosen input { + margin: 0; +} + +form select { + max-width: 266px; +} + +.as-selections.vTextField { + width: 300px; +} + +.as-results ul.as-list { + margin-left:9em; + padding-left:0; + box-shadow: none !important; + border: 1px solid #888888 !important; +} +.as-results ul.as-list li { + list-style: none; +} +ul.as-selections.vTextField { + padding-left: 10px; + margin-left:9em; +} + +ul.as-selections li { + list-style: none; +} \ No newline at end of file diff --git a/packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.init.js b/packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.init.js new file mode 100644 index 0000000..a7e58e1 --- /dev/null +++ b/packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.init.js @@ -0,0 +1,4 @@ +if (typeof django !== 'undefined' && django.jQuery) { + $ = django.jQuery; + jQuery = django.jQuery; +} diff --git a/packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.inlineordering.js b/packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.inlineordering.js new file mode 100644 index 0000000..ec96d56 --- /dev/null +++ b/packages/cmsplugin_tabs/static/cmsplugin_tabs/js/jquery.inlineordering.js @@ -0,0 +1,23 @@ +/* +Code taken from django snippets +http://djangosnippets.org/snippets/1053/ +*/ +(function($){ + $(function() { + $('div.inline-group').sortable({ + /*containment: 'parent', + zindex: 10, */ + items: 'div.inline-related', + handle: 'h3:first', + update: function() { + $(this).find('div.inline-related').each(function(i) { + if ($(this).find('input[id$=title]').val()) { + $(this).find('input[id$=order]').val(i+1); + } + }); + } + }); + $('div.inline-related h3').css('cursor', 'move'); + $('div.inline-related').find('input[id$=order]').parent('div').hide(); + }); +})(jQuery); \ No newline at end of file diff --git a/packages/smartsnippets/static/admin/css/codemirror.css b/packages/smartsnippets/static/admin/css/codemirror.css new file mode 100644 index 0000000..f5379d9 --- /dev/null +++ b/packages/smartsnippets/static/admin/css/codemirror.css @@ -0,0 +1,249 @@ +/* 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; +} + +/* CURSOR */ + +.CodeMirror div.CodeMirror-cursor { + border-left: 1px solid black; + z-index: 3; +} +/* 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; + z-index: 1; +} +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {} + +.cm-tab { display: inline-block; } + +/* 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 {color: black;} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3 {color: #085;} +.cm-s-default .cm-property {color: black;} +.cm-s-default .cm-operator {color: black;} +.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-error {color: #f00;} +.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-invalidchar {color: #f00;} + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} + +/* 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; padding-right: 30px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; +} + +/* 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%; + 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 { + display: inline-block; +} + +.CodeMirror-wrap .CodeMirror-scroll { + overflow-x: hidden; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; height: 0px; + overflow: hidden; + visibility: hidden; +} +.CodeMirror-measure pre { position: static; } + +.CodeMirror div.CodeMirror-cursor { + position: absolute; + visibility: hidden; + border-right: none; + width: 0; +} +.CodeMirror-focused div.CodeMirror-cursor { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } + +.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; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursor { + visibility: hidden; + } +} diff --git a/packages/smartsnippets/static/admin/css/custom.css b/packages/smartsnippets/static/admin/css/custom.css new file mode 100644 index 0000000..1be2d07 --- /dev/null +++ b/packages/smartsnippets/static/admin/css/custom.css @@ -0,0 +1,173 @@ +body { + background: white; +} +.text-left { + text-align: left !important; +} +.smartsnippet-title { + color: #abbac3; + font-weight: 300; + font-size: 32px; +} +.smartsnippet-description { + font-size: 14px; +} +.smartsnippet-description p { + white-space: pre-wrap; +} +input[type=color], input[type=date], input[type=datetime-local], input[type=datetime], +input[type=email], input[type=month], input[type=number], input[type=password], +input[type=search], input[type=tel], input[type=text], input[type=time], +input[type=url], input[type=week], textarea, select { + color: #393939; + width: 55%; +} +.btn.btn-info[disabled] { + color: white !important; +} +.popover-content, .popover { + min-width: 330px; +} +.popover-content span { + display: block; + margin-bottom: 15px; +} +.popover-content img { + margin-top: 5px; + display: block; +} +.popover { + border-radius: 0; + padding: 0; + border-color: #ccc; + border-width: 1px; + color: #000; + font-weight: 300; + font-size: 12px; + box-shadow: none; +} +.widget-drag { + height: 38px; + width: 15px; + background: url(../../images/drag.gif) no-repeat 2px 4px; + display: inline-block; + float: left; + cursor: move; + margin-right: 12px; +} +.widget-box { + border: none; + margin-bottom: 20px; +} +.widget-body > table { + border: 1px solid #CCC !important; + border-top: none !important; +} +.deletelink { + color: white !important; + margin-right: 20px; + padding: 8px 18px; + border: none; +} +.form-horizontal .widget-body .field-snippet .row { + margin: 0; +} +.form-horizontal .widget-body .field-snippet { + margin-bottom: 0; + margin-top: 15px; +} +.form-horizontal .widget-body .field-snippet .col-sm-2 { + width: 25%; +} +.form-horizontal .widget-body .field-snippet .col-sm-9 { + padding-left: 15px !important; +} +.form-horizontal .widget-body .field-snippet .control-label { + text-align: right !important; +} +.collapsed .glyphicon-chevron-up:before { + content: "\e114"; +} +.collapse-item { + height: 0; + position: relative; + overflow: hidden; + -webkit-transition: all .3s; + -o-transition: all .3s; + transition: all .3s; +} +.collapse-item.on { + height: auto; +} +.submit-button { + float: right; + position: relative; +} +td.filer-input-wrapper .help-button { + position: absolute; + top: 0; + right: -30px; +} +.help-button { + margin: 3px 0 0 10px; +} +.form-actions { + background: white; +} +.widget-header { + background: #fff; + padding: 0; + border: 1px solid #DDD; +} +.widget-header > .widget-title { + line-height: 36px; + font-size: 18px; + font-weight: 300; + text-transform: none; + padding: 0; + margin: 0; + display: inline; + color: #666; +} +.limiterBox { + border: none; + background: none; + padding: 3px 6px; + font-size: 12px; + color: #737373; + text-align: right; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 300; + margin-top: 3px; + margin-left: 15px; +} +.limiterBox:after { + display: none; +} +.limiterBox:before { + display: none; +} +.ui-dialog, .ui-jqdialog { + border: none; + display: inline-block !important; +} +.ui-dialog .ui-dialog-titlebar, .ui-jqdialog .ui-dialog-titlebar, .ui-dialog .ui-jqdialog-titlebar, .ui-jqdialog .ui-jqdialog-titlebar { + color: #fff; + background-color: #669fc7; + padding: 5px 10px; +} +.ui-dialog .ui-dialog-titlebar-close, .ui-jqdialog .ui-dialog-titlebar-close, .ui-dialog .ui-jqdialog-titlebar-close, .ui-jqdialog .ui-jqdialog-titlebar-close { + display: none; +} +#dialog-confirm { + padding: 10px 10px 0; +} +.ui-dialog .ui-dialog-buttonpane, .ui-jqdialog .ui-dialog-buttonpane, .ui-dialog .ui-jqdialog-buttonpane, .ui-jqdialog .ui-jqdialog-buttonpane { + padding: 0 10px 20px; + text-align: center; + background: none; + border-top: none; +} +.ui-dialog .ui-dialog-buttonpane button, .ui-jqdialog .ui-dialog-buttonpane button, .ui-dialog .ui-jqdialog-buttonpane button, .ui-jqdialog .ui-jqdialog-buttonpane button { + margin: 0 5px; +} diff --git a/packages/smartsnippets/static/admin/css/smartsnippets-extra.css b/packages/smartsnippets/static/admin/css/smartsnippets-extra.css new file mode 100644 index 0000000..8851049 --- /dev/null +++ b/packages/smartsnippets/static/admin/css/smartsnippets-extra.css @@ -0,0 +1,11 @@ +.inline-related { + border: solid 1px #999; +} +.predefined-widgets li{ + list-style-type: none; + padding: 3px; + border: 1px solid #7CA0C7; + cursor:pointer; + border-left: none; + border-right: none; +} \ No newline at end of file diff --git a/packages/smartsnippets/static/admin/css/snippet_plugin_default.css b/packages/smartsnippets/static/admin/css/snippet_plugin_default.css new file mode 100644 index 0000000..76da695 --- /dev/null +++ b/packages/smartsnippets/static/admin/css/snippet_plugin_default.css @@ -0,0 +1,18 @@ +span.plugin-help-tooltip{ + cursor: help; +} +.plugin-help-tooltip{ + float: left; + margin-right: 5px; +} +.plugin-help-tooltip img{ + border: 0; + width: 20px; + height: 20px; +} + +#layout_help_popup{ + position: absolute; + top:0; + margin:0 auto; +} diff --git a/packages/smartsnippets/static/admin/js/CMInstance.js b/packages/smartsnippets/static/admin/js/CMInstance.js new file mode 100644 index 0000000..595671c --- /dev/null +++ b/packages/smartsnippets/static/admin/js/CMInstance.js @@ -0,0 +1,41 @@ +function CMInstance(elem, options, events){ + if(!elem){ + return null; + } + + var codemirrorObj = null; + + var defaults = { + continuousScanning: 500, + mode: 'htmlmixed', + height: "40.2em", + tabMode: "shift", + indentUnit: 4, + lineNumbers: true, + lineWrapping: true, + readOnly: true + }; + + //overwrite defaults if neccesary + if(options){ + for(var j in options){ + if(options.hasOwnProperty(j)){ + defaults[j] = options[j]; + } + } + } + + //create CodeMirror instance + codemirrorObj = CodeMirror.fromTextArea(elem, defaults); + + //attach events + if(events instanceof Array ){ + for(var i=0; i 0 && widget_type.length > 0){ + widget_select.val(widget_type); + } + if (resources.length > 0 && widget_resources.length > 0){ + resources.val(widget_resources); + } + }(django.jQuery)); +} diff --git a/packages/smartsnippets/static/admin/js/SmartSnippets.Variables.js b/packages/smartsnippets/static/admin/js/SmartSnippets.Variables.js new file mode 100644 index 0000000..aebf9fc --- /dev/null +++ b/packages/smartsnippets/static/admin/js/SmartSnippets.Variables.js @@ -0,0 +1,421 @@ +(function ($) { + + /** + * This object provides helper functions for parsing a pasted smart snippet's code and auto populating the variable + * fields needed by that smart snippet. + * @type {Object} + */ + var LayoutParser = { + + /** + * Clear all added variables from a container + * @param jQuery container + */ + emptyContainer:function (container) { + container.children('.inline-related ').each(function (i, item) { + if (!$(item).hasClass('empty-form')) + $(item).remove(); + }); + }, + + /** + * Gets the standard variables container or the drop down one + * @param String variablesHolderType + * @return {*\jQuery} + */ + getContainer:function (variablesHolderType) { + var cx = null; + $('.inline-group').each(function (i, item) { + if (variablesHolderType == 'standard') { + + var header = $(item).children('h2').get(0); + if ($(header).text().toLowerCase() == 'standard variables') { + cx = $(item); + return; + } + + } else if (variablesHolderType == 'select') { + + var header = $(item).children('h2').get(0); + + if ($(header).text().toLowerCase() == 'drop down variables') { + cx = $(item); + return; + } + } + }); + + return cx; + }, + + getExistingStandardVariables:function (container) { + var fieldRows = container.children('.dynamic-variables'); + var existingVars = new Array(); + + fieldRows.each(function (i, row) { + var textField = $(row).find('.vTextField'); + var typeField = $(row).find('select'); + var name = textField.val(); + var type = typeField.val(); + + var typeDocId = typeField.attr('id'); + var obj = {name:name, type:type, typeDocId:typeDocId}; + existingVars.push(obj); + }); + + return existingVars; + }, + + getExistingSelectVariables:function (container) { + var fieldRows = container.children('.dynamic-variables-2'); + var existingVars = new Array(); + + fieldRows.each(function (i, row) { + var name = $(row).find('.field-name').find('.vTextField').val(); + var nameDocId = $(row).find('.field-name').find('.vTextField').attr('id'); + + var values = $(row).find('.field-choices').find('.vTextField').val(); + var valuesDocId = $(row).find('.field-choices').find('.vTextField').attr('id'); + + var obj = {name:name, values:values, valuesDocId:valuesDocId}; + + existingVars.push(obj); + }); + + return existingVars; + }, + + + groupExistingVars:function (existingVars, newVars, variablesType) { + var similarVars = []; + var updateVars = []; + var toBeDeletedVars = []; + + var similarFieldToCheck = (variablesType && variablesType.toLowerCase() == 'select' ? 'values' : 'type'); + + for (var i = 0; i < existingVars.length; i++) { + var toBeUpdated = false; + var updatedFieldValue = undefined; + var isSimilar = false; + for (var j = 0; j < newVars.length; j++) { + if (existingVars[i].name == newVars[j].varname && existingVars[i][similarFieldToCheck] == newVars[j][similarFieldToCheck]) { + isSimilar = true; + break; + } else if (existingVars[i].name == newVars[j].varname && existingVars[i][similarFieldToCheck] != newVars[j][similarFieldToCheck]) { + toBeUpdated = true; + updatedFieldValue = newVars[j][similarFieldToCheck]; + break; + } + } + + if (toBeUpdated) { + existingVars[i].updateWithValue = updatedFieldValue; + updateVars.push(existingVars[i]); + } else if (isSimilar) { + similarVars.push(existingVars[i]); + } else if (!toBeUpdated && !isSimilar) { + toBeDeletedVars.push(existingVars[i]); + } + } + + return { + similarVars:similarVars, + toUpdateVars:updateVars, + deleteVars:toBeDeletedVars + }; + }, + + findByVarName:function (arr, vName) { + var found = false; + $.each(arr, function (i, item) { + if (item.name == vName) { + found = item; + return; + } + }); + + return found; + }, + + markForDeletion:function (container, deletedVars) { + var rows = container.children('.inline-related'); + + var self = this; + $.each(rows, function (i, row) { + var varName = $(row).find('.field-name').find('.vTextField').val(); + var isFoundVar = self.findByVarName(deletedVars, varName); + + if (isFoundVar) { + var deleteBtn = $(row).find('a.inline-deletelink'); + if(deleteBtn.get(0)) { + //most likely variable was added from a previous paste or by the user so trigger the deletion here + deleteBtn.trigger('click'); + } else { + var deleteCheckbox = $(row).find('.delete').find('input[type=checkbox]'); + deleteCheckbox.attr('checked', 'checked'); + } + } + }); + }, + + updateVars:function (container, updatedVars, varsType) { + var rows = container.children('.inline-related'); + + var objFieldToUpdate = (varsType.toLowerCase() == 'select' ? 'valuesDocId' : 'typeDocId'); + + var self = this; + $.each(rows, function (i, row) { + var varName = $(row).find('.field-name').find('.vTextField').val(); + var isFoundVar = self.findByVarName(updatedVars, varName); + + if (isFoundVar) { + $('#'+ isFoundVar[objFieldToUpdate]).val(isFoundVar.updateWithValue) + } + }); + }, + + /** + * Find the "Add another Standard Variable" button and trigger a click event on it. Returns the div container + * holding form fields + * @param container + * @return {*|jQuery} + */ + clickAddNewFieldStd:function (container) { + + //count the number of already inserted vars here + //subtract 1 for the empty one present by default + var presentFieldsCount = container.children('.inline-related').length - 1; + + var addNewFieldBtn = $(container).children('div.add-row').find('a'); + addNewFieldBtn.trigger('click'); + + var addedField = $(container).children('.inline-related').last().prev(); + + addedField.attr('id', 'variables-' + presentFieldsCount); + + var textField = addedField.find('input.vTextField'); + $(textField).attr('id', 'id_variables-' + presentFieldsCount + '-name'); + $(textField).attr('name', 'variables-' + presentFieldsCount + '-name'); + + var textLabel = addedField.find('div.field-name').find('label'); + $(textLabel).attr('for', 'id_variables-' + presentFieldsCount + '-name'); + + var select = addedField.find('div.field-widget').find('select'); + $(select).attr('id', 'id_variables-' + presentFieldsCount + '-widget'); + $(select).attr('name', 'variables-' + presentFieldsCount + '-widget'); + + var selectLabel = addedField.find('div.field-widget').find('label'); + $(selectLabel).attr('for', 'id_variables-' + presentFieldsCount + '-widget') + + return addedField; + }, + + /** + * Find the "Add another Drop Down Variable" button and trigger a click event on it. Returns the div container + * holding form fields. There is really no difference at the moment between this and the clickAddNewFieldStd. + * The only reason for them to be separate is for expressiveness and future extensions. + * @param container + * @return {*|jQuery} + */ + clickAddNewFieldSelect:function (container) { + var addNewFieldBtn = $(container).children('div.add-row').find('a'); + addNewFieldBtn.trigger('click'); + + var addedField = $(container).children('.inline-related').last().prev(); + var inputFields = addedField.children('.vTextField'); + + var presentFieldsCount = container.children('.inline-related').length; + + $(inputFields[0]).attr('id', 'id_variables-2-' + presentFieldsCount + '-name'); + $(inputFields[0]).attr('name', 'variables-2-' + presentFieldsCount + '-name'); + + $(inputFields[1]).attr('id', 'id_variables-2-' + presentFieldsCount + '-choices'); + $(inputFields[1]).attr('name', 'variables-2-' + presentFieldsCount + '-choices'); + + return addedField; + }, + + /** + * Add a new standard variable in the container + * varNameObj = {varname: 'name', type: 'type'} + * @param varNameObj + * @param container + */ + addStdVar:function (varNameObj, container) { + var fieldCx = this.clickAddNewFieldStd(container); + $(fieldCx).find('input.vTextField').val(varNameObj.varname); + $(fieldCx).find('select').val(varNameObj.type); + }, + + /** + * Add a new drop down variable in the container + * varNameObj = {varname: 'name', type: 'type', values: 'value1,value2,value3'} + * @param varNameObj + * @param container + */ + + addSelectVar:function (varNameObj, container) { + var fieldCx = this.clickAddNewFieldSelect(container); + $(fieldCx).find('div.field-name').find('input.vTextField').val(varNameObj.varname); + $(fieldCx).find('div.field-choices').find('input.vTextField').val(varNameObj.values); + }, + + /** + * The following code will try to match everything that's within an html comment tag. It should look like this + * + * + * + * Where type could be anything from TextField, TextAreaField, MerlinField or ImageField + * Each variable is declared on a new line. + */ + extractVarnames:function (text) { + var regex = //gi; + var variablesSnippet = regex.exec(text); + var varNames = []; //hold the var names here + + if (variablesSnippet) { + var lines = variablesSnippet[1].split('\n'); //split the input in multiple lines + + $.each(lines, function (index, line) { + if ($.trim(line).length > 0) { + var vObj = {}; + var vDeclarationArr = line.split('='); + vObj.varname = $.trim(vDeclarationArr[0]); + + var type = $.trim(vDeclarationArr[1]); + if (type.toLowerCase().indexOf('select') != -1) { + var tmp = type.split('|'); + vObj.type = $.trim(tmp[0]); + vObj.values = vDeclarationArr[2] ? $.trim(vDeclarationArr[2]) : ''; + } else { + vObj.type = $.trim(vDeclarationArr[1]); + } + + varNames.push(vObj); + } + }); + } + return varNames; + }, + + groupNewVars:function (varsArr) { + var returnObj = {}; + returnObj.standard = new Array(); + returnObj.select = new Array(); + + $.each(varsArr, function (i, variable) { + if (variable.type.toLowerCase() == 'select') { + returnObj.select.push(variable); + } else { + returnObj.standard.push(variable); + } + }); + + return returnObj; + }, + + getOnlyToAddVars: function(groupedVars, newVars) { + var onlyToAdd = new Array(); + for (var i = 0; i < newVars.length; i++) { + var notInUpdates = true; + var notInSimilar = true; + + for(var j = 0; j < groupedVars.similarVars.length; j++) { + if(newVars[i].varname == groupedVars.similarVars[j].name) { + notInSimilar = false; + } + } + + for(var k = 0; k < groupedVars.toUpdateVars.length; k++) { + if(newVars[i].varname == groupedVars.toUpdateVars[k].name) { + notInUpdates = false; + } + } + + if(notInSimilar && notInUpdates) { + onlyToAdd.push(newVars[i]); + } + } + + return onlyToAdd; + }, + /** + * Given an array of objects with the following structure {varname: 'name', type: 'type', values: 'value1, + * value2,value3'} or varNameObj = {varname: 'name', type: 'type'} this function fill parse the array. + * + * @param varNamesArr + */ + populate:function (varNamesArr) { + var self = this; + if (varNamesArr.length > 0) { //don't do any mumbo jumbo if we have no varnames + + var groupedNewVars = self.groupNewVars(varNamesArr); + + var stdContainer = self.getContainer('standard'); + var selectContainer = self.getContainer('select'); + + var existingStdVars = self.getExistingStandardVariables(stdContainer); + var existingSelectVars = self.getExistingSelectVariables(selectContainer); + + var groupedExistingStdVars = self.groupExistingVars(existingStdVars, groupedNewVars.standard, 'standard'); + + if (existingStdVars.length > 0) { + self.markForDeletion(stdContainer, groupedExistingStdVars.deleteVars); + self.updateVars(stdContainer, groupedExistingStdVars.toUpdateVars, 'standard'); + } + + var groupedExistingSelectVars = self.groupExistingVars(existingSelectVars, groupedNewVars.select, 'select'); + if(existingSelectVars.length > 0) { + + self.markForDeletion(selectContainer, groupedExistingSelectVars.deleteVars); + self.updateVars(selectContainer, groupedExistingSelectVars.toUpdateVars, 'select'); + } + + var onlyToAddStdVars = self.getOnlyToAddVars(groupedExistingStdVars, groupedNewVars.standard); + var onlyToAddSelectVars = self.getOnlyToAddVars(groupedExistingSelectVars, groupedNewVars.select); + + + $.each(onlyToAddStdVars, function(i, vObj) { + self.addStdVar(vObj, stdContainer); + }); + + $.each(onlyToAddSelectVars, function(i, vObj) { + self.addSelectVar(vObj, selectContainer); + }); + } + } + }; + + $.updateSnippetVars = function(el){ + + //use a setTimeout to capture pasted text + setTimeout(function () { + + var checkboxes = django.jQuery('.delete input[type=checkbox]'); + django.jQuery.each(checkboxes, function(i, box) { + django.jQuery(this).attr('checked', false); + }); + + var text = django.jQuery(el).val(); + var varNames = LayoutParser.extractVarnames(text); + LayoutParser.populate(varNames); + }, 100); + }; + + + $(document).ready(function () { + var textArea = $('#id_template_code'); + + textArea.bind('paste', function (e) { + var el = $(this); + +// if ($.trim($(el).val()).length == 0) {//only when the area is empty + //use a setTimeout to capture pasted text + $.updateSnippetVars(el); +// } + }); + }); + +})(django.jQuery); diff --git a/packages/smartsnippets/static/admin/js/codemirror/codemirror.js b/packages/smartsnippets/static/admin/js/codemirror/codemirror.js new file mode 100644 index 0000000..ffe015c --- /dev/null +++ b/packages/smartsnippets/static/admin/js/codemirror/codemirror.js @@ -0,0 +1,5637 @@ +// CodeMirror version 3.13 +// +// CodeMirror is the only global var we claim +window.CodeMirror = (function() { + "use strict"; + + // BROWSER SNIFFING + + // Crude, but necessary to handle a number of hard-to-feature-detect + // bugs and behavior differences. + var gecko = /gecko\/\d/i.test(navigator.userAgent); + var ie = /MSIE \d/.test(navigator.userAgent); + var ie_lt8 = ie && (document.documentMode == null || document.documentMode < 8); + var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9); + var webkit = /WebKit\//.test(navigator.userAgent); + var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent); + var chrome = /Chrome\//.test(navigator.userAgent); + var opera = /Opera\//.test(navigator.userAgent); + var safari = /Apple Computer/.test(navigator.vendor); + var khtml = /KHTML\//.test(navigator.userAgent); + var mac_geLion = /Mac OS X 1\d\D([7-9]|\d\d)\D/.test(navigator.userAgent); + var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent); + var phantom = /PhantomJS/.test(navigator.userAgent); + + var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent); + // This is woefully incomplete. Suggestions for alternative methods welcome. + var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent); + var mac = ios || /Mac/.test(navigator.platform); + var windows = /windows/i.test(navigator.platform); + + var opera_version = opera && navigator.userAgent.match(/Version\/(\d*\.\d*)/); + if (opera_version) opera_version = Number(opera_version[1]); + // Some browsers use the wrong event properties to signal cmd/ctrl on OS X + var flipCtrlCmd = mac && (qtwebkit || opera && (opera_version == null || opera_version < 12.11)); + var captureMiddleClick = gecko || (ie && !ie_lt9); + + // Optimize some code when these features are not used + var sawReadOnlySpans = false, sawCollapsedSpans = false; + + // CONSTRUCTOR + + function CodeMirror(place, options) { + if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); + + this.options = options = options || {}; + // Determine effective options based on given values and defaults. + for (var opt in defaults) if (!options.hasOwnProperty(opt) && defaults.hasOwnProperty(opt)) + options[opt] = defaults[opt]; + setGuttersForLineNumbers(options); + + var docStart = typeof options.value == "string" ? 0 : options.value.first; + var display = this.display = makeDisplay(place, docStart); + display.wrapper.CodeMirror = this; + updateGutters(this); + if (options.autofocus && !mobile) focusInput(this); + + this.state = {keyMaps: [], + overlays: [], + modeGen: 0, + overwrite: false, focused: false, + suppressEdits: false, pasteIncoming: false, + draggingText: false, + highlight: new Delayed()}; + + themeChanged(this); + if (options.lineWrapping) + this.display.wrapper.className += " CodeMirror-wrap"; + + var doc = options.value; + if (typeof doc == "string") doc = new Doc(options.value, options.mode); + operation(this, attachDoc)(this, doc); + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie) setTimeout(bind(resetInput, this, true), 20); + + registerEventHandlers(this); + // IE throws unspecified error in certain cases, when + // trying to access activeElement before onload + var hasFocus; try { hasFocus = (document.activeElement == display.input); } catch(e) { } + if (hasFocus || (options.autofocus && !mobile)) setTimeout(bind(onFocus, this), 20); + else onBlur(this); + + operation(this, function() { + for (var opt in optionHandlers) + if (optionHandlers.propertyIsEnumerable(opt)) + optionHandlers[opt](this, options[opt], Init); + for (var i = 0; i < initHooks.length; ++i) initHooks[i](this); + })(); + } + + // DISPLAY CONSTRUCTOR + + function makeDisplay(place, docStart) { + var d = {}; + + var input = d.input = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none; font-size: 4px;"); + if (webkit) input.style.width = "1000px"; + else input.setAttribute("wrap", "off"); + // if border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) input.style.border = "1px solid black"; + input.setAttribute("autocorrect", "off"); input.setAttribute("autocapitalize", "off"); input.setAttribute("spellcheck", "false"); + + // Wraps and hides input textarea + d.inputDiv = elt("div", [input], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); + // The actual fake scrollbars. + d.scrollbarH = elt("div", [elt("div", null, null, "height: 1px")], "CodeMirror-hscrollbar"); + d.scrollbarV = elt("div", [elt("div", null, null, "width: 1px")], "CodeMirror-vscrollbar"); + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); + // DIVs containing the selection and the actual code + d.lineDiv = elt("div", null, "CodeMirror-code"); + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); + // Blinky cursor, and element used to ensure cursor fits at the end of a line + d.cursor = elt("div", "\u00a0", "CodeMirror-cursor"); + // Secondary cursor, shown when on a 'jump' in bi-directional text + d.otherCursor = elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor"); + // Used to measure text size + d.measure = elt("div", null, "CodeMirror-measure"); + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = elt("div", [d.measure, d.selectionDiv, d.lineDiv, d.cursor, d.otherCursor], + null, "position: relative; outline: none"); + // Moved around its parent to cover visible view + d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); + // Set to the height of the text, causes scrolling + d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); + // D is needed because behavior of elts with overflow: auto and padding is inconsistent across browsers + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerCutOff + "px; width: 1px;"); + // Will contain the gutters, if any + d.gutters = elt("div", null, "CodeMirror-gutters"); + d.lineGutter = null; + // Provides scrolling + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); + d.scroller.setAttribute("tabIndex", "-1"); + // The element in which the editor lives. + d.wrapper = elt("div", [d.inputDiv, d.scrollbarH, d.scrollbarV, + d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); + // Work around IE7 z-index bug + if (ie_lt8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } + if (place.appendChild) place.appendChild(d.wrapper); else place(d.wrapper); + + // Needed to hide big blue blinking cursor on Mobile Safari + if (ios) input.style.width = "0px"; + if (!webkit) d.scroller.draggable = true; + // Needed to handle Tab key in KHTML + if (khtml) { d.inputDiv.style.height = "1px"; d.inputDiv.style.position = "absolute"; } + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + else if (ie_lt8) d.scrollbarH.style.minWidth = d.scrollbarV.style.minWidth = "18px"; + + // Current visible range (may be bigger than the view window). + d.viewOffset = d.lastSizeC = 0; + d.showingFrom = d.showingTo = docStart; + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; + // See readInput and resetInput + d.prevInput = ""; + // Set to true when a non-horizontal-scrolling widget is added. As + // an optimization, widget aligning is skipped when d is false. + d.alignWidgets = false; + // Flag that indicates whether we currently expect input to appear + // (after some event like 'keypress' or 'input') and are polling + // intensively. + d.pollingFast = false; + // Self-resetting timeout for the poller + d.poll = new Delayed(); + + d.cachedCharWidth = d.cachedTextHeight = null; + d.measureLineCache = []; + d.measureLineCachePos = 0; + + // Tracks when resetInput has punted to just putting a short + // string instead of the (large) selection. + d.inaccurateSelection = false; + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null; + d.maxLineLength = 0; + d.maxLineChanged = false; + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; + + return d; + } + + // STATE UPDATES + + // Used to get the editor into a consistent state again when options change. + + function loadMode(cm) { + cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); + cm.doc.iter(function(line) { + if (line.stateAfter) line.stateAfter = null; + if (line.styles) line.styles = null; + }); + cm.doc.frontier = cm.doc.first; + startWorker(cm, 100); + cm.state.modeGen++; + if (cm.curOp) regChange(cm); + } + + function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + cm.display.wrapper.className += " CodeMirror-wrap"; + cm.display.sizer.style.minWidth = ""; + } else { + cm.display.wrapper.className = cm.display.wrapper.className.replace(" CodeMirror-wrap", ""); + computeMaxLength(cm); + } + estimateLineHeights(cm); + regChange(cm); + clearCaches(cm); + setTimeout(function(){updateScrollbars(cm);}, 100); + } + + function estimateHeight(cm) { + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); + return function(line) { + if (lineIsHidden(cm.doc, line)) + return 0; + else if (wrapping) + return (Math.ceil(line.text.length / perLine) || 1) * th; + else + return th; + }; + } + + function estimateLineHeights(cm) { + var doc = cm.doc, est = estimateHeight(cm); + doc.iter(function(line) { + var estHeight = est(line); + if (estHeight != line.height) updateLineHeight(line, estHeight); + }); + } + + function keyMapChanged(cm) { + var style = keyMap[cm.options.keyMap].style; + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-keymap-\S+/g, "") + + (style ? " cm-keymap-" + style : ""); + } + + function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); + clearCaches(cm); + } + + function guttersChanged(cm) { + updateGutters(cm); + regChange(cm); + setTimeout(function(){alignHorizontally(cm);}, 20); + } + + function updateGutters(cm) { + var gutters = cm.display.gutters, specs = cm.options.gutters; + removeChildren(gutters); + for (var i = 0; i < specs.length; ++i) { + var gutterClass = specs[i]; + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); + if (gutterClass == "CodeMirror-linenumbers") { + cm.display.lineGutter = gElt; + gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; + } + } + gutters.style.display = i ? "" : "none"; + } + + function lineLength(doc, line) { + if (line.height == 0) return 0; + var len = line.text.length, merged, cur = line; + while (merged = collapsedSpanAtStart(cur)) { + var found = merged.find(); + cur = getLine(doc, found.from.line); + len += found.from.ch - found.to.ch; + } + cur = line; + while (merged = collapsedSpanAtEnd(cur)) { + var found = merged.find(); + len -= cur.text.length - found.from.ch; + cur = getLine(doc, found.to.line); + len += cur.text.length - found.to.ch; + } + return len; + } + + function computeMaxLength(cm) { + var d = cm.display, doc = cm.doc; + d.maxLine = getLine(doc, doc.first); + d.maxLineLength = lineLength(doc, d.maxLine); + d.maxLineChanged = true; + doc.iter(function(line) { + var len = lineLength(doc, line); + if (len > d.maxLineLength) { + d.maxLineLength = len; + d.maxLine = line; + } + }); + } + + // Make sure the gutters options contains the element + // "CodeMirror-linenumbers" when the lineNumbers option is true. + function setGuttersForLineNumbers(options) { + var found = false; + for (var i = 0; i < options.gutters.length; ++i) { + if (options.gutters[i] == "CodeMirror-linenumbers") { + if (options.lineNumbers) found = true; + else options.gutters.splice(i--, 1); + } + } + if (!found && options.lineNumbers) + options.gutters.push("CodeMirror-linenumbers"); + } + + // SCROLLBARS + + // Re-synchronize the fake scrollbars with the actual size of the + // content. Optionally force a scrollTop. + function updateScrollbars(cm) { + var d = cm.display, docHeight = cm.doc.height; + var totalHeight = docHeight + paddingVert(d); + d.sizer.style.minHeight = d.heightForcer.style.top = totalHeight + "px"; + d.gutters.style.height = Math.max(totalHeight, d.scroller.clientHeight - scrollerCutOff) + "px"; + var scrollHeight = Math.max(totalHeight, d.scroller.scrollHeight); + var needsH = d.scroller.scrollWidth > d.scroller.clientWidth; + var needsV = scrollHeight > d.scroller.clientHeight; + if (needsV) { + d.scrollbarV.style.display = "block"; + d.scrollbarV.style.bottom = needsH ? scrollbarWidth(d.measure) + "px" : "0"; + d.scrollbarV.firstChild.style.height = + (scrollHeight - d.scroller.clientHeight + d.scrollbarV.clientHeight) + "px"; + } else d.scrollbarV.style.display = ""; + if (needsH) { + d.scrollbarH.style.display = "block"; + d.scrollbarH.style.right = needsV ? scrollbarWidth(d.measure) + "px" : "0"; + d.scrollbarH.firstChild.style.width = + (d.scroller.scrollWidth - d.scroller.clientWidth + d.scrollbarH.clientWidth) + "px"; + } else d.scrollbarH.style.display = ""; + if (needsH && needsV) { + d.scrollbarFiller.style.display = "block"; + d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = scrollbarWidth(d.measure) + "px"; + } else d.scrollbarFiller.style.display = ""; + if (needsH && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block"; + d.gutterFiller.style.height = scrollbarWidth(d.measure) + "px"; + d.gutterFiller.style.width = d.gutters.offsetWidth + "px"; + } else d.gutterFiller.style.display = ""; + + if (mac_geLion && scrollbarWidth(d.measure) === 0) + d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = mac_geMountainLion ? "18px" : "12px"; + } + + function visibleLines(display, doc, viewPort) { + var top = display.scroller.scrollTop, height = display.wrapper.clientHeight; + if (typeof viewPort == "number") top = viewPort; + else if (viewPort) {top = viewPort.top; height = viewPort.bottom - viewPort.top;} + top = Math.floor(top - paddingTop(display)); + var bottom = Math.ceil(top + height); + return {from: lineAtHeight(doc, top), to: lineAtHeight(doc, bottom)}; + } + + // LINE NUMBERS + + function alignHorizontally(cm) { + var display = cm.display; + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; + var gutterW = display.gutters.offsetWidth, l = comp + "px"; + for (var n = display.lineDiv.firstChild; n; n = n.nextSibling) if (n.alignable) { + for (var i = 0, a = n.alignable; i < a.length; ++i) a[i].style.left = l; + } + if (cm.options.fixedGutter) + display.gutters.style.left = (comp + gutterW) + "px"; + } + + function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) return false; + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; + if (last.length != display.lineNumChars) { + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")); + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; + display.lineGutter.style.width = ""; + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding); + display.lineNumWidth = display.lineNumInnerWidth + padding; + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; + display.lineGutter.style.width = display.lineNumWidth + "px"; + return true; + } + return false; + } + + function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)); + } + function compensateForHScroll(display) { + return getRect(display.scroller).left - getRect(display.sizer).left; + } + + // DISPLAY DRAWING + + function updateDisplay(cm, changes, viewPort) { + var oldFrom = cm.display.showingFrom, oldTo = cm.display.showingTo, updated; + var visible = visibleLines(cm.display, cm.doc, viewPort); + for (;;) { + if (!updateDisplayInner(cm, changes, visible)) break; + updated = true; + updateSelection(cm); + updateScrollbars(cm); + + // Clip forced viewport to actual scrollable area + if (viewPort) + viewPort = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, + typeof viewPort == "number" ? viewPort : viewPort.top); + visible = visibleLines(cm.display, cm.doc, viewPort); + if (visible.from >= cm.display.showingFrom && visible.to <= cm.display.showingTo) + break; + changes = []; + } + + if (updated) { + signalLater(cm, "update", cm); + if (cm.display.showingFrom != oldFrom || cm.display.showingTo != oldTo) + signalLater(cm, "viewportChange", cm, cm.display.showingFrom, cm.display.showingTo); + } + return updated; + } + + // Uses a set of changes plus the current scroll position to + // determine which DOM updates have to be made, and makes the + // updates. + function updateDisplayInner(cm, changes, visible) { + var display = cm.display, doc = cm.doc; + if (!display.wrapper.clientWidth) { + display.showingFrom = display.showingTo = doc.first; + display.viewOffset = 0; + return; + } + + // Bail out if the visible area is already rendered and nothing changed. + if (changes.length == 0 && + visible.from > display.showingFrom && visible.to < display.showingTo) + return; + + if (maybeUpdateLineNumberWidth(cm)) + changes = [{from: doc.first, to: doc.first + doc.size}]; + var gutterW = display.sizer.style.marginLeft = display.gutters.offsetWidth + "px"; + display.scrollbarH.style.left = cm.options.fixedGutter ? gutterW : "0"; + + // Used to determine which lines need their line numbers updated + var positionsChangedFrom = Infinity; + if (cm.options.lineNumbers) + for (var i = 0; i < changes.length; ++i) + if (changes[i].diff) { positionsChangedFrom = changes[i].from; break; } + + var end = doc.first + doc.size; + var from = Math.max(visible.from - cm.options.viewportMargin, doc.first); + var to = Math.min(end, visible.to + cm.options.viewportMargin); + if (display.showingFrom < from && from - display.showingFrom < 20) from = Math.max(doc.first, display.showingFrom); + if (display.showingTo > to && display.showingTo - to < 20) to = Math.min(end, display.showingTo); + if (sawCollapsedSpans) { + from = lineNo(visualLine(doc, getLine(doc, from))); + while (to < end && lineIsHidden(doc, getLine(doc, to))) ++to; + } + + // Create a range of theoretically intact lines, and punch holes + // in that using the change info. + var intact = [{from: Math.max(display.showingFrom, doc.first), + to: Math.min(display.showingTo, end)}]; + if (intact[0].from >= intact[0].to) intact = []; + else intact = computeIntact(intact, changes); + // When merged lines are present, we might have to reduce the + // intact ranges because changes in continued fragments of the + // intact lines do require the lines to be redrawn. + if (sawCollapsedSpans) + for (var i = 0; i < intact.length; ++i) { + var range = intact[i], merged; + while (merged = collapsedSpanAtEnd(getLine(doc, range.to - 1))) { + var newTo = merged.find().from.line; + if (newTo > range.from) range.to = newTo; + else { intact.splice(i--, 1); break; } + } + } + + // Clip off the parts that won't be visible + var intactLines = 0; + for (var i = 0; i < intact.length; ++i) { + var range = intact[i]; + if (range.from < from) range.from = from; + if (range.to > to) range.to = to; + if (range.from >= range.to) intact.splice(i--, 1); + else intactLines += range.to - range.from; + } + if (intactLines == to - from && from == display.showingFrom && to == display.showingTo) { + updateViewOffset(cm); + return; + } + intact.sort(function(a, b) {return a.from - b.from;}); + + // Avoid crashing on IE's "unspecified error" when in iframes + try { + var focused = document.activeElement; + } catch(e) {} + if (intactLines < (to - from) * .7) display.lineDiv.style.display = "none"; + patchDisplay(cm, from, to, intact, positionsChangedFrom); + display.lineDiv.style.display = ""; + if (focused && document.activeElement != focused && focused.offsetHeight) focused.focus(); + + var different = from != display.showingFrom || to != display.showingTo || + display.lastSizeC != display.wrapper.clientHeight; + // This is just a bogus formula that detects when the editor is + // resized or the font size changes. + if (different) display.lastSizeC = display.wrapper.clientHeight; + display.showingFrom = from; display.showingTo = to; + startWorker(cm, 100); + + var prevBottom = display.lineDiv.offsetTop; + for (var node = display.lineDiv.firstChild, height; node; node = node.nextSibling) if (node.lineObj) { + if (ie_lt8) { + var bot = node.offsetTop + node.offsetHeight; + height = bot - prevBottom; + prevBottom = bot; + } else { + var box = getRect(node); + height = box.bottom - box.top; + } + var diff = node.lineObj.height - height; + if (height < 2) height = textHeight(display); + if (diff > .001 || diff < -.001) { + updateLineHeight(node.lineObj, height); + var widgets = node.lineObj.widgets; + if (widgets) for (var i = 0; i < widgets.length; ++i) + widgets[i].height = widgets[i].node.offsetHeight; + } + } + updateViewOffset(cm); + + return true; + } + + function updateViewOffset(cm) { + var off = cm.display.viewOffset = heightAtLine(cm, getLine(cm.doc, cm.display.showingFrom)); + // Position the mover div to align with the current virtual scroll position + cm.display.mover.style.top = off + "px"; + } + + function computeIntact(intact, changes) { + for (var i = 0, l = changes.length || 0; i < l; ++i) { + var change = changes[i], intact2 = [], diff = change.diff || 0; + for (var j = 0, l2 = intact.length; j < l2; ++j) { + var range = intact[j]; + if (change.to <= range.from && change.diff) { + intact2.push({from: range.from + diff, to: range.to + diff}); + } else if (change.to <= range.from || change.from >= range.to) { + intact2.push(range); + } else { + if (change.from > range.from) + intact2.push({from: range.from, to: change.from}); + if (change.to < range.to) + intact2.push({from: change.to + diff, to: range.to + diff}); + } + } + intact = intact2; + } + return intact; + } + + function getDimensions(cm) { + var d = cm.display, left = {}, width = {}; + for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + left[cm.options.gutters[i]] = n.offsetLeft; + width[cm.options.gutters[i]] = n.offsetWidth; + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth}; + } + + function patchDisplay(cm, from, to, intact, updateNumbersFrom) { + var dims = getDimensions(cm); + var display = cm.display, lineNumbers = cm.options.lineNumbers; + if (!intact.length && (!webkit || !cm.display.currentWheelTarget)) + removeChildren(display.lineDiv); + var container = display.lineDiv, cur = container.firstChild; + + function rm(node) { + var next = node.nextSibling; + if (webkit && mac && cm.display.currentWheelTarget == node) { + node.style.display = "none"; + node.lineObj = null; + } else { + node.parentNode.removeChild(node); + } + return next; + } + + var nextIntact = intact.shift(), lineN = from; + cm.doc.iter(from, to, function(line) { + if (nextIntact && nextIntact.to == lineN) nextIntact = intact.shift(); + if (lineIsHidden(cm.doc, line)) { + if (line.height != 0) updateLineHeight(line, 0); + if (line.widgets && cur.previousSibling) for (var i = 0; i < line.widgets.length; ++i) + if (line.widgets[i].showIfHidden) { + var prev = cur.previousSibling; + if (/pre/i.test(prev.nodeName)) { + var wrap = elt("div", null, null, "position: relative"); + prev.parentNode.replaceChild(wrap, prev); + wrap.appendChild(prev); + prev = wrap; + } + var wnode = prev.appendChild(elt("div", [line.widgets[i].node], "CodeMirror-linewidget")); + positionLineWidget(line.widgets[i], wnode, prev, dims); + } + } else if (nextIntact && nextIntact.from <= lineN && nextIntact.to > lineN) { + // This line is intact. Skip to the actual node. Update its + // line number if needed. + while (cur.lineObj != line) cur = rm(cur); + if (lineNumbers && updateNumbersFrom <= lineN && cur.lineNumber) + setTextContent(cur.lineNumber, lineNumberFor(cm.options, lineN)); + cur = cur.nextSibling; + } else { + // For lines with widgets, make an attempt to find and reuse + // the existing element, so that widgets aren't needlessly + // removed and re-inserted into the dom + if (line.widgets) for (var j = 0, search = cur, reuse; search && j < 20; ++j, search = search.nextSibling) + if (search.lineObj == line && /div/i.test(search.nodeName)) { reuse = search; break; } + // This line needs to be generated. + var lineNode = buildLineElement(cm, line, lineN, dims, reuse); + if (lineNode != reuse) { + container.insertBefore(lineNode, cur); + } else { + while (cur != reuse) cur = rm(cur); + cur = cur.nextSibling; + } + + lineNode.lineObj = line; + } + ++lineN; + }); + while (cur) cur = rm(cur); + } + + function buildLineElement(cm, line, lineNo, dims, reuse) { + var lineElement = lineContent(cm, line); + var markers = line.gutterMarkers, display = cm.display, wrap; + + if (!cm.options.lineNumbers && !markers && !line.bgClass && !line.wrapClass && !line.widgets) + return lineElement; + + // Lines with gutter elements, widgets or a background class need + // to be wrapped again, and have the extra elements added to the + // wrapper div + + if (reuse) { + reuse.alignable = null; + var isOk = true, widgetsSeen = 0; + for (var n = reuse.firstChild, next; n; n = next) { + next = n.nextSibling; + if (!/\bCodeMirror-linewidget\b/.test(n.className)) { + reuse.removeChild(n); + } else { + for (var i = 0, first = true; i < line.widgets.length; ++i) { + var widget = line.widgets[i], isFirst = false; + if (!widget.above) { isFirst = first; first = false; } + if (widget.node == n.firstChild) { + positionLineWidget(widget, n, reuse, dims); + ++widgetsSeen; + if (isFirst) reuse.insertBefore(lineElement, n); + break; + } + } + if (i == line.widgets.length) { isOk = false; break; } + } + } + if (isOk && widgetsSeen == line.widgets.length) { + wrap = reuse; + reuse.className = line.wrapClass || ""; + } + } + if (!wrap) { + wrap = elt("div", null, line.wrapClass, "position: relative"); + wrap.appendChild(lineElement); + } + // Kludge to make sure the styled element lies behind the selection (by z-index) + if (line.bgClass) + wrap.insertBefore(elt("div", null, line.bgClass + " CodeMirror-linebackground"), wrap.firstChild); + if (cm.options.lineNumbers || markers) { + var gutterWrap = wrap.insertBefore(elt("div", null, null, "position: absolute; left: " + + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"), + wrap.firstChild); + if (cm.options.fixedGutter) (wrap.alignable || (wrap.alignable = [])).push(gutterWrap); + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + wrap.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineNo), + "CodeMirror-linenumber CodeMirror-gutter-elt", + "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + + display.lineNumInnerWidth + "px")); + if (markers) + for (var k = 0; k < cm.options.gutters.length; ++k) { + var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; + if (found) + gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + + dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); + } + } + if (ie_lt8) wrap.style.zIndex = 2; + if (line.widgets && wrap != reuse) for (var i = 0, ws = line.widgets; i < ws.length; ++i) { + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); + positionLineWidget(widget, node, wrap, dims); + if (widget.above) + wrap.insertBefore(node, cm.options.lineNumbers && line.height != 0 ? gutterWrap : lineElement); + else + wrap.appendChild(node); + signalLater(widget, "redraw"); + } + return wrap; + } + + function positionLineWidget(widget, node, wrap, dims) { + if (widget.noHScroll) { + (wrap.alignable || (wrap.alignable = [])).push(node); + var width = dims.wrapperWidth; + node.style.left = dims.fixedPos + "px"; + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth; + node.style.paddingLeft = dims.gutterTotalWidth + "px"; + } + node.style.width = width + "px"; + } + if (widget.coverGutter) { + node.style.zIndex = 5; + node.style.position = "relative"; + if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; + } + } + + // SELECTION / CURSOR + + function updateSelection(cm) { + var display = cm.display; + var collapsed = posEq(cm.doc.sel.from, cm.doc.sel.to); + if (collapsed || cm.options.showCursorWhenSelecting) + updateSelectionCursor(cm); + else + display.cursor.style.display = display.otherCursor.style.display = "none"; + if (!collapsed) + updateSelectionRange(cm); + else + display.selectionDiv.style.display = "none"; + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + var headPos = cursorCoords(cm, cm.doc.sel.head, "div"); + var wrapOff = getRect(display.wrapper), lineOff = getRect(display.lineDiv); + display.inputDiv.style.top = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)) + "px"; + display.inputDiv.style.left = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)) + "px"; + } + } + + // No selection, plain cursor + function updateSelectionCursor(cm) { + var display = cm.display, pos = cursorCoords(cm, cm.doc.sel.head, "div"); + display.cursor.style.left = pos.left + "px"; + display.cursor.style.top = pos.top + "px"; + display.cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; + display.cursor.style.display = ""; + + if (pos.other) { + display.otherCursor.style.display = ""; + display.otherCursor.style.left = pos.other.left + "px"; + display.otherCursor.style.top = pos.other.top + "px"; + display.otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; + } else { display.otherCursor.style.display = "none"; } + } + + // Highlight selection + function updateSelectionRange(cm) { + var display = cm.display, doc = cm.doc, sel = cm.doc.sel; + var fragment = document.createDocumentFragment(); + var clientWidth = display.lineSpace.offsetWidth, pl = paddingLeft(cm.display); + + function add(left, top, width, bottom) { + if (top < 0) top = 0; + fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + + "px; top: " + top + "px; width: " + (width == null ? clientWidth - left : width) + + "px; height: " + (bottom - top) + "px")); + } + + function drawForLine(line, fromArg, toArg, retTop) { + var lineObj = getLine(doc, line); + var lineLen = lineObj.text.length, rVal = retTop ? Infinity : -Infinity; + function coords(ch) { + return charCoords(cm, Pos(line, ch), "div", lineObj); + } + + iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { + var leftPos = coords(from), rightPos, left, right; + if (from == to) { + rightPos = leftPos; + left = right = leftPos.left; + } else { + rightPos = coords(to - 1); + if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } + left = leftPos.left; + right = rightPos.right; + } + if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part + add(left, leftPos.top, null, leftPos.bottom); + left = pl; + if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); + } + if (toArg == null && to == lineLen) right = clientWidth; + if (fromArg == null && from == 0) left = pl; + rVal = retTop ? Math.min(rightPos.top, rVal) : Math.max(rightPos.bottom, rVal); + if (left < pl + 1) left = pl; + add(left, rightPos.top, right - left, rightPos.bottom); + }); + return rVal; + } + + if (sel.from.line == sel.to.line) { + drawForLine(sel.from.line, sel.from.ch, sel.to.ch); + } else { + var fromObj = getLine(doc, sel.from.line); + var cur = fromObj, merged, path = [sel.from.line, sel.from.ch], singleLine; + while (merged = collapsedSpanAtEnd(cur)) { + var found = merged.find(); + path.push(found.from.ch, found.to.line, found.to.ch); + if (found.to.line == sel.to.line) { + path.push(sel.to.ch); + singleLine = true; + break; + } + cur = getLine(doc, found.to.line); + } + + // This is a single, merged line + if (singleLine) { + for (var i = 0; i < path.length; i += 3) + drawForLine(path[i], path[i+1], path[i+2]); + } else { + var middleTop, middleBot, toObj = getLine(doc, sel.to.line); + if (sel.from.ch) + // Draw the first line of selection. + middleTop = drawForLine(sel.from.line, sel.from.ch, null, false); + else + // Simply include it in the middle block. + middleTop = heightAtLine(cm, fromObj) - display.viewOffset; + + if (!sel.to.ch) + middleBot = heightAtLine(cm, toObj) - display.viewOffset; + else + middleBot = drawForLine(sel.to.line, collapsedSpanAtStart(toObj) ? null : 0, sel.to.ch, true); + + if (middleTop < middleBot) add(pl, middleTop, null, middleBot); + } + } + + removeChildrenAndAdd(display.selectionDiv, fragment); + display.selectionDiv.style.display = ""; + } + + // Cursor-blinking + function restartBlink(cm) { + if (!cm.state.focused) return; + var display = cm.display; + clearInterval(display.blinker); + var on = true; + display.cursor.style.visibility = display.otherCursor.style.visibility = ""; + display.blinker = setInterval(function() { + display.cursor.style.visibility = display.otherCursor.style.visibility = (on = !on) ? "" : "hidden"; + }, cm.options.cursorBlinkRate); + } + + // HIGHLIGHT WORKER + + function startWorker(cm, time) { + if (cm.doc.mode.startState && cm.doc.frontier < cm.display.showingTo) + cm.state.highlight.set(time, bind(highlightWorker, cm)); + } + + function highlightWorker(cm) { + var doc = cm.doc; + if (doc.frontier < doc.first) doc.frontier = doc.first; + if (doc.frontier >= cm.display.showingTo) return; + var end = +new Date + cm.options.workTime; + var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); + var changed = [], prevChange; + doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.showingTo + 500), function(line) { + if (doc.frontier >= cm.display.showingFrom) { // Visible + var oldStyles = line.styles; + line.styles = highlightLine(cm, line, state); + var ischange = !oldStyles || oldStyles.length != line.styles.length; + for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; + if (ischange) { + if (prevChange && prevChange.end == doc.frontier) prevChange.end++; + else changed.push(prevChange = {start: doc.frontier, end: doc.frontier + 1}); + } + line.stateAfter = copyState(doc.mode, state); + } else { + processLine(cm, line, state); + line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; + } + ++doc.frontier; + if (+new Date > end) { + startWorker(cm, cm.options.workDelay); + return true; + } + }); + if (changed.length) + operation(cm, function() { + for (var i = 0; i < changed.length; ++i) + regChange(this, changed[i].start, changed[i].end); + })(); + } + + // Finds the line to start with when starting a parse. Tries to + // find a line with a stateAfter, so that it can start with a + // valid state. If that fails, it returns the line with the + // smallest indentation, which tends to need the least context to + // parse correctly. + function findStartLine(cm, n) { + var minindent, minline, doc = cm.doc; + for (var search = n, lim = n - 100; search > lim; --search) { + if (search <= doc.first) return doc.first; + var line = getLine(doc, search - 1); + if (line.stateAfter) return search; + var indented = countColumn(line.text, null, cm.options.tabSize); + if (minline == null || minindent > indented) { + minline = search - 1; + minindent = indented; + } + } + return minline; + } + + function getStateBefore(cm, n) { + var doc = cm.doc, display = cm.display; + if (!doc.mode.startState) return true; + var pos = findStartLine(cm, n), state = pos > doc.first && getLine(doc, pos-1).stateAfter; + if (!state) state = startState(doc.mode); + else state = copyState(doc.mode, state); + doc.iter(pos, n, function(line) { + processLine(cm, line, state); + var save = pos == n - 1 || pos % 5 == 0 || pos >= display.showingFrom && pos < display.showingTo; + line.stateAfter = save ? copyState(doc.mode, state) : null; + ++pos; + }); + return state; + } + + // POSITION MEASUREMENT + + function paddingTop(display) {return display.lineSpace.offsetTop;} + function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} + function paddingLeft(display) { + var e = removeChildrenAndAdd(display.measure, elt("pre", null, null, "text-align: left")).appendChild(elt("span", "x")); + return e.offsetLeft; + } + + function measureChar(cm, line, ch, data) { + var dir = -1; + data = data || measureLine(cm, line); + + for (var pos = ch;; pos += dir) { + var r = data[pos]; + if (r) break; + if (dir < 0 && pos == 0) dir = 1; + } + return {left: pos < ch ? r.right : r.left, + right: pos > ch ? r.left : r.right, + top: r.top, bottom: r.bottom}; + } + + function findCachedMeasurement(cm, line) { + var cache = cm.display.measureLineCache; + for (var i = 0; i < cache.length; ++i) { + var memo = cache[i]; + if (memo.text == line.text && memo.markedSpans == line.markedSpans && + cm.display.scroller.clientWidth == memo.width && + memo.classes == line.textClass + "|" + line.bgClass + "|" + line.wrapClass) + return memo; + } + } + + function clearCachedMeasurement(cm, line) { + var exists = findCachedMeasurement(cm, line); + if (exists) exists.text = exists.measure = exists.markedSpans = null; + } + + function measureLine(cm, line) { + // First look in the cache + var cached = findCachedMeasurement(cm, line); + if (cached) return cached.measure; + + // Failing that, recompute and store result in cache + var measure = measureLineInner(cm, line); + var cache = cm.display.measureLineCache; + var memo = {text: line.text, width: cm.display.scroller.clientWidth, + markedSpans: line.markedSpans, measure: measure, + classes: line.textClass + "|" + line.bgClass + "|" + line.wrapClass}; + if (cache.length == 16) cache[++cm.display.measureLineCachePos % 16] = memo; + else cache.push(memo); + return measure; + } + + function measureLineInner(cm, line) { + var display = cm.display, measure = emptyArray(line.text.length); + var pre = lineContent(cm, line, measure); + + // IE does not cache element positions of inline elements between + // calls to getBoundingClientRect. This makes the loop below, + // which gathers the positions of all the characters on the line, + // do an amount of layout work quadratic to the number of + // characters. When line wrapping is off, we try to improve things + // by first subdividing the line into a bunch of inline blocks, so + // that IE can reuse most of the layout information from caches + // for those blocks. This does interfere with line wrapping, so it + // doesn't work when wrapping is on, but in that case the + // situation is slightly better, since IE does cache line-wrapping + // information and only recomputes per-line. + if (ie && !ie_lt8 && !cm.options.lineWrapping && pre.childNodes.length > 100) { + var fragment = document.createDocumentFragment(); + var chunk = 10, n = pre.childNodes.length; + for (var i = 0, chunks = Math.ceil(n / chunk); i < chunks; ++i) { + var wrap = elt("div", null, null, "display: inline-block"); + for (var j = 0; j < chunk && n; ++j) { + wrap.appendChild(pre.firstChild); + --n; + } + fragment.appendChild(wrap); + } + pre.appendChild(fragment); + } + + removeChildrenAndAdd(display.measure, pre); + + var outer = getRect(display.lineDiv); + var vranges = [], data = emptyArray(line.text.length), maxBot = pre.offsetHeight; + // Work around an IE7/8 bug where it will sometimes have randomly + // replaced our pre with a clone at this point. + if (ie_lt9 && display.measure.first != pre) + removeChildrenAndAdd(display.measure, pre); + + for (var i = 0, cur; i < measure.length; ++i) if (cur = measure[i]) { + var size = getRect(cur); + var top = Math.max(0, size.top - outer.top), bot = Math.min(size.bottom - outer.top, maxBot); + for (var j = 0; j < vranges.length; j += 2) { + var rtop = vranges[j], rbot = vranges[j+1]; + if (rtop > bot || rbot < top) continue; + if (rtop <= top && rbot >= bot || + top <= rtop && bot >= rbot || + Math.min(bot, rbot) - Math.max(top, rtop) >= (bot - top) >> 1) { + vranges[j] = Math.min(top, rtop); + vranges[j+1] = Math.max(bot, rbot); + break; + } + } + if (j == vranges.length) vranges.push(top, bot); + var right = size.right; + if (cur.measureRight) right = getRect(cur.measureRight).left; + data[i] = {left: size.left - outer.left, right: right - outer.left, top: j}; + } + for (var i = 0, cur; i < data.length; ++i) if (cur = data[i]) { + var vr = cur.top; + cur.top = vranges[vr]; cur.bottom = vranges[vr+1]; + } + + return data; + } + + function measureLineWidth(cm, line) { + var hasBadSpan = false; + if (line.markedSpans) for (var i = 0; i < line.markedSpans; ++i) { + var sp = line.markedSpans[i]; + if (sp.collapsed && (sp.to == null || sp.to == line.text.length)) hasBadSpan = true; + } + var cached = !hasBadSpan && findCachedMeasurement(cm, line); + if (cached) return measureChar(cm, line, line.text.length, cached.measure).right; + + var pre = lineContent(cm, line); + var end = pre.appendChild(zeroWidthElement(cm.display.measure)); + removeChildrenAndAdd(cm.display.measure, pre); + return getRect(end).right - getRect(cm.display.lineDiv).left; + } + + function clearCaches(cm) { + cm.display.measureLineCache.length = cm.display.measureLineCachePos = 0; + cm.display.cachedCharWidth = cm.display.cachedTextHeight = null; + if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; + cm.display.lineNumChars = null; + } + + // Context is one of "line", "div" (display.lineDiv), "local"/null (editor), or "page" + function intoCoordSystem(cm, lineObj, rect, context) { + if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { + var size = widgetHeight(lineObj.widgets[i]); + rect.top += size; rect.bottom += size; + } + if (context == "line") return rect; + if (!context) context = "local"; + var yOff = heightAtLine(cm, lineObj); + if (context != "local") yOff -= cm.display.viewOffset; + if (context == "page") { + var lOff = getRect(cm.display.lineSpace); + yOff += lOff.top + (window.pageYOffset || (document.documentElement || document.body).scrollTop); + var xOff = lOff.left + (window.pageXOffset || (document.documentElement || document.body).scrollLeft); + rect.left += xOff; rect.right += xOff; + } + rect.top += yOff; rect.bottom += yOff; + return rect; + } + + // Context may be "window", "page", "div", or "local"/null + // Result is in "div" coords + function fromCoordSystem(cm, coords, context) { + if (context == "div") return coords; + var left = coords.left, top = coords.top; + if (context == "page") { + left -= window.pageXOffset || (document.documentElement || document.body).scrollLeft; + top -= window.pageYOffset || (document.documentElement || document.body).scrollTop; + } + var lineSpaceBox = getRect(cm.display.lineSpace); + left -= lineSpaceBox.left; + top -= lineSpaceBox.top; + if (context == "local" || !context) { + var editorBox = getRect(cm.display.wrapper); + left += editorBox.left; + top += editorBox.top; + } + return {left: left, top: top}; + } + + function charCoords(cm, pos, context, lineObj) { + if (!lineObj) lineObj = getLine(cm.doc, pos.line); + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch), context); + } + + function cursorCoords(cm, pos, context, lineObj, measurement) { + lineObj = lineObj || getLine(cm.doc, pos.line); + if (!measurement) measurement = measureLine(cm, lineObj); + function get(ch, right) { + var m = measureChar(cm, lineObj, ch, measurement); + if (right) m.left = m.right; else m.right = m.left; + return intoCoordSystem(cm, lineObj, m, context); + } + function getBidi(ch, partPos) { + var part = order[partPos], right = part.level % 2; + if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { + part = order[--partPos]; + ch = bidiRight(part) - (part.level % 2 ? 0 : 1); + right = true; + } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { + part = order[++partPos]; + ch = bidiLeft(part) - part.level % 2; + right = false; + } + if (right && ch == part.to && ch > part.from) return get(ch - 1); + return get(ch, right); + } + var order = getOrder(lineObj), ch = pos.ch; + if (!order) return get(ch); + var partPos = getBidiPartAt(order, ch); + var val = getBidi(ch, partPos); + if (bidiOther != null) val.other = getBidi(ch, bidiOther); + return val; + } + + function PosMaybeOutside(line, ch, outside) { + var pos = new Pos(line, ch); + if (outside) pos.outside = true; + return pos; + } + + // Coords must be lineSpace-local + function coordsChar(cm, x, y) { + var doc = cm.doc; + y += cm.display.viewOffset; + if (y < 0) return PosMaybeOutside(doc.first, 0, true); + var lineNo = lineAtHeight(doc, y), last = doc.first + doc.size - 1; + if (lineNo > last) + return PosMaybeOutside(doc.first + doc.size - 1, getLine(doc, last).text.length, true); + if (x < 0) x = 0; + + for (;;) { + var lineObj = getLine(doc, lineNo); + var found = coordsCharInner(cm, lineObj, lineNo, x, y); + var merged = collapsedSpanAtEnd(lineObj); + var mergedPos = merged && merged.find(); + if (merged && found.ch >= mergedPos.from.ch) + lineNo = mergedPos.to.line; + else + return found; + } + } + + function coordsCharInner(cm, lineObj, lineNo, x, y) { + var innerOff = y - heightAtLine(cm, lineObj); + var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; + var measurement = measureLine(cm, lineObj); + + function getX(ch) { + var sp = cursorCoords(cm, Pos(lineNo, ch), "line", + lineObj, measurement); + wrongLine = true; + if (innerOff > sp.bottom) return sp.left - adjust; + else if (innerOff < sp.top) return sp.left + adjust; + else wrongLine = false; + return sp.left; + } + + var bidi = getOrder(lineObj), dist = lineObj.text.length; + var from = lineLeft(lineObj), to = lineRight(lineObj); + var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; + + if (x > toX) return PosMaybeOutside(lineNo, to, toOutside); + // Do a binary search between these bounds. + for (;;) { + if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { + var after = x - fromX < toX - x, ch = after ? from : to; + while (isExtendingChar.test(lineObj.text.charAt(ch))) ++ch; + var pos = PosMaybeOutside(lineNo, ch, after ? fromOutside : toOutside); + pos.after = after; + return pos; + } + var step = Math.ceil(dist / 2), middle = from + step; + if (bidi) { + middle = from; + for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); + } + var middleX = getX(middle); + if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} + else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} + } + } + + var measureText; + function textHeight(display) { + if (display.cachedTextHeight != null) return display.cachedTextHeight; + if (measureText == null) { + measureText = elt("pre"); + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (var i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")); + measureText.appendChild(elt("br")); + } + measureText.appendChild(document.createTextNode("x")); + } + removeChildrenAndAdd(display.measure, measureText); + var height = measureText.offsetHeight / 50; + if (height > 3) display.cachedTextHeight = height; + removeChildren(display.measure); + return height || 1; + } + + function charWidth(display) { + if (display.cachedCharWidth != null) return display.cachedCharWidth; + var anchor = elt("span", "x"); + var pre = elt("pre", [anchor]); + removeChildrenAndAdd(display.measure, pre); + var width = anchor.offsetWidth; + if (width > 2) display.cachedCharWidth = width; + return width || 10; + } + + // OPERATIONS + + // Operations are used to wrap changes in such a way that each + // change won't have to update the cursor and display (which would + // be awkward, slow, and error-prone), but instead updates are + // batched and then all combined and executed at once. + + var nextOpId = 0; + function startOperation(cm) { + cm.curOp = { + // An array of ranges of lines that have to be updated. See + // updateDisplay. + changes: [], + updateInput: null, + userSelChange: null, + textChanged: null, + selectionChanged: false, + cursorActivity: false, + updateMaxLine: false, + updateScrollPos: false, + id: ++nextOpId + }; + if (!delayedCallbackDepth++) delayedCallbacks = []; + } + + function endOperation(cm) { + var op = cm.curOp, doc = cm.doc, display = cm.display; + cm.curOp = null; + + if (op.updateMaxLine) computeMaxLength(cm); + if (display.maxLineChanged && !cm.options.lineWrapping && display.maxLine) { + var width = measureLineWidth(cm, display.maxLine); + display.sizer.style.minWidth = Math.max(0, width + 3 + scrollerCutOff) + "px"; + display.maxLineChanged = false; + var maxScrollLeft = Math.max(0, display.sizer.offsetLeft + display.sizer.offsetWidth - display.scroller.clientWidth); + if (maxScrollLeft < doc.scrollLeft && !op.updateScrollPos) + setScrollLeft(cm, Math.min(display.scroller.scrollLeft, maxScrollLeft), true); + } + var newScrollPos, updated; + if (op.updateScrollPos) { + newScrollPos = op.updateScrollPos; + } else if (op.selectionChanged && display.scroller.clientHeight) { // don't rescroll if not visible + var coords = cursorCoords(cm, doc.sel.head); + newScrollPos = calculateScrollPos(cm, coords.left, coords.top, coords.left, coords.bottom); + } + if (op.changes.length || newScrollPos && newScrollPos.scrollTop != null) { + updated = updateDisplay(cm, op.changes, newScrollPos && newScrollPos.scrollTop); + if (cm.display.scroller.offsetHeight) cm.doc.scrollTop = cm.display.scroller.scrollTop; + } + if (!updated && op.selectionChanged) updateSelection(cm); + if (op.updateScrollPos) { + display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = newScrollPos.scrollTop; + display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = newScrollPos.scrollLeft; + alignHorizontally(cm); + if (op.scrollToPos) + scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos), op.scrollToPosMargin); + } else if (newScrollPos) { + scrollCursorIntoView(cm); + } + if (op.selectionChanged) restartBlink(cm); + + if (cm.state.focused && op.updateInput) + resetInput(cm, op.userSelChange); + + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; + if (hidden) for (var i = 0; i < hidden.length; ++i) + if (!hidden[i].lines.length) signal(hidden[i], "hide"); + if (unhidden) for (var i = 0; i < unhidden.length; ++i) + if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); + + var delayed; + if (!--delayedCallbackDepth) { + delayed = delayedCallbacks; + delayedCallbacks = null; + } + if (op.textChanged) + signal(cm, "change", cm, op.textChanged); + if (op.cursorActivity) signal(cm, "cursorActivity", cm); + if (delayed) for (var i = 0; i < delayed.length; ++i) delayed[i](); + } + + // Wraps a function in an operation. Returns the wrapped function. + function operation(cm1, f) { + return function() { + var cm = cm1 || this, withOp = !cm.curOp; + if (withOp) startOperation(cm); + try { var result = f.apply(cm, arguments); } + finally { if (withOp) endOperation(cm); } + return result; + }; + } + function docOperation(f) { + return function() { + var withOp = this.cm && !this.cm.curOp, result; + if (withOp) startOperation(this.cm); + try { result = f.apply(this, arguments); } + finally { if (withOp) endOperation(this.cm); } + return result; + }; + } + function runInOp(cm, f) { + var withOp = !cm.curOp, result; + if (withOp) startOperation(cm); + try { result = f(); } + finally { if (withOp) endOperation(cm); } + return result; + } + + function regChange(cm, from, to, lendiff) { + if (from == null) from = cm.doc.first; + if (to == null) to = cm.doc.first + cm.doc.size; + cm.curOp.changes.push({from: from, to: to, diff: lendiff}); + } + + // INPUT HANDLING + + function slowPoll(cm) { + if (cm.display.pollingFast) return; + cm.display.poll.set(cm.options.pollInterval, function() { + readInput(cm); + if (cm.state.focused) slowPoll(cm); + }); + } + + function fastPoll(cm) { + var missed = false; + cm.display.pollingFast = true; + function p() { + var changed = readInput(cm); + if (!changed && !missed) {missed = true; cm.display.poll.set(60, p);} + else {cm.display.pollingFast = false; slowPoll(cm);} + } + cm.display.poll.set(20, p); + } + + // prevInput is a hack to work with IME. If we reset the textarea + // on every change, that breaks IME. So we look for changes + // compared to the previous content instead. (Modern browsers have + // events that indicate IME taking place, but these are not widely + // supported or compatible enough yet to rely on.) + function readInput(cm) { + var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc, sel = doc.sel; + if (!cm.state.focused || hasSelection(input) || isReadOnly(cm)) return false; + var text = input.value; + if (text == prevInput && posEq(sel.from, sel.to)) return false; + if (ie && !ie_lt9 && cm.display.inputHasSelection === text) { + resetInput(cm, true); + return false; + } + + var withOp = !cm.curOp; + if (withOp) startOperation(cm); + sel.shift = false; + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; + var from = sel.from, to = sel.to; + if (same < prevInput.length) + from = Pos(from.line, from.ch - (prevInput.length - same)); + else if (cm.state.overwrite && posEq(from, to) && !cm.state.pasteIncoming) + to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + (text.length - same))); + var updateInput = cm.curOp.updateInput; + makeChange(cm.doc, {from: from, to: to, text: splitLines(text.slice(same)), + origin: cm.state.pasteIncoming ? "paste" : "+input"}, "end"); + + cm.curOp.updateInput = updateInput; + if (text.length > 1000 || text.indexOf("\n") > -1) input.value = cm.display.prevInput = ""; + else cm.display.prevInput = text; + if (withOp) endOperation(cm); + cm.state.pasteIncoming = false; + return true; + } + + function resetInput(cm, user) { + var minimal, selected, doc = cm.doc; + if (!posEq(doc.sel.from, doc.sel.to)) { + cm.display.prevInput = ""; + minimal = hasCopyEvent && + (doc.sel.to.line - doc.sel.from.line > 100 || (selected = cm.getSelection()).length > 1000); + var content = minimal ? "-" : selected || cm.getSelection(); + cm.display.input.value = content; + if (cm.state.focused) selectInput(cm.display.input); + if (ie && !ie_lt9) cm.display.inputHasSelection = content; + } else if (user) { + cm.display.prevInput = cm.display.input.value = ""; + if (ie && !ie_lt9) cm.display.inputHasSelection = null; + } + cm.display.inaccurateSelection = minimal; + } + + function focusInput(cm) { + if (cm.options.readOnly != "nocursor" && (!mobile || document.activeElement != cm.display.input)) + cm.display.input.focus(); + } + + function isReadOnly(cm) { + return cm.options.readOnly || cm.doc.cantEdit; + } + + // EVENT HANDLERS + + function registerEventHandlers(cm) { + var d = cm.display; + on(d.scroller, "mousedown", operation(cm, onMouseDown)); + if (ie) + on(d.scroller, "dblclick", operation(cm, function(e) { + var pos = posFromMouse(cm, e); + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; + e_preventDefault(e); + var word = findWordAt(getLine(cm.doc, pos.line).text, pos); + extendSelection(cm.doc, word.from, word.to); + })); + else + on(d.scroller, "dblclick", e_preventDefault); + on(d.lineSpace, "selectstart", function(e) { + if (!eventInWidget(d, e)) e_preventDefault(e); + }); + // Gecko browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for Gecko. + if (!captureMiddleClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); + + on(d.scroller, "scroll", function() { + if (d.scroller.clientHeight) { + setScrollTop(cm, d.scroller.scrollTop); + setScrollLeft(cm, d.scroller.scrollLeft, true); + signal(cm, "scroll", cm); + } + }); + on(d.scrollbarV, "scroll", function() { + if (d.scroller.clientHeight) setScrollTop(cm, d.scrollbarV.scrollTop); + }); + on(d.scrollbarH, "scroll", function() { + if (d.scroller.clientHeight) setScrollLeft(cm, d.scrollbarH.scrollLeft); + }); + + on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); + on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); + + function reFocus() { if (cm.state.focused) setTimeout(bind(focusInput, cm), 0); } + on(d.scrollbarH, "mousedown", reFocus); + on(d.scrollbarV, "mousedown", reFocus); + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); + + function onResize() { + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = null; + clearCaches(cm); + runInOp(cm, bind(regChange, cm)); + } + on(window, "resize", onResize); + // Above handler holds on to the editor and its data structures. + // Here we poll to unregister it when the editor is no longer in + // the document, so that it can be garbage-collected. + function unregister() { + for (var p = d.wrapper.parentNode; p && p != document.body; p = p.parentNode) {} + if (p) setTimeout(unregister, 5000); + else off(window, "resize", onResize); + } + setTimeout(unregister, 5000); + + on(d.input, "keyup", operation(cm, function(e) { + if (cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return; + if (e.keyCode == 16) cm.doc.sel.shift = false; + })); + on(d.input, "input", bind(fastPoll, cm)); + on(d.input, "keydown", operation(cm, onKeyDown)); + on(d.input, "keypress", operation(cm, onKeyPress)); + on(d.input, "focus", bind(onFocus, cm)); + on(d.input, "blur", bind(onBlur, cm)); + + function drag_(e) { + if (cm.options.onDragEvent && cm.options.onDragEvent(cm, addStop(e))) return; + e_stop(e); + } + if (cm.options.dragDrop) { + on(d.scroller, "dragstart", function(e){onDragStart(cm, e);}); + on(d.scroller, "dragenter", drag_); + on(d.scroller, "dragover", drag_); + on(d.scroller, "drop", operation(cm, onDrop)); + } + on(d.scroller, "paste", function(e){ + if (eventInWidget(d, e)) return; + focusInput(cm); + fastPoll(cm); + }); + on(d.input, "paste", function() { + cm.state.pasteIncoming = true; + fastPoll(cm); + }); + + function prepareCopy() { + if (d.inaccurateSelection) { + d.prevInput = ""; + d.inaccurateSelection = false; + d.input.value = cm.getSelection(); + selectInput(d.input); + } + } + on(d.input, "cut", prepareCopy); + on(d.input, "copy", prepareCopy); + + // Needed to handle Tab key in KHTML + if (khtml) on(d.sizer, "mouseup", function() { + if (document.activeElement == d.input) d.input.blur(); + focusInput(cm); + }); + } + + function eventInWidget(display, e) { + for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n) return true; + if (/\bCodeMirror-(?:line)?widget\b/.test(n.className) || + n.parentNode == display.sizer && n != display.mover) return true; + } + } + + function posFromMouse(cm, e, liberal) { + var display = cm.display; + if (!liberal) { + var target = e_target(e); + if (target == display.scrollbarH || target == display.scrollbarH.firstChild || + target == display.scrollbarV || target == display.scrollbarV.firstChild || + target == display.scrollbarFiller || target == display.gutterFiller) return null; + } + var x, y, space = getRect(display.lineSpace); + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX; y = e.clientY; } catch (e) { return null; } + return coordsChar(cm, x - space.left, y - space.top); + } + + var lastClick, lastDoubleClick; + function onMouseDown(e) { + var cm = this, display = cm.display, doc = cm.doc, sel = doc.sel; + sel.shift = e.shiftKey; + + if (eventInWidget(display, e)) { + if (!webkit) { + display.scroller.draggable = false; + setTimeout(function(){display.scroller.draggable = true;}, 100); + } + return; + } + if (clickInGutter(cm, e)) return; + var start = posFromMouse(cm, e); + + switch (e_button(e)) { + case 3: + if (captureMiddleClick) onContextMenu.call(cm, cm, e); + return; + case 2: + if (start) extendSelection(cm.doc, start); + setTimeout(bind(focusInput, cm), 20); + e_preventDefault(e); + return; + } + // For button 1, if it was clicked inside the editor + // (posFromMouse returning non-null), we have to adjust the + // selection. + if (!start) {if (e_target(e) == display.scroller) e_preventDefault(e); return;} + + if (!cm.state.focused) onFocus(cm); + + var now = +new Date, type = "single"; + if (lastDoubleClick && lastDoubleClick.time > now - 400 && posEq(lastDoubleClick.pos, start)) { + type = "triple"; + e_preventDefault(e); + setTimeout(bind(focusInput, cm), 20); + selectLine(cm, start.line); + } else if (lastClick && lastClick.time > now - 400 && posEq(lastClick.pos, start)) { + type = "double"; + lastDoubleClick = {time: now, pos: start}; + e_preventDefault(e); + var word = findWordAt(getLine(doc, start.line).text, start); + extendSelection(cm.doc, word.from, word.to); + } else { lastClick = {time: now, pos: start}; } + + var last = start; + if (cm.options.dragDrop && dragAndDrop && !isReadOnly(cm) && !posEq(sel.from, sel.to) && + !posLess(start, sel.from) && !posLess(sel.to, start) && type == "single") { + var dragEnd = operation(cm, function(e2) { + if (webkit) display.scroller.draggable = false; + cm.state.draggingText = false; + off(document, "mouseup", dragEnd); + off(display.scroller, "drop", dragEnd); + if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { + e_preventDefault(e2); + extendSelection(cm.doc, start); + focusInput(cm); + } + }); + // Let the drag handler handle this. + if (webkit) display.scroller.draggable = true; + cm.state.draggingText = dragEnd; + // IE's approach to draggable + if (display.scroller.dragDrop) display.scroller.dragDrop(); + on(document, "mouseup", dragEnd); + on(display.scroller, "drop", dragEnd); + return; + } + e_preventDefault(e); + if (type == "single") extendSelection(cm.doc, clipPos(doc, start)); + + var startstart = sel.from, startend = sel.to, lastPos = start; + + function doSelect(cur) { + if (posEq(lastPos, cur)) return; + lastPos = cur; + + if (type == "single") { + extendSelection(cm.doc, clipPos(doc, start), cur); + return; + } + + startstart = clipPos(doc, startstart); + startend = clipPos(doc, startend); + if (type == "double") { + var word = findWordAt(getLine(doc, cur.line).text, cur); + if (posLess(cur, startstart)) extendSelection(cm.doc, word.from, startend); + else extendSelection(cm.doc, startstart, word.to); + } else if (type == "triple") { + if (posLess(cur, startstart)) extendSelection(cm.doc, startend, clipPos(doc, Pos(cur.line, 0))); + else extendSelection(cm.doc, startstart, clipPos(doc, Pos(cur.line + 1, 0))); + } + } + + var editorSize = getRect(display.wrapper); + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + var counter = 0; + + function extend(e) { + var curCount = ++counter; + var cur = posFromMouse(cm, e, true); + if (!cur) return; + if (!posEq(cur, last)) { + if (!cm.state.focused) onFocus(cm); + last = cur; + doSelect(cur); + var visible = visibleLines(display, doc); + if (cur.line >= visible.to || cur.line < visible.from) + setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); + } else { + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; + if (outside) setTimeout(operation(cm, function() { + if (counter != curCount) return; + display.scroller.scrollTop += outside; + extend(e); + }), 50); + } + } + + function done(e) { + counter = Infinity; + var cur = posFromMouse(cm, e); + if (cur) doSelect(cur); + e_preventDefault(e); + focusInput(cm); + off(document, "mousemove", move); + off(document, "mouseup", up); + } + + var move = operation(cm, function(e) { + if (!ie && !e_button(e)) done(e); + else extend(e); + }); + var up = operation(cm, done); + on(document, "mousemove", move); + on(document, "mouseup", up); + } + + function onDrop(e) { + var cm = this; + if (eventInWidget(cm.display, e) || (cm.options.onDragEvent && cm.options.onDragEvent(cm, addStop(e)))) + return; + e_preventDefault(e); + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; + if (!pos || isReadOnly(cm)) return; + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0; + var loadFile = function(file, i) { + var reader = new FileReader; + reader.onload = function() { + text[i] = reader.result; + if (++read == n) { + pos = clipPos(cm.doc, pos); + makeChange(cm.doc, {from: pos, to: pos, text: splitLines(text.join("\n")), origin: "paste"}, "around"); + } + }; + reader.readAsText(file); + }; + for (var i = 0; i < n; ++i) loadFile(files[i], i); + } else { + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && !(posLess(pos, cm.doc.sel.from) || posLess(cm.doc.sel.to, pos))) { + cm.state.draggingText(e); + // Ensure the editor is re-focused + setTimeout(bind(focusInput, cm), 20); + return; + } + try { + var text = e.dataTransfer.getData("Text"); + if (text) { + var curFrom = cm.doc.sel.from, curTo = cm.doc.sel.to; + setSelection(cm.doc, pos, pos); + if (cm.state.draggingText) replaceRange(cm.doc, "", curFrom, curTo, "paste"); + cm.replaceSelection(text, null, "paste"); + focusInput(cm); + onFocus(cm); + } + } + catch(e){} + } + } + + function clickInGutter(cm, e) { + var display = cm.display; + try { var mX = e.clientX, mY = e.clientY; } + catch(e) { return false; } + + if (mX >= Math.floor(getRect(display.gutters).right)) return false; + e_preventDefault(e); + if (!hasHandler(cm, "gutterClick")) return true; + + var lineBox = getRect(display.lineDiv); + if (mY > lineBox.bottom) return true; + mY -= lineBox.top - display.viewOffset; + + for (var i = 0; i < cm.options.gutters.length; ++i) { + var g = display.gutters.childNodes[i]; + if (g && getRect(g).right >= mX) { + var line = lineAtHeight(cm.doc, mY); + var gutter = cm.options.gutters[i]; + signalLater(cm, "gutterClick", cm, line, gutter, e); + break; + } + } + return true; + } + + function onDragStart(cm, e) { + if (ie && !cm.state.draggingText) { e_stop(e); return; } + if (eventInWidget(cm.display, e)) return; + + var txt = cm.getSelection(); + e.dataTransfer.setData("Text", txt); + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage) { + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); + if (opera) { + img.width = img.height = 1; + cm.display.wrapper.appendChild(img); + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop; + } + if (safari) { + if (cm.display.dragImg) { + img = cm.display.dragImg; + } else { + cm.display.dragImg = img; + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; + cm.display.wrapper.appendChild(img); + } + } + e.dataTransfer.setDragImage(img, 0, 0); + if (opera) img.parentNode.removeChild(img); + } + } + + function setScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) return; + cm.doc.scrollTop = val; + if (!gecko) updateDisplay(cm, [], val); + if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; + if (cm.display.scrollbarV.scrollTop != val) cm.display.scrollbarV.scrollTop = val; + if (gecko) updateDisplay(cm, []); + } + function setScrollLeft(cm, val, isScroller) { + if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; + val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); + cm.doc.scrollLeft = val; + alignHorizontally(cm); + if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; + if (cm.display.scrollbarH.scrollLeft != val) cm.display.scrollbarH.scrollLeft = val; + } + + // Since the delta values reported on mouse wheel events are + // unstandardized between browsers and even browser versions, and + // generally horribly unpredictable, this code starts by measuring + // the scroll effect that the first few mouse wheel events have, + // and, from that, detects the way it can convert deltas to pixel + // offsets afterwards. + // + // The reason we want to know the amount a wheel event will scroll + // is that it gives us a chance to update the display before the + // actual scrolling happens, reducing flickering. + + var wheelSamples = 0, wheelPixelsPerUnit = null; + // Fill in a browser-detected starting value on browsers where we + // know one. These don't have to be accurate -- the result of them + // being wrong would just be a slight flicker on the first wheel + // scroll (if it is large enough). + if (ie) wheelPixelsPerUnit = -.53; + else if (gecko) wheelPixelsPerUnit = 15; + else if (chrome) wheelPixelsPerUnit = -.7; + else if (safari) wheelPixelsPerUnit = -1/3; + + function onScrollWheel(cm, e) { + var dx = e.wheelDeltaX, dy = e.wheelDeltaY; + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; + else if (dy == null) dy = e.wheelDelta; + + var display = cm.display, scroll = display.scroller; + // Quit if there's nothing to scroll here + if (!(dx && scroll.scrollWidth > scroll.clientWidth || + dy && scroll.scrollHeight > scroll.clientHeight)) return; + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + for (var cur = e.target; cur != scroll; cur = cur.parentNode) { + if (cur.lineObj) { + cm.display.currentWheelTarget = cur; + break; + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !opera && wheelPixelsPerUnit != null) { + if (dy) + setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); + setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); + e_preventDefault(e); + display.wheelStartX = null; // Abort measurement, if in progress + return; + } + + if (dy && wheelPixelsPerUnit != null) { + var pixels = dy * wheelPixelsPerUnit; + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; + if (pixels < 0) top = Math.max(0, top + pixels - 50); + else bot = Math.min(cm.doc.height, bot + pixels + 50); + updateDisplay(cm, [], {top: top, bottom: bot}); + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; + display.wheelDX = dx; display.wheelDY = dy; + setTimeout(function() { + if (display.wheelStartX == null) return; + var movedX = scroll.scrollLeft - display.wheelStartX; + var movedY = scroll.scrollTop - display.wheelStartY; + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX); + display.wheelStartX = display.wheelStartY = null; + if (!sample) return; + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); + ++wheelSamples; + }, 200); + } else { + display.wheelDX += dx; display.wheelDY += dy; + } + } + } + + function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound]; + if (!bound) return false; + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + if (cm.display.pollingFast && readInput(cm)) cm.display.pollingFast = false; + var doc = cm.doc, prevShift = doc.sel.shift, done = false; + try { + if (isReadOnly(cm)) cm.state.suppressEdits = true; + if (dropShift) doc.sel.shift = false; + done = bound(cm) != Pass; + } finally { + doc.sel.shift = prevShift; + cm.state.suppressEdits = false; + } + return done; + } + + function allKeyMaps(cm) { + var maps = cm.state.keyMaps.slice(0); + if (cm.options.extraKeys) maps.push(cm.options.extraKeys); + maps.push(cm.options.keyMap); + return maps; + } + + var maybeTransition; + function handleKeyBinding(cm, e) { + // Handle auto keymap transitions + var startMap = getKeyMap(cm.options.keyMap), next = startMap.auto; + clearTimeout(maybeTransition); + if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() { + if (getKeyMap(cm.options.keyMap) == startMap) + cm.options.keyMap = (next.call ? next.call(null, cm) : next); + }, 50); + + var name = keyName(e, true), handled = false; + if (!name) return false; + var keymaps = allKeyMaps(cm); + + if (e.shiftKey) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + handled = lookupKey("Shift-" + name, keymaps, function(b) {return doHandleBinding(cm, b, true);}) + || lookupKey(name, keymaps, function(b) { + if (typeof b == "string" && /^go[A-Z]/.test(b)) return doHandleBinding(cm, b); + }); + } else { + handled = lookupKey(name, keymaps, function(b) { return doHandleBinding(cm, b); }); + } + if (handled == "stop") handled = false; + + if (handled) { + e_preventDefault(e); + restartBlink(cm); + if (ie_lt9) { e.oldKeyCode = e.keyCode; e.keyCode = 0; } + } + return handled; + } + + function handleCharBinding(cm, e, ch) { + var handled = lookupKey("'" + ch + "'", allKeyMaps(cm), + function(b) { return doHandleBinding(cm, b, true); }); + if (handled) { + e_preventDefault(e); + restartBlink(cm); + } + return handled; + } + + var lastStoppedKey = null; + function onKeyDown(e) { + var cm = this; + if (!cm.state.focused) onFocus(cm); + if (ie && e.keyCode == 27) { e.returnValue = false; } + if (cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return; + var code = e.keyCode; + // IE does strange things with escape. + cm.doc.sel.shift = code == 16 || e.shiftKey; + // First give onKeyEvent option a chance to handle this. + var handled = handleKeyBinding(cm, e); + if (opera) { + lastStoppedKey = handled ? code : null; + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + cm.replaceSelection(""); + } + } + + function onKeyPress(e) { + var cm = this; + if (cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return; + var keyCode = e.keyCode, charCode = e.charCode; + if (opera && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} + if (((opera && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return; + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); + if (this.options.electricChars && this.doc.mode.electricChars && + this.options.smartIndent && !isReadOnly(this) && + this.doc.mode.electricChars.indexOf(ch) > -1) + setTimeout(operation(cm, function() {indentLine(cm, cm.doc.sel.to.line, "smart");}), 75); + if (handleCharBinding(cm, e, ch)) return; + if (ie && !ie_lt9) cm.display.inputHasSelection = null; + fastPoll(cm); + } + + function onFocus(cm) { + if (cm.options.readOnly == "nocursor") return; + if (!cm.state.focused) { + signal(cm, "focus", cm); + cm.state.focused = true; + if (cm.display.wrapper.className.search(/\bCodeMirror-focused\b/) == -1) + cm.display.wrapper.className += " CodeMirror-focused"; + resetInput(cm, true); + } + slowPoll(cm); + restartBlink(cm); + } + function onBlur(cm) { + if (cm.state.focused) { + signal(cm, "blur", cm); + cm.state.focused = false; + cm.display.wrapper.className = cm.display.wrapper.className.replace(" CodeMirror-focused", ""); + } + clearInterval(cm.display.blinker); + setTimeout(function() {if (!cm.state.focused) cm.doc.sel.shift = false;}, 150); + } + + var detectingSelectAll; + function onContextMenu(cm, e) { + var display = cm.display, sel = cm.doc.sel; + if (eventInWidget(display, e)) return; + + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; + if (!pos || opera) return; // Opera is difficult. + if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)) + operation(cm, setSelection)(cm.doc, pos, pos); + + var oldCSS = display.input.style.cssText; + display.inputDiv.style.position = "absolute"; + display.input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) + + "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: white; outline: none;" + + "border-width: 0; outline: none; overflow: hidden; opacity: .05; -ms-opacity: .05; filter: alpha(opacity=5);"; + focusInput(cm); + resetInput(cm, true); + // Adds "Select all" to context menu in FF + if (posEq(sel.from, sel.to)) display.input.value = display.prevInput = " "; + + function prepareSelectAllHack() { + if (display.input.selectionStart != null) { + var extval = display.input.value = " " + (posEq(sel.from, sel.to) ? "" : display.input.value); + display.prevInput = " "; + display.input.selectionStart = 1; display.input.selectionEnd = extval.length; + } + } + function rehide() { + display.inputDiv.style.position = "relative"; + display.input.style.cssText = oldCSS; + if (ie_lt9) display.scrollbarV.scrollTop = display.scroller.scrollTop = scrollPos; + slowPoll(cm); + + // Try to detect the user choosing select-all + if (display.input.selectionStart != null) { + if (!ie || ie_lt9) prepareSelectAllHack(); + clearTimeout(detectingSelectAll); + var i = 0, poll = function(){ + if (display.prevInput == " " && display.input.selectionStart == 0) + operation(cm, commands.selectAll)(cm); + else if (i++ < 10) detectingSelectAll = setTimeout(poll, 500); + else resetInput(cm); + }; + detectingSelectAll = setTimeout(poll, 200); + } + } + + if (ie && !ie_lt9) prepareSelectAllHack(); + if (captureMiddleClick) { + e_stop(e); + var mouseup = function() { + off(window, "mouseup", mouseup); + setTimeout(rehide, 20); + }; + on(window, "mouseup", mouseup); + } else { + setTimeout(rehide, 50); + } + } + + // UPDATING + + function changeEnd(change) { + if (!change.text) return change.to; + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); + } + + // Make sure a position will be valid after the given change. + function clipPostChange(doc, change, pos) { + if (!posLess(change.from, pos)) return clipPos(doc, pos); + var diff = (change.text.length - 1) - (change.to.line - change.from.line); + if (pos.line > change.to.line + diff) { + var preLine = pos.line - diff, lastLine = doc.first + doc.size - 1; + if (preLine > lastLine) return Pos(lastLine, getLine(doc, lastLine).text.length); + return clipToLen(pos, getLine(doc, preLine).text.length); + } + if (pos.line == change.to.line + diff) + return clipToLen(pos, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0) + + getLine(doc, change.to.line).text.length - change.to.ch); + var inside = pos.line - change.from.line; + return clipToLen(pos, change.text[inside].length + (inside ? 0 : change.from.ch)); + } + + // Hint can be null|"end"|"start"|"around"|{anchor,head} + function computeSelAfterChange(doc, change, hint) { + if (hint && typeof hint == "object") // Assumed to be {anchor, head} object + return {anchor: clipPostChange(doc, change, hint.anchor), + head: clipPostChange(doc, change, hint.head)}; + + if (hint == "start") return {anchor: change.from, head: change.from}; + + var end = changeEnd(change); + if (hint == "around") return {anchor: change.from, head: end}; + if (hint == "end") return {anchor: end, head: end}; + + // hint is null, leave the selection alone as much as possible + var adjustPos = function(pos) { + if (posLess(pos, change.from)) return pos; + if (!posLess(change.to, pos)) return end; + + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; + if (pos.line == change.to.line) ch += end.ch - change.to.ch; + return Pos(line, ch); + }; + return {anchor: adjustPos(doc.sel.anchor), head: adjustPos(doc.sel.head)}; + } + + function filterChange(doc, change) { + var obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + update: function(from, to, text, origin) { + if (from) this.from = clipPos(doc, from); + if (to) this.to = clipPos(doc, to); + if (text) this.text = text; + if (origin !== undefined) this.origin = origin; + }, + cancel: function() { this.canceled = true; } + }; + signal(doc, "beforeChange", doc, obj); + if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); + + if (obj.canceled) return null; + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; + } + + // Replace the range from from to to by the strings in replacement. + // change is a {from, to, text [, origin]} object + function makeChange(doc, change, selUpdate, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, selUpdate, ignoreReadOnly); + if (doc.cm.state.suppressEdits) return; + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change); + if (!change) return; + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); + if (split) { + for (var i = split.length - 1; i >= 1; --i) + makeChangeNoReadonly(doc, {from: split[i].from, to: split[i].to, text: [""]}); + if (split.length) + makeChangeNoReadonly(doc, {from: split[0].from, to: split[0].to, text: change.text}, selUpdate); + } else { + makeChangeNoReadonly(doc, change, selUpdate); + } + } + + function makeChangeNoReadonly(doc, change, selUpdate) { + var selAfter = computeSelAfterChange(doc, change, selUpdate); + addToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); + var rebased = []; + + linkedDocs(doc, function(doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); + }); + } + + function makeChangeFromHistory(doc, type) { + if (doc.cm && doc.cm.state.suppressEdits) return; + + var hist = doc.history; + var event = (type == "undo" ? hist.done : hist.undone).pop(); + if (!event) return; + hist.dirtyCounter += type == "undo" ? -1 : 1; + + var anti = {changes: [], anchorBefore: event.anchorAfter, headBefore: event.headAfter, + anchorAfter: event.anchorBefore, headAfter: event.headBefore}; + (type == "undo" ? hist.undone : hist.done).push(anti); + + for (var i = event.changes.length - 1; i >= 0; --i) { + var change = event.changes[i]; + change.origin = type; + anti.changes.push(historyChangeFromChange(doc, change)); + + var after = i ? computeSelAfterChange(doc, change, null) + : {anchor: event.anchorBefore, head: event.headBefore}; + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); + var rebased = []; + + linkedDocs(doc, function(doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); + }); + } + } + + function shiftDoc(doc, distance) { + function shiftPos(pos) {return Pos(pos.line + distance, pos.ch);} + doc.first += distance; + if (doc.cm) regChange(doc.cm, doc.first, doc.first, distance); + doc.sel.head = shiftPos(doc.sel.head); doc.sel.anchor = shiftPos(doc.sel.anchor); + doc.sel.from = shiftPos(doc.sel.from); doc.sel.to = shiftPos(doc.sel.to); + } + + function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); + return; + } + if (change.from.line > doc.lastLine()) return; + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + var shift = change.text.length - 1 - (doc.first - change.from.line); + shiftDoc(doc, shift); + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin}; + } + var last = doc.lastLine(); + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin}; + } + + change.removed = getBetween(doc, change.from, change.to); + + if (!selAfter) selAfter = computeSelAfterChange(doc, change, null); + if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans, selAfter); + else updateDoc(doc, change, spans, selAfter); + } + + function makeChangeSingleDocInEditor(cm, change, spans, selAfter) { + var doc = cm.doc, display = cm.display, from = change.from, to = change.to; + + var recomputeMaxLength = false, checkWidthStart = from.line; + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(doc, getLine(doc, from.line))); + doc.iter(checkWidthStart, to.line + 1, function(line) { + if (line == display.maxLine) { + recomputeMaxLength = true; + return true; + } + }); + } + + if (!posLess(doc.sel.head, change.from) && !posLess(change.to, doc.sel.head)) + cm.curOp.cursorActivity = true; + + updateDoc(doc, change, spans, selAfter, estimateHeight(cm)); + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, function(line) { + var len = lineLength(doc, line); + if (len > display.maxLineLength) { + display.maxLine = line; + display.maxLineLength = len; + display.maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) cm.curOp.updateMaxLine = true; + } + + // Adjust frontier, schedule worker + doc.frontier = Math.min(doc.frontier, from.line); + startWorker(cm, 400); + + var lendiff = change.text.length - (to.line - from.line) - 1; + // Remember that these lines changed, for updating the display + regChange(cm, from.line, to.line + 1, lendiff); + + if (hasHandler(cm, "change")) { + var changeObj = {from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin}; + if (cm.curOp.textChanged) { + for (var cur = cm.curOp.textChanged; cur.next; cur = cur.next) {} + cur.next = changeObj; + } else cm.curOp.textChanged = changeObj; + } + } + + function replaceRange(doc, code, from, to, origin) { + if (!to) to = from; + if (posLess(to, from)) { var tmp = to; to = from; from = tmp; } + if (typeof code == "string") code = splitLines(code); + makeChange(doc, {from: from, to: to, text: code, origin: origin}, null); + } + + // POSITION OBJECT + + function Pos(line, ch) { + if (!(this instanceof Pos)) return new Pos(line, ch); + this.line = line; this.ch = ch; + } + CodeMirror.Pos = Pos; + + function posEq(a, b) {return a.line == b.line && a.ch == b.ch;} + function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);} + function copyPos(x) {return Pos(x.line, x.ch);} + + // SELECTION + + function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} + function clipPos(doc, pos) { + if (pos.line < doc.first) return Pos(doc.first, 0); + var last = doc.first + doc.size - 1; + if (pos.line > last) return Pos(last, getLine(doc, last).text.length); + return clipToLen(pos, getLine(doc, pos.line).text.length); + } + function clipToLen(pos, linelen) { + var ch = pos.ch; + if (ch == null || ch > linelen) return Pos(pos.line, linelen); + else if (ch < 0) return Pos(pos.line, 0); + else return pos; + } + function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} + + // If shift is held, this will move the selection anchor. Otherwise, + // it'll set the whole selection. + function extendSelection(doc, pos, other, bias) { + if (doc.sel.shift || doc.sel.extend) { + var anchor = doc.sel.anchor; + if (other) { + var posBefore = posLess(pos, anchor); + if (posBefore != posLess(other, anchor)) { + anchor = pos; + pos = other; + } else if (posBefore != posLess(pos, other)) { + pos = other; + } + } + setSelection(doc, anchor, pos, bias); + } else { + setSelection(doc, pos, other || pos, bias); + } + if (doc.cm) doc.cm.curOp.userSelChange = true; + } + + function filterSelectionChange(doc, anchor, head) { + var obj = {anchor: anchor, head: head}; + signal(doc, "beforeSelectionChange", doc, obj); + if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); + obj.anchor = clipPos(doc, obj.anchor); obj.head = clipPos(doc, obj.head); + return obj; + } + + // Update the selection. Last two args are only used by + // updateDoc, since they have to be expressed in the line + // numbers before the update. + function setSelection(doc, anchor, head, bias, checkAtomic) { + if (!checkAtomic && hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) { + var filtered = filterSelectionChange(doc, anchor, head); + head = filtered.head; + anchor = filtered.anchor; + } + + var sel = doc.sel; + sel.goalColumn = null; + // Skip over atomic spans. + if (checkAtomic || !posEq(anchor, sel.anchor)) + anchor = skipAtomic(doc, anchor, bias, checkAtomic != "push"); + if (checkAtomic || !posEq(head, sel.head)) + head = skipAtomic(doc, head, bias, checkAtomic != "push"); + + if (posEq(sel.anchor, anchor) && posEq(sel.head, head)) return; + + sel.anchor = anchor; sel.head = head; + var inv = posLess(head, anchor); + sel.from = inv ? head : anchor; + sel.to = inv ? anchor : head; + + if (doc.cm) + doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = + doc.cm.curOp.cursorActivity = true; + + signalLater(doc, "cursorActivity", doc); + } + + function reCheckSelection(cm) { + setSelection(cm.doc, cm.doc.sel.from, cm.doc.sel.to, null, "push"); + } + + function skipAtomic(doc, pos, bias, mayClear) { + var flipped = false, curPos = pos; + var dir = bias || 1; + doc.cantEdit = false; + search: for (;;) { + var line = getLine(doc, curPos.line); + if (line.markedSpans) { + for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker; + if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) && + (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter"); + if (m.explicitlyCleared) { + if (!line.markedSpans) break; + else {--i; continue;} + } + } + if (!m.atomic) continue; + var newPos = m.find()[dir < 0 ? "from" : "to"]; + if (posEq(newPos, curPos)) { + newPos.ch += dir; + if (newPos.ch < 0) { + if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1)); + else newPos = null; + } else if (newPos.ch > line.text.length) { + if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0); + else newPos = null; + } + if (!newPos) { + if (flipped) { + // Driven in a corner -- no valid cursor position found at all + // -- try again *with* clearing, if we didn't already + if (!mayClear) return skipAtomic(doc, pos, bias, true); + // Otherwise, turn off editing until further notice, and return the start of the doc + doc.cantEdit = true; + return Pos(doc.first, 0); + } + flipped = true; newPos = pos; dir = -dir; + } + } + curPos = newPos; + continue search; + } + } + } + return curPos; + } + } + + // SCROLLING + + function scrollCursorIntoView(cm) { + var coords = scrollPosIntoView(cm, cm.doc.sel.head, cm.options.cursorScrollMargin); + if (!cm.state.focused) return; + var display = cm.display, box = getRect(display.sizer), doScroll = null, pTop = paddingTop(cm.display); + if (coords.top + pTop + box.top < 0) doScroll = true; + else if (coords.bottom + pTop + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; + if (doScroll != null && !phantom) { + var hidden = display.cursor.style.display == "none"; + if (hidden) { + display.cursor.style.display = ""; + display.cursor.style.left = coords.left + "px"; + display.cursor.style.top = (coords.top - display.viewOffset) + "px"; + } + display.cursor.scrollIntoView(doScroll); + if (hidden) display.cursor.style.display = "none"; + } + } + + function scrollPosIntoView(cm, pos, margin) { + if (margin == null) margin = 0; + for (;;) { + var changed = false, coords = cursorCoords(cm, pos); + var scrollPos = calculateScrollPos(cm, coords.left, coords.top - margin, coords.left, coords.bottom + margin); + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; + if (scrollPos.scrollTop != null) { + setScrollTop(cm, scrollPos.scrollTop); + if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft); + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; + } + if (!changed) return coords; + } + } + + function scrollIntoView(cm, x1, y1, x2, y2) { + var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); + if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); + if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); + } + + function calculateScrollPos(cm, x1, y1, x2, y2) { + var display = cm.display, pt = paddingTop(display); + y1 += pt; y2 += pt; + if (y1 < 0) y1 = 0; + var screen = display.scroller.clientHeight - scrollerCutOff, screentop = display.scroller.scrollTop, result = {}; + var docBottom = cm.doc.height + paddingVert(display); + var atTop = y1 < pt + 10, atBottom = y2 + pt > docBottom - 10; + if (y1 < screentop) { + result.scrollTop = atTop ? 0 : y1; + } else if (y2 > screentop + screen) { + var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); + if (newTop != screentop) result.scrollTop = newTop; + } + + var screenw = display.scroller.clientWidth - scrollerCutOff, screenleft = display.scroller.scrollLeft; + x1 += display.gutters.offsetWidth; x2 += display.gutters.offsetWidth; + var gutterw = display.gutters.offsetWidth; + var atLeft = x1 < gutterw + 10; + if (x1 < screenleft + gutterw || atLeft) { + if (atLeft) x1 = 0; + result.scrollLeft = Math.max(0, x1 - 10 - gutterw); + } else if (x2 > screenw + screenleft - 3) { + result.scrollLeft = x2 + 10 - screenw; + } + return result; + } + + function updateScrollPos(cm, left, top) { + cm.curOp.updateScrollPos = {scrollLeft: left == null ? cm.doc.scrollLeft : left, + scrollTop: top == null ? cm.doc.scrollTop : top}; + } + + function addToScrollPos(cm, left, top) { + var pos = cm.curOp.updateScrollPos || (cm.curOp.updateScrollPos = {scrollLeft: cm.doc.scrollLeft, scrollTop: cm.doc.scrollTop}); + var scroll = cm.display.scroller; + pos.scrollTop = Math.max(0, Math.min(scroll.scrollHeight - scroll.clientHeight, pos.scrollTop + top)); + pos.scrollLeft = Math.max(0, Math.min(scroll.scrollWidth - scroll.clientWidth, pos.scrollLeft + left)); + } + + // API UTILITIES + + function indentLine(cm, n, how, aggressive) { + var doc = cm.doc; + if (!how) how = "add"; + if (how == "smart") { + if (!cm.doc.mode.indent) how = "prev"; + else var state = getStateBefore(cm, n); + } + + var tabSize = cm.options.tabSize; + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); + var curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (how == "smart") { + indentation = cm.doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); + if (indentation == Pass) { + if (!aggressive) return; + how = "prev"; + } + } + if (how == "prev") { + if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); + else indentation = 0; + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit; + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit; + } + indentation = Math.max(0, indentation); + + var indentString = "", pos = 0; + if (cm.options.indentWithTabs) + for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} + if (pos < indentation) indentString += spaceStr(indentation - pos); + + if (indentString != curSpaceString) + replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); + line.stateAfter = null; + } + + function changeLine(cm, handle, op) { + var no = handle, line = handle, doc = cm.doc; + if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); + else no = lineNo(handle); + if (no == null) return null; + if (op(line, no)) regChange(cm, no, no + 1); + else return null; + return line; + } + + function findPosH(doc, pos, dir, unit, visually) { + var line = pos.line, ch = pos.ch, origDir = dir; + var lineObj = getLine(doc, line); + var possible = true; + function findNextLine() { + var l = line + dir; + if (l < doc.first || l >= doc.first + doc.size) return (possible = false); + line = l; + return lineObj = getLine(doc, l); + } + function moveOnce(boundToLine) { + var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); + if (next == null) { + if (!boundToLine && findNextLine()) { + if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); + else ch = dir < 0 ? lineObj.text.length : 0; + } else return (possible = false); + } else ch = next; + return true; + } + + if (unit == "char") moveOnce(); + else if (unit == "column") moveOnce(true); + else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group"; + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) break; + var cur = lineObj.text.charAt(ch) || "\n"; + var type = isWordChar(cur) ? "w" + : !group ? null + : /\s/.test(cur) ? null + : "p"; + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce();} + break; + } + if (type) sawType = type; + if (dir > 0 && !moveOnce(!first)) break; + } + } + var result = skipAtomic(doc, Pos(line, ch), origDir, true); + if (!possible) result.hitSide = true; + return result; + } + + function findPosV(cm, pos, dir, unit) { + var doc = cm.doc, x = pos.left, y; + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); + y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3; + } + for (;;) { + var target = coordsChar(cm, x, y); + if (!target.outside) break; + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } + y += dir * 5; + } + return target; + } + + function findWordAt(line, pos) { + var start = pos.ch, end = pos.ch; + if (line) { + if (pos.after === false || end == line.length) --start; else ++end; + var startChar = line.charAt(start); + var check = isWordChar(startChar) ? isWordChar + : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} + : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; + while (start > 0 && check(line.charAt(start - 1))) --start; + while (end < line.length && check(line.charAt(end))) ++end; + } + return {from: Pos(pos.line, start), to: Pos(pos.line, end)}; + } + + function selectLine(cm, line) { + extendSelection(cm.doc, Pos(line, 0), clipPos(cm.doc, Pos(line + 1, 0))); + } + + // PROTOTYPE + + // The publicly visible API. Note that operation(null, f) means + // 'wrap f in an operation, performed on its `this` parameter' + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); focusInput(this); onFocus(this); fastPoll(this);}, + + setOption: function(option, value) { + var options = this.options, old = options[option]; + if (options[option] == value && option != "mode") return; + options[option] = value; + if (optionHandlers.hasOwnProperty(option)) + operation(this, optionHandlers[option])(this, value, old); + }, + + getOption: function(option) {return this.options[option];}, + getDoc: function() {return this.doc;}, + + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](map); + }, + removeKeyMap: function(map) { + var maps = this.state.keyMaps; + for (var i = 0; i < maps.length; ++i) + if ((typeof map == "string" ? maps[i].name : maps[i]) == map) { + maps.splice(i, 1); + return true; + } + }, + + addOverlay: operation(null, function(spec, options) { + var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); + if (mode.startState) throw new Error("Overlays may not be stateful."); + this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque}); + this.state.modeGen++; + regChange(this); + }), + removeOverlay: operation(null, function(spec) { + var overlays = this.state.overlays; + for (var i = 0; i < overlays.length; ++i) { + if (overlays[i].modeSpec == spec) { + overlays.splice(i, 1); + this.state.modeGen++; + regChange(this); + return; + } + } + }), + + indentLine: operation(null, function(n, dir, aggressive) { + if (typeof dir != "string") { + if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; + else dir = dir ? "add" : "subtract"; + } + if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); + }), + indentSelection: operation(null, function(how) { + var sel = this.doc.sel; + if (posEq(sel.from, sel.to)) return indentLine(this, sel.from.line, how); + var e = sel.to.line - (sel.to.ch ? 0 : 1); + for (var i = sel.from.line; i <= e; ++i) indentLine(this, i, how); + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos) { + var doc = this.doc; + pos = clipPos(doc, pos); + var state = getStateBefore(this, pos.line), mode = this.doc.mode; + var line = getLine(doc, pos.line); + var stream = new StringStream(line.text, this.options.tabSize); + while (stream.pos < pos.ch && !stream.eol()) { + stream.start = stream.pos; + var style = mode.token(stream, state); + } + return {start: stream.start, + end: stream.pos, + string: stream.current(), + className: style || null, // Deprecated, use 'type' instead + type: style || null, + state: state}; + }, + + getStateAfter: function(line) { + var doc = this.doc; + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); + return getStateBefore(this, line + 1); + }, + + cursorCoords: function(start, mode) { + var pos, sel = this.doc.sel; + if (start == null) pos = sel.head; + else if (typeof start == "object") pos = clipPos(this.doc, start); + else pos = start ? sel.from : sel.to; + return cursorCoords(this, pos, mode || "page"); + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page"); + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page"); + return coordsChar(this, coords.left, coords.top); + }, + + defaultTextHeight: function() { return textHeight(this.display); }, + defaultCharWidth: function() { return charWidth(this.display); }, + + setGutterMarker: operation(null, function(line, gutterID, value) { + return changeLine(this, line, function(line) { + var markers = line.gutterMarkers || (line.gutterMarkers = {}); + markers[gutterID] = value; + if (!value && isEmpty(markers)) line.gutterMarkers = null; + return true; + }); + }), + + clearGutter: operation(null, function(gutterID) { + var cm = this, doc = cm.doc, i = doc.first; + doc.iter(function(line) { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + line.gutterMarkers[gutterID] = null; + regChange(cm, i, i + 1); + if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; + } + ++i; + }); + }), + + addLineClass: operation(null, function(handle, where, cls) { + return changeLine(this, handle, function(line) { + var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; + if (!line[prop]) line[prop] = cls; + else if (new RegExp("\\b" + cls + "\\b").test(line[prop])) return false; + else line[prop] += " " + cls; + return true; + }); + }), + + removeLineClass: operation(null, function(handle, where, cls) { + return changeLine(this, handle, function(line) { + var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; + var cur = line[prop]; + if (!cur) return false; + else if (cls == null) line[prop] = null; + else { + var upd = cur.replace(new RegExp("^" + cls + "\\b\\s*|\\s*\\b" + cls + "\\b"), ""); + if (upd == cur) return false; + line[prop] = upd || null; + } + return true; + }); + }), + + addLineWidget: operation(null, function(handle, node, options) { + return addLineWidget(this, handle, node, options); + }), + + removeLineWidget: function(widget) { widget.clear(); }, + + lineInfo: function(line) { + if (typeof line == "number") { + if (!isLine(this.doc, line)) return null; + var n = line; + line = getLine(this.doc, line); + if (!line) return null; + } else { + var n = lineNo(line); + if (n == null) return null; + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets}; + }, + + getViewport: function() { return {from: this.display.showingFrom, to: this.display.showingTo};}, + + addWidget: function(pos, node, scroll, vert, horiz) { + var display = this.display; + pos = cursorCoords(this, clipPos(this.doc, pos)); + var top = pos.bottom, left = pos.left; + node.style.position = "absolute"; + display.sizer.appendChild(node); + if (vert == "over") { + top = pos.top; + } else if (vert == "above" || vert == "near") { + var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + top = pos.top - node.offsetHeight; + else if (pos.bottom + node.offsetHeight <= vspace) + top = pos.bottom; + if (left + node.offsetWidth > hspace) + left = hspace - node.offsetWidth; + } + node.style.top = (top + paddingTop(display)) + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth; + node.style.right = "0px"; + } else { + if (horiz == "left") left = 0; + else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; + node.style.left = left + "px"; + } + if (scroll) + scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); + }, + + triggerOnKeyDown: operation(null, onKeyDown), + + execCommand: function(cmd) {return commands[cmd](this);}, + + findPosH: function(from, amount, unit, visually) { + var dir = 1; + if (amount < 0) { dir = -1; amount = -amount; } + for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { + cur = findPosH(this.doc, cur, dir, unit, visually); + if (cur.hitSide) break; + } + return cur; + }, + + moveH: operation(null, function(dir, unit) { + var sel = this.doc.sel, pos; + if (sel.shift || sel.extend || posEq(sel.from, sel.to)) + pos = findPosH(this.doc, sel.head, dir, unit, this.options.rtlMoveVisually); + else + pos = dir < 0 ? sel.from : sel.to; + extendSelection(this.doc, pos, pos, dir); + }), + + deleteH: operation(null, function(dir, unit) { + var sel = this.doc.sel; + if (!posEq(sel.from, sel.to)) replaceRange(this.doc, "", sel.from, sel.to, "+delete"); + else replaceRange(this.doc, "", sel.from, findPosH(this.doc, sel.head, dir, unit, false), "+delete"); + this.curOp.userSelChange = true; + }), + + findPosV: function(from, amount, unit, goalColumn) { + var dir = 1, x = goalColumn; + if (amount < 0) { dir = -1; amount = -amount; } + for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { + var coords = cursorCoords(this, cur, "div"); + if (x == null) x = coords.left; + else coords.left = x; + cur = findPosV(this, coords, dir, unit); + if (cur.hitSide) break; + } + return cur; + }, + + moveV: operation(null, function(dir, unit) { + var sel = this.doc.sel; + var pos = cursorCoords(this, sel.head, "div"); + if (sel.goalColumn != null) pos.left = sel.goalColumn; + var target = findPosV(this, pos, dir, unit); + + if (unit == "page") addToScrollPos(this, 0, charCoords(this, target, "div").top - pos.top); + extendSelection(this.doc, target, target, dir); + sel.goalColumn = pos.left; + }), + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) return; + if (this.state.overwrite = !this.state.overwrite) + this.display.cursor.className += " CodeMirror-overwrite"; + else + this.display.cursor.className = this.display.cursor.className.replace(" CodeMirror-overwrite", ""); + }, + hasFocus: function() { return this.state.focused; }, + + scrollTo: operation(null, function(x, y) { + updateScrollPos(this, x, y); + }), + getScrollInfo: function() { + var scroller = this.display.scroller, co = scrollerCutOff; + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - co, width: scroller.scrollWidth - co, + clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co}; + }, + + scrollIntoView: operation(null, function(pos, margin) { + if (typeof pos == "number") pos = Pos(pos, 0); + if (!margin) margin = 0; + var coords = pos; + + if (!pos || pos.line != null) { + this.curOp.scrollToPos = pos ? clipPos(this.doc, pos) : this.doc.sel.head; + this.curOp.scrollToPosMargin = margin; + coords = cursorCoords(this, this.curOp.scrollToPos); + } + var sPos = calculateScrollPos(this, coords.left, coords.top - margin, coords.right, coords.bottom + margin); + updateScrollPos(this, sPos.scrollLeft, sPos.scrollTop); + }), + + setSize: function(width, height) { + function interpret(val) { + return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; + } + if (width != null) this.display.wrapper.style.width = interpret(width); + if (height != null) this.display.wrapper.style.height = interpret(height); + this.refresh(); + }, + + on: function(type, f) {on(this, type, f);}, + off: function(type, f) {off(this, type, f);}, + + operation: function(f){return runInOp(this, f);}, + + refresh: operation(null, function() { + clearCaches(this); + updateScrollPos(this, this.doc.scrollLeft, this.doc.scrollTop); + regChange(this); + }), + + swapDoc: operation(null, function(doc) { + var old = this.doc; + old.cm = null; + attachDoc(this, doc); + clearCaches(this); + resetInput(this, true); + updateScrollPos(this, doc.scrollLeft, doc.scrollTop); + return old; + }), + + getInputField: function(){return this.display.input;}, + getWrapperElement: function(){return this.display.wrapper;}, + getScrollerElement: function(){return this.display.scroller;}, + getGutterElement: function(){return this.display.gutters;} + }; + + // OPTION DEFAULTS + + var optionHandlers = CodeMirror.optionHandlers = {}; + + // The default configuration options. + var defaults = CodeMirror.defaults = {}; + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt; + if (handle) optionHandlers[name] = + notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; + } + + var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", function(cm, val) { + cm.setValue(val); + }, true); + option("mode", null, function(cm, val) { + cm.doc.modeOption = val; + loadMode(cm); + }, true); + + option("indentUnit", 2, loadMode, true); + option("indentWithTabs", false); + option("smartIndent", true); + option("tabSize", 4, function(cm) { + loadMode(cm); + clearCaches(cm); + regChange(cm); + }, true); + option("electricChars", true); + option("rtlMoveVisually", !windows); + + option("theme", "default", function(cm) { + themeChanged(cm); + guttersChanged(cm); + }, true); + option("keyMap", "default", keyMapChanged); + option("extraKeys", null); + + option("onKeyEvent", null); + option("onDragEvent", null); + + option("lineWrapping", false, wrappingChanged, true); + option("gutters", [], function(cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("fixedGutter", true, function(cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; + cm.refresh(); + }, true); + option("coverGutterNextToScrollbar", false, updateScrollbars, true); + option("lineNumbers", false, function(cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("firstLineNumber", 1, guttersChanged, true); + option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); + option("showCursorWhenSelecting", false, updateSelection, true); + + option("readOnly", false, function(cm, val) { + if (val == "nocursor") {onBlur(cm); cm.display.input.blur();} + else if (!val) resetInput(cm, true); + }); + option("dragDrop", true); + + option("cursorBlinkRate", 530); + option("cursorScrollMargin", 0); + option("cursorHeight", 1); + option("workTime", 100); + option("workDelay", 100); + option("flattenSpans", true); + option("pollInterval", 100); + option("undoDepth", 40, function(cm, val){cm.doc.history.undoDepth = val;}); + option("historyEventDelay", 500); + option("viewportMargin", 10, function(cm){cm.refresh();}, true); + option("maxHighlightLength", 10000, function(cm){loadMode(cm); cm.refresh();}, true); + option("moveInputWithCursor", true, function(cm, val) { + if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0; + }); + + option("tabindex", null, function(cm, val) { + cm.display.input.tabIndex = val || ""; + }); + option("autofocus", null); + + // MODE DEFINITION AND QUERYING + + // Known modes, by name and by MIME + var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; + + CodeMirror.defineMode = function(name, mode) { + if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; + if (arguments.length > 2) { + mode.dependencies = []; + for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]); + } + modes[name] = mode; + }; + + CodeMirror.defineMIME = function(mime, spec) { + mimeModes[mime] = spec; + }; + + CodeMirror.resolveMode = function(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec]; + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + var found = mimeModes[spec.name]; + spec = createObj(found, spec); + spec.name = found.name; + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return CodeMirror.resolveMode("application/xml"); + } + if (typeof spec == "string") return {name: spec}; + else return spec || {name: "null"}; + }; + + CodeMirror.getMode = function(options, spec) { + spec = CodeMirror.resolveMode(spec); + var mfactory = modes[spec.name]; + if (!mfactory) return CodeMirror.getMode(options, "text/plain"); + var modeObj = mfactory(options, spec); + if (modeExtensions.hasOwnProperty(spec.name)) { + var exts = modeExtensions[spec.name]; + for (var prop in exts) { + if (!exts.hasOwnProperty(prop)) continue; + if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; + modeObj[prop] = exts[prop]; + } + } + modeObj.name = spec.name; + return modeObj; + }; + + CodeMirror.defineMode("null", function() { + return {token: function(stream) {stream.skipToEnd();}}; + }); + CodeMirror.defineMIME("text/plain", "null"); + + var modeExtensions = CodeMirror.modeExtensions = {}; + CodeMirror.extendMode = function(mode, properties) { + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); + copyObj(properties, exts); + }; + + // EXTENSIONS + + CodeMirror.defineExtension = function(name, func) { + CodeMirror.prototype[name] = func; + }; + CodeMirror.defineDocExtension = function(name, func) { + Doc.prototype[name] = func; + }; + CodeMirror.defineOption = option; + + var initHooks = []; + CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; + + // MODE STATE HANDLING + + // Utility functions for working with state. Exported because modes + // sometimes need to do this. + function copyState(mode, state) { + if (state === true) return state; + if (mode.copyState) return mode.copyState(state); + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) val = val.concat([]); + nstate[n] = val; + } + return nstate; + } + CodeMirror.copyState = copyState; + + function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true; + } + CodeMirror.startState = startState; + + CodeMirror.innerMode = function(mode, state) { + while (mode.innerMode) { + var info = mode.innerMode(state); + state = info.state; + mode = info.mode; + } + return info || {mode: mode, state: state}; + }; + + // STANDARD COMMANDS + + var commands = CodeMirror.commands = { + selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()));}, + killLine: function(cm) { + var from = cm.getCursor(true), to = cm.getCursor(false), sel = !posEq(from, to); + if (!sel && cm.getLine(from.line).length == from.ch) + cm.replaceRange("", from, Pos(from.line + 1, 0), "+delete"); + else cm.replaceRange("", from, sel ? to : Pos(from.line), "+delete"); + }, + deleteLine: function(cm) { + var l = cm.getCursor().line; + cm.replaceRange("", Pos(l, 0), Pos(l), "+delete"); + }, + undo: function(cm) {cm.undo();}, + redo: function(cm) {cm.redo();}, + goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, + goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, + goLineStart: function(cm) { + cm.extendSelection(lineStart(cm, cm.getCursor().line)); + }, + goLineStartSmart: function(cm) { + var cur = cm.getCursor(), start = lineStart(cm, cur.line); + var line = cm.getLineHandle(start.line); + var order = getOrder(line); + if (!order || order[0].level == 0) { + var firstNonWS = Math.max(0, line.text.search(/\S/)); + var inWS = cur.line == start.line && cur.ch <= firstNonWS && cur.ch; + cm.extendSelection(Pos(start.line, inWS ? 0 : firstNonWS)); + } else cm.extendSelection(start); + }, + goLineEnd: function(cm) { + cm.extendSelection(lineEnd(cm, cm.getCursor().line)); + }, + goLineRight: function(cm) { + var top = cm.charCoords(cm.getCursor(), "div").top + 5; + cm.extendSelection(cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div")); + }, + goLineLeft: function(cm) { + var top = cm.charCoords(cm.getCursor(), "div").top + 5; + cm.extendSelection(cm.coordsChar({left: 0, top: top}, "div")); + }, + goLineUp: function(cm) {cm.moveV(-1, "line");}, + goLineDown: function(cm) {cm.moveV(1, "line");}, + goPageUp: function(cm) {cm.moveV(-1, "page");}, + goPageDown: function(cm) {cm.moveV(1, "page");}, + goCharLeft: function(cm) {cm.moveH(-1, "char");}, + goCharRight: function(cm) {cm.moveH(1, "char");}, + goColumnLeft: function(cm) {cm.moveH(-1, "column");}, + goColumnRight: function(cm) {cm.moveH(1, "column");}, + goWordLeft: function(cm) {cm.moveH(-1, "word");}, + goGroupRight: function(cm) {cm.moveH(1, "group");}, + goGroupLeft: function(cm) {cm.moveH(-1, "group");}, + goWordRight: function(cm) {cm.moveH(1, "word");}, + delCharBefore: function(cm) {cm.deleteH(-1, "char");}, + delCharAfter: function(cm) {cm.deleteH(1, "char");}, + delWordBefore: function(cm) {cm.deleteH(-1, "word");}, + delWordAfter: function(cm) {cm.deleteH(1, "word");}, + delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, + delGroupAfter: function(cm) {cm.deleteH(1, "group");}, + indentAuto: function(cm) {cm.indentSelection("smart");}, + indentMore: function(cm) {cm.indentSelection("add");}, + indentLess: function(cm) {cm.indentSelection("subtract");}, + insertTab: function(cm) {cm.replaceSelection("\t", "end", "+input");}, + defaultTab: function(cm) { + if (cm.somethingSelected()) cm.indentSelection("add"); + else cm.replaceSelection("\t", "end", "+input"); + }, + transposeChars: function(cm) { + var cur = cm.getCursor(), line = cm.getLine(cur.line); + if (cur.ch > 0 && cur.ch < line.length - 1) + cm.replaceRange(line.charAt(cur.ch) + line.charAt(cur.ch - 1), + Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1)); + }, + newlineAndIndent: function(cm) { + operation(cm, function() { + cm.replaceSelection("\n", "end", "+input"); + cm.indentLine(cm.getCursor().line, null, true); + })(); + }, + toggleOverwrite: function(cm) {cm.toggleOverwrite();} + }; + + // STANDARD KEYMAPS + + var keyMap = CodeMirror.keyMap = {}; + keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite" + }; + // Note that the save and find-related commands aren't defined by + // default. Unknown commands are simply ignored. + keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Alt-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", + fallthrough: "basic" + }; + keyMap.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", + fallthrough: ["basic", "emacsy"] + }; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; + keyMap.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" + }; + + // KEYMAP DISPATCH + + function getKeyMap(val) { + if (typeof val == "string") return keyMap[val]; + else return val; + } + + function lookupKey(name, maps, handle) { + function lookup(map) { + map = getKeyMap(map); + var found = map[name]; + if (found === false) return "stop"; + if (found != null && handle(found)) return true; + if (map.nofallthrough) return "stop"; + + var fallthrough = map.fallthrough; + if (fallthrough == null) return false; + if (Object.prototype.toString.call(fallthrough) != "[object Array]") + return lookup(fallthrough); + for (var i = 0, e = fallthrough.length; i < e; ++i) { + var done = lookup(fallthrough[i]); + if (done) return done; + } + return false; + } + + for (var i = 0; i < maps.length; ++i) { + var done = lookup(maps[i]); + if (done) return done; + } + } + function isModifierKey(event) { + var name = keyNames[event.keyCode]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; + } + function keyName(event, noShift) { + if (opera && event.keyCode == 34 && event["char"]) return false; + var name = keyNames[event.keyCode]; + if (name == null || event.altGraphKey) return false; + if (event.altKey) name = "Alt-" + name; + if (flipCtrlCmd ? event.metaKey : event.ctrlKey) name = "Ctrl-" + name; + if (flipCtrlCmd ? event.ctrlKey : event.metaKey) name = "Cmd-" + name; + if (!noShift && event.shiftKey) name = "Shift-" + name; + return name; + } + CodeMirror.lookupKey = lookupKey; + CodeMirror.isModifierKey = isModifierKey; + CodeMirror.keyName = keyName; + + // FROMTEXTAREA + + CodeMirror.fromTextArea = function(textarea, options) { + if (!options) options = {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabindex) + options.tabindex = textarea.tabindex; + if (!options.placeholder && textarea.placeholder) + options.placeholder = textarea.placeholder; + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = document.body; + // doc.activeElement occasionally throws on IE + try { hasFocus = document.activeElement; } catch(e) {} + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; + } + + function save() {textarea.value = cm.getValue();} + if (textarea.form) { + on(textarea.form, "submit", save); + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + var form = textarea.form, realSubmit = form.submit; + try { + var wrappedSubmit = form.submit = function() { + save(); + form.submit = realSubmit; + form.submit(); + form.submit = wrappedSubmit; + }; + } catch(e) {} + } + } + + textarea.style.display = "none"; + var cm = CodeMirror(function(node) { + textarea.parentNode.insertBefore(node, textarea.nextSibling); + }, options); + cm.save = save; + cm.getTextArea = function() { return textarea; }; + cm.toTextArea = function() { + save(); + textarea.parentNode.removeChild(cm.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + off(textarea.form, "submit", save); + if (typeof textarea.form.submit == "function") + textarea.form.submit = realSubmit; + } + }; + return cm; + }; + + // STRING STREAM + + // Fed to the mode parsers, provides helper functions to make + // parsers more succinct. + + // The character stream used by a mode's parser. + function StringStream(string, tabSize) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + this.lastColumnPos = this.lastColumnValue = 0; + } + + StringStream.prototype = { + eol: function() {return this.pos >= this.string.length;}, + sol: function() {return this.pos == 0;}, + peek: function() {return this.string.charAt(this.pos) || undefined;}, + next: function() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function(match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") var ok = ch == match; + else var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) {++this.pos; return ch;} + }, + eatWhile: function(match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start; + }, + eatSpace: function() { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; + return this.pos > start; + }, + skipToEnd: function() {this.pos = this.string.length;}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true;} + }, + backUp: function(n) {this.pos -= n;}, + column: function() { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); + this.lastColumnPos = this.start; + } + return this.lastColumnValue; + }, + indentation: function() {return countColumn(this.string, null, this.tabSize);}, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; + var substr = this.string.substr(this.pos, pattern.length); + if (cased(substr) == cased(pattern)) { + if (consume !== false) this.pos += pattern.length; + return true; + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && match.index > 0) return null; + if (match && consume !== false) this.pos += match[0].length; + return match; + } + }, + current: function(){return this.string.slice(this.start, this.pos);} + }; + CodeMirror.StringStream = StringStream; + + // TEXTMARKERS + + function TextMarker(doc, type) { + this.lines = []; + this.type = type; + this.doc = doc; + } + CodeMirror.TextMarker = TextMarker; + + TextMarker.prototype.clear = function() { + if (this.explicitlyCleared) return; + var cm = this.doc.cm, withOp = cm && !cm.curOp; + if (withOp) startOperation(cm); + var min = null, max = null; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (span.to != null) max = lineNo(line); + line.markedSpans = removeMarkedSpan(line.markedSpans, span); + if (span.from != null) + min = lineNo(line); + else if (this.collapsed && !lineIsHidden(this.doc, line) && cm) + updateLineHeight(line, textHeight(cm.display)); + } + if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { + var visual = visualLine(cm.doc, this.lines[i]), len = lineLength(cm.doc, visual); + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual; + cm.display.maxLineLength = len; + cm.display.maxLineChanged = true; + } + } + + if (min != null && cm) regChange(cm, min, max + 1); + this.lines.length = 0; + this.explicitlyCleared = true; + if (this.collapsed && this.doc.cantEdit) { + this.doc.cantEdit = false; + if (cm) reCheckSelection(cm); + } + if (withOp) endOperation(cm); + signalLater(this, "clear"); + }; + + TextMarker.prototype.find = function() { + var from, to; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (span.from != null || span.to != null) { + var found = lineNo(line); + if (span.from != null) from = Pos(found, span.from); + if (span.to != null) to = Pos(found, span.to); + } + } + if (this.type == "bookmark") return from; + return from && {from: from, to: to}; + }; + + TextMarker.prototype.changed = function() { + var pos = this.find(), cm = this.doc.cm; + if (!pos || !cm) return; + var line = getLine(this.doc, pos.from.line); + clearCachedMeasurement(cm, line); + if (pos.from.line >= cm.display.showingFrom && pos.from.line < cm.display.showingTo) { + for (var node = cm.display.lineDiv.firstChild; node; node = node.nextSibling) if (node.lineObj == line) { + if (node.offsetHeight != line.height) updateLineHeight(line, node.offsetHeight); + break; + } + runInOp(cm, function() { cm.curOp.selectionChanged = true; }); + } + }; + + TextMarker.prototype.attachLine = function(line) { + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); + } + this.lines.push(line); + }; + TextMarker.prototype.detachLine = function(line) { + this.lines.splice(indexOf(this.lines, line), 1); + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); + } + }; + + function markText(doc, from, to, options, type) { + if (options && options.shared) return markTextShared(doc, from, to, options, type); + if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); + + var marker = new TextMarker(doc, type); + if (type == "range" && !posLess(from, to)) return marker; + if (options) copyObj(options, marker); + if (marker.replacedWith) { + marker.collapsed = true; + marker.replacedWith = elt("span", [marker.replacedWith], "CodeMirror-widget"); + } + if (marker.collapsed) sawCollapsedSpans = true; + + if (marker.addToHistory) + addToHistory(doc, {from: from, to: to, origin: "markText"}, + {head: doc.sel.head, anchor: doc.sel.anchor}, NaN); + + var curLine = from.line, size = 0, collapsedAtStart, collapsedAtEnd, cm = doc.cm, updateMaxLine; + doc.iter(curLine, to.line + 1, function(line) { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(doc, line) == cm.display.maxLine) + updateMaxLine = true; + var span = {from: null, to: null, marker: marker}; + size += line.text.length; + if (curLine == from.line) {span.from = from.ch; size -= from.ch;} + if (curLine == to.line) {span.to = to.ch; size -= line.text.length - to.ch;} + if (marker.collapsed) { + if (curLine == to.line) collapsedAtEnd = collapsedSpanAt(line, to.ch); + if (curLine == from.line) collapsedAtStart = collapsedSpanAt(line, from.ch); + else updateLineHeight(line, 0); + } + addMarkedSpan(line, span); + ++curLine; + }); + if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { + if (lineIsHidden(doc, line)) updateLineHeight(line, 0); + }); + + if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); + + if (marker.readOnly) { + sawReadOnlySpans = true; + if (doc.history.done.length || doc.history.undone.length) + doc.clearHistory(); + } + if (marker.collapsed) { + if (collapsedAtStart != collapsedAtEnd) + throw new Error("Inserting collapsed marker overlapping an existing one"); + marker.size = size; + marker.atomic = true; + } + if (cm) { + if (updateMaxLine) cm.curOp.updateMaxLine = true; + if (marker.className || marker.startStyle || marker.endStyle || marker.collapsed) + regChange(cm, from.line, to.line + 1); + if (marker.atomic) reCheckSelection(cm); + } + return marker; + } + + // SHARED TEXTMARKERS + + function SharedTextMarker(markers, primary) { + this.markers = markers; + this.primary = primary; + for (var i = 0, me = this; i < markers.length; ++i) { + markers[i].parent = this; + on(markers[i], "clear", function(){me.clear();}); + } + } + CodeMirror.SharedTextMarker = SharedTextMarker; + + SharedTextMarker.prototype.clear = function() { + if (this.explicitlyCleared) return; + this.explicitlyCleared = true; + for (var i = 0; i < this.markers.length; ++i) + this.markers[i].clear(); + signalLater(this, "clear"); + }; + SharedTextMarker.prototype.find = function() { + return this.primary.find(); + }; + + function markTextShared(doc, from, to, options, type) { + options = copyObj(options); + options.shared = false; + var markers = [markText(doc, from, to, options, type)], primary = markers[0]; + var widget = options.replacedWith; + linkedDocs(doc, function(doc) { + if (widget) options.replacedWith = widget.cloneNode(true); + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); + for (var i = 0; i < doc.linked.length; ++i) + if (doc.linked[i].isParent) return; + primary = lst(markers); + }); + return new SharedTextMarker(markers, primary); + } + + // TEXTMARKER SPANS + + function getMarkedSpanFor(spans, marker) { + if (spans) for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.marker == marker) return span; + } + } + function removeMarkedSpan(spans, span) { + for (var r, i = 0; i < spans.length; ++i) + if (spans[i] != span) (r || (r = [])).push(spans[i]); + return r; + } + function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; + span.marker.attachLine(line); + } + + function markedSpansBefore(old, startCh, isInsert) { + if (old) for (var i = 0, nw; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); + if (startsBefore || marker.type == "bookmark" && span.from == startCh && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); + (nw || (nw = [])).push({from: span.from, + to: endsAfter ? null : span.to, + marker: marker}); + } + } + return nw; + } + + function markedSpansAfter(old, endCh, isInsert) { + if (old) for (var i = 0, nw; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); + if (endsAfter || marker.type == "bookmark" && span.from == endCh && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); + (nw || (nw = [])).push({from: startsBefore ? null : span.from - endCh, + to: span.to == null ? null : span.to - endCh, + marker: marker}); + } + } + return nw; + } + + function stretchSpansOverChange(doc, change) { + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; + if (!oldFirst && !oldLast) return null; + + var startCh = change.from.ch, endCh = change.to.ch, isInsert = posEq(change.from, change.to); + // Get the spans that 'stick out' on both sides + var first = markedSpansBefore(oldFirst, startCh, isInsert); + var last = markedSpansAfter(oldLast, endCh, isInsert); + + // Next, merge those two ends + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); + if (first) { + // Fix up .to properties of first + for (var i = 0; i < first.length; ++i) { + var span = first[i]; + if (span.to == null) { + var found = getMarkedSpanFor(last, span.marker); + if (!found) span.to = startCh; + else if (sameLine) span.to = found.to == null ? null : found.to + offset; + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (var i = 0; i < last.length; ++i) { + var span = last[i]; + if (span.to != null) span.to += offset; + if (span.from == null) { + var found = getMarkedSpanFor(first, span.marker); + if (!found) { + span.from = offset; + if (sameLine) (first || (first = [])).push(span); + } + } else { + span.from += offset; + if (sameLine) (first || (first = [])).push(span); + } + } + } + + var newMarkers = [first]; + if (!sameLine) { + // Fill gap with whole-line-spans + var gap = change.text.length - 2, gapMarkers; + if (gap > 0 && first) + for (var i = 0; i < first.length; ++i) + if (first[i].to == null) + (gapMarkers || (gapMarkers = [])).push({from: null, to: null, marker: first[i].marker}); + for (var i = 0; i < gap; ++i) + newMarkers.push(gapMarkers); + newMarkers.push(last); + } + return newMarkers; + } + + function mergeOldSpans(doc, change) { + var old = getOldSpans(doc, change); + var stretched = stretchSpansOverChange(doc, change); + if (!old) return stretched; + if (!stretched) return old; + + for (var i = 0; i < old.length; ++i) { + var oldCur = old[i], stretchCur = stretched[i]; + if (oldCur && stretchCur) { + spans: for (var j = 0; j < stretchCur.length; ++j) { + var span = stretchCur[j]; + for (var k = 0; k < oldCur.length; ++k) + if (oldCur[k].marker == span.marker) continue spans; + oldCur.push(span); + } + } else if (stretchCur) { + old[i] = stretchCur; + } + } + return old; + } + + function removeReadOnlyRanges(doc, from, to) { + var markers = null; + doc.iter(from.line, to.line + 1, function(line) { + if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker; + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + (markers || (markers = [])).push(mark); + } + }); + if (!markers) return null; + var parts = [{from: from, to: to}]; + for (var i = 0; i < markers.length; ++i) { + var mk = markers[i], m = mk.find(); + for (var j = 0; j < parts.length; ++j) { + var p = parts[j]; + if (posLess(p.to, m.from) || posLess(m.to, p.from)) continue; + var newParts = [j, 1]; + if (posLess(p.from, m.from) || !mk.inclusiveLeft && posEq(p.from, m.from)) + newParts.push({from: p.from, to: m.from}); + if (posLess(m.to, p.to) || !mk.inclusiveRight && posEq(p.to, m.to)) + newParts.push({from: m.to, to: p.to}); + parts.splice.apply(parts, newParts); + j += newParts.length - 1; + } + } + return parts; + } + + function collapsedSpanAt(line, ch) { + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) for (var sp, i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) continue; + if ((sp.from == null || sp.from < ch) && + (sp.to == null || sp.to > ch) && + (!found || found.width < sp.marker.width)) + found = sp.marker; + } + return found; + } + function collapsedSpanAtStart(line) { return collapsedSpanAt(line, -1); } + function collapsedSpanAtEnd(line) { return collapsedSpanAt(line, line.text.length + 1); } + + function visualLine(doc, line) { + var merged; + while (merged = collapsedSpanAtStart(line)) + line = getLine(doc, merged.find().from.line); + return line; + } + + function lineIsHidden(doc, line) { + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) for (var sp, i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) continue; + if (sp.from == null) return true; + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + return true; + } + } + function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + var end = span.marker.find().to, endLine = getLine(doc, end.line); + return lineIsHiddenInner(doc, endLine, getMarkedSpanFor(endLine.markedSpans, span.marker)); + } + if (span.marker.inclusiveRight && span.to == line.text.length) + return true; + for (var sp, i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i]; + if (sp.marker.collapsed && sp.from == span.to && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) return true; + } + } + + function detachMarkedSpans(line) { + var spans = line.markedSpans; + if (!spans) return; + for (var i = 0; i < spans.length; ++i) + spans[i].marker.detachLine(line); + line.markedSpans = null; + } + + function attachMarkedSpans(line, spans) { + if (!spans) return; + for (var i = 0; i < spans.length; ++i) + spans[i].marker.attachLine(line); + line.markedSpans = spans; + } + + // LINE WIDGETS + + var LineWidget = CodeMirror.LineWidget = function(cm, node, options) { + for (var opt in options) if (options.hasOwnProperty(opt)) + this[opt] = options[opt]; + this.cm = cm; + this.node = node; + }; + function widgetOperation(f) { + return function() { + var withOp = !this.cm.curOp; + if (withOp) startOperation(this.cm); + try {var result = f.apply(this, arguments);} + finally {if (withOp) endOperation(this.cm);} + return result; + }; + } + LineWidget.prototype.clear = widgetOperation(function() { + var ws = this.line.widgets, no = lineNo(this.line); + if (no == null || !ws) return; + for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); + if (!ws.length) this.line.widgets = null; + updateLineHeight(this.line, Math.max(0, this.line.height - widgetHeight(this))); + regChange(this.cm, no, no + 1); + }); + LineWidget.prototype.changed = widgetOperation(function() { + var oldH = this.height; + this.height = null; + var diff = widgetHeight(this) - oldH; + if (!diff) return; + updateLineHeight(this.line, this.line.height + diff); + var no = lineNo(this.line); + regChange(this.cm, no, no + 1); + }); + + function widgetHeight(widget) { + if (widget.height != null) return widget.height; + if (!widget.node.parentNode || widget.node.parentNode.nodeType != 1) + removeChildrenAndAdd(widget.cm.display.measure, elt("div", [widget.node], null, "position: relative")); + return widget.height = widget.node.offsetHeight; + } + + function addLineWidget(cm, handle, node, options) { + var widget = new LineWidget(cm, node, options); + if (widget.noHScroll) cm.display.alignWidgets = true; + changeLine(cm, handle, function(line) { + (line.widgets || (line.widgets = [])).push(widget); + widget.line = line; + if (!lineIsHidden(cm.doc, line) || widget.showIfHidden) { + var aboveVisible = heightAtLine(cm, line) < cm.display.scroller.scrollTop; + updateLineHeight(line, line.height + widgetHeight(widget)); + if (aboveVisible) addToScrollPos(cm, 0, widget.height); + } + return true; + }); + return widget; + } + + // LINE DATA STRUCTURE + + // Line objects. These hold state related to a line, including + // highlighting info (the styles array). + function makeLine(text, markedSpans, estimateHeight) { + var line = {text: text}; + attachMarkedSpans(line, markedSpans); + line.height = estimateHeight ? estimateHeight(line) : 1; + return line; + } + + function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text; + if (line.stateAfter) line.stateAfter = null; + if (line.styles) line.styles = null; + if (line.order != null) line.order = null; + detachMarkedSpans(line); + attachMarkedSpans(line, markedSpans); + var estHeight = estimateHeight ? estimateHeight(line) : 1; + if (estHeight != line.height) updateLineHeight(line, estHeight); + } + + function cleanUpLine(line) { + line.parent = null; + detachMarkedSpans(line); + } + + // Run the given mode's parser over a line, update the styles + // array, which contains alternating fragments of text and CSS + // classes. + function runMode(cm, text, mode, state, f) { + var flattenSpans = mode.flattenSpans; + if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; + var curText = "", curStyle = null; + var stream = new StringStream(text, cm.options.tabSize), style; + if (text == "" && mode.blankLine) mode.blankLine(state); + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false; + // Webkit seems to refuse to render text nodes longer than 57444 characters + stream.pos = Math.min(text.length, stream.start + 50000); + style = null; + } else { + style = mode.token(stream, state); + } + var substr = stream.current(); + stream.start = stream.pos; + if (!flattenSpans || curStyle != style) { + if (curText) f(curText, curStyle); + curText = substr; curStyle = style; + } else curText = curText + substr; + } + if (curText) f(curText, curStyle); + } + + function highlightLine(cm, line, state) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + var st = [cm.state.modeGen]; + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, state, function(txt, style) {st.push(txt, style);}); + + // Run overlays, adjust style array. + for (var o = 0; o < cm.state.overlays.length; ++o) { + var overlay = cm.state.overlays[o], i = 1; + runMode(cm, line.text, overlay.mode, true, function(txt, style) { + var start = i, len = txt.length; + // Ensure there's a token end at the current position, and that i points at it + while (len) { + var cur = st[i], len_ = cur.length; + if (len_ <= len) { + len -= len_; + } else { + st.splice(i, 1, cur.slice(0, len), st[i+1], cur.slice(len)); + len = 0; + } + i += 2; + } + if (!style) return; + if (overlay.opaque) { + st.splice(start, i - start, txt, style); + i = start + 2; + } else { + for (; start < i; start += 2) { + var cur = st[start+1]; + st[start+1] = cur ? cur + " " + style : style; + } + } + }); + } + + return st; + } + + function getLineStyles(cm, line) { + if (!line.styles || line.styles[0] != cm.state.modeGen) + line.styles = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line))); + return line.styles; + } + + // Lightweight form of highlight -- proceed over this line and + // update state, but don't save a style array. + function processLine(cm, line, state) { + var mode = cm.doc.mode; + var stream = new StringStream(line.text, cm.options.tabSize); + if (line.text == "" && mode.blankLine) mode.blankLine(state); + while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) { + mode.token(stream, state); + stream.start = stream.pos; + } + } + + var styleToClassCache = {}; + function styleToClass(style) { + if (!style) return null; + return styleToClassCache[style] || + (styleToClassCache[style] = "cm-" + style.replace(/ +/g, " cm-")); + } + + function lineContent(cm, realLine, measure) { + var merged, line = realLine, lineBefore, sawBefore, simple = true; + while (merged = collapsedSpanAtStart(line)) { + simple = false; + line = getLine(cm.doc, merged.find().from.line); + if (!lineBefore) lineBefore = line; + } + + var builder = {pre: elt("pre"), col: 0, pos: 0, display: !measure, + measure: null, addedOne: false, cm: cm}; + if (line.textClass) builder.pre.className = line.textClass; + + do { + builder.measure = line == realLine && measure; + builder.pos = 0; + builder.addToken = builder.measure ? buildTokenMeasure : buildToken; + if ((ie || webkit) && cm.getOption("lineWrapping")) + builder.addToken = buildTokenSplitSpaces(builder.addToken); + if (measure && sawBefore && line != realLine && !builder.addedOne) { + measure[0] = builder.pre.appendChild(zeroWidthElement(cm.display.measure)); + builder.addedOne = true; + } + var next = insertLineContent(line, builder, getLineStyles(cm, line)); + sawBefore = line == lineBefore; + if (next) { + line = getLine(cm.doc, next.to.line); + simple = false; + } + } while (next); + + if (measure && !builder.addedOne) + measure[0] = builder.pre.appendChild(simple ? elt("span", "\u00a0") : zeroWidthElement(cm.display.measure)); + if (!builder.pre.firstChild && !lineIsHidden(cm.doc, realLine)) + builder.pre.appendChild(document.createTextNode("\u00a0")); + + var order; + // Work around problem with the reported dimensions of single-char + // direction spans on IE (issue #1129). See also the comment in + // cursorCoords. + if (measure && ie && (order = getOrder(line))) { + var l = order.length - 1; + if (order[l].from == order[l].to) --l; + var last = order[l], prev = order[l - 1]; + if (last.from + 1 == last.to && prev && last.level < prev.level) { + var span = measure[builder.pos - 1]; + if (span) span.parentNode.insertBefore(span.measureRight = zeroWidthElement(cm.display.measure), + span.nextSibling); + } + } + + signal(cm, "renderLine", cm, realLine, builder.pre); + return builder.pre; + } + + var tokenSpecialChars = /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\uFEFF]/g; + function buildToken(builder, text, style, startStyle, endStyle) { + if (!text) return; + if (!tokenSpecialChars.test(text)) { + builder.col += text.length; + var content = document.createTextNode(text); + } else { + var content = document.createDocumentFragment(), pos = 0; + while (true) { + tokenSpecialChars.lastIndex = pos; + var m = tokenSpecialChars.exec(text); + var skipped = m ? m.index - pos : text.length - pos; + if (skipped) { + content.appendChild(document.createTextNode(text.slice(pos, pos + skipped))); + builder.col += skipped; + } + if (!m) break; + pos += skipped + 1; + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; + content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); + builder.col += tabWidth; + } else { + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + m[0].charCodeAt(0).toString(16); + content.appendChild(token); + builder.col += 1; + } + } + } + if (style || startStyle || endStyle || builder.measure) { + var fullStyle = style || ""; + if (startStyle) fullStyle += startStyle; + if (endStyle) fullStyle += endStyle; + return builder.pre.appendChild(elt("span", [content], fullStyle)); + } + builder.pre.appendChild(content); + } + + function buildTokenMeasure(builder, text, style, startStyle, endStyle) { + var wrapping = builder.cm.options.lineWrapping; + for (var i = 0; i < text.length; ++i) { + var ch = text.charAt(i), start = i == 0; + if (ch >= "\ud800" && ch < "\udbff" && i < text.length - 1) { + ch = text.slice(i, i + 2); + ++i; + } else if (i && wrapping && spanAffectsWrapping(text, i)) { + builder.pre.appendChild(elt("wbr")); + } + var span = builder.measure[builder.pos] = + buildToken(builder, ch, style, + start && startStyle, i == text.length - 1 && endStyle); + // In IE single-space nodes wrap differently than spaces + // embedded in larger text nodes, except when set to + // white-space: normal (issue #1268). + if (ie && wrapping && ch == " " && i && !/\s/.test(text.charAt(i - 1)) && + i < text.length - 1 && !/\s/.test(text.charAt(i + 1))) + span.style.whiteSpace = "normal"; + builder.pos += ch.length; + } + if (text.length) builder.addedOne = true; + } + + function buildTokenSplitSpaces(inner) { + function split(old) { + var out = " "; + for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0"; + out += " "; + return out; + } + return function(builder, text, style, startStyle, endStyle) { + return inner(builder, text.replace(/ {3,}/, split), style, startStyle, endStyle); + }; + } + + function buildCollapsedSpan(builder, size, widget) { + if (widget) { + if (!builder.display) widget = widget.cloneNode(true); + builder.pre.appendChild(widget); + if (builder.measure && size) { + builder.measure[builder.pos] = widget; + builder.addedOne = true; + } + } + builder.pos += size; + } + + // Outputs a number of spans to make up a line, taking highlighting + // and marked text into account. + function insertLineContent(line, builder, styles) { + var spans = line.markedSpans; + if (!spans) { + for (var i = 1; i < styles.length; i+=2) + builder.addToken(builder, styles[i], styleToClass(styles[i+1])); + return; + } + + var allText = line.text, len = allText.length; + var pos = 0, i = 1, text = "", style; + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed; + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = ""; + collapsed = null; nextChange = Infinity; + var foundBookmark = null; + for (var j = 0; j < spans.length; ++j) { + var sp = spans[j], m = sp.marker; + if (sp.from <= pos && (sp.to == null || sp.to > pos)) { + if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; } + if (m.className) spanStyle += " " + m.className; + if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; + if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle; + if (m.collapsed && (!collapsed || collapsed.marker.width < m.width)) + collapsed = sp; + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from; + } + if (m.type == "bookmark" && sp.from == pos && m.replacedWith) + foundBookmark = m.replacedWith; + } + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len : collapsed.to) - pos, + collapsed.from != null && collapsed.marker.replacedWith); + if (collapsed.to == null) return collapsed.marker.find(); + } + if (foundBookmark && !collapsed) buildCollapsedSpan(builder, 0, foundBookmark); + } + if (pos >= len) break; + + var upto = Math.min(len, nextChange); + while (true) { + if (text) { + var end = pos + text.length; + if (!collapsed) { + var tokenText = end > upto ? text.slice(0, upto - pos) : text; + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : ""); + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} + pos = end; + spanStartStyle = ""; + } + text = styles[i++]; style = styleToClass(styles[i++]); + } + } + } + + // DOCUMENT DATA STRUCTURE + + function updateDoc(doc, change, markedSpans, selAfter, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null;} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight); + signalLater(line, "change", line, change); + } + + var from = change.from, to = change.to, text = change.text; + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; + + // First adjust the line structure + if (from.ch == 0 && to.ch == 0 && lastText == "") { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + for (var i = 0, e = text.length - 1, added = []; i < e; ++i) + added.push(makeLine(text[i], spansFor(i), estimateHeight)); + update(lastLine, lastLine.text, lastSpans); + if (nlines) doc.remove(from.line, nlines); + if (added.length) doc.insert(from.line, added); + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); + } else { + for (var added = [], i = 1, e = text.length - 1; i < e; ++i) + added.push(makeLine(text[i], spansFor(i), estimateHeight)); + added.push(makeLine(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + doc.insert(from.line + 1, added); + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); + doc.remove(from.line + 1, nlines); + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); + for (var i = 1, e = text.length - 1, added = []; i < e; ++i) + added.push(makeLine(text[i], spansFor(i), estimateHeight)); + if (nlines > 1) doc.remove(from.line + 1, nlines - 1); + doc.insert(from.line + 1, added); + } + + signalLater(doc, "change", doc, change); + setSelection(doc, selAfter.anchor, selAfter.head, null, true); + } + + function LeafChunk(lines) { + this.lines = lines; + this.parent = null; + for (var i = 0, e = lines.length, height = 0; i < e; ++i) { + lines[i].parent = this; + height += lines[i].height; + } + this.height = height; + } + + LeafChunk.prototype = { + chunkSize: function() { return this.lines.length; }, + removeInner: function(at, n) { + for (var i = at, e = at + n; i < e; ++i) { + var line = this.lines[i]; + this.height -= line.height; + cleanUpLine(line); + signalLater(line, "delete"); + } + this.lines.splice(at, n); + }, + collapse: function(lines) { + lines.splice.apply(lines, [lines.length, 0].concat(this.lines)); + }, + insertInner: function(at, lines, height) { + this.height += height; + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0, e = lines.length; i < e; ++i) lines[i].parent = this; + }, + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + if (op(this.lines[at])) return true; + } + }; + + function BranchChunk(children) { + this.children = children; + var size = 0, height = 0; + for (var i = 0, e = children.length; i < e; ++i) { + var ch = children[i]; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; + } + this.size = size; + this.height = height; + this.parent = null; + } + + BranchChunk.prototype = { + chunkSize: function() { return this.size; }, + removeInner: function(at, n) { + this.size -= n; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height; + child.removeInner(at, rm); + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) break; + at = 0; + } else at -= sz; + } + if (this.size - n < 25) { + var lines = []; + this.collapse(lines); + this.children = [new LeafChunk(lines)]; + this.children[0].parent = this; + } + }, + collapse: function(lines) { + for (var i = 0, e = this.children.length; i < e; ++i) this.children[i].collapse(lines); + }, + insertInner: function(at, lines, height) { + this.size += lines.length; + this.height += height; + for (var i = 0, e = this.children.length; i < e; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at <= sz) { + child.insertInner(at, lines, height); + if (child.lines && child.lines.length > 50) { + while (child.lines.length > 50) { + var spilled = child.lines.splice(child.lines.length - 25, 25); + var newleaf = new LeafChunk(spilled); + child.height -= newleaf.height; + this.children.splice(i + 1, 0, newleaf); + newleaf.parent = this; + } + this.maybeSpill(); + } + break; + } + at -= sz; + } + }, + maybeSpill: function() { + if (this.children.length <= 10) return; + var me = this; + do { + var spilled = me.children.splice(me.children.length - 5, 5); + var sibling = new BranchChunk(spilled); + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children); + copy.parent = me; + me.children = [copy, sibling]; + me = copy; + } else { + me.size -= sibling.size; + me.height -= sibling.height; + var myIndex = indexOf(me.parent.children, me); + me.parent.children.splice(myIndex + 1, 0, sibling); + } + sibling.parent = me.parent; + } while (me.children.length > 10); + me.parent.maybeSpill(); + }, + iterN: function(at, n, op) { + for (var i = 0, e = this.children.length; i < e; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var used = Math.min(n, sz - at); + if (child.iterN(at, used, op)) return true; + if ((n -= used) == 0) break; + at = 0; + } else at -= sz; + } + } + }; + + var nextDocId = 0; + var Doc = CodeMirror.Doc = function(text, mode, firstLine) { + if (!(this instanceof Doc)) return new Doc(text, mode, firstLine); + if (firstLine == null) firstLine = 0; + + BranchChunk.call(this, [new LeafChunk([makeLine("", null)])]); + this.first = firstLine; + this.scrollTop = this.scrollLeft = 0; + this.cantEdit = false; + this.history = makeHistory(); + this.frontier = firstLine; + var start = Pos(firstLine, 0); + this.sel = {from: start, to: start, head: start, anchor: start, shift: false, extend: false, goalColumn: null}; + this.id = ++nextDocId; + this.modeOption = mode; + + if (typeof text == "string") text = splitLines(text); + updateDoc(this, {from: start, to: start, text: text}, null, {head: start, anchor: start}); + }; + + Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + iter: function(from, to, op) { + if (op) this.iterN(from - this.first, to - from, op); + else this.iterN(this.first, this.first + this.size, from); + }, + + insert: function(at, lines) { + var height = 0; + for (var i = 0, e = lines.length; i < e; ++i) height += lines[i].height; + this.insertInner(at - this.first, lines, height); + }, + remove: function(at, n) { this.removeInner(at - this.first, n); }, + + getValue: function(lineSep) { + var lines = getLines(this, this.first, this.first + this.size); + if (lineSep === false) return lines; + return lines.join(lineSep || "\n"); + }, + setValue: function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1; + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: splitLines(code), origin: "setValue"}, + {head: top, anchor: top}, true); + }, + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from); + to = to ? clipPos(this, to) : from; + replaceRange(this, code, from, to, origin); + }, + getRange: function(from, to, lineSep) { + var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); + if (lineSep === false) return lines; + return lines.join(lineSep || "\n"); + }, + + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, + setLine: function(line, text) { + if (isLine(this, line)) + replaceRange(this, text, Pos(line, 0), clipPos(this, Pos(line))); + }, + removeLine: function(line) { + if (line) replaceRange(this, "", clipPos(this, Pos(line - 1)), clipPos(this, Pos(line))); + else replaceRange(this, "", Pos(0, 0), clipPos(this, Pos(1, 0))); + }, + + getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, + getLineNumber: function(line) {return lineNo(line);}, + + lineCount: function() {return this.size;}, + firstLine: function() {return this.first;}, + lastLine: function() {return this.first + this.size - 1;}, + + clipPos: function(pos) {return clipPos(this, pos);}, + + getCursor: function(start) { + var sel = this.sel, pos; + if (start == null || start == "head") pos = sel.head; + else if (start == "anchor") pos = sel.anchor; + else if (start == "end" || start === false) pos = sel.to; + else pos = sel.from; + return copyPos(pos); + }, + somethingSelected: function() {return !posEq(this.sel.head, this.sel.anchor);}, + + setCursor: docOperation(function(line, ch, extend) { + var pos = clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line); + if (extend) extendSelection(this, pos); + else setSelection(this, pos, pos); + }), + setSelection: docOperation(function(anchor, head) { + setSelection(this, clipPos(this, anchor), clipPos(this, head || anchor)); + }), + extendSelection: docOperation(function(from, to) { + extendSelection(this, clipPos(this, from), to && clipPos(this, to)); + }), + + getSelection: function(lineSep) {return this.getRange(this.sel.from, this.sel.to, lineSep);}, + replaceSelection: function(code, collapse, origin) { + makeChange(this, {from: this.sel.from, to: this.sel.to, text: splitLines(code), origin: origin}, collapse || "around"); + }, + undo: docOperation(function() {makeChangeFromHistory(this, "undo");}), + redo: docOperation(function() {makeChangeFromHistory(this, "redo");}), + + setExtending: function(val) {this.sel.extend = val;}, + + historySize: function() { + var hist = this.history; + return {undo: hist.done.length, redo: hist.undone.length}; + }, + clearHistory: function() {this.history = makeHistory();}, + + markClean: function() { + this.history.dirtyCounter = 0; + this.history.lastOp = this.history.lastOrigin = null; + }, + isClean: function () {return this.history.dirtyCounter == 0;}, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)}; + }, + setHistory: function(histData) { + var hist = this.history = makeHistory(); + hist.done = histData.done.slice(0); + hist.undone = histData.undone.slice(0); + }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, "range"); + }, + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft}; + pos = clipPos(this, pos); + return markText(this, pos, pos, realOpts, "bookmark"); + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos); + var markers = [], spans = getLine(this, pos.line).markedSpans; + if (spans) for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + markers.push(span.marker.parent || span.marker); + } + return markers; + }, + getAllMarks: function() { + var markers = []; + this.iter(function(line) { + var sps = line.markedSpans; + if (sps) for (var i = 0; i < sps.length; ++i) + if (sps[i].from != null) markers.push(sps[i].marker); + }); + return markers; + }, + + posFromIndex: function(off) { + var ch, lineNo = this.first; + this.iter(function(line) { + var sz = line.text.length + 1; + if (sz > off) { ch = off; return true; } + off -= sz; + ++lineNo; + }); + return clipPos(this, Pos(lineNo, ch)); + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords); + var index = coords.ch; + if (coords.line < this.first || coords.ch < 0) return 0; + this.iter(this.first, coords.line, function (line) { + index += line.text.length + 1; + }); + return index; + }, + + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first); + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; + doc.sel = {from: this.sel.from, to: this.sel.to, head: this.sel.head, anchor: this.sel.anchor, + shift: this.sel.shift, extend: false, goalColumn: this.sel.goalColumn}; + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth; + doc.setHistory(this.getHistory()); + } + return doc; + }, + + linkedDoc: function(options) { + if (!options) options = {}; + var from = this.first, to = this.first + this.size; + if (options.from != null && options.from > from) from = options.from; + if (options.to != null && options.to < to) to = options.to; + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from); + if (options.sharedHist) copy.history = this.history; + (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; + return copy; + }, + unlinkDoc: function(other) { + if (other instanceof CodeMirror) other = other.doc; + if (this.linked) for (var i = 0; i < this.linked.length; ++i) { + var link = this.linked[i]; + if (link.doc != other) continue; + this.linked.splice(i, 1); + other.unlinkDoc(this); + break; + } + // If the histories were shared, split them again + if (other.history == this.history) { + var splitIds = [other.id]; + linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); + other.history = makeHistory(); + other.history.done = copyHistoryArray(this.history.done, splitIds); + other.history.undone = copyHistoryArray(this.history.undone, splitIds); + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f);}, + + getMode: function() {return this.mode;}, + getEditor: function() {return this.cm;} + }); + + Doc.prototype.eachLine = Doc.prototype.iter; + + // The Doc methods that should be available on CodeMirror instances + var dontDelegate = "iter insert remove copy getEditor".split(" "); + for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments);}; + })(Doc.prototype[prop]); + + function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i]; + if (rel.doc == skip) continue; + var shared = sharedHist && rel.sharedHist; + if (sharedHistOnly && !shared) continue; + f(rel.doc, shared); + propagate(rel.doc, doc, shared); + } + } + propagate(doc, null, true); + } + + function attachDoc(cm, doc) { + if (doc.cm) throw new Error("This document is already in use."); + cm.doc = doc; + doc.cm = cm; + estimateLineHeights(cm); + loadMode(cm); + if (!cm.options.lineWrapping) computeMaxLength(cm); + cm.options.mode = doc.modeOption; + regChange(cm); + } + + // LINE UTILITIES + + function getLine(chunk, n) { + n -= chunk.first; + while (!chunk.lines) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break; } + n -= sz; + } + } + return chunk.lines[n]; + } + + function getBetween(doc, start, end) { + var out = [], n = start.line; + doc.iter(start.line, end.line + 1, function(line) { + var text = line.text; + if (n == end.line) text = text.slice(0, end.ch); + if (n == start.line) text = text.slice(start.ch); + out.push(text); + ++n; + }); + return out; + } + function getLines(doc, from, to) { + var out = []; + doc.iter(from, to, function(line) { out.push(line.text); }); + return out; + } + + function updateLineHeight(line, height) { + var diff = height - line.height; + for (var n = line; n; n = n.parent) n.height += diff; + } + + function lineNo(line) { + if (line.parent == null) return null; + var cur = line.parent, no = indexOf(cur.lines, line); + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) break; + no += chunk.children[i].chunkSize(); + } + } + return no + cur.first; + } + + function lineAtHeight(chunk, h) { + var n = chunk.first; + outer: do { + for (var i = 0, e = chunk.children.length; i < e; ++i) { + var child = chunk.children[i], ch = child.height; + if (h < ch) { chunk = child; continue outer; } + h -= ch; + n += child.chunkSize(); + } + return n; + } while (!chunk.lines); + for (var i = 0, e = chunk.lines.length; i < e; ++i) { + var line = chunk.lines[i], lh = line.height; + if (h < lh) break; + h -= lh; + } + return n + i; + } + + function heightAtLine(cm, lineObj) { + lineObj = visualLine(cm.doc, lineObj); + + var h = 0, chunk = lineObj.parent; + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i]; + if (line == lineObj) break; + else h += line.height; + } + for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (var i = 0; i < p.children.length; ++i) { + var cur = p.children[i]; + if (cur == chunk) break; + else h += cur.height; + } + } + return h; + } + + function getOrder(line) { + var order = line.order; + if (order == null) order = line.order = bidiOrdering(line.text); + return order; + } + + // HISTORY + + function makeHistory() { + return { + // Arrays of history events. Doing something adds an event to + // done and clears undo. Undoing moves events from done to + // undone, redoing moves them in the other direction. + done: [], undone: [], undoDepth: Infinity, + // Used to track when changes can be merged into a single undo + // event + lastTime: 0, lastOp: null, lastOrigin: null, + // Used by the isClean() method + dirtyCounter: 0 + }; + } + + function attachLocalSpans(doc, change, from, to) { + var existing = change["spans_" + doc.id], n = 0; + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { + if (line.markedSpans) + (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; + ++n; + }); + } + + function historyChangeFromChange(doc, change) { + var histChange = {from: change.from, to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); + linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); + return histChange; + } + + function addToHistory(doc, change, selAfter, opId) { + var hist = doc.history; + hist.undone.length = 0; + var time = +new Date, cur = lst(hist.done); + + if (cur && + (hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && doc.cm && hist.lastTime > time - doc.cm.options.historyEventDelay) || + change.origin.charAt(0) == "*"))) { + // Merge this change into the last event + var last = lst(cur.changes); + if (posEq(change.from, change.to) && posEq(change.from, last.to)) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change); + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)); + } + cur.anchorAfter = selAfter.anchor; cur.headAfter = selAfter.head; + } else { + // Can not be merged, start a new event. + cur = {changes: [historyChangeFromChange(doc, change)], + anchorBefore: doc.sel.anchor, headBefore: doc.sel.head, + anchorAfter: selAfter.anchor, headAfter: selAfter.head}; + hist.done.push(cur); + while (hist.done.length > hist.undoDepth) + hist.done.shift(); + if (hist.dirtyCounter < 0) + // The user has made a change after undoing past the last clean state. + // We can never get back to a clean state now until markClean() is called. + hist.dirtyCounter = NaN; + else + hist.dirtyCounter++; + } + hist.lastTime = time; + hist.lastOp = opId; + hist.lastOrigin = change.origin; + } + + function removeClearedSpans(spans) { + if (!spans) return null; + for (var i = 0, out; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } + else if (out) out.push(spans[i]); + } + return !out ? spans : out.length ? out : null; + } + + function getOldSpans(doc, change) { + var found = change["spans_" + doc.id]; + if (!found) return null; + for (var i = 0, nw = []; i < change.text.length; ++i) + nw.push(removeClearedSpans(found[i])); + return nw; + } + + // Used both to provide a JSON-safe object in .getHistory, and, when + // detaching a document, to split the history in two + function copyHistoryArray(events, newGroup) { + for (var i = 0, copy = []; i < events.length; ++i) { + var event = events[i], changes = event.changes, newChanges = []; + copy.push({changes: newChanges, anchorBefore: event.anchorBefore, headBefore: event.headBefore, + anchorAfter: event.anchorAfter, headAfter: event.headAfter}); + for (var j = 0; j < changes.length; ++j) { + var change = changes[j], m; + newChanges.push({from: change.from, to: change.to, text: change.text}); + if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop]; + delete change[prop]; + } + } + } + } + return copy; + } + + // Rebasing/resetting history to deal with externally-sourced changes + + function rebaseHistSel(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff; + } else if (from < pos.line) { + pos.line = from; + pos.ch = 0; + } + } + + // Tries to rebase an array of history events given a change in the + // document. If the change touches the same lines as the event, the + // event, and everything 'behind' it, is discarded. If the change is + // before the event, the event's positions are updated. Uses a + // copy-on-write scheme for the positions, to avoid having to + // reallocate them all on every rebase, but also avoid problems with + // shared position objects being unsafely updated. + function rebaseHistArray(array, from, to, diff) { + for (var i = 0; i < array.length; ++i) { + var sub = array[i], ok = true; + for (var j = 0; j < sub.changes.length; ++j) { + var cur = sub.changes[j]; + if (!sub.copied) { cur.from = copyPos(cur.from); cur.to = copyPos(cur.to); } + if (to < cur.from.line) { + cur.from.line += diff; + cur.to.line += diff; + } else if (from <= cur.to.line) { + ok = false; + break; + } + } + if (!sub.copied) { + sub.anchorBefore = copyPos(sub.anchorBefore); sub.headBefore = copyPos(sub.headBefore); + sub.anchorAfter = copyPos(sub.anchorAfter); sub.readAfter = copyPos(sub.headAfter); + sub.copied = true; + } + if (!ok) { + array.splice(0, i + 1); + i = 0; + } else { + rebaseHistSel(sub.anchorBefore); rebaseHistSel(sub.headBefore); + rebaseHistSel(sub.anchorAfter); rebaseHistSel(sub.headAfter); + } + } + } + + function rebaseHist(hist, change) { + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; + rebaseHistArray(hist.done, from, to, diff); + rebaseHistArray(hist.undone, from, to, diff); + } + + // EVENT OPERATORS + + function stopMethod() {e_stop(this);} + // Ensure an event has a stop method. + function addStop(event) { + if (!event.stop) event.stop = stopMethod; + return event; + } + + function e_preventDefault(e) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + function e_stopPropagation(e) { + if (e.stopPropagation) e.stopPropagation(); + else e.cancelBubble = true; + } + function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} + CodeMirror.e_stop = e_stop; + CodeMirror.e_preventDefault = e_preventDefault; + CodeMirror.e_stopPropagation = e_stopPropagation; + + function e_target(e) {return e.target || e.srcElement;} + function e_button(e) { + var b = e.which; + if (b == null) { + if (e.button & 1) b = 1; + else if (e.button & 2) b = 3; + else if (e.button & 4) b = 2; + } + if (mac && e.ctrlKey && b == 1) b = 3; + return b; + } + + // EVENT HANDLING + + function on(emitter, type, f) { + if (emitter.addEventListener) + emitter.addEventListener(type, f, false); + else if (emitter.attachEvent) + emitter.attachEvent("on" + type, f); + else { + var map = emitter._handlers || (emitter._handlers = {}); + var arr = map[type] || (map[type] = []); + arr.push(f); + } + } + + function off(emitter, type, f) { + if (emitter.removeEventListener) + emitter.removeEventListener(type, f, false); + else if (emitter.detachEvent) + emitter.detachEvent("on" + type, f); + else { + var arr = emitter._handlers && emitter._handlers[type]; + if (!arr) return; + for (var i = 0; i < arr.length; ++i) + if (arr[i] == f) { arr.splice(i, 1); break; } + } + } + + function signal(emitter, type /*, values...*/) { + var arr = emitter._handlers && emitter._handlers[type]; + if (!arr) return; + var args = Array.prototype.slice.call(arguments, 2); + for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args); + } + + var delayedCallbacks, delayedCallbackDepth = 0; + function signalLater(emitter, type /*, values...*/) { + var arr = emitter._handlers && emitter._handlers[type]; + if (!arr) return; + var args = Array.prototype.slice.call(arguments, 2); + if (!delayedCallbacks) { + ++delayedCallbackDepth; + delayedCallbacks = []; + setTimeout(fireDelayed, 0); + } + function bnd(f) {return function(){f.apply(null, args);};}; + for (var i = 0; i < arr.length; ++i) + delayedCallbacks.push(bnd(arr[i])); + } + + function fireDelayed() { + --delayedCallbackDepth; + var delayed = delayedCallbacks; + delayedCallbacks = null; + for (var i = 0; i < delayed.length; ++i) delayed[i](); + } + + function hasHandler(emitter, type) { + var arr = emitter._handlers && emitter._handlers[type]; + return arr && arr.length > 0; + } + + CodeMirror.on = on; CodeMirror.off = off; CodeMirror.signal = signal; + + // MISC UTILITIES + + // Number of pixels added to scroller and sizer to hide scrollbar + var scrollerCutOff = 30; + + // Returned or thrown by various protocols to signal 'I'm not + // handling this'. + var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; + + function Delayed() {this.id = null;} + Delayed.prototype = {set: function(ms, f) {clearTimeout(this.id); this.id = setTimeout(f, ms);}}; + + // Counts the column offset in a string, taking tabs into account. + // Used mostly to find indentation. + function countColumn(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) end = string.length; + } + for (var i = startIndex || 0, n = startValue || 0; i < end; ++i) { + if (string.charAt(i) == "\t") n += tabSize - (n % tabSize); + else ++n; + } + return n; + } + CodeMirror.countColumn = countColumn; + + var spaceStrs = [""]; + function spaceStr(n) { + while (spaceStrs.length <= n) + spaceStrs.push(lst(spaceStrs) + " "); + return spaceStrs[n]; + } + + function lst(arr) { return arr[arr.length-1]; } + + function selectInput(node) { + if (ios) { // Mobile Safari apparently has a bug where select() is broken. + node.selectionStart = 0; + node.selectionEnd = node.value.length; + } else node.select(); + } + + function indexOf(collection, elt) { + if (collection.indexOf) return collection.indexOf(elt); + for (var i = 0, e = collection.length; i < e; ++i) + if (collection[i] == elt) return i; + return -1; + } + + function createObj(base, props) { + function Obj() {} + Obj.prototype = base; + var inst = new Obj(); + if (props) copyObj(props, inst); + return inst; + } + + function copyObj(obj, target) { + if (!target) target = {}; + for (var prop in obj) if (obj.hasOwnProperty(prop)) target[prop] = obj[prop]; + return target; + } + + function emptyArray(size) { + for (var a = [], i = 0; i < size; ++i) a.push(undefined); + return a; + } + + function bind(f) { + var args = Array.prototype.slice.call(arguments, 1); + return function(){return f.apply(null, args);}; + } + + var nonASCIISingleCaseWordChar = /[\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; + function isWordChar(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); + } + + function isEmpty(obj) { + for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; + return true; + } + + var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff]/; + + // DOM UTILITIES + + function elt(tag, content, className, style) { + var e = document.createElement(tag); + if (className) e.className = className; + if (style) e.style.cssText = style; + if (typeof content == "string") setTextContent(e, content); + else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); + return e; + } + + function removeChildren(e) { + for (var count = e.childNodes.length; count > 0; --count) + e.removeChild(e.firstChild); + return e; + } + + function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e); + } + + function setTextContent(e, str) { + if (ie_lt9) { + e.innerHTML = ""; + e.appendChild(document.createTextNode(str)); + } else e.textContent = str; + } + + function getRect(node) { + return node.getBoundingClientRect(); + } + CodeMirror.replaceGetRect = function(f) { getRect = f; }; + + // FEATURE DETECTION + + // Detect drag-and-drop + var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie_lt9) return false; + var div = elt('div'); + return "draggable" in div || "dragDrop" in div; + }(); + + // For a reason I have yet to figure out, some browsers disallow + // word wrapping between certain characters *only* if a new inline + // element is started between them. This makes it hard to reliably + // measure the position of things, since that requires inserting an + // extra span. This terribly fragile set of tests matches the + // character combinations that suffer from this phenomenon on the + // various browsers. + function spanAffectsWrapping() { return false; } + if (gecko) // Only for "$'" + spanAffectsWrapping = function(str, i) { + return str.charCodeAt(i - 1) == 36 && str.charCodeAt(i) == 39; + }; + else if (safari && !/Version\/([6-9]|\d\d)\b/.test(navigator.userAgent)) + spanAffectsWrapping = function(str, i) { + return /\-[^ \-?]|\?[^ !\'\"\),.\-\/:;\?\]\}]/.test(str.slice(i - 1, i + 1)); + }; + else if (webkit) + spanAffectsWrapping = function(str, i) { + if (i > 1 && str.charCodeAt(i - 1) == 45 && /\w/.test(str.charAt(i - 2)) && /[^\-?\.]/.test(str.charAt(i))) + return true; + return /[~!#%&*)=+}\]|\"\.>,:;][({[<]|\?[\w~`@#$%\^&*(_=+{[|><]/.test(str.slice(i - 1, i + 1)); + }; + + var knownScrollbarWidth; + function scrollbarWidth(measure) { + if (knownScrollbarWidth != null) return knownScrollbarWidth; + var test = elt("div", null, null, "width: 50px; height: 50px; overflow-x: scroll"); + removeChildrenAndAdd(measure, test); + if (test.offsetWidth) + knownScrollbarWidth = test.offsetHeight - test.clientHeight; + return knownScrollbarWidth || 0; + } + + var zwspSupported; + function zeroWidthElement(measure) { + if (zwspSupported == null) { + var test = elt("span", "\u200b"); + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); + if (measure.firstChild.offsetHeight != 0) + zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !ie_lt8; + } + if (zwspSupported) return elt("span", "\u200b"); + else return elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); + } + + // See if "".split is the broken IE version, if so, provide an + // alternative way to split lines. + var splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) nl = string.length; + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; + } + } + return result; + } : function(string){return string.split(/\r\n?|\n/);}; + CodeMirror.splitLines = splitLines; + + var hasSelection = window.getSelection ? function(te) { + try { return te.selectionStart != te.selectionEnd; } + catch(e) { return false; } + } : function(te) { + try {var range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) return false; + return range.compareEndPoints("StartToEnd", range) != 0; + }; + + var hasCopyEvent = (function() { + var e = elt("div"); + if ("oncopy" in e) return true; + e.setAttribute("oncopy", "return;"); + return typeof e.oncopy == 'function'; + })(); + + // KEY NAMING + + var keyNames = {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: ";", 91: "Mod", 92: "Mod", 93: "Mod", 109: "-", 107: "=", 127: "Delete", + 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63276: "PageUp", 63277: "PageDown", 63275: "End", 63273: "Home", + 63234: "Left", 63232: "Up", 63235: "Right", 63233: "Down", 63302: "Insert", 63272: "Delete"}; + CodeMirror.keyNames = keyNames; + (function() { + // Number keys + for (var i = 0; i < 10; i++) keyNames[i + 48] = String(i); + // Alphabetic keys + for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); + // Function keys + for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; + })(); + + // BIDI HELPERS + + function iterateBidiSections(order, from, to, f) { + if (!order) return f(from, to, "ltr"); + for (var i = 0; i < order.length; ++i) { + var part = order[i]; + if (part.from < to && part.to > from || from == to && part.to == from) + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); + } + } + + function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } + function bidiRight(part) { return part.level % 2 ? part.from : part.to; } + + function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } + function lineRight(line) { + var order = getOrder(line); + if (!order) return line.text.length; + return bidiRight(lst(order)); + } + + function lineStart(cm, lineN) { + var line = getLine(cm.doc, lineN); + var visual = visualLine(cm.doc, line); + if (visual != line) lineN = lineNo(visual); + var order = getOrder(visual); + var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); + return Pos(lineN, ch); + } + function lineEnd(cm, lineN) { + var merged, line; + while (merged = collapsedSpanAtEnd(line = getLine(cm.doc, lineN))) + lineN = merged.find().to.line; + var order = getOrder(line); + var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); + return Pos(lineN, ch); + } + + function compareBidiLevel(order, a, b) { + var linedir = order[0].level; + if (a == linedir) return true; + if (b == linedir) return false; + return a < b; + } + var bidiOther; + function getBidiPartAt(order, pos) { + for (var i = 0, found; i < order.length; ++i) { + var cur = order[i]; + if (cur.from < pos && cur.to > pos) { bidiOther = null; return i; } + if (cur.from == pos || cur.to == pos) { + if (found == null) { + found = i; + } else if (compareBidiLevel(order, cur.level, order[found].level)) { + bidiOther = found; + return i; + } else { + bidiOther = i; + return found; + } + } + } + bidiOther = null; + return found; + } + + function moveInLine(line, pos, dir, byUnit) { + if (!byUnit) return pos + dir; + do pos += dir; + while (pos > 0 && isExtendingChar.test(line.text.charAt(pos))); + return pos; + } + + // This is somewhat involved. It is needed in order to move + // 'visually' through bi-directional text -- i.e., pressing left + // should make the cursor go left, even when in RTL text. The + // tricky part is the 'jumps', where RTL and LTR text touch each + // other. This often requires the cursor offset to move more than + // one unit, in order to visually move one unit. + function moveVisually(line, start, dir, byUnit) { + var bidi = getOrder(line); + if (!bidi) return moveLogically(line, start, dir, byUnit); + var pos = getBidiPartAt(bidi, start), part = bidi[pos]; + var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); + + for (;;) { + if (target > part.from && target < part.to) return target; + if (target == part.from || target == part.to) { + if (getBidiPartAt(bidi, target) == pos) return target; + part = bidi[pos += dir]; + return (dir > 0) == part.level % 2 ? part.to : part.from; + } else { + part = bidi[pos += dir]; + if (!part) return null; + if ((dir > 0) == part.level % 2) + target = moveInLine(line, part.to, -1, byUnit); + else + target = moveInLine(line, part.from, 1, byUnit); + } + } + } + + function moveLogically(line, start, dir, byUnit) { + var target = start + dir; + if (byUnit) while (target > 0 && isExtendingChar.test(line.text.charAt(target))) target += dir; + return target < 0 || target > line.text.length ? null : target; + } + + // Bidirectional ordering algorithm + // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm + // that this (partially) implements. + + // One-char codes used for character types: + // L (L): Left-to-Right + // R (R): Right-to-Left + // r (AL): Right-to-Left Arabic + // 1 (EN): European Number + // + (ES): European Number Separator + // % (ET): European Number Terminator + // n (AN): Arabic Number + // , (CS): Common Number Separator + // m (NSM): Non-Spacing Mark + // b (BN): Boundary Neutral + // s (B): Paragraph Separator + // t (S): Segment Separator + // w (WS): Whitespace + // N (ON): Other Neutrals + + // Returns null if characters are ordered as they appear + // (left-to-right), or an array of sections ({from, to, level} + // objects) in the order in which they occur visually. + var bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLL"; + // Character types for codepoints 0x600 to 0x6ff + var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmmrrrrrrrrrrrrrrrrrr"; + function charType(code) { + if (code <= 0xff) return lowTypes.charAt(code); + else if (0x590 <= code && code <= 0x5f4) return "R"; + else if (0x600 <= code && code <= 0x6ff) return arabicTypes.charAt(code - 0x600); + else if (0x700 <= code && code <= 0x8ac) return "r"; + else return "L"; + } + + var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; + // Browsers seem to always treat the boundaries of block elements as being L. + var outerType = "L"; + + return function(str) { + if (!bidiRE.test(str)) return false; + var len = str.length, types = []; + for (var i = 0, type; i < len; ++i) + types.push(type = charType(str.charCodeAt(i))); + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (var i = 0, prev = outerType; i < len; ++i) { + var type = types[i]; + if (type == "m") types[i] = prev; + else prev = type; + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (var i = 0, cur = outerType; i < len; ++i) { + var type = types[i]; + if (type == "1" && cur == "r") types[i] = "n"; + else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (var i = 1, prev = types[0]; i < len - 1; ++i) { + var type = types[i]; + if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; + else if (type == "," && prev == types[i+1] && + (prev == "1" || prev == "n")) types[i] = prev; + prev = type; + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (var i = 0; i < len; ++i) { + var type = types[i]; + if (type == ",") types[i] = "N"; + else if (type == "%") { + for (var end = i + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i && types[i-1] == "!") || (end < len - 1 && types[end] == "1") ? "1" : "N"; + for (var j = i; j < end; ++j) types[j] = replace; + i = end - 1; + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (var i = 0, cur = outerType; i < len; ++i) { + var type = types[i]; + if (cur == "L" && type == "1") types[i] = "L"; + else if (isStrong.test(type)) cur = type; + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (var i = 0; i < len; ++i) { + if (isNeutral.test(types[i])) { + for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} + var before = (i ? types[i-1] : outerType) == "L"; + var after = (end < len - 1 ? types[end] : outerType) == "L"; + var replace = before || after ? "L" : "R"; + for (var j = i; j < end; ++j) types[j] = replace; + i = end - 1; + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + var order = [], m; + for (var i = 0; i < len;) { + if (countsAsLeft.test(types[i])) { + var start = i; + for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} + order.push({from: start, to: i, level: 0}); + } else { + var pos = i, at = order.length; + for (++i; i < len && types[i] != "L"; ++i) {} + for (var j = pos; j < i;) { + if (countsAsNum.test(types[j])) { + if (pos < j) order.splice(at, 0, {from: pos, to: j, level: 1}); + var nstart = j; + for (++j; j < i && countsAsNum.test(types[j]); ++j) {} + order.splice(at, 0, {from: nstart, to: j, level: 2}); + pos = j; + } else ++j; + } + if (pos < i) order.splice(at, 0, {from: pos, to: i, level: 1}); + } + } + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length; + order.unshift({from: 0, to: m[0].length, level: 0}); + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length; + order.push({from: len - m[0].length, to: len, level: 0}); + } + if (order[0].level != lst(order).level) + order.push({from: len, to: len, level: order[0].level}); + + return order; + }; + })(); + + // THE END + + CodeMirror.version = "3.13"; + + return CodeMirror; +})(); diff --git a/packages/smartsnippets/static/admin/js/codemirror/css.js b/packages/smartsnippets/static/admin/js/codemirror/css.js new file mode 100644 index 0000000..27c97f3 --- /dev/null +++ b/packages/smartsnippets/static/admin/js/codemirror/css.js @@ -0,0 +1,606 @@ +CodeMirror.defineMode("css", function(config) { + return CodeMirror.getMode(config, "text/css"); +}); + +CodeMirror.defineMode("css-base", function(config, parserConfig) { + "use strict"; + + var indentUnit = config.indentUnit, + hooks = parserConfig.hooks || {}, + atMediaTypes = parserConfig.atMediaTypes || {}, + atMediaFeatures = parserConfig.atMediaFeatures || {}, + propertyKeywords = parserConfig.propertyKeywords || {}, + colorKeywords = parserConfig.colorKeywords || {}, + valueKeywords = parserConfig.valueKeywords || {}, + allowNested = !!parserConfig.allowNested, + type = null; + + function ret(style, tp) { type = tp; return style; } + + function tokenBase(stream, state) { + var ch = stream.next(); + if (hooks[ch]) { + // result[0] is style and result[1] is type + var result = hooks[ch](stream, state); + if (result !== false) return result; + } + if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("def", stream.current());} + else if (ch == "=") ret(null, "compare"); + else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); + else if (ch == "\"" || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + else if (ch == "#") { + stream.eatWhile(/[\w\\\-]/); + return ret("atom", "hash"); + } + else if (ch == "!") { + stream.match(/^\s*\w*/); + return ret("keyword", "important"); + } + else if (/\d/.test(ch)) { + stream.eatWhile(/[\w.%]/); + return ret("number", "unit"); + } + else if (ch === "-") { + if (/\d/.test(stream.peek())) { + stream.eatWhile(/[\w.%]/); + return ret("number", "unit"); + } else if (stream.match(/^[^-]+-/)) { + return ret("meta", "meta"); + } + } + else if (/[,+>*\/]/.test(ch)) { + return ret(null, "select-op"); + } + else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { + return ret("qualifier", "qualifier"); + } + else if (ch == ":") { + return ret("operator", ch); + } + else if (/[;{}\[\]\(\)]/.test(ch)) { + return ret(null, ch); + } + else if (ch == "u" && stream.match("rl(")) { + stream.backUp(1); + state.tokenize = tokenParenthesized; + return ret("property", "variable"); + } + else { + stream.eatWhile(/[\w\\\-]/); + return ret("property", "variable"); + } + } + + function tokenString(quote, nonInclusive) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) + break; + escaped = !escaped && ch == "\\"; + } + if (!escaped) { + if (nonInclusive) stream.backUp(1); + state.tokenize = tokenBase; + } + return ret("string", "string"); + }; + } + + function tokenParenthesized(stream, state) { + stream.next(); // Must be '(' + if (!stream.match(/\s*[\"\']/, false)) + state.tokenize = tokenString(")", true); + else + state.tokenize = tokenBase; + return ret(null, "("); + } + + return { + startState: function(base) { + return {tokenize: tokenBase, + baseIndent: base || 0, + stack: []}; + }, + + token: function(stream, state) { + + // Use these terms when applicable (see http://www.xanthir.com/blog/b4E50) + // + // rule** or **ruleset: + // A selector + braces combo, or an at-rule. + // + // declaration block: + // A sequence of declarations. + // + // declaration: + // A property + colon + value combo. + // + // property value: + // The entire value of a property. + // + // component value: + // A single piece of a property value. Like the 5px in + // text-shadow: 0 0 5px blue;. Can also refer to things that are + // multiple terms, like the 1-4 terms that make up the background-size + // portion of the background shorthand. + // + // term: + // The basic unit of author-facing CSS, like a single number (5), + // dimension (5px), string ("foo"), or function. Officially defined + // by the CSS 2.1 grammar (look for the 'term' production) + // + // + // simple selector: + // A single atomic selector, like a type selector, an attr selector, a + // class selector, etc. + // + // compound selector: + // One or more simple selectors without a combinator. div.example is + // compound, div > .example is not. + // + // complex selector: + // One or more compound selectors chained with combinators. + // + // combinator: + // The parts of selectors that express relationships. There are four + // currently - the space (descendant combinator), the greater-than + // bracket (child combinator), the plus sign (next sibling combinator), + // and the tilda (following sibling combinator). + // + // sequence of selectors: + // One or more of the named type of selector chained with commas. + + state.tokenize = state.tokenize || tokenBase; + if (state.tokenize == tokenBase && stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (style && typeof style != "string") style = ret(style[0], style[1]); + + // Changing style returned based on context + var context = state.stack[state.stack.length-1]; + if (style == "variable") { + if (type == "variable-definition") state.stack.push("propertyValue"); + return "variable-2"; + } else if (style == "property") { + var word = stream.current().toLowerCase(); + if (context == "propertyValue") { + if (valueKeywords.hasOwnProperty(word)) { + style = "string-2"; + } else if (colorKeywords.hasOwnProperty(word)) { + style = "keyword"; + } else { + style = "variable-2"; + } + } else if (context == "rule") { + if (!propertyKeywords.hasOwnProperty(word)) { + style += " error"; + } + } else if (context == "block") { + // if a value is present in both property, value, or color, the order + // of preference is property -> color -> value + if (propertyKeywords.hasOwnProperty(word)) { + style = "property"; + } else if (colorKeywords.hasOwnProperty(word)) { + style = "keyword"; + } else if (valueKeywords.hasOwnProperty(word)) { + style = "string-2"; + } else { + style = "tag"; + } + } else if (!context || context == "@media{") { + style = "tag"; + } else if (context == "@media") { + if (atMediaTypes[stream.current()]) { + style = "attribute"; // Known attribute + } else if (/^(only|not)$/.test(word)) { + style = "keyword"; + } else if (word == "and") { + style = "error"; // "and" is only allowed in @mediaType + } else if (atMediaFeatures.hasOwnProperty(word)) { + style = "error"; // Known property, should be in @mediaType( + } else { + // Unknown, expecting keyword or attribute, assuming attribute + style = "attribute error"; + } + } else if (context == "@mediaType") { + if (atMediaTypes.hasOwnProperty(word)) { + style = "attribute"; + } else if (word == "and") { + style = "operator"; + } else if (/^(only|not)$/.test(word)) { + style = "error"; // Only allowed in @media + } else { + // Unknown attribute or property, but expecting property (preceded + // by "and"). Should be in parentheses + style = "error"; + } + } else if (context == "@mediaType(") { + if (propertyKeywords.hasOwnProperty(word)) { + // do nothing, remains "property" + } else if (atMediaTypes.hasOwnProperty(word)) { + style = "error"; // Known property, should be in parentheses + } else if (word == "and") { + style = "operator"; + } else if (/^(only|not)$/.test(word)) { + style = "error"; // Only allowed in @media + } else { + style += " error"; + } + } else if (context == "@import") { + style = "tag"; + } else { + style = "error"; + } + } else if (style == "atom") { + if(!context || context == "@media{" || context == "block") { + style = "builtin"; + } else if (context == "propertyValue") { + if (!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) { + style += " error"; + } + } else { + style = "error"; + } + } else if (context == "@media" && type == "{") { + style = "error"; + } + + // Push/pop context stack + if (type == "{") { + if (context == "@media" || context == "@mediaType") { + state.stack.pop(); + state.stack[state.stack.length-1] = "@media{"; + } + else { + var newContext = allowNested ? "block" : "rule"; + state.stack.push(newContext); + } + } + else if (type == "}") { + var lastState = state.stack[state.stack.length - 1]; + if (lastState == "interpolation") style = "operator"; + state.stack.pop(); + if (context == "propertyValue") state.stack.pop(); + } + else if (type == "interpolation") state.stack.push("interpolation"); + else if (type == "@media") state.stack.push("@media"); + else if (type == "@import") state.stack.push("@import"); + else if (context == "@media" && /\b(keyword|attribute)\b/.test(style)) + state.stack.push("@mediaType"); + else if (context == "@mediaType" && stream.current() == ",") state.stack.pop(); + else if (context == "@mediaType" && type == "(") state.stack.push("@mediaType("); + else if (context == "@mediaType(" && type == ")") state.stack.pop(); + else if ((context == "rule" || context == "block") && type == ":") state.stack.push("propertyValue"); + else if (context == "propertyValue" && type == ";") state.stack.pop(); + else if (context == "@import" && type == ";") state.stack.pop(); + return style; + }, + + indent: function(state, textAfter) { + var n = state.stack.length; + if (/^\}/.test(textAfter)) + n -= state.stack[state.stack.length-1] == "propertyValue" ? 2 : 1; + return state.baseIndent + n * indentUnit; + }, + + electricChars: "}", + blockCommentStart: "/*", + blockCommentEnd: "*/" + }; +}); + +(function() { + function keySet(array) { + var keys = {}; + for (var i = 0; i < array.length; ++i) { + keys[array[i]] = true; + } + return keys; + } + + var atMediaTypes = keySet([ + "all", "aural", "braille", "handheld", "print", "projection", "screen", + "tty", "tv", "embossed" + ]); + + var atMediaFeatures = keySet([ + "width", "min-width", "max-width", "height", "min-height", "max-height", + "device-width", "min-device-width", "max-device-width", "device-height", + "min-device-height", "max-device-height", "aspect-ratio", + "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", + "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", + "max-color", "color-index", "min-color-index", "max-color-index", + "monochrome", "min-monochrome", "max-monochrome", "resolution", + "min-resolution", "max-resolution", "scan", "grid" + ]); + + var propertyKeywords = keySet([ + "align-content", "align-items", "align-self", "alignment-adjust", + "alignment-baseline", "anchor-point", "animation", "animation-delay", + "animation-direction", "animation-duration", "animation-iteration-count", + "animation-name", "animation-play-state", "animation-timing-function", + "appearance", "azimuth", "backface-visibility", "background", + "background-attachment", "background-clip", "background-color", + "background-image", "background-origin", "background-position", + "background-repeat", "background-size", "baseline-shift", "binding", + "bleed", "bookmark-label", "bookmark-level", "bookmark-state", + "bookmark-target", "border", "border-bottom", "border-bottom-color", + "border-bottom-left-radius", "border-bottom-right-radius", + "border-bottom-style", "border-bottom-width", "border-collapse", + "border-color", "border-image", "border-image-outset", + "border-image-repeat", "border-image-slice", "border-image-source", + "border-image-width", "border-left", "border-left-color", + "border-left-style", "border-left-width", "border-radius", "border-right", + "border-right-color", "border-right-style", "border-right-width", + "border-spacing", "border-style", "border-top", "border-top-color", + "border-top-left-radius", "border-top-right-radius", "border-top-style", + "border-top-width", "border-width", "bottom", "box-decoration-break", + "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", + "caption-side", "clear", "clip", "color", "color-profile", "column-count", + "column-fill", "column-gap", "column-rule", "column-rule-color", + "column-rule-style", "column-rule-width", "column-span", "column-width", + "columns", "content", "counter-increment", "counter-reset", "crop", "cue", + "cue-after", "cue-before", "cursor", "direction", "display", + "dominant-baseline", "drop-initial-after-adjust", + "drop-initial-after-align", "drop-initial-before-adjust", + "drop-initial-before-align", "drop-initial-size", "drop-initial-value", + "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", + "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", + "float", "float-offset", "font", "font-feature-settings", "font-family", + "font-kerning", "font-language-override", "font-size", "font-size-adjust", + "font-stretch", "font-style", "font-synthesis", "font-variant", + "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", + "font-variant-ligatures", "font-variant-numeric", "font-variant-position", + "font-weight", "grid-cell", "grid-column", "grid-column-align", + "grid-column-sizing", "grid-column-span", "grid-columns", "grid-flow", + "grid-row", "grid-row-align", "grid-row-sizing", "grid-row-span", + "grid-rows", "grid-template", "hanging-punctuation", "height", "hyphens", + "icon", "image-orientation", "image-rendering", "image-resolution", + "inline-box-align", "justify-content", "left", "letter-spacing", + "line-break", "line-height", "line-stacking", "line-stacking-ruby", + "line-stacking-shift", "line-stacking-strategy", "list-style", + "list-style-image", "list-style-position", "list-style-type", "margin", + "margin-bottom", "margin-left", "margin-right", "margin-top", + "marker-offset", "marks", "marquee-direction", "marquee-loop", + "marquee-play-count", "marquee-speed", "marquee-style", "max-height", + "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", + "nav-left", "nav-right", "nav-up", "opacity", "order", "orphans", "outline", + "outline-color", "outline-offset", "outline-style", "outline-width", + "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", + "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", + "page", "page-break-after", "page-break-before", "page-break-inside", + "page-policy", "pause", "pause-after", "pause-before", "perspective", + "perspective-origin", "pitch", "pitch-range", "play-during", "position", + "presentation-level", "punctuation-trim", "quotes", "rendering-intent", + "resize", "rest", "rest-after", "rest-before", "richness", "right", + "rotation", "rotation-point", "ruby-align", "ruby-overhang", + "ruby-position", "ruby-span", "size", "speak", "speak-as", "speak-header", + "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", + "tab-size", "table-layout", "target", "target-name", "target-new", + "target-position", "text-align", "text-align-last", "text-decoration", + "text-decoration-color", "text-decoration-line", "text-decoration-skip", + "text-decoration-style", "text-emphasis", "text-emphasis-color", + "text-emphasis-position", "text-emphasis-style", "text-height", + "text-indent", "text-justify", "text-outline", "text-shadow", + "text-space-collapse", "text-transform", "text-underline-position", + "text-wrap", "top", "transform", "transform-origin", "transform-style", + "transition", "transition-delay", "transition-duration", + "transition-property", "transition-timing-function", "unicode-bidi", + "vertical-align", "visibility", "voice-balance", "voice-duration", + "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", + "voice-volume", "volume", "white-space", "widows", "width", "word-break", + "word-spacing", "word-wrap", "z-index", + // SVG-specific + "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", + "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", + "color-interpolation", "color-interpolation-filters", "color-profile", + "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", + "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", + "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", + "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", + "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", + "glyph-orientation-vertical", "kerning", "text-anchor", "writing-mode" + ]); + + var colorKeywords = keySet([ + "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", + "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", + "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", + "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", + "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", + "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", + "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", + "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", + "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", + "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", + "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", + "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", + "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", + "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", + "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", + "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", + "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", + "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", + "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", + "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", + "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", + "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", + "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", + "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", + "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", + "whitesmoke", "yellow", "yellowgreen" + ]); + + var valueKeywords = keySet([ + "above", "absolute", "activeborder", "activecaption", "afar", + "after-white-space", "ahead", "alias", "all", "all-scroll", "alternate", + "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", + "arabic-indic", "armenian", "asterisks", "auto", "avoid", "background", + "backwards", "baseline", "below", "bidi-override", "binary", "bengali", + "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", + "both", "bottom", "break-all", "break-word", "button", "button-bevel", + "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian", + "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", + "cell", "center", "checkbox", "circle", "cjk-earthly-branch", + "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", + "col-resize", "collapse", "compact", "condensed", "contain", "content", + "content-box", "context-menu", "continuous", "copy", "cover", "crop", + "cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal", + "decimal-leading-zero", "default", "default-button", "destination-atop", + "destination-in", "destination-out", "destination-over", "devanagari", + "disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted", + "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", + "element", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", + "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", + "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", + "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", + "ethiopic-halehame-gez", "ethiopic-halehame-om-et", + "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", + "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", + "ethiopic-halehame-tig", "ew-resize", "expanded", "extra-condensed", + "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes", + "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove", + "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew", + "help", "hidden", "hide", "higher", "highlight", "highlighttext", + "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore", + "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", + "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", + "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert", + "italic", "justify", "kannada", "katakana", "katakana-iroha", "khmer", + "landscape", "lao", "large", "larger", "left", "level", "lighter", + "line-through", "linear", "lines", "list-item", "listbox", "listitem", + "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", + "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", + "lower-roman", "lowercase", "ltr", "malayalam", "match", + "media-controls-background", "media-current-time-display", + "media-fullscreen-button", "media-mute-button", "media-play-button", + "media-return-to-realtime-button", "media-rewind-button", + "media-seek-back-button", "media-seek-forward-button", "media-slider", + "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", + "media-volume-slider-container", "media-volume-sliderthumb", "medium", + "menu", "menulist", "menulist-button", "menulist-text", + "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", + "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize", + "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", + "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", + "ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", + "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", + "outside", "overlay", "overline", "padding", "padding-box", "painted", + "paused", "persian", "plus-darker", "plus-lighter", "pointer", "portrait", + "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", + "radio", "read-only", "read-write", "read-write-plaintext-only", "relative", + "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", + "ridge", "right", "round", "row-resize", "rtl", "run-in", "running", + "s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield", + "searchfield-cancel-button", "searchfield-decoration", + "searchfield-results-button", "searchfield-results-decoration", + "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", + "single", "skip-white-space", "slide", "slider-horizontal", + "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", + "small", "small-caps", "small-caption", "smaller", "solid", "somali", + "source-atop", "source-in", "source-out", "source-over", "space", "square", + "square-button", "start", "static", "status-bar", "stretch", "stroke", + "sub", "subpixel-antialiased", "super", "sw-resize", "table", + "table-caption", "table-cell", "table-column", "table-column-group", + "table-footer-group", "table-header-group", "table-row", "table-row-group", + "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", + "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", + "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", + "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", + "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", + "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", + "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", + "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", + "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", + "window", "windowframe", "windowtext", "x-large", "x-small", "xor", + "xx-large", "xx-small" + ]); + + function tokenCComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == "/") { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return ["comment", "comment"]; + } + + CodeMirror.defineMIME("text/css", { + atMediaTypes: atMediaTypes, + atMediaFeatures: atMediaFeatures, + propertyKeywords: propertyKeywords, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + hooks: { + "<": function(stream, state) { + function tokenSGMLComment(stream, state) { + var dashes = 0, ch; + while ((ch = stream.next()) != null) { + if (dashes >= 2 && ch == ">") { + state.tokenize = null; + break; + } + dashes = (ch == "-") ? dashes + 1 : 0; + } + return ["comment", "comment"]; + } + if (stream.eat("!")) { + state.tokenize = tokenSGMLComment; + return tokenSGMLComment(stream, state); + } + }, + "/": function(stream, state) { + if (stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + return false; + } + }, + name: "css-base" + }); + + CodeMirror.defineMIME("text/x-scss", { + atMediaTypes: atMediaTypes, + atMediaFeatures: atMediaFeatures, + propertyKeywords: propertyKeywords, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + allowNested: true, + hooks: { + "$": function(stream) { + stream.match(/^[\w-]+/); + if (stream.peek() == ":") { + return ["variable", "variable-definition"]; + } + return ["variable", "variable"]; + }, + "/": function(stream, state) { + if (stream.eat("/")) { + stream.skipToEnd(); + return ["comment", "comment"]; + } else if (stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } else { + return ["operator", "operator"]; + } + }, + "#": function(stream) { + if (stream.eat("{")) { + return ["operator", "interpolation"]; + } else { + stream.eatWhile(/[\w\\\-]/); + return ["atom", "hash"]; + } + } + }, + name: "css-base" + }); +})(); diff --git a/packages/smartsnippets/static/admin/js/codemirror/htmlmixed.js b/packages/smartsnippets/static/admin/js/codemirror/htmlmixed.js new file mode 100644 index 0000000..ec0c21d --- /dev/null +++ b/packages/smartsnippets/static/admin/js/codemirror/htmlmixed.js @@ -0,0 +1,104 @@ +CodeMirror.defineMode("htmlmixed", function(config, parserConfig) { + var htmlMode = CodeMirror.getMode(config, {name: "xml", htmlMode: true}); + var cssMode = CodeMirror.getMode(config, "css"); + + var scriptTypes = [], scriptTypesConf = parserConfig && parserConfig.scriptTypes; + scriptTypes.push({matches: /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, + mode: CodeMirror.getMode(config, "javascript")}); + if (scriptTypesConf) for (var i = 0; i < scriptTypesConf.length; ++i) { + var conf = scriptTypesConf[i]; + scriptTypes.push({matches: conf.matches, mode: conf.mode && CodeMirror.getMode(config, conf.mode)}); + } + scriptTypes.push({matches: /./, + mode: CodeMirror.getMode(config, "text/plain")}); + + function html(stream, state) { + var tagName = state.htmlState.tagName; + var style = htmlMode.token(stream, state.htmlState); + if (tagName == "script" && /\btag\b/.test(style) && stream.current() == ">") { + // Script block: mode to change to depends on type attribute + var scriptType = stream.string.slice(Math.max(0, stream.pos - 100), stream.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i); + scriptType = scriptType ? scriptType[1] : ""; + if (scriptType && /[\"\']/.test(scriptType.charAt(0))) scriptType = scriptType.slice(1, scriptType.length - 1); + for (var i = 0; i < scriptTypes.length; ++i) { + var tp = scriptTypes[i]; + if (typeof tp.matches == "string" ? scriptType == tp.matches : tp.matches.test(scriptType)) { + if (tp.mode) { + state.token = script; + state.localMode = tp.mode; + state.localState = tp.mode.startState && tp.mode.startState(htmlMode.indent(state.htmlState, "")); + } + break; + } + } + } else if (tagName == "style" && /\btag\b/.test(style) && stream.current() == ">") { + state.token = css; + state.localMode = cssMode; + state.localState = cssMode.startState(htmlMode.indent(state.htmlState, "")); + } + return style; + } + function maybeBackup(stream, pat, style) { + var cur = stream.current(); + var close = cur.search(pat), m; + if (close > -1) stream.backUp(cur.length - close); + else if (m = cur.match(/<\/?$/)) { + stream.backUp(cur.length); + if (!stream.match(pat, false)) stream.match(cur[0]); + } + return style; + } + function script(stream, state) { + if (stream.match(/^<\/\s*script\s*>/i, false)) { + state.token = html; + state.localState = state.localMode = null; + return html(stream, state); + } + return maybeBackup(stream, /<\/\s*script\s*>/, + state.localMode.token(stream, state.localState)); + } + function css(stream, state) { + if (stream.match(/^<\/\s*style\s*>/i, false)) { + state.token = html; + state.localState = state.localMode = null; + return html(stream, state); + } + return maybeBackup(stream, /<\/\s*style\s*>/, + cssMode.token(stream, state.localState)); + } + + return { + startState: function() { + var state = htmlMode.startState(); + return {token: html, localMode: null, localState: null, htmlState: state}; + }, + + copyState: function(state) { + if (state.localState) + var local = CodeMirror.copyState(state.localMode, state.localState); + return {token: state.token, localMode: state.localMode, localState: local, + htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; + }, + + token: function(stream, state) { + return state.token(stream, state); + }, + + indent: function(state, textAfter) { + if (!state.localMode || /^\s*<\//.test(textAfter)) + return htmlMode.indent(state.htmlState, textAfter); + else if (state.localMode.indent) + return state.localMode.indent(state.localState, textAfter); + else + return CodeMirror.Pass; + }, + + electricChars: "/{}:", + + innerMode: function(state) { + return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; + } + }; +}, "xml", "javascript", "css"); + +CodeMirror.defineMIME("text/html", "htmlmixed"); diff --git a/packages/smartsnippets/static/admin/js/codemirror/javascript.js b/packages/smartsnippets/static/admin/js/codemirror/javascript.js new file mode 100644 index 0000000..fabe1c4 --- /dev/null +++ b/packages/smartsnippets/static/admin/js/codemirror/javascript.js @@ -0,0 +1,471 @@ +// TODO actually recognize syntax of TypeScript constructs + +CodeMirror.defineMode("javascript", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var jsonMode = parserConfig.json; + var isTS = parserConfig.typescript; + + // Tokenizer + + var keywords = function(){ + function kw(type) {return {type: type, style: "keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); + var operator = kw("operator"), atom = {type: "atom", style: "atom"}; + + var jsKeywords = { + "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, + "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, + "var": kw("var"), "const": kw("var"), "let": kw("var"), + "function": kw("function"), "catch": kw("catch"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "typeof": operator, "instanceof": operator, + "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, + "this": kw("this") + }; + + // Extend the 'normal' keywords with the TypeScript language extensions + if (isTS) { + var type = {type: "variable", style: "variable-3"}; + var tsKeywords = { + // object-like things + "interface": kw("interface"), + "class": kw("class"), + "extends": kw("extends"), + "constructor": kw("constructor"), + + // scope modifiers + "public": kw("public"), + "private": kw("private"), + "protected": kw("protected"), + "static": kw("static"), + + "super": kw("super"), + + // types + "string": type, "number": type, "bool": type, "any": type + }; + + for (var attr in tsKeywords) { + jsKeywords[attr] = tsKeywords[attr]; + } + } + + return jsKeywords; + }(); + + var isOperatorChar = /[+\-*&%=<>!?|~^]/; + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + function nextUntilUnescaped(stream, end) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (next == end && !escaped) + return false; + escaped = !escaped && next == "\\"; + } + return escaped; + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + + function jsTokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") + return chain(stream, state, jsTokenString(ch)); + else if (/[\[\]{}\(\),;\:\.]/.test(ch)) + return ret(ch); + else if (ch == "0" && stream.eat(/x/i)) { + stream.eatWhile(/[\da-f]/i); + return ret("number", "number"); + } + else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { + stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); + return ret("number", "number"); + } + else if (ch == "/") { + if (stream.eat("*")) { + return chain(stream, state, jsTokenComment); + } + else if (stream.eat("/")) { + stream.skipToEnd(); + return ret("comment", "comment"); + } + else if (state.lastType == "operator" || state.lastType == "keyword c" || + /^[\[{}\(,;:]$/.test(state.lastType)) { + nextUntilUnescaped(stream, "/"); + stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla + return ret("regexp", "string-2"); + } + else { + stream.eatWhile(isOperatorChar); + return ret("operator", null, stream.current()); + } + } + else if (ch == "#") { + stream.skipToEnd(); + return ret("error", "error"); + } + else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return ret("operator", null, stream.current()); + } + else { + stream.eatWhile(/[\w\$_]/); + var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; + return (known && state.lastType != ".") ? ret(known.type, known.style, word) : + ret("variable", "variable", word); + } + } + + function jsTokenString(quote) { + return function(stream, state) { + if (!nextUntilUnescaped(stream, quote)) + state.tokenize = jsTokenBase; + return ret("string", "string"); + }; + } + + function jsTokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = jsTokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true}; + + function JSLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + } + + function parseJS(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "variable-2"; + return style; + } + } + } + + // Combinator utils + + var cx = {state: null, column: null, marked: null, cc: null}; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function register(varname) { + function inList(list) { + for (var v = list; v; v = v.next) + if (v.name == varname) return true; + return false; + } + var state = cx.state; + if (state.context) { + cx.marked = "def"; + if (inList(state.localVars)) return; + state.localVars = {name: varname, next: state.localVars}; + } else { + if (inList(state.globalVars)) return; + state.globalVars = {name: varname, next: state.globalVars}; + } + } + + // Combinators + + var defaultVars = {name: "this", next: {name: "arguments"}}; + function pushcontext() { + cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; + cx.state.localVars = defaultVars; + } + function popcontext() { + cx.state.localVars = cx.state.context.vars; + cx.state.context = cx.state.context.prev; + } + function pushlex(type, info) { + var result = function() { + var state = cx.state; + state.lexical = new JSLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + return function(type) { + if (type == wanted) return cont(); + else if (wanted == ";") return pass(); + else return cont(arguments.callee); + }; + } + + function statement(type) { + if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "{") return cont(pushlex("}"), block, poplex); + if (type == ";") return cont(); + if (type == "if") return cont(pushlex("form"), expression, statement, poplex, maybeelse(cx.state.indented)); + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), + poplex, statement, poplex); + if (type == "variable") return cont(pushlex("stat"), maybelabel); + if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), + block, poplex, poplex); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), + statement, poplex, popcontext); + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function expression(type) { + return expressionInner(type, maybeoperatorComma); + } + function expressionNoComma(type) { + return expressionInner(type, maybeoperatorNoComma); + } + function expressionInner(type, maybeop) { + if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); + if (type == "function") return cont(functiondef); + if (type == "keyword c") return cont(maybeexpression); + if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); + if (type == "operator") return cont(expression); + if (type == "[") return cont(pushlex("]"), commasep(expressionNoComma, "]"), poplex, maybeop); + if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeop); + return cont(); + } + function maybeexpression(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expression); + } + + function maybeoperatorComma(type, value) { + if (type == ",") return pass(); + return maybeoperatorNoComma(type, value, maybeoperatorComma); + } + function maybeoperatorNoComma(type, value, me) { + if (!me) me = maybeoperatorNoComma; + if (type == "operator") { + if (/\+\+|--/.test(value)) return cont(me); + if (value == "?") return cont(expression, expect(":"), expression); + return cont(expression); + } + if (type == ";") return; + if (type == "(") return cont(pushlex(")", "call"), commasep(expressionNoComma, ")"), poplex, me); + if (type == ".") return cont(property, me); + if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, me); + } + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperatorComma, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "property"; return cont();} + } + function objprop(type, value) { + if (type == "variable") { + cx.marked = "property"; + if (value == "get" || value == "set") return cont(getterSetter); + } else if (type == "number" || type == "string") { + cx.marked = type + " property"; + } + if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expressionNoComma); + } + function getterSetter(type) { + if (type == ":") return cont(expression); + if (type != "variable") return cont(expect(":"), expression); + cx.marked = "property"; + return cont(functiondef); + } + function commasep(what, end) { + function proceed(type) { + if (type == ",") { + var lex = cx.state.lexical; + if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; + return cont(what, proceed); + } + if (type == end) return cont(); + return cont(expect(end)); + } + return function(type) { + if (type == end) return cont(); + else return pass(what, proceed); + }; + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function maybetype(type) { + if (type == ":") return cont(typedef); + return pass(); + } + function typedef(type) { + if (type == "variable"){cx.marked = "variable-3"; return cont();} + return pass(); + } + function vardef1(type, value) { + if (type == "variable") { + register(value); + return isTS ? cont(maybetype, vardef2) : cont(vardef2); + } + return pass(); + } + function vardef2(type, value) { + if (value == "=") return cont(expressionNoComma, vardef2); + if (type == ",") return cont(vardef1); + } + function maybeelse(indent) { + return function(type, value) { + if (type == "keyword b" && value == "else") { + cx.state.lexical = new JSLexical(indent, 0, "form", null, cx.state.lexical); + return cont(statement, poplex); + } + return pass(); + }; + } + function forspec1(type) { + if (type == "var") return cont(vardef1, expect(";"), forspec2); + if (type == ";") return cont(forspec2); + if (type == "variable") return cont(formaybein); + return pass(expression, expect(";"), forspec2); + } + function formaybein(_type, value) { + if (value == "in") return cont(expression); + return cont(maybeoperatorComma, forspec2); + } + function forspec2(type, value) { + if (type == ";") return cont(forspec3); + if (value == "in") return cont(expression); + return pass(expression, expect(";"), forspec3); + } + function forspec3(type) { + if (type != ")") cont(expression); + } + function functiondef(type, value) { + if (type == "variable") {register(value); return cont(functiondef);} + if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, statement, popcontext); + } + function funarg(type, value) { + if (type == "variable") {register(value); return isTS ? cont(maybetype) : cont();} + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: jsTokenBase, + lastType: null, + cc: [], + lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: parserConfig.localVars, + globalVars: parserConfig.globalVars, + context: parserConfig.localVars && {vars: parserConfig.localVars}, + indented: 0 + }; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + } + if (state.tokenize != jsTokenComment && stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; + return parseJS(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize == jsTokenComment) return CodeMirror.Pass; + if (state.tokenize != jsTokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; + if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; + var type = lexical.type, closing = firstChar == type; + if (parserConfig.statementIndent != null) { + if (type == ")" && lexical.prev && lexical.prev.type == "stat") lexical = lexical.prev; + if (lexical.type == "stat") return lexical.indented + parserConfig.statementIndent; + } + + if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? 4 : 0); + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "form") return lexical.indented + indentUnit; + else if (type == "stat") + return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? indentUnit : 0); + else if (lexical.info == "switch" && !closing) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricChars: ":{}", + blockCommentStart: jsonMode ? null : "/*", + blockCommentEnd: jsonMode ? null : "*/", + lineComment: jsonMode ? null : "//", + + jsonMode: jsonMode + }; +}); + +CodeMirror.defineMIME("text/javascript", "javascript"); +CodeMirror.defineMIME("text/ecmascript", "javascript"); +CodeMirror.defineMIME("application/javascript", "javascript"); +CodeMirror.defineMIME("application/ecmascript", "javascript"); +CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); +CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); +CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); +CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); diff --git a/packages/smartsnippets/static/admin/js/codemirror/xml.js b/packages/smartsnippets/static/admin/js/codemirror/xml.js new file mode 100644 index 0000000..b04248c --- /dev/null +++ b/packages/smartsnippets/static/admin/js/codemirror/xml.js @@ -0,0 +1,330 @@ +CodeMirror.defineMode("xml", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1; + + var Kludges = parserConfig.htmlMode ? { + autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, + 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, + 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, + 'track': true, 'wbr': true}, + implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, + 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, + 'th': true, 'tr': true}, + contextGrabbers: { + 'dd': {'dd': true, 'dt': true}, + 'dt': {'dd': true, 'dt': true}, + 'li': {'li': true}, + 'option': {'option': true, 'optgroup': true}, + 'optgroup': {'optgroup': true}, + 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, + 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, + 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, + 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, + 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, + 'rp': {'rp': true, 'rt': true}, + 'rt': {'rp': true, 'rt': true}, + 'tbody': {'tbody': true, 'tfoot': true}, + 'td': {'td': true, 'th': true}, + 'tfoot': {'tbody': true}, + 'th': {'td': true, 'th': true}, + 'thead': {'tbody': true, 'tfoot': true}, + 'tr': {'tr': true} + }, + doNotIndent: {"pre": true}, + allowUnquoted: true, + allowMissing: true + } : { + autoSelfClosers: {}, + implicitlyClosed: {}, + contextGrabbers: {}, + doNotIndent: {}, + allowUnquoted: false, + allowMissing: false + }; + var alignCDATA = parserConfig.alignCDATA; + + // Return variables for tokenizers + var tagName, type; + + function inText(stream, state) { + function chain(parser) { + state.tokenize = parser; + return parser(stream, state); + } + + var ch = stream.next(); + if (ch == "<") { + if (stream.eat("!")) { + if (stream.eat("[")) { + if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); + else return null; + } + else if (stream.match("--")) return chain(inBlock("comment", "-->")); + else if (stream.match("DOCTYPE", true, true)) { + stream.eatWhile(/[\w\._\-]/); + return chain(doctype(1)); + } + else return null; + } + else if (stream.eat("?")) { + stream.eatWhile(/[\w\._\-]/); + state.tokenize = inBlock("meta", "?>"); + return "meta"; + } + else { + var isClose = stream.eat("/"); + tagName = ""; + var c; + while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; + if (!tagName) return "error"; + type = isClose ? "closeTag" : "openTag"; + state.tokenize = inTag; + return "tag"; + } + } + else if (ch == "&") { + var ok; + if (stream.eat("#")) { + if (stream.eat("x")) { + ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); + } else { + ok = stream.eatWhile(/[\d]/) && stream.eat(";"); + } + } else { + ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); + } + return ok ? "atom" : "error"; + } + else { + stream.eatWhile(/[^&<]/); + return null; + } + } + + function inTag(stream, state) { + var ch = stream.next(); + if (ch == ">" || (ch == "/" && stream.eat(">"))) { + state.tokenize = inText; + type = ch == ">" ? "endTag" : "selfcloseTag"; + return "tag"; + } + else if (ch == "=") { + type = "equals"; + return null; + } + else if (/[\'\"]/.test(ch)) { + state.tokenize = inAttribute(ch); + return state.tokenize(stream, state); + } + else { + stream.eatWhile(/[^\s\u00a0=<>\"\']/); + return "word"; + } + } + + function inAttribute(quote) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.next() == quote) { + state.tokenize = inTag; + break; + } + } + return "string"; + }; + } + + function inBlock(style, terminator) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.match(terminator)) { + state.tokenize = inText; + break; + } + stream.next(); + } + return style; + }; + } + function doctype(depth) { + return function(stream, state) { + var ch; + while ((ch = stream.next()) != null) { + if (ch == "<") { + state.tokenize = doctype(depth + 1); + return state.tokenize(stream, state); + } else if (ch == ">") { + if (depth == 1) { + state.tokenize = inText; + break; + } else { + state.tokenize = doctype(depth - 1); + return state.tokenize(stream, state); + } + } + } + return "meta"; + }; + } + + var curState, curStream, setStyle; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + + function pushContext(tagName, startOfLine) { + var noIndent = Kludges.doNotIndent.hasOwnProperty(tagName) || (curState.context && curState.context.noIndent); + curState.context = { + prev: curState.context, + tagName: tagName, + indent: curState.indented, + startOfLine: startOfLine, + noIndent: noIndent + }; + } + function popContext() { + if (curState.context) curState.context = curState.context.prev; + } + + function element(type) { + if (type == "openTag") { + curState.tagName = tagName; + curState.tagStart = curStream.column(); + return cont(attributes, endtag(curState.startOfLine)); + } else if (type == "closeTag") { + var err = false; + if (curState.context) { + if (curState.context.tagName != tagName) { + if (Kludges.implicitlyClosed.hasOwnProperty(curState.context.tagName.toLowerCase())) { + popContext(); + } + err = !curState.context || curState.context.tagName != tagName; + } + } else { + err = true; + } + if (err) setStyle = "error"; + return cont(endclosetag(err)); + } + return cont(); + } + function endtag(startOfLine) { + return function(type) { + var tagName = curState.tagName; + curState.tagName = curState.tagStart = null; + if (type == "selfcloseTag" || + (type == "endTag" && Kludges.autoSelfClosers.hasOwnProperty(tagName.toLowerCase()))) { + maybePopContext(tagName.toLowerCase()); + return cont(); + } + if (type == "endTag") { + maybePopContext(tagName.toLowerCase()); + pushContext(tagName, startOfLine); + return cont(); + } + return cont(); + }; + } + function endclosetag(err) { + return function(type) { + if (err) setStyle = "error"; + if (type == "endTag") { popContext(); return cont(); } + setStyle = "error"; + return cont(arguments.callee); + }; + } + function maybePopContext(nextTagName) { + var parentTagName; + while (true) { + if (!curState.context) { + return; + } + parentTagName = curState.context.tagName.toLowerCase(); + if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) || + !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { + return; + } + popContext(); + } + } + + function attributes(type) { + if (type == "word") {setStyle = "attribute"; return cont(attribute, attributes);} + if (type == "endTag" || type == "selfcloseTag") return pass(); + setStyle = "error"; + return cont(attributes); + } + function attribute(type) { + if (type == "equals") return cont(attvalue, attributes); + if (!Kludges.allowMissing) setStyle = "error"; + else if (type == "word") setStyle = "attribute"; + return (type == "endTag" || type == "selfcloseTag") ? pass() : cont(); + } + function attvalue(type) { + if (type == "string") return cont(attvaluemaybe); + if (type == "word" && Kludges.allowUnquoted) {setStyle = "string"; return cont();} + setStyle = "error"; + return (type == "endTag" || type == "selfCloseTag") ? pass() : cont(); + } + function attvaluemaybe(type) { + if (type == "string") return cont(attvaluemaybe); + else return pass(); + } + + return { + startState: function() { + return {tokenize: inText, cc: [], indented: 0, startOfLine: true, tagName: null, tagStart: null, context: null}; + }, + + token: function(stream, state) { + if (!state.tagName && stream.sol()) { + state.startOfLine = true; + state.indented = stream.indentation(); + } + if (stream.eatSpace()) return null; + + setStyle = type = tagName = null; + var style = state.tokenize(stream, state); + state.type = type; + if ((style || type) && style != "comment") { + curState = state; curStream = stream; + while (true) { + var comb = state.cc.pop() || element; + if (comb(type || style)) break; + } + } + state.startOfLine = false; + return setStyle || style; + }, + + indent: function(state, textAfter, fullLine) { + var context = state.context; + if ((state.tokenize != inTag && state.tokenize != inText) || + context && context.noIndent) + return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; + if (state.tagName) return state.tagStart + indentUnit * multilineTagIndentFactor; + if (alignCDATA && /", + + configuration: parserConfig.htmlMode ? "html" : "xml" + }; +}); + +CodeMirror.defineMIME("text/xml", "xml"); +CodeMirror.defineMIME("application/xml", "xml"); +if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) + CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); diff --git a/packages/smartsnippets/static/admin/js/custom.js b/packages/smartsnippets/static/admin/js/custom.js new file mode 100644 index 0000000..c6de327 --- /dev/null +++ b/packages/smartsnippets/static/admin/js/custom.js @@ -0,0 +1,3 @@ +(function($) { + window.hasAceTheme = true; +})(jQuery || django.jQuery); \ No newline at end of file diff --git a/packages/smartsnippets/static/admin/js/default.jQuery.init.js b/packages/smartsnippets/static/admin/js/default.jQuery.init.js new file mode 100644 index 0000000..50d9d4b --- /dev/null +++ b/packages/smartsnippets/static/admin/js/default.jQuery.init.js @@ -0,0 +1 @@ +jQuery = jQuery || django.jQuery; diff --git a/packages/smartsnippets/static/admin/js/snippet_plugin_default.js b/packages/smartsnippets/static/admin/js/snippet_plugin_default.js new file mode 100644 index 0000000..d26c1f7 --- /dev/null +++ b/packages/smartsnippets/static/admin/js/snippet_plugin_default.js @@ -0,0 +1,5 @@ +(function($) { + $(document).ready(function(){ + $(".plugin-help-tooltip").tipTip({maxWidth: "250px", delay: 100}); + }); +})(jQuery || django.jQuery); diff --git a/packages/smartsnippets/static/css/tipTip.css b/packages/smartsnippets/static/css/tipTip.css new file mode 100644 index 0000000..4fb95d3 --- /dev/null +++ b/packages/smartsnippets/static/css/tipTip.css @@ -0,0 +1,113 @@ +/* TipTip CSS - Version 1.2 */ + +#tiptip_holder { + display: none; + position: absolute; + top: 0; + left: 0; + z-index: 99999; +} + +#tiptip_holder.tip_top { + padding-bottom: 5px; +} + +#tiptip_holder.tip_bottom { + padding-top: 5px; +} + +#tiptip_holder.tip_right { + padding-left: 5px; +} + +#tiptip_holder.tip_left { + padding-right: 5px; +} + +#tiptip_content { + font-size: 11px; + color: #fff; + text-shadow: 0 0 2px #000; + padding: 4px 8px; + border: 1px solid rgba(255,255,255,0.25); + background-color: rgb(25,25,25); + background-color: rgba(25,25,25,0.92); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000)); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + box-shadow: 0 0 3px #555; + -webkit-box-shadow: 0 0 3px #555; + -moz-box-shadow: 0 0 3px #555; +} + +#tiptip_arrow, #tiptip_arrow_inner { + position: absolute; + border-color: transparent; + border-style: solid; + border-width: 6px; + height: 0; + width: 0; +} + +#tiptip_holder.tip_top #tiptip_arrow { + border-top-color: #fff; + border-top-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_bottom #tiptip_arrow { + border-bottom-color: #fff; + border-bottom-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_right #tiptip_arrow { + border-right-color: #fff; + border-right-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_left #tiptip_arrow { + border-left-color: #fff; + border-left-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_top #tiptip_arrow_inner { + margin-top: -7px; + margin-left: -6px; + border-top-color: rgb(25,25,25); + border-top-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_bottom #tiptip_arrow_inner { + margin-top: -5px; + margin-left: -6px; + border-bottom-color: rgb(25,25,25); + border-bottom-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_right #tiptip_arrow_inner { + margin-top: -6px; + margin-left: -5px; + border-right-color: rgb(25,25,25); + border-right-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_left #tiptip_arrow_inner { + margin-top: -6px; + margin-left: -7px; + border-left-color: rgb(25,25,25); + border-left-color: rgba(25,25,25,0.92); +} + +/* Webkit Hacks */ +@media screen and (-webkit-min-device-pixel-ratio:0) { + #tiptip_content { + padding: 4px 8px 5px 8px; + background-color: rgba(45,45,45,0.88); + } + #tiptip_holder.tip_bottom #tiptip_arrow_inner { + border-bottom-color: rgba(45,45,45,0.88); + } + #tiptip_holder.tip_top #tiptip_arrow_inner { + border-top-color: rgba(20,20,20,0.92); + } +} \ No newline at end of file diff --git a/packages/smartsnippets/static/images/drag.gif b/packages/smartsnippets/static/images/drag.gif new file mode 100644 index 0000000000000000000000000000000000000000..daf29b76dcd734680dcf477d971eb034274b6d5a GIT binary patch literal 200 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 I3f2+-3z#fxlK=n! literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/js/jquery.tipTip.minified.js b/packages/smartsnippets/static/js/jquery.tipTip.minified.js new file mode 100644 index 0000000..cdf3a89 --- /dev/null +++ b/packages/smartsnippets/static/js/jquery.tipTip.minified.js @@ -0,0 +1,21 @@ + /* + * TipTip + * Copyright 2010 Drew Wilson + * www.drewwilson.com + * code.drewwilson.com/entry/tiptip-jquery-plugin + * + * Version 1.3 - Updated: Mar. 23, 2010 + * + * This Plug-In will create a custom tooltip to replace the default + * browser tooltip. It is extremely lightweight and very smart in + * that it detects the edges of the browser window and will make sure + * the tooltip stays within the current window size. As a result the + * tooltip will adjust itself to be displayed above, below, to the left + * or to the right depending on what is necessary to stay within the + * browser window. It is completely customizable as well via CSS. + * + * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +(function($){$.fn.tipTip=function(options){var defaults={activation:"hover",keepAlive:false,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:false,enter:function(){},exit:function(){}};var opts=$.extend(defaults,options);if($("#tiptip_holder").length<=0){var tiptip_holder=$('
');var tiptip_content=$('
');var tiptip_arrow=$('
');$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('
')))}else{var tiptip_holder=$("#tiptip_holder");var tiptip_content=$("#tiptip_content");var tiptip_arrow=$("#tiptip_arrow")}return this.each(function(){var org_elem=$(this);if(opts.content){var org_title=opts.content}else{var org_title=org_elem.attr(opts.attribute)}if(org_title!=""){if(!opts.content){org_elem.removeAttr(opts.attribute)}var timeout=false;if(opts.activation=="hover"){org_elem.hover(function(){active_tiptip()},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}else if(opts.activation=="focus"){org_elem.focus(function(){active_tiptip()}).blur(function(){deactive_tiptip()})}else if(opts.activation=="click"){org_elem.click(function(){active_tiptip();return false}).hover(function(){},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}function active_tiptip(){opts.enter.call(this);tiptip_content.html(org_title);tiptip_holder.hide().removeAttr("class").css("margin","0");tiptip_arrow.removeAttr("style");var top=parseInt(org_elem.offset()['top']);var left=parseInt(org_elem.offset()['left']);var org_width=parseInt(org_elem.outerWidth());var org_height=parseInt(org_elem.outerHeight());var tip_w=tiptip_holder.outerWidth();var tip_h=tiptip_holder.outerHeight();var w_compare=Math.round((org_width-tip_w)/2);var h_compare=Math.round((org_height-tip_h)/2);var marg_left=Math.round(left+w_compare);var marg_top=Math.round(top+org_height+opts.edgeOffset);var t_class="";var arrow_top="";var arrow_left=Math.round(tip_w-12)/2;if(opts.defaultPosition=="bottom"){t_class="_bottom"}else if(opts.defaultPosition=="top"){t_class="_top"}else if(opts.defaultPosition=="left"){t_class="_left"}else if(opts.defaultPosition=="right"){t_class="_right"}var right_compare=(w_compare+left)parseInt($(window).width());if((right_compare&&w_compare<0)||(t_class=="_right"&&!left_compare)||(t_class=="_left"&&left<(tip_w+opts.edgeOffset+5))){t_class="_right";arrow_top=Math.round(tip_h-13)/2;arrow_left=-12;marg_left=Math.round(left+org_width+opts.edgeOffset);marg_top=Math.round(top+h_compare)}else if((left_compare&&w_compare<0)||(t_class=="_left"&&!right_compare)){t_class="_left";arrow_top=Math.round(tip_h-13)/2;arrow_left=Math.round(tip_w);marg_left=Math.round(left-(tip_w+opts.edgeOffset+5));marg_top=Math.round(top+h_compare)}var top_compare=(top+org_height+opts.edgeOffset+tip_h+8)>parseInt($(window).height()+$(window).scrollTop());var bottom_compare=((top+org_height)-(opts.edgeOffset+tip_h+8))<0;if(top_compare||(t_class=="_bottom"&&top_compare)||(t_class=="_top"&&!bottom_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_top"}else{t_class=t_class+"_top"}arrow_top=tip_h;marg_top=Math.round(top-(tip_h+5+opts.edgeOffset))}else if(bottom_compare|(t_class=="_top"&&bottom_compare)||(t_class=="_bottom"&&!top_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_bottom"}else{t_class=t_class+"_bottom"}arrow_top=-12;marg_top=Math.round(top+org_height+opts.edgeOffset)}if(t_class=="_right_top"||t_class=="_left_top"){marg_top=marg_top+5}else if(t_class=="_right_bottom"||t_class=="_left_bottom"){marg_top=marg_top-5}if(t_class=="_left_top"||t_class=="_left_bottom"){marg_left=marg_left+5}tiptip_arrow.css({"margin-left":arrow_left+"px","margin-top":arrow_top+"px"});tiptip_holder.css({"margin-left":marg_left+"px","margin-top":marg_top+"px"}).attr("class","tip"+t_class);if(timeout){clearTimeout(timeout)}timeout=setTimeout(function(){tiptip_holder.stop(true,true).fadeIn(opts.fadeIn)},opts.delay)}function deactive_tiptip(){opts.exit.call(this);if(timeout){clearTimeout(timeout)}tiptip_holder.fadeOut(opts.fadeOut)}}})}})(jQuery); \ No newline at end of file diff --git a/packages/smartsnippets/static/libs/ace/css/ace.min.css b/packages/smartsnippets/static/libs/ace/css/ace.min.css new file mode 100644 index 0000000..8e14cdf --- /dev/null +++ b/packages/smartsnippets/static/libs/ace/css/ace.min.css @@ -0,0 +1,2 @@ +/* Ace theme v1.3.1 */ +html{min-height:100%;position:relative}body{background-color:#e4e6e9;min-height:100%;padding-bottom:0;font-family:'Open Sans';font-size:13px;color:#393939;line-height:1.5}.main-container:before{display:block;content:"";position:absolute;z-index:-2;width:100%;max-width:inherit;bottom:0;top:0;background-color:#FFF}.main-container.container,.rtl .main-container.container{padding-left:0;padding-right:0}.main-container.container:before{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);width:inherit}@media (max-width:767px){.main-container.container:before{-webkit-box-shadow:none;box-shadow:none;width:100%}}.main-content{margin-left:0;min-height:100%;padding:0}.sidebar+.main-content{margin-left:190px}.page-content{background-color:#fff;position:relative;margin:0;padding:8px 20px 24px}.page-header{margin:0 0 12px;border-bottom:1px dotted #e2e2e2;padding-bottom:16px;padding-top:7px}.page-header h1{padding:0;margin:0 8px;font-size:24px;font-weight:lighter;color:#2679b5}.page-header h1 small{margin:0 6px;font-size:14px;font-weight:400;color:#8089a0}.ace-icon{text-align:center}a:active,a:focus{text-decoration:none}h1{font-size:32px;font-weight:400;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}h1.smaller{font-size:31px}h1.bigger{font-size:33px}h1.block{margin-bottom:16px}h2{font-size:26px;font-weight:400;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}h2.smaller{font-size:25px}h2.bigger{font-size:27px}h2.block{margin-bottom:16px}h3{font-size:22px;font-weight:400;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}h3.smaller{font-size:21px}h3.bigger{font-size:23px}h3.block{margin-bottom:16px}h4{font-size:18px;font-weight:400;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}h4.smaller{font-size:17px}h4.bigger{font-size:19px}h4.block{margin-bottom:16px}h5{font-size:15px;font-weight:400;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}h5.smaller{font-size:14px}h5.bigger{font-size:16px}h5.block{margin-bottom:16px}h6{font-size:13px;font-weight:400;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}h6.smaller{font-size:12px}h6.bigger{font-size:14px}h6.block{margin-bottom:16px}ol,ul{margin:0 0 10px 25px;padding:0}ol.margin-5,ul.margin-5{margin-left:5px}ol.margin-10,ul.margin-10{margin-left:10px}ol.margin-15,ul.margin-15{margin-left:15px}ol.margin-20,ul.margin-20{margin-left:20px}li>ol,li>ul{margin-left:18px}.list-inline,.list-unstyled{margin-left:0}.list-inline>li>.ace-icon:first-child,.list-unstyled>li>.ace-icon:first-child{width:18px;text-align:center}.spaced>li{margin-top:9px;margin-bottom:9px}.spaced2>li{margin-top:15px;margin-bottom:15px}li.divider{margin-top:3px;margin-bottom:3px;height:0;font-size:0}.spaced>li.divider{margin-top:5px;margin-bottom:5px}.spaced2>li.divider{margin-top:8px;margin-bottom:8px}li.divider:before{content:"";display:inline-block}.blockquote-reverse,blockquote,blockquote.pull-right{border-color:#e5eaf1}pre.prettyprint{white-space:pre-wrap}.modal-content{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.modal-footer{padding-top:12px;padding-bottom:14px;border-top-color:#e4e9ee;-webkit-box-shadow:none;box-shadow:none;background-color:#eff3f8}.modal-header .close{font-size:32px}.well{border-radius:0}.well h1,.well h2,.well h3,.well h4,.well h5,.well h6{margin-top:0}.well h1,.well h2,.well h3{line-height:36px}.alert{font-size:14px;border-radius:0}.alert .close{font-size:16px}.alert-block p+p{margin-top:10px}.pager>li>span,.pagination>li>span{border-width:1px;border-radius:0!important}.pager>li>a,.pagination>li>a{border-width:1px;border-color:#d4dfe3;border-radius:0!important;color:#2283c5;background-color:#fafafa;margin:0 -1px 0 0;position:relative;z-index:auto}.pager>li>a:hover,.pagination>li>a:hover{color:#1c6ca2;background-color:#eaeff2;border-color:#c1d1d7;z-index:1}.pager>li>a:focus,.pagination>li>a:focus{background-color:#eaeef2}.pager>li.disabled>a,.pager>li.disabled>a:hover,.pagination>li.disabled>a,.pagination>li.disabled>a:hover{background-color:#f9f9f9;border-color:#d9d9d9;z-index:auto}.pagination>li.active>a,.pagination>li.active>a:hover{background-color:#6faed9;border-color:#6faed9;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);z-index:2}.list-group-item{border-radius:0!important}.lighter{font-weight:lighter}.bolder{font-weight:bolder}.inline{display:inline-block!important}.block{display:block!important}.align-center,.center{text-align:center!important}.align-left{text-align:left!important}.align-right{text-align:right!important}.middle{vertical-align:middle}.align-middle{vertical-align:middle!important}.align-top{vertical-align:top!important}.align-bottom{vertical-align:bottom!important}.pos-rel,.position-relative{position:relative}.pos-abs,.position-absolute{position:absolute}.no-float{float:none!important}.line-height-normal{line-height:normal!important}.line-height-0{line-height:0!important}.line-height-1{line-height:1!important}.line-height-125{line-height:1.25!important}.line-height-150{line-height:1.5!important}.dark{color:#333!important}.white{color:#fff!important}.red{color:#dd5a43!important}.red2{color:#e08374!important}.light-red{color:#f77!important}.blue{color:#478fca!important}.light-blue{color:#93cbf9!important}.green{color:#69aa46!important}.light-green{color:#b0d877!important}.orange{color:#ff892a!important}.orange2{color:#feb902!important}.light-orange{color:#fcac6f!important}.purple{color:#a069c3!important}.pink{color:#c6699f!important}.pink2{color:#d6487e!important}.brown{color:brown!important}.grey{color:#777!important}.light-grey{color:#bbb!important}.bigger-110{font-size:110%!important}.bigger-120{font-size:120%!important}.bigger-130{font-size:130%!important}.bigger-140{font-size:140%!important}.bigger-150{font-size:150%!important}.bigger-160{font-size:160%!important}.bigger-170{font-size:170%!important}.bigger-180{font-size:180%!important}.bigger-190{font-size:190%!important}.bigger-200{font-size:200%!important}.bigger-210{font-size:210%!important}.bigger-220{font-size:220%!important}.bigger-230{font-size:230%!important}.bigger-240{font-size:240%!important}.bigger-250{font-size:250%!important}.bigger-260{font-size:260%!important}.bigger-270{font-size:270%!important}.bigger-280{font-size:280%!important}.bigger-290{font-size:290%!important}.bigger-300{font-size:300%!important}.bigger-115{font-size:115%!important}.bigger-125{font-size:125%!important}.bigger-175{font-size:175%!important}.bigger-225{font-size:225%!important}.bigger-275{font-size:275%!important}.smaller-90{font-size:90%!important}.smaller-80{font-size:80%!important}.smaller-70{font-size:70%!important}.smaller-60{font-size:60%!important}.smaller-50{font-size:50%!important}.smaller-40{font-size:40%!important}.smaller-30{font-size:30%!important}.smaller-20{font-size:20%!important}.smaller-75{font-size:75%!important}.width-20{width:20%!important}.width-30{width:30%!important}.width-35{width:35%!important}.width-40{width:40%!important}.width-45{width:45%!important}.width-50{width:50%!important}.width-55{width:55%!important}.width-60{width:60%!important}.width-65{width:65%!important}.width-70{width:70%!important}.width-80{width:80%!important}.width-85{width:85%!important}.width-90{width:90%!important}.width-95{width:95%!important}.width-100{width:100%!important}.width-75{width:75%!important}.width-25{width:25%!important}.width-auto{width:auto!important}.height-auto{height:auto!important}.no-padding{padding:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-top{padding-top:0!important}.no-padding-left{padding-left:0!important}.no-padding-right{padding-right:0!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.no-margin-top{margin-top:0!important}.no-margin-left{margin-left:0!important}.no-margin-right{margin-right:0!important}.no-border{border-width:0}.no-border-bottom{border-bottom-width:0}.no-border-top{border-top-width:0}.no-border-left{border-left-width:0}.no-border-right{border-right-width:0}.no-radius{border-radius:0!important}.no-text-shadow{text-shadow:none!important}.hr{display:block;height:0;overflow:hidden;font-size:0;border-width:1px 0 0;border-top:1px solid #E3E3E3;margin:12px 0;border-top-color:rgba(0,0,0,.11)}.hr-double{height:3px;border-top:1px solid #E3E3E3;border-bottom:1px solid #E3E3E3;border-top-color:rgba(0,0,0,.11);border-bottom-color:rgba(0,0,0,.11)}.hr-dotted,.hr.dotted{border-style:dotted}.hr-32,.hr32{margin:32px 0}.hr-30,.hr30{margin:30px 0}.hr-28,.hr28{margin:28px 0}.hr-26,.hr26{margin:26px 0}.hr-24,.hr24{margin:24px 0}.hr-22,.hr22{margin:22px 0}.hr-20,.hr20{margin:20px 0}.hr-18,.hr18{margin:18px 0}.hr-16,.hr16{margin:16px 0}.hr-14,.hr14{margin:14px 0}.hr-12,.hr12{margin:12px 0}.hr-10,.hr10{margin:10px 0}.hr-8,.hr8{margin:8px 0}.hr-6,.hr6{margin:6px 0}.hr-4,.hr4{margin:4px 0}.hr-2,.hr2{margin:2px 0}.space{max-height:1px;min-height:1px;overflow:hidden;margin:12px 0}[class*=vspace-]{display:none}.space-32,[class*=vspace-32]{max-height:1px;min-height:1px;overflow:hidden;margin:32px 0 31px}.space-30,[class*=vspace-30]{max-height:1px;min-height:1px;overflow:hidden;margin:30px 0 29px}.space-28,[class*=vspace-28]{max-height:1px;min-height:1px;overflow:hidden;margin:28px 0 27px}.space-26,[class*=vspace-26]{max-height:1px;min-height:1px;overflow:hidden;margin:26px 0 25px}.space-24,[class*=vspace-24]{max-height:1px;min-height:1px;overflow:hidden;margin:24px 0 23px}.space-22,[class*=vspace-22]{max-height:1px;min-height:1px;overflow:hidden;margin:22px 0 21px}.space-20,[class*=vspace-20]{max-height:1px;min-height:1px;overflow:hidden;margin:20px 0 19px}.space-18,[class*=vspace-18]{max-height:1px;min-height:1px;overflow:hidden;margin:18px 0 17px}.space-16,[class*=vspace-16]{max-height:1px;min-height:1px;overflow:hidden;margin:16px 0 15px}.space-14,[class*=vspace-14]{max-height:1px;min-height:1px;overflow:hidden;margin:14px 0 13px}.space-12,[class*=vspace-12]{max-height:1px;min-height:1px;overflow:hidden;margin:12px 0 11px}.space-10,[class*=vspace-10]{max-height:1px;min-height:1px;overflow:hidden;margin:10px 0 9px}.space-8,[class*=vspace-8]{max-height:1px;min-height:1px;overflow:hidden;margin:8px 0 7px}.space-6,[class*=vspace-6]{max-height:1px;min-height:1px;overflow:hidden;margin:6px 0 5px}.space-4,[class*=vspace-4]{max-height:1px;min-height:1px;overflow:hidden;margin:4px 0 3px}.space-2,[class*=vspace-2]{max-height:1px;min-height:1px;overflow:hidden;margin:2px 0 1px}.space-0,[class*=vspace-0]{max-height:1px;min-height:1px;overflow:hidden;margin:0}@media only screen and (max-width:479px){[class*=vspace-][class*="-xs"]{display:block}}@media only screen and (max-width:767px){[class*=vspace-][class*="-sm"]{display:block}}@media only screen and (max-width:991px){[class*=vspace-][class*="-md"]{display:block}}@media only screen and (max-width:1199px){[class*=vspace-][class*="-lg"]{display:block}}.header{line-height:28px;margin-bottom:16px;margin-top:18px;padding-bottom:4px;border-bottom:1px solid #CCC}.header.blue{border-bottom-color:#d5e3ef}.header.green{border-bottom-color:#cce2c1}.header.purple{border-bottom-color:#e0d1ea}.header.orange{border-bottom-color:#fdd0ac}.header.orange2{border-bottom-color:#fbd36b}.header.red{border-bottom-color:#f3cdc6}.header.grey{border-bottom-color:#c3c3c3}.header.pink{border-bottom-color:#f2e0eb}.header.pink2{border-bottom-color:#e69eb9}.header.light-blue{border-bottom-color:#dceefc}.header.light-red{border-bottom-color:#fec5c5}.header.light-green{border-bottom-color:#d2e7b5}.header.brown{border-bottom-color:#df9393}.header>.ace-icon{margin-right:2px}.action-buttons a{margin:0 3px;display:inline-block;opacity:.85;-webkit-transition:all .1s;-o-transition:all .1s;transition:all .1s}.action-buttons a:hover{text-decoration:none;opacity:1;-moz-transform:scale(1.2);-webkit-transform:scale(1.2);-o-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.navbar{margin:0;padding-left:0;padding-right:0;border-width:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none;min-height:45px;background:#438eb9}.navbar .navbar-link,.navbar .navbar-text{color:#fff}.navbar .navbar-brand{color:#fff;font-size:24px;text-shadow:none;padding-top:10px;padding-bottom:10px;height:auto}.navbar .navbar-brand:focus,.navbar .navbar-brand:hover{color:#fff}@media only screen and (min-width:992px){.navbar-container{padding-left:10px;padding-right:10px}}.navbar-container.container{padding-left:0;padding-right:0}.ace-nav{height:100%;margin:0!important}.ace-nav>li{line-height:45px;height:45px;border-left:1px solid #E1E1E1;padding:0;position:relative;float:left}.ace-nav>li:first-child{border-left-width:0}.ace-nav>li>a{background-color:#2e6589;color:#FFF;display:block;line-height:inherit;text-align:center;height:100%;width:auto;min-width:50px;padding:0 8px;position:relative}.ace-nav>li>a>.ace-icon{display:inline-block;font-size:16px;color:#FFF;text-align:center;width:20px}.ace-nav>li>a>.badge{position:relative;top:-4px;left:2px;padding-right:5px;padding-left:5px}.ace-nav>li.open>a,.ace-nav>li>a:focus,.ace-nav>li>a:hover{background-color:#2c5976;color:#FFF}.ace-nav>li.grey>a{background-color:#555}.ace-nav>li.grey>a:focus,.ace-nav>li.grey>a:hover,.ace-nav>li.open.grey>a{background-color:#4b4b4b}.ace-nav>li.purple>a{background-color:#892e65}.ace-nav>li.open.purple>a,.ace-nav>li.purple>a:focus,.ace-nav>li.purple>a:hover{background-color:#762c59}.ace-nav>li.green>a{background-color:#2e8965}.ace-nav>li.green>a:focus,.ace-nav>li.green>a:hover,.ace-nav>li.open.green>a{background-color:#2c7659}.ace-nav>li.light-blue>a{background-color:#62a8d1}.ace-nav>li.light-blue>a:focus,.ace-nav>li.light-blue>a:hover,.ace-nav>li.open.light-blue>a{background-color:#579ec8}.ace-nav>li.light-blue2>a{background-color:#42a8e1}.ace-nav>li.light-blue2>a:focus,.ace-nav>li.light-blue2>a:hover,.ace-nav>li.open.light-blue2>a{background-color:#359fd9}.ace-nav>li.red>a{background-color:#b74635}.ace-nav>li.open.red>a,.ace-nav>li.red>a:focus,.ace-nav>li.red>a:hover{background-color:#a34335}.ace-nav>li.light-green>a{background-color:#9abc32}.ace-nav>li.light-green>a:focus,.ace-nav>li.light-green>a:hover,.ace-nav>li.open.light-green>a{background-color:#8ba832}.ace-nav>li.light-purple>a{background-color:#cb6fd7}.ace-nav>li.light-purple>a:focus,.ace-nav>li.light-purple>a:hover,.ace-nav>li.open.light-purple>a{background-color:#c263ce}.ace-nav>li.light-orange>a{background-color:#f79263}.ace-nav>li.light-orange>a:focus,.ace-nav>li.light-orange>a:hover,.ace-nav>li.open.light-orange>a{background-color:#f28653}.ace-nav>li.light-pink>a{background-color:#f4dae5}.ace-nav>li.light-pink>a:focus,.ace-nav>li.light-pink>a:hover,.ace-nav>li.open.light-pink>a{background-color:#eeccda}.ace-nav>li.dark>a{background-color:#404040}.ace-nav>li.dark>a:focus,.ace-nav>li.dark>a:hover,.ace-nav>li.open.dark>a{background-color:#363636}.ace-nav>li.white-opaque>a{background-color:rgba(255,255,255,.8)}.ace-nav>li.open.white-opaque>a,.ace-nav>li.white-opaque>a:focus,.ace-nav>li.white-opaque>a:hover{background-color:rgba(245,245,245,.8)}.ace-nav>li.dark-opaque>a,.ace-nav>li.dark-opaque>a:focus,.ace-nav>li.dark-opaque>a:hover,.ace-nav>li.open.dark-opaque>a{background-color:rgba(0,0,0,.2)}.ace-nav>li.transparent>a{background-color:transparent}.ace-nav>li.open.transparent>a,.ace-nav>li.transparent>a:focus,.ace-nav>li.transparent>a:hover{background-color:rgba(0,0,0,.1)}.ace-nav>li.light-10>a{background-color:rgba(255,255,255,.1)}.ace-nav>li.light-10>a:focus,.ace-nav>li.light-10>a:hover,.ace-nav>li.open.light-10>a{background-color:rgba(255,255,255,.2)}.ace-nav>li.dark-10>a{background-color:rgba(0,0,0,.1)}.ace-nav>li.dark-10>a:focus,.ace-nav>li.dark-10>a:hover,.ace-nav>li.open.dark-10>a{background-color:rgba(0,0,0,.2)}.ace-nav>li.margin-4{margin-left:4px}.ace-nav>li.margin-3{margin-left:3px}.ace-nav>li.margin-2{margin-left:2px}.ace-nav>li.margin-1{margin-left:1px}.ace-nav>li.no-border{border-width:0!important}.ace-nav>li .dropdown-menu{z-index:1031}.ace-nav .nav-user-photo{margin:-4px 8px 0 0;border-radius:100%;border:2px solid #FFF;max-width:40px}.ace-nav li.dropdown-footer a .ace-icon{display:inline-block;width:1.25em;text-align:center}@media only screen and (max-width:767px){.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right{right:-100px}.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right:before{right:120px}.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right{right:-80px}.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right:before{right:100px}.user-menu.dropdown-close.dropdown-menu-right{right:0!important}}@media only screen and (min-width:480px) and (max-width:767px){.navbar.navbar-collapse .ace-nav>li:nth-last-child(2):nth-child(1)>.dropdown-menu.dropdown-menu-right,.navbar.navbar-collapse .ace-nav>li:nth-last-child(2):nth-child(2)>.dropdown-menu.dropdown-menu-right{left:auto;right:-60px}.navbar.navbar-collapse .ace-nav>li:nth-last-child(2):nth-child(1)>.dropdown-menu.dropdown-menu-right:after,.navbar.navbar-collapse .ace-nav>li:nth-last-child(2):nth-child(1)>.dropdown-menu.dropdown-menu-right:before,.navbar.navbar-collapse .ace-nav>li:nth-last-child(2):nth-child(2)>.dropdown-menu.dropdown-menu-right:after,.navbar.navbar-collapse .ace-nav>li:nth-last-child(2):nth-child(2)>.dropdown-menu.dropdown-menu-right:before{right:80px;left:auto}}@media only screen and (max-width:480px){.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right{right:-120px}.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right:before{right:140px}.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right{right:-90px}.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right:before{right:110px}.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right{right:-50px}.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right:before{right:70px}}@media only screen and (max-width:479px){.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right{left:-10px;right:auto}.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(4)>.dropdown-menu.dropdown-menu-right:before{right:auto;left:30px}.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right{left:-50px;right:auto}.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(3)>.dropdown-menu.dropdown-menu-right:before{left:75px;right:auto}.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right{left:-70px;right:auto}.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right:before{left:90px;right:auto}}@media only screen and (max-width:319px){.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right{left:-110px;right:auto}.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-last-child(2)>.dropdown-menu.dropdown-menu-right:before{left:130px;right:auto}.ace-nav>li:nth-child(2):nth-last-child(2)>.dropdown-menu.dropdown-menu-right{left:-85px;right:auto}.ace-nav>li:nth-child(2):nth-last-child(2)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-child(2):nth-last-child(2)>.dropdown-menu.dropdown-menu-right:before{left:105px;right:auto}.ace-nav>li:nth-child(1):nth-last-child(3)>.dropdown-menu.dropdown-menu-right{left:-35px;right:auto}.ace-nav>li:nth-child(1):nth-last-child(3)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-child(1):nth-last-child(3)>.dropdown-menu.dropdown-menu-right:before{left:55px;right:auto}.ace-nav>li:nth-child(1):nth-last-child(2)>.dropdown-menu.dropdown-menu-right{left:-60px;right:auto}.ace-nav>li:nth-child(1):nth-last-child(2)>.dropdown-menu.dropdown-menu-right:after,.ace-nav>li:nth-child(1):nth-last-child(2)>.dropdown-menu.dropdown-menu-right:before{left:75px;right:auto}}@media only screen and (max-width:479px){.navbar:not(.navbar-collapse) .navbar-header{float:none!important;display:block}.navbar:not(.navbar-collapse) .ace-nav{display:block;float:none!important;text-align:center;background-color:rgba(0,0,0,.15);border:1px solid rgba(0,0,0,.1);border-width:1px 0 0;letter-spacing:-3px}.navbar:not(.navbar-collapse) .ace-nav>li{display:inline-block;float:none!important;text-align:left;letter-spacing:normal}.navbar:not(.navbar-collapse) .ace-nav>li:first-child{border-left:1px solid rgba(255,255,255,.4)}.navbar:not(.navbar-collapse) .ace-nav>li:last-child{border-right:1px solid rgba(255,255,255,.4)}}@media only screen and (max-width:319px){.ace-nav>li>a{padding:0 5px!important}}.user-menu>li>a{padding:4px 12px}.user-menu>li>a>.ace-icon{margin-right:6px;font-size:120%}.user-info{max-width:100px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;vertical-align:top;line-height:15px;position:relative;top:6px}.user-info small{display:block}@media (min-width:480px) and (max-width:540px),(max-width:360px){.navbar:not(.navbar-collapse) .navbar-buttons .user-menu{padding-top:42px!important}.navbar:not(.navbar-collapse) .navbar-buttons .nav-user-photo{margin-right:0}.navbar:not(.navbar-collapse) .navbar-buttons .user-info{position:absolute!important;margin-top:40px;margin-left:1px;right:2px;z-index:1032;color:#777;font-size:14px;width:156px;max-width:156px;padding-left:8px;padding-right:8px;height:32px;line-height:26px!important;display:none;border-bottom:1px solid #E5E5E5;text-align:center;vertical-align:none;cursor:text}.navbar:not(.navbar-collapse) .navbar-buttons .user-info>small{display:inline;opacity:1}li.open .user-info{display:inline-block!important}}@media (max-width:360px){.navbar.navbar-collapse .navbar-buttons .user-menu{padding-top:42px!important}.navbar.navbar-collapse .navbar-buttons .nav-user-photo{margin-right:0}.navbar.navbar-collapse .navbar-buttons .user-info{position:absolute!important;margin-top:40px;margin-left:1px;right:2px;z-index:1032;color:#777;font-size:14px;width:156px;max-width:156px;padding-left:8px;padding-right:8px;height:32px;line-height:26px!important;display:none;border-bottom:1px solid #E5E5E5;text-align:center;vertical-align:none;cursor:text}.navbar.navbar-collapse .navbar-buttons .user-info>small{display:inline;opacity:1}li.open .user-info{display:inline-block!important;right:2px}}@media (min-width:992px){.user-min .user-menu{padding-top:42px!important}.user-min .nav-user-photo{margin-right:0}.user-min .user-info{position:absolute!important;margin-top:40px;margin-left:1px;z-index:1032;color:#777;font-size:14px;width:156px;max-width:156px;padding-left:8px;padding-right:8px;height:32px;line-height:26px!important;display:none;border-bottom:1px solid #E5E5E5;text-align:center;vertical-align:none;cursor:text}.user-min .user-info>small{display:inline;opacity:1}.user-min .user-info{right:-3px}.user-min.open .user-info{display:inline-block!important}}@media only screen and (max-width:991px){.navbar.navbar-collapse{max-height:none}.navbar .navbar-collapse,.navbar .navbar-header{margin-left:0!important;margin-right:0!important}.navbar.navbar-collapse .navbar-header{float:none!important;min-height:45px}.navbar.navbar-collapse .navbar-buttons{min-height:0;padding-left:0;padding-right:0;border:1px solid rgba(255,255,255,.4);border-width:1px 0 0;width:100%}.navbar.navbar-collapse .navbar-buttons.in{overflow:visible!important}.navbar.navbar-collapse .navbar-buttons>.ace-nav{display:block;float:none!important;text-align:center;background-color:transparent!important;border-width:0;letter-spacing:-3px}.navbar.navbar-collapse .navbar-buttons>.ace-nav>li{display:inline-block;float:none!important;text-align:left;letter-spacing:normal}.navbar.navbar-collapse .navbar-buttons>.ace-nav>li:first-child{border-left:1px solid rgba(255,255,255,.4)}.navbar.navbar-collapse .navbar-buttons>.ace-nav>li:last-child{border-right:1px solid rgba(255,255,255,.4)}}.container-fluid>.navbar-buttons,.container>.navbar-buttons{padding-right:0!important}@media only screen and (max-height:400px){.navbar-fixed-top .navbar-collapse{max-height:280px}}@media only screen and (max-height:360px){.navbar-fixed-top .navbar-collapse{max-height:240px}}@media only screen and (max-height:320px){.navbar-fixed-top .navbar-collapse{max-height:200px}}@media only screen and (max-height:280px){.navbar-fixed-top .navbar-collapse{max-height:160px}}@media only screen and (max-height:240px){.navbar-fixed-top .navbar-collapse{max-height:120px}}.navbar .navbar-nav>li{border:1px solid rgba(0,0,0,.2);border-width:0 1px 0 0}.navbar .navbar-nav>li:first-child{border-width:0 1px}.navbar .navbar-nav>li>a{padding-top:12px;padding-bottom:11px;height:45px;background-color:transparent;font-size:13px;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.25)}.navbar .navbar-nav>li.open>a,.navbar .navbar-nav>li>a:focus,.navbar .navbar-nav>li>a:hover{background-color:rgba(0,0,0,.1)!important;color:#fff!important}.navbar .navbar-nav>li>.dropdown-menu>li>a{line-height:2}.navbar-nav .dropdown-menu>li>a>.ace-icon{display:inline-block;width:20px}.navbar-nav>li>.dropdown-menu{z-index:1033}@media only screen and (max-width:991px){.navbar.navbar-collapse .navbar-menu{float:none!important;clear:both}.navbar.navbar-collapse .navbar-menu .dropdown-menu:after,.navbar.navbar-collapse .navbar-menu .dropdown-menu:before{display:none!important}.navbar .navbar-nav{margin:0 -6px}.navbar .navbar-nav>li,.navbar .navbar-nav>li:first-child{border-width:1px 0 0}.navbar .navbar-nav .dropdown-menu{float:none;position:relative;background-color:transparent;box-shadow:none;border-width:0}.navbar .navbar-nav .dropdown-menu>li>a{color:#FFF!important}.navbar .navbar-nav .dropdown-menu>li>a:hover{background-color:rgba(0,0,0,.07)!important}.navbar .navbar-nav .dropdown-menu>li>a>.ace-icon{color:#FFF!important}.navbar .navbar-nav .dropdown-hover>.dropdown-menu{left:32px!important;right:auto!important;top:auto!important;width:80%!important;width:calc(100% - 32px)}}.navbar-form.form-search{margin-top:9px;margin-bottom:0}.navbar-form.form-search .form-group{margin-bottom:0}.navbar-form.form-search input[type=text]{width:100px}.navbar-form input[type=text]{font-size:13px;line-height:1.4;padding-top:4px;padding-bottom:4px;border-width:0}@media only screen and (max-width:991px){.navbar-form .form-group{display:inline-block;width:50%;margin-bottom:0;vertical-align:middle}.navbar-form.form-search input[type=text]{width:100%}.navbar-nav+.navbar-form{margin-top:0}.navbar .navbar-collapse,.navbar .navbar-form{border-color:rgba(255,255,255,.4)}.navbar .navbar-nav>li:first-child{border-top-width:0}}@media only screen and (max-width:480px){.navbar-form .form-group{width:80%}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:12px;padding-right:12px}@media only screen and (min-width:768px) and (max-width:991px){.navbar.navbar-collapse{background-color:transparent}.navbar.navbar-collapse:before{background:#438eb9;content:"";display:block;position:absolute;min-height:inherit;left:0;right:0;top:0;z-index:-1;border-radius:inherit}.navbar.navbar-collapse .navbar-container{background-color:#438eb9}}.navbar .navbar-toggle{border:1px solid transparent;width:40px;height:35px;line-height:0;padding:0 0 1px;text-align:center}.navbar .navbar-toggle.pull-right{margin:5px 6px 4px 0}.navbar .navbar-toggle.pull-left{margin:5px 0 4px 6px}.navbar .navbar-toggle:active{top:1px}.navbar .navbar-toggle.navbar-toggle-img{width:auto;height:auto;overflow:hidden;padding:0;border-width:0}.navbar .navbar-toggle.navbar-toggle-img>img{border-radius:inherit;max-height:35px;border-width:0}.navbar .navbar-toggle .icon-bar{background-color:#FFF;border-radius:0;width:24px;margin-left:7px}.sidebar{width:190px;float:left;position:static;padding-left:0;padding-right:0}.sidebar:before{content:"";display:block;width:inherit;position:absolute;top:0;bottom:0;z-index:-1;background-color:inherit;border-style:inherit;border-color:inherit;border-width:inherit}.nav-list{margin:0;padding:0;list-style:none}.nav-list .nav-header,.nav-list>li,.nav-list>li>a{margin:0}.nav-list li>a:focus{outline:0}.nav-list>li{display:block;position:relative;float:none;padding:0;border-style:solid;border-width:1px 0 0}.nav-list>li:last-child{border-bottom-width:1px}.nav-list>li.active>a{font-weight:700}.nav-list>li>a{display:block;height:39px;line-height:17px;padding-left:7px;text-shadow:none!important;font-size:13px;text-decoration:none}.nav-list>li>a>.menu-icon{display:inline-block;min-width:30px;margin-right:2px;vertical-align:sub;text-align:center;font-size:18px;font-weight:400}.nav-list>li:before{display:none;content:"";position:absolute;top:-1px;left:0;z-index:1;height:41px;width:3px;max-width:3px;overflow:hidden;background-color:#629cc9}@media only screen and (min-width:992px){.main-container.container .sidebar:not(.h-sidebar) .nav-list>li:before{left:-2px}}.nav-list>li:hover:before{display:block}.nav-list>li a>.arrow{display:block;width:14px!important;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:12px;padding:0;text-align:center}.nav-list>li.separator{height:3px;background-color:transparent;position:static;margin:1px 0;-webkit-box-shadow:none;box-shadow:none}.nav-list>li.active .submenu{display:block}.nav-list>li .submenu{display:none;list-style:none;margin:0;padding:0;line-height:1.5;position:relative}.nav-list>li .submenu>li{margin-left:0;position:relative}.nav-list>li .submenu>li>a{display:block;position:relative;padding:7px 0 9px 37px;margin:0;border-top-width:1px;border-top-style:dotted}.nav-list>li .submenu>li>a:hover{text-decoration:none}.nav-list>li .submenu>li a>.menu-icon{display:none;font-size:12px;font-weight:400;width:18px;height:auto;line-height:12px;text-align:center;position:absolute;left:10px;top:11px;z-index:1;background-color:inherit}.nav-list>li .submenu>li.active>a>.menu-icon,.nav-list>li .submenu>li:hover>a>.menu-icon{display:inline-block}.nav-list>li>.submenu{border-top:1px solid}.nav-list>li>.submenu>li:before{content:"";display:block;width:7px;position:absolute;z-index:1;left:20px;top:17px;border:1px dotted;border-width:1px 0 0}.nav-list>li>.submenu:before{content:"";display:block;position:absolute;z-index:1;left:18px;top:0;bottom:0;border:1px dotted;border-width:0 0 0 1px}.nav-list li.active>a>.arrow,.nav-list li.open>a>.arrow,.nav-list li:hover>a>.arrow{color:inherit}.nav-list>li>a>.menu-icon,no_such_element:-o-prefocus{vertical-align:middle}.nav-list>li>.submenu li>.submenu{display:none}.nav-list>li>.submenu li.active>.submenu{display:block}.nav-list>li>.submenu a>.arrow{right:10px;top:10px;font-size:16px}.nav-list>li>.submenu>li:first-child>a{border-top-width:0}.nav-list>li>.submenu li>.submenu>li{line-height:18px}.nav-list>li>.submenu li>.submenu>li:before{display:none}.nav-list>li>.submenu li>.submenu>li>a{margin-left:20px;padding-left:22px}.nav-list>li>.submenu li>.submenu>li>.submenu>li>a{margin-left:20px;padding-left:38px}.nav-list>li>.submenu li>.submenu>li a>.menu-icon{display:inline-block;width:auto;position:static;background-color:transparent;margin-right:4px;color:inherit}.nav-list>li>.submenu li>.submenu>li a .arrow,.nav-list>li>.submenu li>.submenu>li a .menu-icon{color:inherit}.nav-list>li>.submenu li.open:not(.hover)>a>.menu-icon{display:inline-block}.nav-list a .badge,.nav-list a .label{position:absolute;top:9px;right:10px;opacity:.88;font-size:12px;padding-left:6px;padding-right:6px}.nav-list a .badge .ace-icon,.nav-list a .label .ace-icon{vertical-align:middle;margin:0}.nav-list a.dropdown-toggle .badge,.nav-list a.dropdown-toggle .label{right:26px}.nav-list li:hover>a .badge,.nav-list li:hover>a .label{opacity:1}.nav-list .submenu .submenu a .badge,.nav-list .submenu .submenu a .label{top:6px}.sidebar.sidebar-fixed{position:fixed;top:auto;float:none!important;z-index:1027}.sidebar.sidebar-fixed:before{height:5000px;top:auto;bottom:auto}body.mob-safari .sidebar.sidebar-fixed{top:45px}@media (max-width:479px){body.mob-safari .navbar-fixed-top:not(.navbar-collapse)+.main-container .sidebar-fixed{top:90px}}@media (max-width:991px){body.mob-safari .navbar-fixed-top+.main-container .sidebar.responsive{top:45px}}@media (max-width:479px){body.mob-safari .navbar-fixed-top+.main-container .sidebar.responsive{top:90px}}@media only screen and (max-width:991px){.responsive.sidebar-fixed{left:auto;margin-left:auto}.navbar-fixed-top+.main-container>.responsive{position:fixed;left:auto;margin-left:auto;-moz-backface-visibility:hidden}.navbar-fixed-top+.main-container>.menu-toggler+.responsive{position:absolute;left:190px;margin-left:-190px;-moz-backface-visibility:visible}.navbar-fixed-top+.main-container>.menu-toggler+.responsive.sidebar-fixed{position:fixed;left:auto;margin-left:auto;-moz-backface-visibility:hidden}}@media only screen and (max-width:991px){.sidebar.responsive.sidebar-fixed{position:fixed;left:auto;margin-left:auto}.main-container .menu-toggler.fixed{position:fixed;left:auto;z-index:1026;-moz-backface-visibility:hidden}.sidebar.sidebar-fixed.responsive-max{position:fixed;left:auto;margin-left:auto}}.sidebar .sidebar-toggle{border-style:solid;border-width:0 0 1px;text-align:center;padding:3px 0;position:relative}.sidebar .sidebar-toggle>.ace-icon{padding:0 5px;line-height:18px;cursor:pointer;font-size:14px;border-radius:100%;border:1px solid;position:relative}.sidebar .sidebar-toggle:before{content:"";display:block;height:0;border-top:1px solid;border-color:inherit;position:absolute;left:15px;right:15px;top:13px}.sidebar .sidebar-shortcuts{text-align:center;min-height:40px;margin-bottom:0;overflow:hidden;position:relative;border:0 solid}.sidebar .sidebar-shortcuts-large{line-height:37px}.sidebar .sidebar-shortcuts-large>.btn{text-align:center;width:41px;line-height:24px;padding:0;border-width:4px}.sidebar .sidebar-shortcuts-large>.btn>.ace-icon{margin:0}.sidebar .sidebar-shortcuts-mini{display:none;font-size:0;width:42px;padding-top:2px;padding-bottom:2px}.sidebar .sidebar-shortcuts-mini>.btn{border-width:0!important;font-size:0;line-height:0;padding:8px!important;margin:1px;border-radius:0!important;opacity:.85;filter:alpha(opacity=85)}@media screen and (-webkit-min-device-pixel-ratio:0){.sidebar .sidebar-shortcuts-mini>.btn,.sidebar ::safari-only{margin:0}}.nav-list li.active>a:after{display:block;content:"";position:absolute;right:0;top:4px;border:8px solid transparent;border-width:14px 10px}.nav-list li.open>a:after{display:none}.nav-list li.active.no-active-child>a:after{display:block}.nav-list>li li.active>a:after{top:2px;border-width:14px 8px}.nav-list li.active:not(.open) li.active>a:after{display:none!important}@media (min-width:992px){.sidebar.compact,.sidebar.compact.navbar-collapse{width:105px}.sidebar.compact .sidebar-shortcuts{max-height:40px}.sidebar.compact .nav-list>li:before{height:auto;bottom:-1px}.sidebar.compact .nav-list>li>a{height:auto;line-height:16px;padding:2px 0 8px;text-align:center}.sidebar.compact .nav-list>li>a>.menu-icon{display:block;margin:0;vertical-align:inherit;line-height:32px;height:32px;font-size:20px}.sidebar.compact .nav-list>li>a>.arrow{display:none}.sidebar.compact .nav-list a .badge,.sidebar.compact .nav-list a .label{right:12px}.sidebar.compact .nav-list>li.active>.submenu,.sidebar.compact .nav-list>li.open>.submenu{display:none}.sidebar.compact+.main-content{margin-left:105px}}@media (min-width:992px) and (max-width:991px){.sidebar.compact+.main-content{margin-left:0}.sidebar.navbar-collapse.compact .nav-list>li>a{text-align:left;height:39px;line-height:37px;padding:0 16px 0 7px}.sidebar.navbar-collapse.compact .nav-list>li>a>.menu-icon{display:inline-block;vertical-align:sub;height:auto;line-height:inherit;margin:0 2px 0 0;font-size:18px}.sidebar.navbar-collapse.compact .nav-list>li>a>.arrow,.sidebar.navbar-collapse.compact .nav-list>li>a>.menu-text{display:inline}.sidebar.navbar-collapse.compact+.main-content{margin-left:0}}@media only screen and (min-width:992px){.nav-list li.hover>.submenu{position:absolute;left:100%;margin-left:-2px;top:-10px;bottom:auto;z-index:1026;width:190px;border:1px solid;display:none!important}.nav-list li.hover:hover>.submenu{display:block!important}.nav-list li.hover>.submenu:before,.nav-list li.hover>.submenu>li:before{display:none}.nav-list li.hover.active>a:after{display:block}.nav-list li.hover.active:hover>a.dropdown-toggle:after{display:none}.nav-list li.hover .submenu>li.active>a:after{display:none!important}.nav-list li.hover>.submenu.bottom{top:auto;bottom:-10px}.nav-list li.hover>.submenu.bottom:after,.nav-list li.hover>.submenu.bottom:before{top:auto;bottom:18px}.nav-list li.hover>.submenu{padding:0 2px}.nav-list li.hover>.submenu>li>a{margin-top:2px;margin-bottom:2px;padding-left:18px;border-top-width:0}.nav-list>li.hover>.submenu>li.active>a{font-weight:700}.nav-list>li>.submenu li.hover>.submenu>li>a{padding-left:12px!important;margin-left:auto!important}.nav-list>li>.submenu li.hover>.submenu>li>a>.menu-icon{margin-right:2px}.nav-list>li .submenu>li.hover>a{padding-left:22px}.nav-list>li .submenu>li.hover>a>.menu-icon{left:4px}}@media (min-width:992px) and (max-width:991px){.sidebar.navbar-collapse .nav-list li.hover>.submenu{position:relative;left:auto;top:auto;z-index:auto;margin:auto;padding:0;width:auto;-webkit-box-shadow:none;box-shadow:none;border-width:0}.sidebar.navbar-collapse .nav-list li.hover>.submenu:before,.sidebar.navbar-collapse .nav-list li.hover>.submenu>li:before{display:block}.sidebar.navbar-collapse .nav-list li.hover>.submenu li>a{padding-left:37px}.sidebar.navbar-collapse .nav-list>li.hover>.submenu{border-top-width:1px}.sidebar.navbar-collapse .nav-list li.hover>.submenu>li>a>.menu-icon{background-color:inherit;margin-right:auto;width:18px;position:absolute}.sidebar.navbar-collapse .nav-list>li .submenu>li.hover>a>.menu-icon{left:10px}.sidebar.navbar-collapse .nav-list li.hover>.submenu>li.active>a{font-weight:400}.sidebar.navbar-collapse .nav-list li.hover>.submenu>li.active>a>.menu-icon,.sidebar.navbar-collapse .nav-list li.hover>.submenu>li:hover>a>.menu-icon{display:inline-block}.sidebar.navbar-collapse .nav-list>li>.submenu li.hover>.submenu{padding-left:0;padding-right:0}.sidebar.navbar-collapse .nav-list>li>.submenu li.hover>.submenu>li>a{padding-left:22px!important;margin-left:20px!important}.sidebar.navbar-collapse .nav-list>li>.submenu li.hover>.submenu>li>a>.menu-icon{display:inline-block;width:auto;position:static;background-color:transparent;margin-right:4px}.sidebar.navbar-collapse .nav-list>li>.submenu li>.submenu>li.hover>.submenu>li>a{margin-left:20px!important;padding-left:38px!important}.sidebar.navbar-collapse .nav-list li.hover>.submenu>li>a{border-top-width:1px;margin-top:0;margin-bottom:0}.sidebar.navbar-collapse .nav-list>li.hover>.submenu>li:first-child>a{border-top-width:0}.sidebar.navbar-collapse .nav-list li.hover:hover>.submenu,.sidebar.navbar-collapse .nav-list li.hover>.arrow,.sidebar.navbar-collapse .nav-list li.hover>.submenu{display:none!important}.sidebar.navbar-collapse .nav-list li.hover.active>.submenu{display:block!important}.sidebar.navbar-collapse .nav-list li.hover>.submenu.nav-hide{display:none!important}.sidebar.navbar-collapse .nav-list li.hover>.submenu.nav-show{display:block!important}}@media (min-width:992px) and (max-width:991px){.sidebar.navbar-collapse.compact .nav-list>li.hover.active>a:after{display:none}}.nav-list li>.arrow{display:none;position:absolute;top:8px;right:1px;z-index:1027}.nav-list li>.arrow:after,.nav-list li>.arrow:before{border:1px solid transparent;display:block;height:0;width:0;position:absolute;left:-20px;top:0;right:auto;bottom:auto;content:"";border-width:10px}.nav-list li>.arrow:before{z-index:1;left:-21px}.nav-list li>.arrow:after{z-index:2}.nav-list li:hover>a+.arrow{display:none}@media only screen and (min-width:992px){.nav-list li.hover:hover>a.dropdown-toggle+.arrow{display:block}}.sidebar.menu-min,.sidebar.menu-min.compact,.sidebar.menu-min.navbar-collapse{width:43px}.sidebar.menu-min+.main-content{margin-left:43px}.sidebar.menu-min .nav-list a .badge,.sidebar.menu-min .nav-list a .label{position:relative;top:-1px;right:auto;left:4px}.sidebar.menu-min .nav-list .submenu .submenu a .badge,.sidebar.menu-min .nav-list .submenu .submenu a .label{top:0}.sidebar.menu-min .nav-list>li>a{position:relative;height:39px;line-height:37px;padding:0}.sidebar.menu-min .nav-list>li>a>.menu-icon{font-size:18px;height:auto;line-height:inherit;display:inline-block;vertical-align:sub;margin-right:0;width:44px}.sidebar.menu-min .nav-list>li>a>.menu-text{display:none;text-align:left;position:absolute;top:-1px;left:42px;z-index:1025;width:176px;height:41px;line-height:38px;padding-left:12px;border:1px solid}.sidebar.menu-min .nav-list>li>a.dropdown-toggle>.menu-text{top:-1px;border-width:1px 1px 0}.sidebar.menu-min .nav-list>li>a .arrow{display:none}.sidebar.menu-min .nav-list>li:hover>a>.menu-text{display:block}.sidebar.menu-min .nav-list>li.active>a:after{border-width:10px 6px;top:8px}.sidebar.menu-min .nav-list>li.active.open>a:after{display:block}.sidebar.menu-min .nav-list>li.active.open li.active>a:after{display:none}.sidebar.menu-min .nav-list>li>.submenu{position:absolute;z-index:1028;left:42px;top:-1px;margin-top:40px;padding-bottom:2px;width:176px;display:none!important}.sidebar.menu-min .nav-list>li>.submenu:before{display:none}.sidebar.menu-min .nav-list>li>.submenu:after{content:"";display:block;height:1px;width:1px;position:absolute;right:-1px;top:-1px;border-right:1px solid;border-right-color:inherit}.sidebar.menu-min .nav-list>li>.submenu li:before{display:none}.sidebar.menu-min .nav-list>li>.submenu li>a{margin-left:0;padding-left:22px}.sidebar.menu-min .nav-list>li>.submenu li>a>.menu-icon{left:4px}.sidebar.menu-min .nav-list>li.hover>.submenu{padding-bottom:0}.sidebar.menu-min .nav-list>li.open>.submenu{display:none}.sidebar.menu-min .nav-list>li:hover>.submenu{display:block!important}.sidebar.menu-min .nav-list>li>.arrow{top:10px}.sidebar.menu-min .nav-list>li>.arrow:after,.sidebar.menu-min .nav-list>li>.arrow:before{border-width:8px;left:-16px}.sidebar.menu-min .nav-list>li>.arrow:before{left:-17px}.sidebar.menu-min .nav-list li>.arrow{right:-1px}.sidebar.menu-min .nav-list>li:hover>.arrow{display:block}.sidebar.menu-min .nav-list>li.pull_up>.arrow{z-index:1029}.sidebar.menu-min .nav-list>li.pull_up>.arrow:after,.sidebar.menu-min .nav-list>li.pull_up>.arrow:before{border-width:10px;left:-20px}.sidebar.menu-min .nav-list>li.pull_up>.arrow:before{left:-21px}.sidebar.menu-min .sidebar-shortcuts{position:relative;overflow:visible;z-index:1}.sidebar.menu-min .sidebar-shortcuts-mini{display:block}.sidebar.menu-min .sidebar-shortcuts-large{display:none;position:absolute;top:0;left:42px;width:182px;padding:0 2px 3px;border:1px solid;border-top-width:0}.sidebar.menu-min .sidebar-shortcuts:hover .sidebar-shortcuts-large{display:block}.sidebar.menu-min .sidebar-toggle:before{left:5px;right:5px}.sidebar.menu-min .sidebar-toggle>.ace-icon{font-size:13px;padding:0 4px;line-height:15px;border-width:1px}.sidebar.menu-min .nav-list>li>.submenu li>.submenu>li>a{margin-left:2px!important;padding-left:30px}.sidebar.menu-min .nav-list>li>.submenu li>.submenu>li>.submenu>li>a{margin-left:2px!important;padding-left:45px}.sidebar.menu-min .nav-list li.active.open>.submenu>li.active>a:after,.sidebar.menu-min .nav-list>li.active.open:hover>a:after,.sidebar.menu-min .nav-list>li.active:hover:after,.sidebar.menu-min .nav-list>li.active:hover>a:after,.sidebar.menu-min .nav-list>li>.submenu li.active>a:after{display:none}@media only screen and (min-width:992px){.sidebar.menu-min .nav-list li.hover>.submenu{margin-left:0}.sidebar.menu-min .nav-list>li>.submenu li.hover>.submenu>li>a,.sidebar.menu-min .nav-list>li>.submenu li>.submenu>li.hover>.submenu>li>a{margin-left:0!important}}@media (min-width:992px){.sidebar.menu-min.compact .nav-list>li>a{height:39px;line-height:37px;padding:0 16px 0 7px;position:relative}.sidebar.menu-min.compact .nav-list>li>a>.menu-icon{font-size:18px;height:auto;line-height:inherit;display:inline-block;vertical-align:sub;width:auto}}@media only screen and (min-width:992px){.navbar.h-navbar{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.25);box-shadow:0 2px 4px 0 rgba(0,0,0,.25)}.sidebar.h-sidebar{position:relative;float:none!important;width:auto!important;margin-top:17px;border-width:0!important;box-shadow:none}.sidebar.h-sidebar.sidebar-fixed{position:fixed}.sidebar.h-sidebar:before{display:block;position:absolute;z-index:-1;left:0!important;right:0!important;top:-17px;bottom:auto;height:17px;width:auto;border-width:0;border-bottom:1px solid;border-bottom-color:inherit}.sidebar.h-sidebar.hide-before .nav-list>li:before{top:0}.sidebar.h-sidebar .nav-list{border-width:0;border-bottom:2px solid #79b0ce}.sidebar.h-sidebar .nav-list>li{float:left;border-width:0 1px;margin-left:-1px}.sidebar.h-sidebar .nav-list>li:before{left:-1px;right:-1px;bottom:auto;top:-2px;max-width:none;width:auto;height:2px;border-width:0}.sidebar.h-sidebar .nav-list>li.active:before{display:block}.sidebar.h-sidebar .nav-list>li.active:after{display:none}.sidebar.h-sidebar .nav-list>li:hover{z-index:1026}.sidebar.h-sidebar .nav-list>li.active{z-index:1027}.sidebar.h-sidebar .nav-list>li:first-child{border-left-width:0;margin-left:0}.sidebar.h-sidebar .sidebar-shortcuts+.nav-list>li:first-child{border-left-width:1px;margin-left:-1px}.sidebar.h-sidebar .nav-list>li>a{line-height:22px!important;height:auto!important;padding:10px 14px!important}.sidebar.h-sidebar .nav-list>li>a>.menu-icon{display:block!important;margin:1px 0 4px;line-height:inherit;width:auto}.sidebar.h-sidebar .nav-list>li>a>.arrow{display:none}.sidebar.h-sidebar .nav-list>li.hover.pull_right{float:none!important}.sidebar.h-sidebar .nav-list>li.hover>.submenu{top:100%;left:1px;margin-top:auto;margin-left:-2px;width:190px;z-index:1026}.sidebar.h-sidebar .nav-list>li.hover.pull_right>.submenu{left:auto;right:1px}.sidebar.h-sidebar .nav-list>li.hover>.arrow{right:auto;top:auto;left:24px;bottom:7px}.sidebar.h-sidebar .nav-list>li.hover.pull_right>.arrow{left:auto;right:24px}.sidebar.h-sidebar .nav-list>li.hover>.arrow:after,.sidebar.h-sidebar .nav-list>li.hover>.arrow:before{border-width:0 8px 8px!important}.sidebar.h-sidebar .nav-list>li.hover>.arrow:after{border-color:transparent;border-left-color:transparent!important;border-right-color:transparent!important;-moz-border-right-colors:none!important;-moz-border-left-colors:none!important;-moz-border-top-colors:none;-moz-border-bottom-colors:none;left:-10px!important;right:auto!important}.sidebar.h-sidebar .nav-list>li.hover>.arrow:before{border-color:transparent;border-left-color:transparent!important;border-right-color:transparent!important;-moz-border-right-colors:none!important;-moz-border-left-colors:none!important;-moz-border-top-colors:none;-moz-border-bottom-colors:none;right:auto!important;left:-10px!important;top:-1px!important}.sidebar.h-sidebar .nav-list>li.hover:hover>a~.arrow{display:none}.sidebar.h-sidebar .nav-list>li.hover:hover>a.dropdown-toggle~.arrow{display:block}.sidebar.h-sidebar .sidebar-shortcuts-large:after,.sidebar.h-sidebar .sidebar-shortcuts-large:before{display:block;content:"";position:absolute;left:50%;margin-left:-8px;border:1px solid transparent;border-width:0 8px 8px}.sidebar.h-sidebar .sidebar-shortcuts-large:after{border-right-color:transparent;-moz-border-right-colors:none;top:-8px}.sidebar.h-sidebar .sidebar-shortcuts-large:before{-moz-border-bottom-colors:#CCC;border-bottom-color:#CCC;top:-9px}.sidebar.h-sidebar .sidebar-toggle{display:none}.sidebar.h-sidebar .sidebar-shortcuts{float:left;display:block;overflow:visible;position:relative;margin:0;padding:12px 8px 9px;max-height:none!important;background-color:transparent}.sidebar.h-sidebar .sidebar-shortcuts:hover .sidebar-shortcuts-large{display:block}.sidebar.h-sidebar .sidebar-shortcuts-large{display:none;width:52px;height:auto;position:absolute;z-index:15;top:100%;margin-top:-5px;left:10px;padding:3px 2px;border:1px solid}.sidebar.h-sidebar .sidebar-shortcuts-mini{width:auto;max-width:52px;display:block;background-color:transparent;padding-top:3px;padding-bottom:5px}.sidebar.h-sidebar .sidebar-shortcuts-mini>.btn{margin:1px;padding:9px!important}.sidebar.h-sidebar .nav-list a .badge,.sidebar.h-sidebar .nav-list a .label{position:absolute;top:11px;right:auto!important;left:50%;margin-left:10px}.sidebar.h-sidebar+.main-content{margin-left:0}.sidebar.h-sidebar+.main-content .breadcrumbs{margin:6px 9px;border:1px solid;border-color:#E5E5E5}.h-sidebar.sidebar-fixed{top:auto;width:100%;left:0;right:0}.h-sidebar.sidebar-fixed:before{z-index:auto}.h-sidebar.sidebar-fixed,.h-sidebar.sidebar-fixed .nav-list{border-right-width:0;border-left-width:0}.h-sidebar.sidebar-fixed .sidebar-shortcuts{border-width:0}.h-sidebar.sidebar-fixed+.main-content{padding-top:88px}}@media only screen and (min-width:992px) and (max-width:991px){.sidebar.h-sidebar+.main-content .breadcrumbs{margin:0;border-width:0 0 1px}}.main-container.container .h-sidebar.sidebar-fixed.navbar-collapse{left:0!important;right:0!important;width:auto!important}@media (min-width:768px){.main-container.container .h-sidebar.sidebar-fixed.navbar-collapse{left:auto!important;right:auto!important;width:744px!important}}@media (min-width:992px){.main-container.container .h-sidebar.sidebar-fixed.navbar-collapse{width:964px!important}}@media (min-width:1200px){.main-container.container .h-sidebar.sidebar-fixed.navbar-collapse{width:1164px!important}}@media (min-width:992px){.sidebar.h-sidebar .nav-list>li>a>.menu-text{background-color:transparent!important;border-width:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;display:inline!important;margin:auto!important;padding:0!important;position:static!important;font-size:inherit;line-height:inherit;text-align:inherit}.sidebar.h-sidebar .nav-list>li>a>.menu-icon{height:auto;font-size:18px}}.main-container .menu-toggler,.sidebar-toggle.sidebar-expand{display:none}@media only screen and (max-width:991px){.sidebar.responsive:before{display:none}.sidebar.responsive{-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.15);box-shadow:2px 1px 2px 0 rgba(0,0,0,.15);z-index:1027;overflow:hidden;max-height:0;-moz-transform:translateX(-200px);-webkit-transform:translateX(-200px);-o-transform:translateX(-200px);-ms-transform:translateX(-200px);transform:translateX(-200px);-webkit-transition:-webkit-transform .2s linear 0s,max-height 0s linear .2s;-moz-transition:-moz-transform .2s linear 0s,max-height 0s linear .2s;-o-transition:-o-transform .2s linear 0s,max-height 0s linear .2s;transition:transform .2s linear 0s,max-height 0s linear .2s;position:relative;bottom:auto;left:190px;margin-left:-190px}}@media (min-width:992px) and (max-width:991px){.sidebar.responsive.compact{-moz-transform:translateX(-115px);-webkit-transform:translateX(-115px);-o-transform:translateX(-115px);-ms-transform:translateX(-115px);transform:translateX(-115px)}.navbar.navbar-fixed-top+.main-container .sidebar.responsive.compact.push_away.display~.footer .footer-inner,.sidebar.responsive.compact.push_away.display+.main-content{-moz-transform:translateX(105px);-webkit-transform:translateX(105px);-o-transform:translateX(105px);-ms-transform:translateX(105px);transform:translateX(105px)}}@media only screen and (max-width:991px){.sidebar.responsive.menu-min{-moz-transform:translateX(-53px);-webkit-transform:translateX(-53px);-o-transform:translateX(-53px);-ms-transform:translateX(-53px);transform:translateX(-53px)}.sidebar.responsive.display{-moz-transform:none!important;-webkit-transform:none!important;-o-transform:none!important;-ms-transform:none!important;transform:none!important;overflow:visible;max-height:2000px;-webkit-transition-delay:0s;-moz-transition-delay:0s;-o-transition-delay:0s;transition-delay:0s}.sidebar.responsive.push_away{-webkit-box-shadow:none!important;box-shadow:none!important}.sidebar.responsive.push_away:before{display:block!important}.sidebar.responsive.push_away+.main-content{-webkit-transition:-webkit-transform .2s linear 0s;-moz-transition:-moz-transform .2s linear 0s;-o-transition:-o-transform .2s linear 0s;transition:transform .2s linear 0s}.sidebar.responsive.push_away.display+.main-content{-moz-transform:translateX(190px);-webkit-transform:translateX(190px);-o-transform:translateX(190px);-ms-transform:translateX(190px);transform:translateX(190px)}.sidebar.responsive.push_away.display.menu-min+.main-content{-moz-transform:translateX(43px);-webkit-transform:translateX(43px);-o-transform:translateX(43px);-ms-transform:translateX(43px);transform:translateX(43px)}.navbar.navbar-fixed-top+.main-container .sidebar.responsive.push_away:before{height:5000px}.navbar.navbar-fixed-top+.main-container .sidebar.responsive.push_away~.footer .footer-inner{-webkit-transition:-webkit-transform .2s linear 0s;-moz-transition:-moz-transform .2s linear 0s;-o-transition:-o-transform .2s linear 0s;transition:transform .2s linear 0s}.navbar.navbar-fixed-top+.main-container .sidebar.responsive.push_away.display~.footer .footer-inner{-moz-transform:translateX(190px);-webkit-transform:translateX(190px);-o-transform:translateX(190px);-ms-transform:translateX(190px);transform:translateX(190px)}.navbar.navbar-fixed-top+.main-container .sidebar.responsive.push_away.display.menu-min~.footer .footer-inner{-moz-transform:translateX(43px);-webkit-transform:translateX(43px);-o-transform:translateX(43px);-ms-transform:translateX(43px);transform:translateX(43px)}.sidebar.responsive .nav-list>li.active:after{height:41px}.sidebar.responsive .nav-list li li.active>a:after{display:none}.sidebar.responsive.menu-min .nav-list>li.active:after{display:block}.sidebar.responsive+.main-content{margin-left:0!important}}@media only screen and (min-width:768px) and (max-width:991px){.main-container.container .sidebar.responsive{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;display:none}.main-container.container .sidebar.responsive.display{display:block}.main-container.container .sidebar.responsive.push_away+.main-content,.main-container.container .sidebar.responsive.push_away~.footer .footer-inner{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important;-moz-transform:none!important;-webkit-transform:none!important;-o-transform:none!important;-ms-transform:none!important;transform:none!important}}@media only screen and (max-width:991px){.responsive.sidebar-fixed{position:fixed}.main-container .menu-toggler.fixed{position:fixed;left:auto;z-index:1026;-moz-backface-visibility:hidden}}@media only screen and (max-width:991px){.menu-toggler+.sidebar.responsive{margin-top:40px}.main-container .menu-toggler{display:block;position:absolute;z-index:1026;width:52px;height:32px;margin-right:2px;line-height:normal;padding-left:33px;padding-top:7px;padding-bottom:1px;font-size:13px;font-weight:700;text-transform:uppercase;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.main-container .menu-toggler:hover{text-decoration:none}.main-container .menu-toggler:focus{outline:0}.main-container .menu-toggler:before{border-top:1px solid #87b87f;border-bottom:1px solid #6fb3e0;height:2px;width:24px;content:"";position:absolute;z-index:1;top:13px;left:4px;-webkit-transition:all .1s ease;transition:all .1s ease;-o-transition:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.main-container .menu-toggler:after{border-top:1px solid #ffa24d;border-bottom:1px solid #d15b47;content:"";height:2px;width:24px;position:absolute;top:19px;left:4px;-webkit-transition:all .1s ease;transition:all .1s ease;-o-transition:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.main-container .menu-toggler.display:before{height:4px;top:8px;border-width:2px}.main-container .menu-toggler.display:after{height:4px;top:20px;border-width:2px}.main-container .menu-toggler>.toggler-text{display:block;position:absolute;bottom:-9px;left:0;border:1px solid transparent;border-width:9px 42px 0;border-top-color:#444;-moz-border-top-colors:#444}.main-container .menu-toggler>.toggler-text:after{display:block;content:"MENU";color:#fff;position:absolute;left:-8px;top:-41px}.menu-toggler+.responsive.sidebar-scroll .nav-wrap{overflow:hidden}}@media only screen and (max-width:320px){.main-container .menu-toggler{width:0}.main-container .menu-toggler>.toggler-text{border-width:7px 16px;bottom:-14px}.main-container .menu-toggler>.toggler-text:after{font-size:9px;font-weight:400;color:#FFF;position:absolute;left:-13px;top:-42px}.main-container .menu-toggler:after,.main-container .menu-toggler:before{margin-top:8px}.main-container .menu-toggler.display:after,.main-container .menu-toggler.display:before{height:2px;border-width:1px}.main-container .menu-toggler.display:before{top:13px}.main-container .menu-toggler.display:after{top:19px}}@media (max-width:991px){.menu-toggler.invisible{position:fixed;z-index:-999;visibility:hidden;opacity:0;width:1px;height:1px}.sidebar.responsive-min,.sidebar.responsive-min.compact,.sidebar.responsive-min.navbar-collapse{width:43px}.sidebar.responsive-min+.main-content{margin-left:43px}.sidebar.responsive-min .nav-list a .badge,.sidebar.responsive-min .nav-list a .label{position:relative;top:-1px;right:auto;left:4px}.sidebar.responsive-min .nav-list .submenu .submenu a .badge,.sidebar.responsive-min .nav-list .submenu .submenu a .label{top:0}.sidebar.responsive-min .nav-list>li>a{position:relative;height:39px;line-height:37px;padding:0}.sidebar.responsive-min .nav-list>li>a>.menu-icon{font-size:18px;height:auto;line-height:inherit;display:inline-block;vertical-align:sub;margin-right:0;width:44px}.sidebar.responsive-min .nav-list>li>a>.menu-text{display:none;text-align:left;position:absolute;top:-1px;left:42px;z-index:1025;width:176px;height:41px;line-height:38px;padding-left:12px;border:1px solid}.sidebar.responsive-min .nav-list>li>a.dropdown-toggle>.menu-text{top:-1px;border-width:1px 1px 0}.sidebar.responsive-min .nav-list>li>a .arrow{display:none}.sidebar.responsive-min .nav-list>li:hover>a>.menu-text{display:block}.sidebar.responsive-min .nav-list>li.active>a:after{border-width:10px 6px;top:8px}.sidebar.responsive-min .nav-list>li.active.open>a:after{display:block}.sidebar.responsive-min .nav-list>li.active.open li.active>a:after{display:none}.sidebar.responsive-min .nav-list>li>.submenu{position:absolute;z-index:1028;left:42px;top:-1px;margin-top:40px;padding-bottom:2px;width:176px;display:none!important}.sidebar.responsive-min .nav-list>li>.submenu:before{display:none}.sidebar.responsive-min .nav-list>li>.submenu:after{content:"";display:block;height:1px;width:1px;position:absolute;right:-1px;top:-1px;border-right:1px solid;border-right-color:inherit}.sidebar.responsive-min .nav-list>li>.submenu li:before{display:none}.sidebar.responsive-min .nav-list>li>.submenu li>a{margin-left:0;padding-left:22px}.sidebar.responsive-min .nav-list>li>.submenu li>a>.menu-icon{left:4px}.sidebar.responsive-min .nav-list>li.hover>.submenu{padding-bottom:0}.sidebar.responsive-min .nav-list>li.open>.submenu{display:none}.sidebar.responsive-min .nav-list>li:hover>.submenu{display:block!important}.sidebar.responsive-min .nav-list>li>.arrow{top:10px}.sidebar.responsive-min .nav-list>li>.arrow:after,.sidebar.responsive-min .nav-list>li>.arrow:before{border-width:8px;left:-16px}.sidebar.responsive-min .nav-list>li>.arrow:before{left:-17px}.sidebar.responsive-min .nav-list li>.arrow{right:-1px}.sidebar.responsive-min .nav-list>li:hover>.arrow{display:block}.sidebar.responsive-min .nav-list>li.pull_up>.arrow{z-index:1029}.sidebar.responsive-min .nav-list>li.pull_up>.arrow:after,.sidebar.responsive-min .nav-list>li.pull_up>.arrow:before{border-width:10px;left:-20px}.sidebar.responsive-min .nav-list>li.pull_up>.arrow:before{left:-21px}.sidebar.responsive-min .sidebar-shortcuts{position:relative;overflow:visible;z-index:1}.sidebar.responsive-min .sidebar-shortcuts-mini{display:block}.sidebar.responsive-min .sidebar-shortcuts-large{display:none;position:absolute;top:0;left:42px;width:182px;padding:0 2px 3px;border:1px solid;border-top-width:0}.sidebar.responsive-min .sidebar-shortcuts:hover .sidebar-shortcuts-large{display:block}.sidebar.responsive-min .sidebar-toggle:before{left:5px;right:5px}.sidebar.responsive-min .sidebar-toggle>.ace-icon{font-size:13px;padding:0 4px;line-height:15px;border-width:1px}.sidebar.responsive-min .nav-list>li>.submenu li>.submenu>li>a{margin-left:2px!important;padding-left:30px}.sidebar.responsive-min .nav-list>li>.submenu li>.submenu>li>.submenu>li>a{margin-left:2px!important;padding-left:45px}.sidebar.responsive-min .nav-list li.active.open>.submenu>li.active>a:after,.sidebar.responsive-min .nav-list>li.active.open:hover>a:after,.sidebar.responsive-min .nav-list>li.active:hover:after,.sidebar.responsive-min .nav-list>li.active:hover>a:after,.sidebar.responsive-min .nav-list>li>.submenu li.active>a:after{display:none}.sidebar.responsive-min:before{display:block}.sidebar.responsive-min .sidebar-toggle.sidebar-collapse{display:none}.sidebar.responsive-min .sidebar-toggle.sidebar-expand{display:block}.sidebar.responsive-min+.main-content{margin-left:43px!important}.sidebar.responsive-min+.main-content .breadcrumb{margin-left:12px}.sidebar.responsive-max{display:block;position:relative;left:190px;margin-left:-190px;z-index:1027}.sidebar.responsive-max .sidebar-toggle.sidebar-collapse{display:none}.sidebar.responsive-max .sidebar-toggle.sidebar-expand{display:block}.sidebar.responsive-max+.main-content{margin-left:43px!important}.sidebar.responsive-max+.main-content .breadcrumb{margin-left:12px}}@media (max-width:991px) and only screen and (min-width:992px){.sidebar.responsive-min .nav-list li.hover>.submenu{margin-left:0}.sidebar.responsive-min .nav-list>li>.submenu li.hover>.submenu>li>a,.sidebar.responsive-min .nav-list>li>.submenu li>.submenu>li.hover>.submenu>li>a{margin-left:0!important}}@media (max-width:991px) and (min-width:992px){.sidebar.responsive-min.compact .nav-list>li>a{height:39px;line-height:37px;padding:0 16px 0 7px;position:relative}.sidebar.responsive-min.compact .nav-list>li>a>.menu-icon{font-size:18px;height:auto;line-height:inherit;display:inline-block;vertical-align:sub;width:auto}}@media only screen and (min-width:992px){.sidebar.navbar-collapse{max-height:none}}@media only screen and (max-width:991px){.sidebar.navbar-collapse{position:relative;float:none!important;margin-top:auto;z-index:1;width:100%!important;max-height:340px;margin-left:0;margin-right:0}.sidebar.navbar-collapse:before{display:none}.sidebar.navbar-collapse .nav-list>li:last-child{border-bottom-width:0}.sidebar.navbar-collapse .nav-list>li>a{padding-top:10px!important;padding-bottom:10px!important;line-height:20px!important;height:41px!important}.sidebar.navbar-collapse .nav-list>li:before{height:43px!important}.sidebar.navbar-collapse li>.arrow{display:none!important}.sidebar.navbar-collapse .nav-list li>.submenu{border-left-width:0!important}.sidebar.navbar-collapse .sidebar-toggle{display:none!important}.sidebar.navbar-collapse .sidebar-shortcuts{padding:3px 0 6px!important;max-height:none!important;border-bottom-width:0}.sidebar.navbar-collapse+.main-content{margin-left:0!important}.sidebar.navbar-collapse+.main-content .breadcrumb{margin-left:12px}.sidebar.navbar-collapse .nav-wrap+.ace-scroll{display:none}.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu{position:relative;left:auto;top:auto;width:auto;z-index:auto;margin-top:auto!important;padding-top:0;padding-bottom:0;border-width:1px 0 0;-webkit-box-shadow:none!important;box-shadow:none!important}.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu:before,.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu>li:before{display:block}.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu li>a{padding-left:37px!important}.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu li>a>.menu-icon{left:10px}.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu:after{display:none}.sidebar.navbar-collapse.menu-min .nav-list>li>a:hover:before{width:3px}.sidebar.navbar-collapse.menu-min .nav-list>li>a{text-align:left;padding-left:7px}.sidebar.navbar-collapse.menu-min .nav-list>li>a>.menu-icon{display:inline-block;width:auto;margin-right:2px}.sidebar.navbar-collapse.menu-min .nav-list>li>a>.menu-text{position:relative;display:inline!important;line-height:normal;padding-left:0;height:auto;top:auto;left:auto;z-index:auto;width:auto;border-width:0!important;background-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.sidebar.navbar-collapse.menu-min .nav-list a>.arrow{display:block}.sidebar.navbar-collapse.menu-min .nav-list>li:hover>.submenu{display:none!important}.sidebar.navbar-collapse.menu-min .nav-list>li.active>.submenu,.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu.nav-show{display:block!important}.sidebar.navbar-collapse.menu-min .nav-list>li>.submenu.nav-hide{display:none!important}.sidebar.navbar-collapse.menu-min .sidebar-shortcuts-large{display:block;position:static;-webkit-box-shadow:none!important;box-shadow:none!important;border-width:0;background-color:transparent;width:auto;padding:0!important}.sidebar.navbar-collapse.menu-min .sidebar-shortcuts-mini{display:none}.sidebar.navbar-collapse .nav-list a .badge,.sidebar.navbar-collapse .nav-list a .label{position:relative;top:-1px;right:auto;left:4px}.sidebar.navbar-collapse .nav-list li.active>a:after,.sidebar.navbar-collapse .nav-list li.active>a:before,.sidebar.navbar-collapse .nav-list>li.active:after,.sidebar.navbar-collapse .nav-list>li.highlight.active>a:after,.sidebar.navbar-collapse .nav-list>li.highlight.active>a:before{display:none!important}}@media (min-width:992px) and (max-width:991px){.sidebar.navbar-collapse .nav-list>li>.submenu li.hover>.submenu>li>a,.sidebar.navbar-collapse .nav-list>li>.submenu li>.submenu>li.hover>.submenu>li>a{margin-left:20px!important}}@media (max-width:991px){.navbar-fixed-top+.main-container .sidebar.navbar-collapse{position:fixed;z-index:1027}}@media (min-width:768px) and (max-width:991px){.navbar-fixed-top+.main-container.container .sidebar.navbar-collapse{width:744px!important}}.sidebar-scroll .sidebar-shortcuts{min-height:41px;border-bottom:1px solid}.sidebar-scroll .sidebar-toggle{border-top:1px solid}.sidebar-scroll .nav-list>li:first-child{border-top-width:0}.sidebar-scroll .nav-list>li:last-child{border-bottom-width:0}.sidebar-scroll .nav-wrap .sidebar-shortcuts{min-height:40px;border-bottom-width:0}.sidebar-scroll .nav-wrap .sidebar-shortcuts+.nav-list>li:first-child{border-top-width:1px}.sidebar-scroll .nav-wrap-t .sidebar-toggle{border-top-width:0}.sidebar-scroll .nav-wrap-t .nav-list>li:last-child{border-bottom-width:1px}.sidebar .nav-wrap+.ace-scroll{position:absolute;right:0;top:0;z-index:1}.sidebar .nav-wrap+.scrollout{right:-8px}@media only screen and (min--moz-device-pixel-ratio:0){.navbar.navbar-fixed-top{border-radius:.05em}.navbar.navbar-fixed-top,.navbar.navbar-fixed-top .ace-nav>li .dropdown-menu,.navbar.navbar-fixed-top>.navbar-container,.sidebar.sidebar-fixed{-moz-backface-visibility:hidden}}.ace-scroll{overflow:hidden}.scroll-content{position:static;overflow:hidden}.scroll-track{position:absolute;top:auto;bottom:auto;right:0;height:auto;background-color:#E7E7E7;z-index:99;width:0;opacity:0}.scroll-bar{position:absolute;top:0;left:0;width:inherit;background:#bbd4e5}.scroll-hz .scroll-track{top:auto;left:auto;right:auto;bottom:0;height:8px;width:auto}.scroll-hz .scroll-bar{height:inherit;width:auto}.scroll-active .scroll-track{-webkit-transition:all .25s ease .6s;-o-transition:all .25s ease .6s;transition:all .25s ease .6s}.scroll-active .scroll-track.active,.scroll-active .scroll-track:active,.scroll-active:hover .scroll-track{width:8px;opacity:1;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-delay:0s;transition-delay:0s}.scroll-track.active>.scroll-bar{transition-property:none!important;transition-duration:0s!important}.scroll-margin .scroll-track{right:1px}.scroll-left .scroll-track{right:auto;left:0}.scroll-margin.scroll-left .scroll-track{left:1px}.scroll-top .scroll-track{bottom:auto;top:0}.scroll-margin.scroll-top .scroll-track{top:1px}.scroll-dark .scroll-bar{background-color:rgba(0,0,0,.25)}.scroll-dark .scroll-track{background-color:rgba(0,0,0,.15)}.scroll-light .scroll-bar{background-color:rgba(0,0,0,.14)}.scroll-light .scroll-track{background-color:rgba(0,0,0,.07)}.no-track .scroll-track{background-color:transparent}.scroll-visible .scroll-track{opacity:1;width:8px}.scroll-visible.scroll-hz .scroll-track{height:8px;width:auto}.scroll-thin .scroll-track.active,.scroll-thin .scroll-track:active,.scroll-thin.scroll-visible .scroll-track,.scroll-thin:hover .scroll-track{width:6px}.scroll-thin.scroll-hz .scroll-track.active,.scroll-thin.scroll-hz .scroll-track:active,.scroll-thin.scroll-hz.scroll-visible .scroll-track,.scroll-thin.scroll-hz:hover .scroll-track{width:auto;height:6px}.scroll-chrome .scroll-bar{background-color:transparent;width:11px}.scroll-chrome .scroll-bar:before{display:block;content:"";position:absolute;top:1px;bottom:3px;left:1px;right:1px;background-color:#D9D9D9;border:1px solid #BBB;border-radius:1px}.scroll-chrome .scroll-track{width:12px!important;background-color:#F2F2F2;border:1px solid;border-width:1px 0 1px 1px;border-color:#E6E6E6 transparent #E6E6E6 #DBDBDB}.scroll-chrome .scroll-track:hover .scroll-bar:before{background-color:silver;border-color:#A6A6A6}.scroll-chrome .scroll-track.active .scroll-bar:before{background-color:#A9A9A9;border-color:#8B8B8B}.nav-wrap+.scroll-active .scroll-track{width:8px}.nav-scroll.scroll-active .scroll-track{width:8px;right:0}.nav-scroll.scroll-active:hover .scroll-track,.nav-wrap:hover+.scroll-active .scroll-track{width:8px;opacity:1;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-delay:0s;transition-delay:0s}.nav-scroll.scroll-active:hover .scroll-track{width:8px}.nav-scroll.ace-scroll,.nav-scroll.ace-scroll .scroll-content{overflow:visible}.nav-scroll.ace-scroll.scroll-active,.nav-scroll.ace-scroll.scroll-active .scroll-content{overflow:hidden}.breadcrumbs{position:relative;z-index:auto;border-bottom:1px solid #e5e5e5;background-color:#f5f5f5;min-height:41px;line-height:40px;padding:0 12px 0 0}.breadcrumb{background-color:transparent;display:inline-block;line-height:20px;margin:6px 22px 0 12px;padding:0;font-size:13px;color:#333;border-radius:0}.breadcrumb>li,.breadcrumb>li.active{color:#555;padding:0 3px}.breadcrumb>li>a{display:inline-block;color:#4c8fbd}.breadcrumb>li+li:before{font-family:FontAwesome;font-size:14px;content:"\f105";color:#b2b6bf;padding:0;margin:0 8px 0 0;position:relative;top:1px}.breadcrumb .home-icon{font-size:20px;margin-left:2px;margin-right:2px;vertical-align:top}@media only screen and (max-width:480px){.breadcrumb>li>a{padding:0 1px}}@media only screen and (max-width:991px){.menu-toggler+.sidebar.responsive+.main-content .breadcrumb{margin-left:90px}}@media only screen and (max-width:320px){.breadcrumb{margin-left:8px}.menu-toggler+.sidebar.responsive+.main-content .breadcrumb{margin-left:36px}}@media (min-width:992px){.breadcrumbs-fixed{position:fixed;right:0;left:0;top:auto;z-index:1024}.breadcrumbs-fixed+.page-content{padding-top:49px}.sidebar+.main-content .breadcrumbs-fixed{left:190px}body.mob-safari .breadcrumbs-fixed{top:45px}}@media (min-width:992px){.sidebar.compact+.main-content .breadcrumbs-fixed{left:105px}}@media (min-width:992px){.sidebar.menu-min+.main-content .breadcrumbs-fixed{left:43px}}@media (min-width:992px) and (max-width:991px){.breadcrumbs-fixed,.sidebar.menu-min+.main-content .breadcrumbs-fixed{left:0}.sidebar.responsive-max+.main-content .breadcrumbs-fixed,.sidebar.responsive-min+.main-content .breadcrumbs-fixed{left:43px}}@media (min-width:992px){.container.main-container .sidebar.compact+.main-content .breadcrumbs-fixed{left:auto;right:auto;width:639px}}@media (min-width:992px){.container.main-container .breadcrumbs-fixed{left:auto;right:auto;width:744px}.container.main-container .sidebar+.main-content .breadcrumbs-fixed{left:auto;right:auto;width:554px}.container.main-container .sidebar.menu-min+.main-content .breadcrumbs-fixed{left:auto;right:auto;width:701px}}@media (min-width:992px){.container.main-container .sidebar.compact+.main-content .breadcrumbs-fixed{width:859px}}@media (min-width:992px){.container.main-container .breadcrumbs-fixed{width:964px}.container.main-container .sidebar+.main-content .breadcrumbs-fixed{width:774px}.container.main-container .sidebar.menu-min+.main-content .breadcrumbs-fixed{width:921px}}@media (min-width:992px){.container.main-container .sidebar.compact+.main-content .breadcrumbs-fixed{width:1059px}}@media (min-width:1200px){.container.main-container .breadcrumbs-fixed{width:1164px}.container.main-container .sidebar+.main-content .breadcrumbs-fixed{width:974px}.container.main-container .sidebar.menu-min+.main-content .breadcrumbs-fixed{width:1121px}}@media (min-width:992px) and (max-width:991px){.container.main-container .sidebar.compact+.main-content .breadcrumbs-fixed{width:744px}}@media (min-width:992px) and (max-width:991px){.container.main-container .breadcrumbs-fixed,.container.main-container .sidebar.menu-min+.main-content .breadcrumbs-fixed{width:744px}.container.main-container .sidebar.responsive-max+.main-content .breadcrumbs-fixed,.container.main-container .sidebar.responsive-min+.main-content .breadcrumbs-fixed{left:auto;right:auto;width:701px}}@media (min-width:992px){.h-sidebar+.main-content .breadcrumbs.breadcrumbs-fixed{position:relative!important;top:auto;left:auto;z-index:auto;width:auto!important}.h-sidebar+.main-content .page-content{padding-top:8px!important}}.nav-search{position:absolute;right:22px;line-height:24px}.breadcrumbs .nav-search{top:6px}.nav-search .form-search{margin-bottom:0}.nav-search .nav-search-input{border:1px solid #6fb3e0;width:152px;height:28px!important;padding-top:2px;padding-bottom:2px;border-radius:4px!important;font-size:13px;line-height:1.3;color:#666!important;z-index:11;-webkit-transition:width ease .15s;-o-transition:width ease .15s;transition:width ease .15s}.nav-search .nav-search-input+.dropdown-menu{min-width:0;left:0;right:0}.nav-search .nav-search-input:focus,.nav-search .nav-search-input:hover{border-color:#6fb3e0}.nav-search .nav-search-icon{color:#6fb3e0!important;font-size:14px!important;line-height:24px!important;background-color:transparent}.nav-search.minimized .nav-search-input{width:0;opacity:0;filter:alpha(opacity=0);max-width:0}.nav-search.minimized .nav-search-btn:active+.nav-search-input,.nav-search.minimized .nav-search-input:active,.nav-search.minimized .nav-search-input:focus,.nav-search.minimized .nav-search-input:hover,.nav-search.minimized:hover .nav-search-input{opacity:1;filter:alpha(opacity=100);width:152px;max-width:152px}.nav-search.minimized .nav-search-icon{border:1px solid;border-radius:100%;background-color:#FFF;padding:0 5px!important}.nav-search-icon,.nav-search.minimized .nav-search-input:active~.nav-search-icon,.nav-search.minimized .nav-search-input:focus~.nav-search-icon,.nav-search.minimized .nav-search-input:hover~.nav-search-icon,.nav-search.minimized:hover .nav-search-icon{border:none;border-radius:0;padding:0 3px!important}.sidebar>.nav-search{position:static;background-color:#FAFAFA;border-bottom:1px solid #DDD;text-align:center;height:35px;padding-top:6px}.sidebar>.nav-search .nav-search-input{width:162px!important;border-radius:0!important;max-width:162px!important;opacity:1!important;filter:alpha(opacity=100)!important}.sidebar>.nav-search .nav-search-input+.dropdown-menu{text-align:left}.sidebar.menu-min .nav-search .form-search{position:absolute;left:5px;z-index:14}.sidebar.menu-min .nav-search .nav-search-input{width:0!important;max-width:0!important;opacity:0!important;filter:alpha(opacity=0)!important}.sidebar.menu-min .nav-search .nav-search-input:active,.sidebar.menu-min .nav-search .nav-search-input:focus,.sidebar.menu-min .nav-search .nav-search-input:hover{width:162px!important;max-width:162px!important;opacity:1!important;filter:alpha(opacity=100)!important}.sidebar.menu-min .nav-search .nav-search-input:active~#nav-search-icon,.sidebar.menu-min .nav-search .nav-search-input:focus~#nav-search-icon,.sidebar.menu-min .nav-search .nav-search-input:hover~#nav-search-icon{border:none;border-radius:0;padding:0 3px!important}.sidebar.menu-min .nav-search:hover .nav-search-input{width:162px!important;max-width:162px!important;opacity:1!important;filter:alpha(opacity=100)!important}.sidebar.menu-min .nav-search:hover .nav-search-input~.nav-search-icon{border:none;border-radius:0;padding:0 3px!important}.sidebar.menu-min .nav-search .nav-search-icon{border:1px solid;border-radius:32px;background-color:#FFF;padding:0 5px!important}@media (max-width:991px){.sidebar.responsive-min .nav-search .form-search{position:absolute;left:5px;z-index:14}.sidebar.responsive-min .nav-search .nav-search-input{width:0!important;max-width:0!important;opacity:0!important;filter:alpha(opacity=0)!important}.sidebar.responsive-min .nav-search .nav-search-input:active,.sidebar.responsive-min .nav-search .nav-search-input:focus,.sidebar.responsive-min .nav-search .nav-search-input:hover{width:162px!important;max-width:162px!important;opacity:1!important;filter:alpha(opacity=100)!important}.sidebar.responsive-min .nav-search .nav-search-input:active~#nav-search-icon,.sidebar.responsive-min .nav-search .nav-search-input:focus~#nav-search-icon,.sidebar.responsive-min .nav-search .nav-search-input:hover~#nav-search-icon{border:none;border-radius:0;padding:0 3px!important}.sidebar.responsive-min .nav-search:hover .nav-search-input{width:162px!important;max-width:162px!important;opacity:1!important;filter:alpha(opacity=100)!important}.sidebar.responsive-min .nav-search:hover .nav-search-input~.nav-search-icon{border:none;border-radius:0;padding:0 3px!important}.sidebar.responsive-min .nav-search .nav-search-icon{border:1px solid;border-radius:32px;background-color:#FFF;padding:0 5px!important}}@media only screen and (max-width:991px){.nav-search{right:10px}.nav-search .nav-search-input{width:105px}.nav-search .nav-search-btn:active+.nav-search-input,.nav-search .nav-search-input:active,.nav-search .nav-search-input:focus,.nav-search .nav-search-input:hover,.nav-search:hover .nav-search-input{width:145px}}@media only screen and (max-width:767px){.nav-search .nav-search-input{width:0;opacity:0;filter:alpha(opacity=0);max-width:0}.nav-search .nav-search-btn:active+.nav-search-input,.nav-search .nav-search-input:active,.nav-search .nav-search-input:focus,.nav-search .nav-search-input:hover,.nav-search:hover .nav-search-input{opacity:1;filter:alpha(opacity=100);width:152px;max-width:152px}.nav-search .nav-search-icon{border:1px solid;border-radius:100%;background-color:#FFF;padding:0 5px!important}.nav-search .nav-search-input:active~.nav-search-icon,.nav-search .nav-search-input:focus~.nav-search-icon,.nav-search .nav-search-input:hover~.nav-search-icon,.nav-search:hover .nav-search-icon{border:none;border-radius:0;padding:0 3px!important}}.footer{padding-top:75px;height:0;width:0}.footer .footer-inner{text-align:center;position:absolute;z-index:auto;left:0;right:0;bottom:0}.sidebar~.footer .footer-inner{left:190px}@media (min-width:992px){.sidebar.compact~.footer .footer-inner{left:105px}}.sidebar.menu-min~.footer .footer-inner{left:43px}@media (min-width:992px){.sidebar.h-sidebar~.footer .footer-inner{left:0}}@media (max-width:991px){.footer .footer-inner,.sidebar.compact~.footer .footer-inner,.sidebar.menu-min~.footer .footer-inner,.sidebar~.footer .footer-inner{left:0}.sidebar.responsive-min~.footer .footer-inner{left:43px}}@media (min-width:768px) and (max-width:991px){.container.main-container .footer .footer-inner{left:auto!important;right:auto!important;margin-left:auto;width:744px}}@media (min-width:992px){.container.main-container .footer .footer-inner{left:auto!important;right:auto!important;width:964px}}@media (min-width:1200px){.container.main-container .footer .footer-inner{width:1164px}}@media (min-width:768px) and (max-width:991px){.container.main-container .sidebar~.footer .footer-inner{left:auto!important;right:auto!important;margin-left:auto;width:744px}}@media (min-width:992px){.container.main-container .sidebar~.footer .footer-inner{left:auto!important;right:auto!important;margin-left:190px;width:774px}}@media (min-width:1200px){.container.main-container .sidebar~.footer .footer-inner{margin-left:190px;width:974px}}@media (min-width:992px){.container.main-container .sidebar.compact~.footer .footer-inner{margin-left:105px;width:859px}}@media (min-width:1200px){.container.main-container .sidebar.compact~.footer .footer-inner{margin-left:105px;width:1059px}}@media (min-width:992px){.container.main-container .sidebar.menu-min~.footer .footer-inner{margin-left:43px;width:921px}}@media (min-width:1200px){.container.main-container .sidebar.menu-min~.footer .footer-inner{margin-left:43px;width:1121px}}@media (min-width:992px){.container.main-container .sidebar.h-sidebar~.footer .footer-inner{margin-left:0;width:964px}}@media (min-width:992px){.container.main-container .sidebar.h-sidebar~.footer .footer-inner{margin-left:0;width:964px}}@media (min-width:1200px){.container.main-container .sidebar.h-sidebar~.footer .footer-inner{margin-left:0;width:1164px}}@media (min-width:768px) and (max-width:991px){.container.main-container .sidebar.responsive-min~.footer .footer-inner{margin-left:43px;width:701px}}.footer .footer-inner .footer-content{position:absolute;left:12px;right:12px;bottom:4px;padding:8px;line-height:36px;border-top:3px double #E5E5E5}.footer.footer-fixed .footer-inner{position:fixed;z-index:999;bottom:0}.footer.footer-fixed .footer-inner .footer-content{left:2px;right:2px;bottom:2px;border:1px solid #DDD;background-color:#F2F2F2}.footer.footer-fixed+.btn-scroll-up{z-index:999}.btn{display:inline-block;color:#FFF!important;text-shadow:0 -1px 0 rgba(0,0,0,.25)!important;background-image:none!important;border:5px solid #FFF;border-radius:0;box-shadow:none!important;-webkit-transition:all ease .15s;-o-transition:all ease .15s;transition:all ease .15s;cursor:pointer;vertical-align:middle;margin:0;position:relative}.btn-lg{border-width:5px;line-height:1.35;padding:7px 16px}.btn-sm{border-width:4px;font-size:13px;padding:4px 9px;line-height:1.39}.btn-xs{border-width:3px}.btn-minier{padding:0 4px;line-height:18px;border-width:2px;font-size:12px}button.btn:active{top:1px}.btn,.btn-default,.btn-default:focus,.btn:focus{background-color:#abbac3!important;border-color:#abbac3}.btn-default:active,.btn-default:hover,.btn:active,.btn:hover,.open .btn-default.dropdown-toggle,.open .btn.dropdown-toggle{background-color:#8b9aa3!important;border-color:#abbac3}.btn-default.no-border:active,.btn-default.no-border:hover,.btn.no-border:active,.btn.no-border:hover{border-color:#8b9aa3}.btn-default.no-hover:active,.btn-default.no-hover:hover,.btn.no-hover:active,.btn.no-hover:hover{background-color:#abbac3!important}.btn-default.active,.btn.active{background-color:#9baab3!important;border-color:#8799a4}.btn-default.no-border.active,.btn.no-border.active{background-color:#92a3ac!important;border-color:#92a3ac}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#abbac3!important;border-color:#abbac3}.btn-primary,.btn-primary:focus{background-color:#428bca!important;border-color:#428bca}.btn-primary:active,.btn-primary:hover,.open .btn-primary.dropdown-toggle{background-color:#1b6aaa!important;border-color:#428bca}.btn-primary.no-border:active,.btn-primary.no-border:hover{border-color:#1b6aaa}.btn-primary.no-hover:active,.btn-primary.no-hover:hover{background-color:#428bca!important}.btn-primary.active{background-color:#2f7bba!important;border-color:#27689d}.btn-primary.no-border.active{background-color:#2b72ae!important;border-color:#2b72ae}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#428bca!important;border-color:#428bca}.btn-info,.btn-info:focus{background-color:#6fb3e0!important;border-color:#6fb3e0}.btn-info:active,.btn-info:hover,.open .btn-info.dropdown-toggle{background-color:#4f99c6!important;border-color:#6fb3e0}.btn-info.no-border:active,.btn-info.no-border:hover{border-color:#4f99c6}.btn-info.no-hover:active,.btn-info.no-hover:hover{background-color:#6fb3e0!important}.btn-info.active{background-color:#5fa6d3!important;border-color:#4396cb}.btn-info.no-border.active{background-color:#539fd0!important;border-color:#539fd0}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#6fb3e0!important;border-color:#6fb3e0}.btn-info2,.btn-info2:focus{background-color:#95c6e5!important;border-color:#95c6e5}.btn-info2:active,.btn-info2:hover,.open .btn-info2.dropdown-toggle{background-color:#67a6ce!important;border-color:#95c6e5}.btn-info2.no-border:active,.btn-info2.no-border:hover{border-color:#67a6ce}.btn-info2.no-hover:active,.btn-info2.no-hover:hover{background-color:#95c6e5!important}.btn-info2.active{background-color:#7eb6da!important;border-color:#62a6d1}.btn-info2.no-border.active{background-color:#72afd6!important;border-color:#72afd6}.btn-info2.disabled,.btn-info2.disabled.active,.btn-info2.disabled:active,.btn-info2.disabled:focus,.btn-info2.disabled:hover,.btn-info2[disabled],.btn-info2[disabled].active,.btn-info2[disabled]:active,.btn-info2[disabled]:focus,.btn-info2[disabled]:hover,fieldset[disabled] .btn-info2,fieldset[disabled] .btn-info2.active,fieldset[disabled] .btn-info2:active,fieldset[disabled] .btn-info2:focus,fieldset[disabled] .btn-info2:hover{background-color:#95c6e5!important;border-color:#95c6e5}.btn-success,.btn-success:focus{background-color:#87b87f!important;border-color:#87b87f}.btn-success:active,.btn-success:hover,.open .btn-success.dropdown-toggle{background-color:#629b58!important;border-color:#87b87f}.btn-success.no-border:active,.btn-success.no-border:hover{border-color:#629b58}.btn-success.no-hover:active,.btn-success.no-hover:hover{background-color:#87b87f!important}.btn-success.active{background-color:#75aa6c!important;border-color:#629959}.btn-success.no-border.active{background-color:#6ba462!important;border-color:#6ba462}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#87b87f!important;border-color:#87b87f}.btn-warning,.btn-warning:focus{background-color:#ffb752!important;border-color:#ffb752}.btn-warning:active,.btn-warning:hover,.open .btn-warning.dropdown-toggle{background-color:#e59729!important;border-color:#ffb752}.btn-warning.no-border:active,.btn-warning.no-border:hover{border-color:#e59729}.btn-warning.no-hover:active,.btn-warning.no-hover:hover{background-color:#ffb752!important}.btn-warning.active{background-color:#f2a73e!important;border-color:#f0981c}.btn-warning.no-border.active{background-color:#f1a02f!important;border-color:#f1a02f}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ffb752!important;border-color:#ffb752}.btn-danger,.btn-danger:focus{background-color:#d15b47!important;border-color:#d15b47}.btn-danger:active,.btn-danger:hover,.open .btn-danger.dropdown-toggle{background-color:#b74635!important;border-color:#d15b47}.btn-danger.no-border:active,.btn-danger.no-border:hover{border-color:#b74635}.btn-danger.no-hover:active,.btn-danger.no-hover:hover{background-color:#d15b47!important}.btn-danger.active{background-color:#c4513e!important;border-color:#aa4434}.btn-danger.no-border.active{background-color:#ba4b39!important;border-color:#ba4b39}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d15b47!important;border-color:#d15b47}.btn-inverse,.btn-inverse:focus{background-color:#555!important;border-color:#555}.btn-inverse:active,.btn-inverse:hover,.open .btn-inverse.dropdown-toggle{background-color:#303030!important;border-color:#555}.btn-inverse.no-border:active,.btn-inverse.no-border:hover{border-color:#303030}.btn-inverse.no-hover:active,.btn-inverse.no-hover:hover{background-color:#555!important}.btn-inverse.active{background-color:#434343!important;border-color:#313131}.btn-inverse.no-border.active{background-color:#3b3b3b!important;border-color:#3b3b3b}.btn-inverse.disabled,.btn-inverse.disabled.active,.btn-inverse.disabled:active,.btn-inverse.disabled:focus,.btn-inverse.disabled:hover,.btn-inverse[disabled],.btn-inverse[disabled].active,.btn-inverse[disabled]:active,.btn-inverse[disabled]:focus,.btn-inverse[disabled]:hover,fieldset[disabled] .btn-inverse,fieldset[disabled] .btn-inverse.active,fieldset[disabled] .btn-inverse:active,fieldset[disabled] .btn-inverse:focus,fieldset[disabled] .btn-inverse:hover{background-color:#555!important;border-color:#555}.btn-pink,.btn-pink:focus{background-color:#d6487e!important;border-color:#d6487e}.btn-pink:active,.btn-pink:hover,.open .btn-pink.dropdown-toggle{background-color:#b73766!important;border-color:#d6487e}.btn-pink.no-border:active,.btn-pink.no-border:hover{border-color:#b73766}.btn-pink.no-hover:active,.btn-pink.no-hover:hover{background-color:#d6487e!important}.btn-pink.active{background-color:#c74072!important;border-color:#af3462}.btn-pink.no-border.active{background-color:#be386a!important;border-color:#be386a}.btn-pink.disabled,.btn-pink.disabled.active,.btn-pink.disabled:active,.btn-pink.disabled:focus,.btn-pink.disabled:hover,.btn-pink[disabled],.btn-pink[disabled].active,.btn-pink[disabled]:active,.btn-pink[disabled]:focus,.btn-pink[disabled]:hover,fieldset[disabled] .btn-pink,fieldset[disabled] .btn-pink.active,fieldset[disabled] .btn-pink:active,fieldset[disabled] .btn-pink:focus,fieldset[disabled] .btn-pink:hover{background-color:#d6487e!important;border-color:#d6487e}.btn-purple,.btn-purple:focus{background-color:#9585bf!important;border-color:#9585bf}.btn-purple:active,.btn-purple:hover,.open .btn-purple.dropdown-toggle{background-color:#7461aa!important;border-color:#9585bf}.btn-purple.no-border:active,.btn-purple.no-border:hover{border-color:#7461aa}.btn-purple.no-hover:active,.btn-purple.no-hover:hover{background-color:#9585bf!important}.btn-purple.active{background-color:#8573b5!important;border-color:#705ca8}.btn-purple.no-border.active{background-color:#7c69af!important;border-color:#7c69af}.btn-purple.disabled,.btn-purple.disabled.active,.btn-purple.disabled:active,.btn-purple.disabled:focus,.btn-purple.disabled:hover,.btn-purple[disabled],.btn-purple[disabled].active,.btn-purple[disabled]:active,.btn-purple[disabled]:focus,.btn-purple[disabled]:hover,fieldset[disabled] .btn-purple,fieldset[disabled] .btn-purple.active,fieldset[disabled] .btn-purple:active,fieldset[disabled] .btn-purple:focus,fieldset[disabled] .btn-purple:hover{background-color:#9585bf!important;border-color:#9585bf}.btn-grey,.btn-grey:focus{background-color:#a0a0a0!important;border-color:#a0a0a0}.btn-grey:active,.btn-grey:hover,.open .btn-grey.dropdown-toggle{background-color:#888!important;border-color:#a0a0a0}.btn-grey.no-border:active,.btn-grey.no-border:hover{border-color:#888}.btn-grey.no-hover:active,.btn-grey.no-hover:hover{background-color:#a0a0a0!important}.btn-grey.active{background-color:#949494!important;border-color:#828282}.btn-grey.no-border.active{background-color:#8c8c8c!important;border-color:#8c8c8c}.btn-grey.disabled,.btn-grey.disabled.active,.btn-grey.disabled:active,.btn-grey.disabled:focus,.btn-grey.disabled:hover,.btn-grey[disabled],.btn-grey[disabled].active,.btn-grey[disabled]:active,.btn-grey[disabled]:focus,.btn-grey[disabled]:hover,fieldset[disabled] .btn-grey,fieldset[disabled] .btn-grey.active,fieldset[disabled] .btn-grey:active,fieldset[disabled] .btn-grey:focus,fieldset[disabled] .btn-grey:hover{background-color:#a0a0a0!important;border-color:#a0a0a0}.btn-yellow{color:#963!important;text-shadow:0 -1px 0 rgba(255,255,255,.4)!important}.btn-yellow,.btn-yellow:focus{background-color:#fee188!important;border-color:#fee188}.btn-yellow:active,.btn-yellow:hover,.open .btn-yellow.dropdown-toggle{background-color:#f7d05b!important;border-color:#fee188}.btn-yellow.no-border:active,.btn-yellow.no-border:hover{border-color:#f7d05b}.btn-yellow.no-hover:active,.btn-yellow.no-hover:hover{background-color:#fee188!important}.btn-yellow.active{background-color:#fbd972!important;border-color:#f9cf4f}.btn-yellow.no-border.active{background-color:#fad463!important;border-color:#fad463}.btn-yellow.disabled,.btn-yellow.disabled.active,.btn-yellow.disabled:active,.btn-yellow.disabled:focus,.btn-yellow.disabled:hover,.btn-yellow[disabled],.btn-yellow[disabled].active,.btn-yellow[disabled]:active,.btn-yellow[disabled]:focus,.btn-yellow[disabled]:hover,fieldset[disabled] .btn-yellow,fieldset[disabled] .btn-yellow.active,fieldset[disabled] .btn-yellow:active,fieldset[disabled] .btn-yellow:focus,fieldset[disabled] .btn-yellow:hover{background-color:#fee188!important;border-color:#fee188}.btn-light{color:#888!important;text-shadow:0 -1px 0 rgba(250,250,250,.25)!important}.btn-light,.btn-light:focus{background-color:#e7e7e7!important;border-color:#e7e7e7}.btn-light:active,.btn-light:hover,.open .btn-light.dropdown-toggle{background-color:#d9d9d9!important;border-color:#e7e7e7}.btn-light.no-border:active,.btn-light.no-border:hover{border-color:#d9d9d9}.btn-light.no-hover:active,.btn-light.no-hover:hover{background-color:#e7e7e7!important}.btn-light.active{background-color:#e0e0e0!important;border-color:#cecece}.btn-light.no-border.active{background-color:#d8d8d8!important;border-color:#d8d8d8}.btn-light.disabled,.btn-light.disabled.active,.btn-light.disabled:active,.btn-light.disabled:focus,.btn-light.disabled:hover,.btn-light[disabled],.btn-light[disabled].active,.btn-light[disabled]:active,.btn-light[disabled]:focus,.btn-light[disabled]:hover,fieldset[disabled] .btn-light,fieldset[disabled] .btn-light.active,fieldset[disabled] .btn-light:active,fieldset[disabled] .btn-light:focus,fieldset[disabled] .btn-light:hover{background-color:#e7e7e7!important;border-color:#e7e7e7}.btn-light.btn-xs:after{left:-2px;right:-2px;top:-2px;bottom:-2px}.btn-light.btn-sm:after{left:-4px;right:-4px;top:-4px;bottom:-4px}.btn-light .btn-lg:after{left:-6px;right:-6px;top:-6px;bottom:-6px}.btn.btn-white{text-shadow:none!important;background-color:#FFF!important}.btn.btn-white.no-hover:active,.btn.btn-white.no-hover:hover{background-color:#FFF!important}.btn.btn-white.active,.btn.btn-white:focus{box-shadow:inset 1px 1px 2px 0 rgba(0,0,0,.1)!important}.btn.btn-white.active.btn-bold,.btn.btn-white:focus.btn-bold{box-shadow:inset 1px 1px 3px 0 rgba(0,0,0,.15)!important}.btn.btn-white.active:after{display:none}.btn.btn-white{border-color:#ccc;color:#444!important}.btn.btn-white.active,.btn.btn-white:active,.btn.btn-white:focus,.btn.btn-white:hover,.open .btn.btn-white.dropdown-toggle{background-color:#ebebeb!important;border-color:#ccc}.btn.btn-white:hover{color:#3a3434!important}.btn.btn-white.disabled,.btn.btn-white.disabled.active,.btn.btn-white.disabled:active,.btn.btn-white.disabled:focus,.btn.btn-white.disabled:hover,.btn.btn-white.no-border:active,.btn.btn-white.no-border:hover,.btn.btn-white[disabled],.btn.btn-white[disabled].active,.btn.btn-white[disabled]:active,.btn.btn-white[disabled]:focus,.btn.btn-white[disabled]:hover,fieldset[disabled] .btn.btn-white,fieldset[disabled] .btn.btn-white.active,fieldset[disabled] .btn.btn-white:active,fieldset[disabled] .btn.btn-white:focus,fieldset[disabled] .btn.btn-white:hover{border-color:#ccc}.btn-white.btn-default{border-color:#abbac3;color:#80909a!important}.btn-white.btn-default.active,.btn-white.btn-default:active,.btn-white.btn-default:focus,.btn-white.btn-default:hover,.open .btn-white.btn-default.dropdown-toggle{background-color:#eff2f4!important;border-color:#abbac3}.btn-white.btn-default:hover{color:#6b8595!important}.btn-white.btn-default.disabled,.btn-white.btn-default.disabled.active,.btn-white.btn-default.disabled:active,.btn-white.btn-default.disabled:focus,.btn-white.btn-default.disabled:hover,.btn-white.btn-default.no-border:active,.btn-white.btn-default.no-border:hover,.btn-white.btn-default[disabled],.btn-white.btn-default[disabled].active,.btn-white.btn-default[disabled]:active,.btn-white.btn-default[disabled]:focus,.btn-white.btn-default[disabled]:hover,fieldset[disabled] .btn-white.btn-default,fieldset[disabled] .btn-white.btn-default.active,fieldset[disabled] .btn-white.btn-default:active,fieldset[disabled] .btn-white.btn-default:focus,fieldset[disabled] .btn-white.btn-default:hover{border-color:#abbac3}.btn-white.btn-primary{border-color:#8aafce;color:#6688a6!important}.btn-white.btn-primary.active,.btn-white.btn-primary:active,.btn-white.btn-primary:focus,.btn-white.btn-primary:hover,.open .btn-white.btn-primary.dropdown-toggle{background-color:#eaf2f8!important;border-color:#8aafce}.btn-white.btn-primary:hover{color:#537c9f!important}.btn-white.btn-primary.disabled,.btn-white.btn-primary.disabled.active,.btn-white.btn-primary.disabled:active,.btn-white.btn-primary.disabled:focus,.btn-white.btn-primary.disabled:hover,.btn-white.btn-primary.no-border:active,.btn-white.btn-primary.no-border:hover,.btn-white.btn-primary[disabled],.btn-white.btn-primary[disabled].active,.btn-white.btn-primary[disabled]:active,.btn-white.btn-primary[disabled]:focus,.btn-white.btn-primary[disabled]:hover,fieldset[disabled] .btn-white.btn-primary,fieldset[disabled] .btn-white.btn-primary.active,fieldset[disabled] .btn-white.btn-primary:active,fieldset[disabled] .btn-white.btn-primary:focus,fieldset[disabled] .btn-white.btn-primary:hover{border-color:#8aafce}.btn-white.btn-success{border-color:#a7c9a1;color:#81a87b!important}.btn-white.btn-success.active,.btn-white.btn-success:active,.btn-white.btn-success:focus,.btn-white.btn-success:hover,.open .btn-white.btn-success.dropdown-toggle{background-color:#edf4eb!important;border-color:#a7c9a1}.btn-white.btn-success:hover{color:#6ea465!important}.btn-white.btn-success.disabled,.btn-white.btn-success.disabled.active,.btn-white.btn-success.disabled:active,.btn-white.btn-success.disabled:focus,.btn-white.btn-success.disabled:hover,.btn-white.btn-success.no-border:active,.btn-white.btn-success.no-border:hover,.btn-white.btn-success[disabled],.btn-white.btn-success[disabled].active,.btn-white.btn-success[disabled]:active,.btn-white.btn-success[disabled]:focus,.btn-white.btn-success[disabled]:hover,fieldset[disabled] .btn-white.btn-success,fieldset[disabled] .btn-white.btn-success.active,fieldset[disabled] .btn-white.btn-success:active,fieldset[disabled] .btn-white.btn-success:focus,fieldset[disabled] .btn-white.btn-success:hover{border-color:#a7c9a1}.btn-white.btn-danger{border-color:#d7a59d;color:#b7837a!important}.btn-white.btn-danger.active,.btn-white.btn-danger:active,.btn-white.btn-danger:focus,.btn-white.btn-danger:hover,.open .btn-white.btn-danger.dropdown-toggle{background-color:#fbf4f3!important;border-color:#d7a59d}.btn-white.btn-danger:hover{color:#b46f64!important}.btn-white.btn-danger.disabled,.btn-white.btn-danger.disabled.active,.btn-white.btn-danger.disabled:active,.btn-white.btn-danger.disabled:focus,.btn-white.btn-danger.disabled:hover,.btn-white.btn-danger.no-border:active,.btn-white.btn-danger.no-border:hover,.btn-white.btn-danger[disabled],.btn-white.btn-danger[disabled].active,.btn-white.btn-danger[disabled]:active,.btn-white.btn-danger[disabled]:focus,.btn-white.btn-danger[disabled]:hover,fieldset[disabled] .btn-white.btn-danger,fieldset[disabled] .btn-white.btn-danger.active,fieldset[disabled] .btn-white.btn-danger:active,fieldset[disabled] .btn-white.btn-danger:focus,fieldset[disabled] .btn-white.btn-danger:hover{border-color:#d7a59d}.btn-white.btn-warning{border-color:#e7b979;color:#daa458!important}.btn-white.btn-warning.active,.btn-white.btn-warning:active,.btn-white.btn-warning:focus,.btn-white.btn-warning:hover,.open .btn-white.btn-warning.dropdown-toggle{background-color:#fef7ec!important;border-color:#e7b979}.btn-white.btn-warning:hover{color:#db9a3d!important}.btn-white.btn-warning.disabled,.btn-white.btn-warning.disabled.active,.btn-white.btn-warning.disabled:active,.btn-white.btn-warning.disabled:focus,.btn-white.btn-warning.disabled:hover,.btn-white.btn-warning.no-border:active,.btn-white.btn-warning.no-border:hover,.btn-white.btn-warning[disabled],.btn-white.btn-warning[disabled].active,.btn-white.btn-warning[disabled]:active,.btn-white.btn-warning[disabled]:focus,.btn-white.btn-warning[disabled]:hover,fieldset[disabled] .btn-white.btn-warning,fieldset[disabled] .btn-white.btn-warning.active,fieldset[disabled] .btn-white.btn-warning:active,fieldset[disabled] .btn-white.btn-warning:focus,fieldset[disabled] .btn-white.btn-warning:hover{border-color:#e7b979}.btn-white.btn-info{border-color:#8fbcd9;color:#70a0c1!important}.btn-white.btn-info.active,.btn-white.btn-info:active,.btn-white.btn-info:focus,.btn-white.btn-info:hover,.open .btn-white.btn-info.dropdown-toggle{background-color:#eef5fa!important;border-color:#8fbcd9}.btn-white.btn-info:hover{color:#5896bf!important}.btn-white.btn-info.disabled,.btn-white.btn-info.disabled.active,.btn-white.btn-info.disabled:active,.btn-white.btn-info.disabled:focus,.btn-white.btn-info.disabled:hover,.btn-white.btn-info.no-border:active,.btn-white.btn-info.no-border:hover,.btn-white.btn-info[disabled],.btn-white.btn-info[disabled].active,.btn-white.btn-info[disabled]:active,.btn-white.btn-info[disabled]:focus,.btn-white.btn-info[disabled]:hover,fieldset[disabled] .btn-white.btn-info,fieldset[disabled] .btn-white.btn-info.active,fieldset[disabled] .btn-white.btn-info:active,fieldset[disabled] .btn-white.btn-info:focus,fieldset[disabled] .btn-white.btn-info:hover{border-color:#8fbcd9}.btn-white.btn-inverse{border-color:#959595;color:#555!important}.btn-white.btn-inverse.active,.btn-white.btn-inverse:active,.btn-white.btn-inverse:focus,.btn-white.btn-inverse:hover,.open .btn-white.btn-inverse.dropdown-toggle{background-color:#e4e4e4!important;border-color:#959595}.btn-white.btn-inverse:hover{color:#4c4545!important}.btn-white.btn-inverse.disabled,.btn-white.btn-inverse.disabled.active,.btn-white.btn-inverse.disabled:active,.btn-white.btn-inverse.disabled:focus,.btn-white.btn-inverse.disabled:hover,.btn-white.btn-inverse.no-border:active,.btn-white.btn-inverse.no-border:hover,.btn-white.btn-inverse[disabled],.btn-white.btn-inverse[disabled].active,.btn-white.btn-inverse[disabled]:active,.btn-white.btn-inverse[disabled]:focus,.btn-white.btn-inverse[disabled]:hover,fieldset[disabled] .btn-white.btn-inverse,fieldset[disabled] .btn-white.btn-inverse.active,fieldset[disabled] .btn-white.btn-inverse:active,fieldset[disabled] .btn-white.btn-inverse:focus,fieldset[disabled] .btn-white.btn-inverse:hover{border-color:#959595}.btn-white.btn-pink{border-color:#d299ae;color:#af6f87!important}.btn-white.btn-pink.active,.btn-white.btn-pink:active,.btn-white.btn-pink:focus,.btn-white.btn-pink:hover,.open .btn-white.btn-pink.dropdown-toggle{background-color:#fbeff4!important;border-color:#d299ae}.btn-white.btn-pink:hover{color:#ac5978!important}.btn-white.btn-pink.disabled,.btn-white.btn-pink.disabled.active,.btn-white.btn-pink.disabled:active,.btn-white.btn-pink.disabled:focus,.btn-white.btn-pink.disabled:hover,.btn-white.btn-pink.no-border:active,.btn-white.btn-pink.no-border:hover,.btn-white.btn-pink[disabled],.btn-white.btn-pink[disabled].active,.btn-white.btn-pink[disabled]:active,.btn-white.btn-pink[disabled]:focus,.btn-white.btn-pink[disabled]:hover,fieldset[disabled] .btn-white.btn-pink,fieldset[disabled] .btn-white.btn-pink.active,fieldset[disabled] .btn-white.btn-pink:active,fieldset[disabled] .btn-white.btn-pink:focus,fieldset[disabled] .btn-white.btn-pink:hover{border-color:#d299ae}.btn-white.btn-purple{border-color:#b7b1c6;color:#7d6fa2!important}.btn-white.btn-purple.active,.btn-white.btn-purple:active,.btn-white.btn-purple:focus,.btn-white.btn-purple:hover,.open .btn-white.btn-purple.dropdown-toggle{background-color:#efedf5!important;border-color:#b7b1c6}.btn-white.btn-purple:hover{color:#6d5b9c!important}.btn-white.btn-purple.disabled,.btn-white.btn-purple.disabled.active,.btn-white.btn-purple.disabled:active,.btn-white.btn-purple.disabled:focus,.btn-white.btn-purple.disabled:hover,.btn-white.btn-purple.no-border:active,.btn-white.btn-purple.no-border:hover,.btn-white.btn-purple[disabled],.btn-white.btn-purple[disabled].active,.btn-white.btn-purple[disabled]:active,.btn-white.btn-purple[disabled]:focus,.btn-white.btn-purple[disabled]:hover,fieldset[disabled] .btn-white.btn-purple,fieldset[disabled] .btn-white.btn-purple.active,fieldset[disabled] .btn-white.btn-purple:active,fieldset[disabled] .btn-white.btn-purple:focus,fieldset[disabled] .btn-white.btn-purple:hover{border-color:#b7b1c6}.btn-white.btn-yellow{border-color:#ecd181;color:#d3a61a!important}.btn-white.btn-yellow.active,.btn-white.btn-yellow:active,.btn-white.btn-yellow:focus,.btn-white.btn-yellow:hover,.open .btn-white.btn-yellow.dropdown-toggle{background-color:#fdf7e4!important;border-color:#ecd181}.btn-white.btn-yellow:hover{color:#c29712!important}.btn-white.btn-yellow.disabled,.btn-white.btn-yellow.disabled.active,.btn-white.btn-yellow.disabled:active,.btn-white.btn-yellow.disabled:focus,.btn-white.btn-yellow.disabled:hover,.btn-white.btn-yellow.no-border:active,.btn-white.btn-yellow.no-border:hover,.btn-white.btn-yellow[disabled],.btn-white.btn-yellow[disabled].active,.btn-white.btn-yellow[disabled]:active,.btn-white.btn-yellow[disabled]:focus,.btn-white.btn-yellow[disabled]:hover,fieldset[disabled] .btn-white.btn-yellow,fieldset[disabled] .btn-white.btn-yellow.active,fieldset[disabled] .btn-white.btn-yellow:active,fieldset[disabled] .btn-white.btn-yellow:focus,fieldset[disabled] .btn-white.btn-yellow:hover{border-color:#ecd181}.btn-white.btn-grey{border-color:#c6c6c6;color:#8c8c8c!important}.btn-white.btn-grey.active,.btn-white.btn-grey:active,.btn-white.btn-grey:focus,.btn-white.btn-grey:hover,.open .btn-white.btn-grey.dropdown-toggle{background-color:#ededed!important;border-color:#c6c6c6}.btn-white.btn-grey:hover{color:#857979!important}.btn-white.btn-grey.disabled,.btn-white.btn-grey.disabled.active,.btn-white.btn-grey.disabled:active,.btn-white.btn-grey.disabled:focus,.btn-white.btn-grey.disabled:hover,.btn-white.btn-grey.no-border:active,.btn-white.btn-grey.no-border:hover,.btn-white.btn-grey[disabled],.btn-white.btn-grey[disabled].active,.btn-white.btn-grey[disabled]:active,.btn-white.btn-grey[disabled]:focus,.btn-white.btn-grey[disabled]:hover,fieldset[disabled] .btn-white.btn-grey,fieldset[disabled] .btn-white.btn-grey.active,fieldset[disabled] .btn-white.btn-grey:active,fieldset[disabled] .btn-white.btn-grey:focus,fieldset[disabled] .btn-white.btn-grey:hover{border-color:#c6c6c6}.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus{outline:0}.btn.disabled:active,.btn[disabled]:active{top:0;left:0}.btn.active{color:#efe5b5}.btn.active:after{display:inline-block;content:"";position:absolute;border-bottom:1px solid #efe5b5;left:-4px;right:-4px;bottom:-4px}.btn.active.btn-sm:after{left:-3px;right:-3px;bottom:-3px}.btn.active.btn-lg:after{left:-5px;right:-5px;bottom:-5px}.btn.active.btn-minier:after,.btn.active.btn-xs:after{left:-1px;right:-1px;bottom:-2px}.btn.active.btn-minier:after{bottom:-1px}.btn.active.btn-yellow:after{border-bottom-color:#c96338}.btn.active.btn-light{color:#515151}.btn.active.btn-light:after{border-bottom-color:#B5B5B5}.btn>.ace-icon{margin-right:4px}.btn>.ace-icon.icon-on-right{margin-right:0;margin-left:4px}.btn>.icon-only.ace-icon{margin:0!important;text-align:center;padding:0}.btn-large>.ace-icon{margin-right:6px}.btn-large>.ace-icon.icon-on-right{margin-right:0;margin-left:6px}.btn-sm>.ace-icon{margin-right:3px}.btn-sm>.ace-icon.icon-on-right{margin-right:0;margin-left:3px}.btn-minier>.ace-icon,.btn-xs>.ace-icon{margin-right:2px}.btn-minier>.ace-icon.icon-on-right,.btn-xs>.ace-icon.icon-on-right{margin-right:0;margin-left:2px}.btn.btn-link{border:none!important;background:0 0!important;color:#08c!important;text-shadow:none!important;padding:4px 12px!important;line-height:20px!important}.btn.btn-link:hover{background:none!important;text-shadow:none!important}.btn.btn-link.active{background:none!important;text-decoration:underline;color:#009ceb!important}.btn.btn-link.active:after{display:none}.btn.btn-link.disabled,.btn.btn-link[disabled]{background:0 0!important;opacity:.65;filter:alpha(opacity=65);text-decoration:none!important}.btn.btn-no-border{border-width:0!important}.btn-group:first-child{margin-left:0}.btn-group>.btn,.btn-group>.btn+.btn,.btn-group>.btn:first-child{margin:0 1px 0 0}.btn-group>.btn:first-child,.btn-group>.btn:last-child{border-radius:0}.btn-group>.btn>.caret{margin-top:15px;margin-left:1px;border-width:5px;border-top-color:#FFF}.btn-group>.btn.btn-sm>.caret{margin-top:10px;border-width:4px}.btn-group>.btn.btn-large>.caret{margin-top:18px;border-width:6px}.btn-group>.btn.btn-xs>.caret{margin-top:9px;border-width:4px}.btn-group>.btn.btn-minier>.caret{margin-top:7px;border-width:3px}.btn-group>.btn+.btn.dropdown-toggle{padding-right:3px;padding-left:3px}.btn-group>.btn+.btn-large.dropdown-toggle{padding-right:4px;padding-left:4px}.btn-group .dropdown-toggle{border-radius:0}.btn-group+.btn,.btn-group>.btn{margin:0 1px 0 0;border-width:3px}.btn-group+.btn.active:after,.btn-group>.btn.active:after{left:-2px;right:-2px;bottom:-2px;border-bottom-width:1px}.btn-group+.btn-large,.btn-group>.btn-large{border-width:4px}.btn-group+.btn-large.active:after,.btn-group>.btn-large.active:after{left:-3px;right:-3px;bottom:-3px;border-bottom-width:1px}.btn-group+.btn-sm,.btn-group>.btn-sm{border-width:2px}.btn-group+.btn-sm.active:after,.btn-group>.btn-sm.active:after{left:-1px;right:-1px;bottom:-1px;border-bottom-width:1px}.btn-group+.btn-xs,.btn-group>.btn-xs{border-width:1px}.btn-group+.btn-xs.active:after,.btn-group>.btn-xs.active:after{left:0;right:0;bottom:0;border-bottom-width:1px}.btn-group+.btn-minier,.btn-group>.btn-minier{border-width:1px}.btn-group+.btn-minier.active:after,.btn-group>.btn-minier.active:after{left:0;right:0;bottom:0;border-bottom-width:1px}.btn-group>.btn{border-radius:0!important}.btn-group>.btn.btn-round{border-radius:4px!important}.btn-group-vertical>.btn,.btn-group-vertical>.btn+.btn{margin:1px 0 0!important}.btn-group-vertical>.btn:first-child{margin-top:0!important}.btn-group.btn-overlap>.btn{margin-right:-1px}.btn-group.btn-corner>.btn:first-child{border-bottom-left-radius:8px!important;border-top-left-radius:8px!important}.btn-group.btn-corner>.btn:last-child{border-bottom-right-radius:8px!important;border-top-right-radius:8px!important}.btn-group.btn-corner>.btn.btn-sm:first-child{border-bottom-left-radius:6px!important;border-top-left-radius:6px!important}.btn-group.btn-corner>.btn.btn-sm:last-child{border-bottom-right-radius:6px!important;border-top-right-radius:6px!important}.btn-group.btn-corner>.btn.btn-xs:first-child{border-bottom-left-radius:4px!important;border-top-left-radius:4px!important}.btn-group.btn-corner>.btn.btn-xs:last-child{border-bottom-right-radius:4px!important;border-top-right-radius:4px!important}.btn.btn-white{border-width:1px}.btn.btn-bold{border-bottom-width:2px}.btn.btn-round{border-bottom-width:2px;border-radius:4px!important}.btn.btn-app{display:inline-block;width:100px;font-size:18px;font-weight:400;color:#FFF;text-align:center;text-shadow:0 -1px -1px rgba(0,0,0,.2)!important;border:none;border-radius:12px;padding:12px 0 8px;margin:2px;line-height:1.7;position:relative}.btn-app,.btn-app.btn-default,.btn-app.btn-default.disabled:hover,.btn-app.btn-default.no-hover:hover,.btn-app.disabled:hover,.btn-app.no-hover:hover{background:#b4c2cc!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbcc9d5', endColorstr='#ffabbac3', GradientType=0)!important}.btn-app.btn-default:hover,.btn-app:hover{background:#9baebc!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa3b5c5', endColorstr='#ff93a6b2', GradientType=0)!important}.btn-app.btn-primary,.btn-app.btn-primary.disabled:hover,.btn-app.btn-primary.no-hover:hover{background:#2a8bcb!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b98d6', endColorstr='#ff197ec1', GradientType=0)!important}.btn-app.btn-primary:hover{background:#1d6fa6!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff267eb8', endColorstr='#ff136194', GradientType=0)!important}.btn-app.btn-info,.btn-app.btn-info.disabled:hover,.btn-app.btn-info.no-hover:hover{background:#68adde!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff75b5e6', endColorstr='#ff5ba4d5', GradientType=0)!important}.btn-app.btn-info:hover{background:#3f96d4!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4a9ede', endColorstr='#ff348dc9', GradientType=0)!important}.btn-app.btn-success,.btn-app.btn-success.disabled:hover,.btn-app.btn-success.no-hover:hover{background:#85b558!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ebf60', endColorstr='#ff7daa50', GradientType=0)!important}.btn-app.btn-success:hover{background:#6c9842!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff74a844', endColorstr='#ff648740', GradientType=0)!important}.btn-app.btn-danger,.btn-app.btn-danger.disabled:hover,.btn-app.btn-danger.no-hover:hover{background:#d3413b!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd55b52', endColorstr='#ffd12723', GradientType=0)!important}.btn-app.btn-danger:hover{background:#b52c26!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc43a30', endColorstr='#ffa51f1c', GradientType=0)!important}.btn-app.btn-warning,.btn-app.btn-warning.disabled:hover,.btn-app.btn-warning.no-hover:hover{background:#ffb44b!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffbf66', endColorstr='#ffffa830', GradientType=0)!important}.btn-app.btn-warning:hover{background:#fe9e19!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffaa33', endColorstr='#fffc9200', GradientType=0)!important}.btn-app.btn-purple,.btn-app.btn-purple.disabled:hover,.btn-app.btn-purple.no-hover:hover{background:#9889c1!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa696ce', endColorstr='#ff8a7cb4', GradientType=0)!important}.btn-app.btn-purple:hover{background:#7b68af!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8973be', endColorstr='#ff6d5ca1', GradientType=0)!important}.btn-app.btn-pink,.btn-app.btn-pink.disabled:hover,.btn-app.btn-pink.no-hover:hover{background:#d54c7e!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdb5e8c', endColorstr='#ffce3970', GradientType=0)!important}.btn-app.btn-pink:hover{background:#be2f64!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd2346e', endColorstr='#ffaa2a59', GradientType=0)!important}.btn-app.btn-inverse,.btn-app.btn-inverse.disabled:hover,.btn-app.btn-inverse.no-hover:hover{background:#444!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0)!important}.btn-app.btn-inverse:hover{background:#2b2b2b!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3b3b3b', endColorstr='#ff1a1a1a', GradientType=0)!important}.btn-app.btn-grey,.btn-app.btn-grey.disabled:hover,.btn-app.btn-grey.no-hover:hover{background:#797979!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff898989', endColorstr='#ff696969', GradientType=0)!important}.btn-app.btn-grey:hover{background:#6c6c6c!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7c7c7c', endColorstr='#ff5c5c5c', GradientType=0)!important}.btn.btn-app.btn-light{color:#5a5a5a!important;text-shadow:0 1px 1px #EEE!important}.btn.btn-app.btn-light,.btn.btn-app.btn-light.disabled:hover,.btn.btn-app.btn-light.no-hover:hover{background:#ededed!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe6e6e6', GradientType=0)!important}.btn.btn-app.btn-light:hover{background:#e0e0e0!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe7e7e7', endColorstr='#ffd9d9d9', GradientType=0)!important}.btn.btn-app.btn-yellow{color:#963!important;text-shadow:0 -1px 0 rgba(255,255,255,.4)!important}.btn.btn-app.btn-yellow,.btn.btn-app.btn-yellow.disabled:hover,.btn.btn-app.btn-yellow.no-hover:hover{background:#fee088!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe8a5', endColorstr='#fffcd76a', GradientType=0)!important}.btn.btn-app.btn-yellow:hover{background:#fdd96e!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffe18b', endColorstr='#fffbd051', GradientType=0)!important}.btn.btn-app.btn-sm{width:80px;font-size:16px;border-radius:10px;line-height:1.5}.btn.btn-app.btn-xs{width:64px;font-size:15px;border-radius:8px;padding-bottom:7px;padding-top:8px;line-height:1.45}.btn.btn-app>.ace-icon{display:block;font-size:42px;margin:0 0 4px;line-height:36px;min-width:0;padding:0}.btn.btn-app.btn-sm>.ace-icon{display:block;font-size:32px;line-height:30px;margin:0 0 3px}.btn.btn-app.btn-xs>.ace-icon{display:block;font-size:24px;line-height:24px;margin:0}.btn.btn-app.no-radius{border-radius:0}.btn.btn-app.radius-4{border-radius:4px}.btn.btn-app>.badge,.btn.btn-app>.label{position:absolute!important;top:-2px;right:-2px;padding:1px 3px;text-align:center;font-size:12px;color:#FFF}.btn.btn-app>.badge.badge-left,.btn.btn-app>.badge.label-left,.btn.btn-app>.label.badge-left,.btn.btn-app>.label.label-left{right:auto;left:-2px}.btn.btn-app>.label{padding:1px 6px 3px;font-size:13px}.btn.btn-app.no-radius>.badge,.btn.btn-app.radius-4>.badge{border-radius:3px}.btn.btn-app.no-radius>.badge.no-radius,.btn.btn-app.radius-4>.badge.no-radius{border-radius:0}.btn.btn-app.active{color:#fff}.btn.btn-app.active:after{display:none}.btn.btn-app.active.btn-yellow{color:#963;border-color:#fee188}.btn.btn-app.active.btn-light{color:#515151}.btn.btn-app.btn-light,.btn.btn-app.btn-yellow{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.08) inset!important;box-shadow:0 0 0 1px rgba(0,0,0,.08) inset!important}.label{border-radius:0;text-shadow:none;font-weight:400;display:inline-block;background-color:#abbac3!important}.label[class*=col-][class*=arrow]{min-height:0}@media screen and (-webkit-min-device-pixel-ratio:0){.badge:empty,.label:empty,::safari-only{display:inline-block}}.badge{text-shadow:none;font-size:12px;padding-top:1px;padding-bottom:3px;font-weight:400;line-height:15px;background-color:#abbac3!important}.badge.no-radius{border-radius:0}.badge.radius-1{border-radius:1px}.badge.radius-2{border-radius:2px}.badge.radius-3{border-radius:3px}.badge.radius-4{border-radius:4px}.badge.radius-5{border-radius:5px}.badge.radius-6{border-radius:6px}.badge-transparent,.label-transparent{background-color:transparent!important}.badge-grey,.label-grey{background-color:#a0a0a0!important}.badge-info,.label-info{background-color:#3a87ad!important}.badge-primary,.label-primary{background-color:#428bca!important}.badge-success,.label-success{background-color:#82af6f!important}.badge-danger,.badge-important,.label-danger,.label-important{background-color:#d15b47!important}.badge-inverse,.label-inverse{background-color:#333!important}.badge-warning,.label-warning{background-color:#f89406!important}.badge-pink,.label-pink{background-color:#d6487e!important}.badge-purple,.label-purple{background-color:#9585bf!important}.badge-yellow,.label-yellow{background-color:#fee188!important}.badge-light,.label-light{background-color:#e7e7e7!important}.badge-yellow,.label-yellow{color:#963!important;border-color:#fee188}.badge-light,.label-light{color:#888!important}.label.arrowed,.label.arrowed-in{position:relative;z-index:1}.label.arrowed-in:before,.label.arrowed:before{display:inline-block;content:"";position:absolute;top:0;z-index:-1;border:1px solid transparent;border-right-color:#abbac3;-moz-border-right-colors:#abbac3}.label.arrowed-in:before{border-color:#abbac3;border-left-color:transparent!important;-moz-border-left-colors:none!important}.label.arrowed-in-right,.label.arrowed-right{position:relative;z-index:1}.label.arrowed-in-right:after,.label.arrowed-right:after{display:inline-block;content:"";position:absolute;top:0;z-index:-1;border:1px solid transparent;border-left-color:#abbac3;-moz-border-left-colors:#abbac3}.label.arrowed-in-right:after{border-color:#abbac3;border-right-color:transparent!important;-moz-border-right-colors:none!important}.label-info.arrowed:before{border-right-color:#3a87ad;-moz-border-right-colors:#3a87ad}.label-info.arrowed-in:before{border-color:#3a87ad;-moz-border-right-colors:#3a87ad}.label-info.arrowed-right:after{border-left-color:#3a87ad;-moz-border-left-colors:#3a87ad}.label-info.arrowed-in-right:after{border-color:#3a87ad;-moz-border-left-colors:#3a87ad}.label-primary.arrowed:before{border-right-color:#428bca;-moz-border-right-colors:#428bca}.label-primary.arrowed-in:before{border-color:#428bca;-moz-border-right-colors:#428bca}.label-primary.arrowed-right:after{border-left-color:#428bca;-moz-border-left-colors:#428bca}.label-primary.arrowed-in-right:after{border-color:#428bca;-moz-border-left-colors:#428bca}.label-success.arrowed:before{border-right-color:#82af6f;-moz-border-right-colors:#82af6f}.label-success.arrowed-in:before{border-color:#82af6f;-moz-border-right-colors:#82af6f}.label-success.arrowed-right:after{border-left-color:#82af6f;-moz-border-left-colors:#82af6f}.label-success.arrowed-in-right:after{border-color:#82af6f;-moz-border-left-colors:#82af6f}.label-warning.arrowed:before{border-right-color:#f89406;-moz-border-right-colors:#f89406}.label-warning.arrowed-in:before{border-color:#f89406;-moz-border-right-colors:#f89406}.label-warning.arrowed-right:after{border-left-color:#f89406;-moz-border-left-colors:#f89406}.label-warning.arrowed-in-right:after{border-color:#f89406;-moz-border-left-colors:#f89406}.label-important.arrowed:before{border-right-color:#d15b47;-moz-border-right-colors:#d15b47}.label-important.arrowed-in:before{border-color:#d15b47;-moz-border-right-colors:#d15b47}.label-important.arrowed-right:after{border-left-color:#d15b47;-moz-border-left-colors:#d15b47}.label-important.arrowed-in-right:after{border-color:#d15b47;-moz-border-left-colors:#d15b47}.label-danger.arrowed:before{border-right-color:#d15b47;-moz-border-right-colors:#d15b47}.label-danger.arrowed-in:before{border-color:#d15b47;-moz-border-right-colors:#d15b47}.label-danger.arrowed-right:after{border-left-color:#d15b47;-moz-border-left-colors:#d15b47}.label-danger.arrowed-in-right:after{border-color:#d15b47;-moz-border-left-colors:#d15b47}.label-inverse.arrowed:before{border-right-color:#333;-moz-border-right-colors:#333}.label-inverse.arrowed-in:before{border-color:#333;-moz-border-right-colors:#333}.label-inverse.arrowed-right:after{border-left-color:#333;-moz-border-left-colors:#333}.label-inverse.arrowed-in-right:after{border-color:#333;-moz-border-left-colors:#333}.label-pink.arrowed:before{border-right-color:#d6487e;-moz-border-right-colors:#d6487e}.label-pink.arrowed-in:before{border-color:#d6487e;-moz-border-right-colors:#d6487e}.label-pink.arrowed-right:after{border-left-color:#d6487e;-moz-border-left-colors:#d6487e}.label-pink.arrowed-in-right:after{border-color:#d6487e;-moz-border-left-colors:#d6487e}.label-purple.arrowed:before{border-right-color:#9585bf;-moz-border-right-colors:#9585bf}.label-purple.arrowed-in:before{border-color:#9585bf;-moz-border-right-colors:#9585bf}.label-purple.arrowed-right:after{border-left-color:#9585bf;-moz-border-left-colors:#9585bf}.label-purple.arrowed-in-right:after{border-color:#9585bf;-moz-border-left-colors:#9585bf}.label-yellow.arrowed:before{border-right-color:#fee188;-moz-border-right-colors:#fee188}.label-yellow.arrowed-in:before{border-color:#fee188;-moz-border-right-colors:#fee188}.label-yellow.arrowed-right:after{border-left-color:#fee188;-moz-border-left-colors:#fee188}.label-yellow.arrowed-in-right:after{border-color:#fee188;-moz-border-left-colors:#fee188}.label-light.arrowed:before{border-right-color:#e7e7e7;-moz-border-right-colors:#e7e7e7}.label-light.arrowed-in:before{border-color:#e7e7e7;-moz-border-right-colors:#e7e7e7}.label-light.arrowed-right:after{border-left-color:#e7e7e7;-moz-border-left-colors:#e7e7e7}.label-light.arrowed-in-right:after{border-color:#e7e7e7;-moz-border-left-colors:#e7e7e7}.label-grey.arrowed:before{border-right-color:#a0a0a0;-moz-border-right-colors:#a0a0a0}.label-grey.arrowed-in:before{border-color:#a0a0a0;-moz-border-right-colors:#a0a0a0}.label-grey.arrowed-right:after{border-left-color:#a0a0a0;-moz-border-left-colors:#a0a0a0}.label-grey.arrowed-in-right:after{border-color:#a0a0a0;-moz-border-left-colors:#a0a0a0}.label{font-size:12px;line-height:1.15;height:20px}.label.arrowed{margin-left:5px}.label.arrowed:before{left:-10px;border-width:10px 5px}.label.arrowed-in{margin-left:5px}.label.arrowed-in:before{left:-5px;border-width:10px 5px}.label.arrowed-right{margin-right:5px}.label.arrowed-right:after{right:-10px;border-width:10px 5px}.label.arrowed-in-right{margin-right:5px}.label.arrowed-in-right:after{right:-5px;border-width:10px 5px}.label-lg{padding:.3em .6em .4em;font-size:13px;line-height:1.1;height:24px}.label-lg.arrowed{margin-left:6px}.label-lg.arrowed:before{left:-12px;border-width:12px 6px}.label-lg.arrowed-in{margin-left:6px}.label-lg.arrowed-in:before{left:-6px;border-width:12px 6px}.label-lg.arrowed-right{margin-right:6px}.label-lg.arrowed-right:after{right:-12px;border-width:12px 6px}.label-lg.arrowed-in-right{margin-right:6px}.label-lg.arrowed-in-right:after{right:-6px;border-width:12px 6px}.label-xlg{padding:.3em .7em .4em;font-size:14px;line-height:1.3;height:28px}.label-xlg.arrowed{margin-left:7px}.label-xlg.arrowed:before{left:-14px;border-width:14px 7px}.label-xlg.arrowed-in{margin-left:7px}.label-xlg.arrowed-in:before{left:-7px;border-width:14px 7px}.label-xlg.arrowed-right{margin-right:7px}.label-xlg.arrowed-right:after{right:-14px;border-width:14px 7px}.label-xlg.arrowed-in-right{margin-right:7px}.label-xlg.arrowed-in-right:after{right:-7px;border-width:14px 7px}.label-sm{padding:.2em .4em .3em;font-size:11px;line-height:1;height:18px}.label-sm.arrowed{margin-left:4px}.label-sm.arrowed:before{left:-8px;border-width:9px 4px}.label-sm.arrowed-in{margin-left:4px}.label-sm.arrowed-in:before{left:-4px;border-width:9px 4px}.label-sm.arrowed-right{margin-right:4px}.label-sm.arrowed-right:after{right:-8px;border-width:9px 4px}.label-sm.arrowed-in-right{margin-right:4px}.label-sm.arrowed-in-right:after{right:-4px;border-width:9px 4px}.label>.ace-icon,.label>span{line-height:1;vertical-align:bottom}@media screen and (-webkit-min-device-pixel-ratio:1.08) and (-webkit-max-device-pixel-ratio:1.15),screen and (-webkit-min-device-pixel-ratio:1.3) and (-webkit-max-device-pixel-ratio:1.35),screen and (-webkit-min-device-pixel-ratio:1.7) and (-webkit-max-device-pixel-ratio:1.75){.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before{border-width:10px 6px 11px;left:-11px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after{border-width:10px 6px 11px;right:-11px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before{border-width:10px 5px 10.5px;left:-6px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after{border-width:10px 5px 10.5px;right:-6px}}@media screen and (min--moz-device-pixel-ratio:1.08) and (max--moz-device-pixel-ratio:1.15),screen and (min--moz-device-pixel-ratio:1.3) and (max--moz-device-pixel-ratio:1.35),screen and (min--moz-device-pixel-ratio:1.7) and (max--moz-device-pixel-ratio:1.75){.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before{border-width:10px 6px 11px;left:-11px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after{border-width:10px 6px 11px;right:-11px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before{border-width:10px 5px 10.5px;left:-6px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after{border-width:10px 5px 10.5px;right:-6px}}@media screen and (-webkit-min-device-pixel-ratio:1.3) and (-webkit-max-device-pixel-ratio:1.34){.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before{border-width:10px 6px 11px;left:-11.5px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after{border-width:10px 6px 11px;right:-11.5px}}@media screen and (min--moz-device-pixel-ratio:1.3) and (max--moz-device-pixel-ratio:1.34){.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed:before{border-width:10px 6px 11px;left:-11.5px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-right:after{border-width:10px 6px 11px;right:-11.5px}}@media only screen and (-webkit-max-device-pixel-ratio:1.7) and (-webkit-min-device-pixel-ratio:1.75){.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before{border-width:10px 5px;left:-6px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after{border-width:10px 5px;right:-6px}}@media only screen and (min--moz-device-pixel-ratio:1.7) and (max--moz-device-pixel-ratio:1.75){.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in:before{border-width:10px 5px;left:-6px}.label:not(.label-lg):not(.label-xlg):not(.label-sm).arrowed-in-right:after{border-width:10px 5px;right:-6px}}.dropdown-menu>.active>a>.ace-icon,.dropdown-menu>li>a:focus>.ace-icon,.dropdown-menu>li>a:hover>.ace-icon,.dropdown-submenu:focus>a>.ace-icon,.dropdown-submenu:hover>a>.ace-icon,.icon-white,.nav-list>.active>a>.ace-icon,.nav-pills>.active>a>.ace-icon,.navbar-inverse .nav>.active>a>.ace-icon{background-image:none}.dropdown-menu{border-radius:0!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}.dropdown-menu>li>a{font-size:13px;padding-left:11px;padding-right:11px;margin-bottom:1px;margin-top:1px}.dropdown-menu.dropdown-only-icon{min-width:50px}.dropdown-menu.dropdown-only-icon>li{margin:0 4px}.dropdown-menu.dropdown-only-icon>li>a .ace-icon{width:18px;display:inline-block;text-align:center}.dropdown-menu.dropdown-only-icon>li>a .icon-2x{width:36px}.dropdown-menu .dropdown-submenu:hover>a,.dropdown-menu>li.active>a,.dropdown-menu>li.active>a:hover,.dropdown-menu>li>a:active,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background:#4f99c6;color:#fff}.dropdown-default .dropdown-submenu:hover>a,.dropdown-default>li.active>a,.dropdown-default>li.active>a:hover,.dropdown-default>li>a:active,.dropdown-default>li>a:focus,.dropdown-default>li>a:hover{background:#abbac3;color:#fff}.dropdown-info .dropdown-submenu:hover>a,.dropdown-info>li.active>a,.dropdown-info>li.active>a:hover,.dropdown-info>li>a:active,.dropdown-info>li>a:focus,.dropdown-info>li>a:hover{background:#6fb3e0;color:#fff}.dropdown-primary .dropdown-submenu:hover>a,.dropdown-primary>li.active>a,.dropdown-primary>li.active>a:hover,.dropdown-primary>li>a:active,.dropdown-primary>li>a:focus,.dropdown-primary>li>a:hover{background:#428bca;color:#fff}.dropdown-success .dropdown-submenu:hover>a,.dropdown-success>li.active>a,.dropdown-success>li.active>a:hover,.dropdown-success>li>a:active,.dropdown-success>li>a:focus,.dropdown-success>li>a:hover{background:#87b87f;color:#fff}.dropdown-warning .dropdown-submenu:hover>a,.dropdown-warning>li.active>a,.dropdown-warning>li.active>a:hover,.dropdown-warning>li>a:active,.dropdown-warning>li>a:focus,.dropdown-warning>li>a:hover{background:#ffa24d;color:#fff}.dropdown-danger .dropdown-submenu:hover>a,.dropdown-danger>li.active>a,.dropdown-danger>li.active>a:hover,.dropdown-danger>li>a:active,.dropdown-danger>li>a:focus,.dropdown-danger>li>a:hover{background:#d15b47;color:#fff}.dropdown-inverse .dropdown-submenu:hover>a,.dropdown-inverse>li.active>a,.dropdown-inverse>li.active>a:hover,.dropdown-inverse>li>a:active,.dropdown-inverse>li>a:focus,.dropdown-inverse>li>a:hover{background:#555;color:#fff}.dropdown-purple .dropdown-submenu:hover>a,.dropdown-purple>li.active>a,.dropdown-purple>li.active>a:hover,.dropdown-purple>li>a:active,.dropdown-purple>li>a:focus,.dropdown-purple>li>a:hover{background:#9585bf;color:#fff}.dropdown-pink .dropdown-submenu:hover>a,.dropdown-pink>li.active>a,.dropdown-pink>li.active>a:hover,.dropdown-pink>li>a:active,.dropdown-pink>li>a:focus,.dropdown-pink>li>a:hover{background:#d6487e;color:#fff}.dropdown-grey .dropdown-submenu:hover>a,.dropdown-grey>li.active>a,.dropdown-grey>li.active>a:hover,.dropdown-grey>li>a:active,.dropdown-grey>li>a:focus,.dropdown-grey>li>a:hover{background:#a0a0a0;color:#fff}.dropdown-light .dropdown-submenu:hover>a,.dropdown-light>li.active>a,.dropdown-light>li.active>a:hover,.dropdown-light>li>a:active,.dropdown-light>li>a:focus,.dropdown-light>li>a:hover{background:#e7e7e7;color:#333}.dropdown-lighter .dropdown-submenu:hover>a,.dropdown-lighter>li.active>a,.dropdown-lighter>li.active>a:hover,.dropdown-lighter>li>a:active,.dropdown-lighter>li>a:focus,.dropdown-lighter>li>a:hover{background:#efefef;color:#444}.dropdown-lightest .dropdown-submenu:hover>a,.dropdown-lightest>li.active>a,.dropdown-lightest>li.active>a:hover,.dropdown-lightest>li>a:active,.dropdown-lightest>li>a:focus,.dropdown-lightest>li>a:hover{background:#f3f3f3;color:#444}.dropdown-yellow .dropdown-submenu:hover>a,.dropdown-yellow>li.active>a,.dropdown-yellow>li.active>a:hover,.dropdown-yellow>li>a:active,.dropdown-yellow>li>a:focus,.dropdown-yellow>li>a:hover{background:#fee188;color:#444}.dropdown-yellow2 .dropdown-submenu:hover>a,.dropdown-yellow2>li.active>a,.dropdown-yellow2>li.active>a:hover,.dropdown-yellow2>li>a:active,.dropdown-yellow2>li>a:focus,.dropdown-yellow2>li>a:hover{background:#f9e8b3;color:#444}.dropdown-light-blue .dropdown-submenu:hover>a,.dropdown-light-blue>li.active>a,.dropdown-light-blue>li.active>a:hover,.dropdown-light-blue>li>a:active,.dropdown-light-blue>li>a:focus,.dropdown-light-blue>li>a:hover{background:#ecf3f9;color:#456}.dropdown-light .dropdown-submenu:hover>a:after,.dropdown-lighter .dropdown-submenu:hover>a:after,.dropdown-lightest .dropdown-submenu:hover>a:after{border-left-color:#444}.dropdown-menu.dropdown-close{top:92%;left:-5px}.dropdown-menu.dropdown-close.dropdown-menu-right{left:auto;right:-5px}.dropdown-menu.dropdown-closer{top:80%;left:-10px}.dropdown-menu.dropdown-closer.dropdown-menu-right{right:-10px;left:auto}.dropup>.dropdown-menu,.navbar-fixed-bottom .dropdown>.dropdown-menu{top:auto!important;bottom:100%}.dropup>.dropdown-menu.dropdown-close,.navbar-fixed-bottom .dropdown>.dropdown-menu.dropdown-close{bottom:92%}.dropup>.dropdown-menu.dropdown-closer,.navbar-fixed-bottom .dropdown>.dropdown-menu.dropdown-closer{bottom:80%}.dropdown-submenu>.dropdown-menu{border-radius:0}.dropdown-submenu>a:after{margin-right:-5px}.dropdown-50{min-width:50px}.dropdown-75{min-width:75px}.dropdown-100{min-width:100px}.dropdown-125{min-width:125px}.dropdown-150{min-width:150px}.dropdown-hover{position:relative}.dropdown-hover:before{display:block;content:"";position:absolute;top:-2px;bottom:-2px;left:-2px;right:-2px;background-color:transparent}.dropdown-hover:hover>.dropdown-menu{display:block}.dropdown-menu>.dropdown-hover>.dropdown-menu{top:-5px;left:99%;right:auto}.dropdown-menu>.dropdown-hover>.dropdown-menu.dropdown-menu-right{left:auto;right:99%}.dropdown-menu>.dropdown-hover.dropup>.dropdown-menu,.dropup .dropdown-menu>.dropdown-hover>.dropdown-menu{top:auto;bottom:-5px}.dropdown-menu.dropdown-caret:before{border-bottom:7px solid rgba(0,0,0,.2);-moz-border-bottom-colors:rgba(0,0,0,.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;left:9px;position:absolute;top:-7px}.dropdown-menu.dropdown-caret:after{border-bottom:6px solid #FFF;-moz-border-bottom-colors:#FFF;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;left:10px;position:absolute;top:-6px}.dropdown-menu.dropdown-menu-right.dropdown-caret:before{left:auto;right:9px}.dropdown-menu.dropdown-menu-right.dropdown-caret:after{left:auto;right:10px}.dropup>.dropdown-menu.dropdown-caret:before,.navbar-fixed-bottom .dropdown>.dropdown-menu.dropdown-caret:before{border-bottom-width:0;border-top:7px solid rgba(0,0,0,.2);-moz-border-top-colors:rgba(0,0,0,.2);bottom:-7px;top:auto}.dropup>.dropdown-menu.dropdown-caret:after,.navbar-fixed-bottom .dropdown>.dropdown-menu.dropdown-caret:after{border-bottom-width:0;border-top:6px solid #FFF;-moz-border-top-colors:#FFF;bottom:-6px;top:auto}.dropdown-colorpicker>.dropdown-menu{padding:4px;min-width:130px;max-width:130px;top:80%;left:-7px}.dropdown-colorpicker>.dropdown-menu.dropdown-menu-right{right:-7px;left:auto}.dropdown-colorpicker>.dropdown-menu>li{display:block;float:left;width:20px;height:20px;margin:2px}.dropdown-colorpicker>.dropdown-menu>li>.colorpick-btn{display:block;width:20px;height:20px;margin:0;padding:0;border-radius:0;position:relative;-webkit-transition:all ease .1s;-o-transition:all ease .1s;transition:all ease .1s}.dropdown-colorpicker>.dropdown-menu>li>.colorpick-btn:hover{text-decoration:none;opacity:.8;filter:alpha(opacity=80);-webkit-transform:scale(1.08,1.08);-ms-transform:scale(1.08,1.08);-o-transform:scale(1.08,1.08);transform:scale(1.08,1.08)}.dropdown-colorpicker>.dropdown-menu>li>.colorpick-btn.selected:after{content:"\f00c";display:inline-block;font-family:FontAwesome;font-size:11px;color:#FFF;position:absolute;left:0;right:0;text-align:center;line-height:20px}.btn-colorpicker{display:inline-block;width:20px;height:20px;background-color:#DDD;vertical-align:middle;border-radius:0}.dropdown-navbar{padding:0;width:240px;-webkit-box-shadow:0 2px 4px rgba(30,30,100,.25);box-shadow:0 2px 4px rgba(30,30,100,.25);border-color:#bcd4e5}.dropdown-navbar>li{padding:0 8px;background-color:#FFF}.dropdown-navbar>li.dropdown-header{text-shadow:none;padding-top:0;padding-bottom:0;line-height:34px;font-size:13px;font-weight:700;text-transform:none;border-bottom:1px solid}.dropdown-navbar>li>.ace-icon,.dropdown-navbar>li>a>.ace-icon{margin-right:5px!important;color:#555;font-size:14px}.dropdown-navbar>li>a{padding:10px 2px;margin:0;border-top:1px solid;font-size:12px;line-height:16px;color:#555}.dropdown-navbar>li>a:active,.dropdown-navbar>li>a:focus,.dropdown-navbar>li>a:hover{background-color:transparent!important;color:#555}.dropdown-navbar>li>a .progress{margin-bottom:0;margin-top:4px}.dropdown-navbar>li>a .badge{line-height:16px;padding-right:4px;padding-left:4px;font-size:12px}.dropdown-navbar>li.dropdown-header+li>a,.dropdown-navbar>li:first-child>a{border-top-width:0}.dropdown-navbar>li.dropdown-footer>a{color:#4F99C6;text-align:center;font-size:13px}.dropdown-navbar>li.dropdown-footer>a:hover{background-color:#FFF;color:#4F99C6;text-decoration:underline}.dropdown-navbar>li.dropdown-footer>a:hover>.ace-icon{text-decoration:none}.dropdown-navbar>li:hover{background-color:#f4f9fc!important}.dropdown-navbar>li.dropdown-header{background-color:#ecf2f7!important;color:#8090a0;border-bottom-color:#bcd4e5}.dropdown-navbar>li.dropdown-header>.ace-icon{color:#8090a0}.dropdown-navbar>li>a{border-top-color:#e4ecf3}.dropdown-navbar.navbar-pink{border-color:#e5bcd4}.dropdown-navbar.navbar-pink>li:hover{background-color:#fcf4f9!important}.dropdown-navbar.navbar-pink>li.dropdown-header{background-color:#f7ecf2!important;color:#b471a0;border-bottom-color:#e5bcd4}.dropdown-navbar.navbar-pink>li.dropdown-header>.ace-icon{color:#c06090}.dropdown-navbar.navbar-pink>li>a{border-top-color:#f3e4ec}.dropdown-navbar.navbar-grey{border-color:#e5e5e5}.dropdown-navbar.navbar-grey>li:hover{background-color:#f8f8f8!important}.dropdown-navbar.navbar-grey>li.dropdown-header{background-color:#f2f2f2!important;color:#3a87ad;border-bottom-color:#e5e5e5}.dropdown-navbar.navbar-grey>li.dropdown-header>.ace-icon{color:#3a87ad}.dropdown-navbar.navbar-grey>li>a{border-top-color:#eee}.dropdown-navbar.navbar-green{border-color:#b4d5ac}.dropdown-navbar.navbar-green>li:hover{background-color:#f4f9ef!important}.dropdown-navbar.navbar-green>li.dropdown-header{background-color:#ebf7e4!important;color:#8a6;border-bottom-color:#b4d5ac}.dropdown-navbar.navbar-green>li.dropdown-header>.ace-icon{color:#90c060}.dropdown-navbar.navbar-green>li>a{border-top-color:#ecf3e4}.dropdown-navbar [class*=btn].ace-icon{display:inline-block;margin:0 5px 0 0;width:24px;text-align:center;padding-left:0;padding-right:0}.dropdown-navbar .msg-photo{margin-right:6px;max-width:42px}.dropdown-navbar .msg-body{display:inline-block;line-height:20px;white-space:normal;vertical-align:middle;max-width:175px}.dropdown-navbar .msg-title{display:inline-block;line-height:14px}.dropdown-navbar .msg-time{display:block;font-size:11px;color:#777}.dropdown-navbar .msg-time>.ace-icon{font-size:14px;color:#555}.dropdown-navbar>.dropdown-content{padding:0}.dropdown-navbar>.dropdown-content .dropdown-navbar{list-style:none;margin:0;padding:0!important;-webkit-box-shadow:none;box-shadow:none;width:auto;display:block;float:none;border-width:0;position:static;z-index:auto}.dropdown-navbar .nav-tabs{border-width:0;box-shadow:none;background-color:#F9F9F9!important;top:auto;width:100%}.dropdown-navbar .nav-tabs>li{display:table-cell;width:1%;float:none!important}.dropdown-navbar .nav-tabs>li>a{margin:0 0 0 1px!important;text-align:center;box-shadow:none!important;background-color:#F9F9F9!important;border-width:0!important;border-bottom:2px solid #BECAD1!important}.dropdown-navbar .nav-tabs>li>a:before{display:block;content:"";position:absolute;left:-1px;top:3px;bottom:3px;width:1px;background-color:#BECAD1}.dropdown-navbar .nav-tabs>li:first-child>a{margin-left:0!important}.dropdown-navbar .nav-tabs>li:first-child>a:before{display:none}.dropdown-navbar .nav-tabs>li.active>a{border-bottom:2px solid #79B0CE!important;color:#5085AF!important;background-color:#ECF2F7!important}.dropdown-navbar .tab-content{padding:0!important;border-color:#FFF!important}.dropdown-navbar .tab-content .dropdown-menu{display:block;position:static;margin:0!important;padding-top:2px;border-color:#FFF!important;box-shadow:none!important;width:100%}.dropdown-navbar.navbar-pink .nav-tabs>li.active>a{border-bottom:2px solid #E5BCD4!important;color:#C06090!important;background-color:#F7ECF2!important}.dropdown-navbar.navbar-pink .nav-tabs>li:not(.active)>a:hover{color:#BA7396}.dropdown-navbar.navbar-pink .nav-tabs>li>a:before{background-color:#CEBBCB}.dropdown-navbar.navbar-pink .nav-tabs>li>a{border-bottom-color:#CEBBCD!important}.form-line{margin-bottom:24px;padding-bottom:12px;border-bottom:1px solid #EEE}.form-actions{display:block;background-color:#F5F5F5;border-top:1px solid #E5E5E5;margin-bottom:20px;margin-top:20px;padding:19px 20px 20px}.help-button{display:inline-block;height:22px;width:22px;line-height:22px;text-align:center;padding:0;background-color:#65bcda;color:#FFF;font-size:12px;font-weight:700;cursor:default;margin-left:4px;border-radius:100%;border:2px solid #FFF;-webkit-box-shadow:0 1px 0 1px rgba(0,0,0,.2);box-shadow:0 1px 0 1px rgba(0,0,0,.2)}.help-button:hover{background-color:#65bcda;text-shadow:none}label{font-weight:400;font-size:14px}.form-group>label[class*=col-]{padding-top:4px;margin-bottom:4px}td>label,th>label{margin-bottom:0;line-height:inherit;vertical-align:middle}label.inline{margin-bottom:3px}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{border-radius:0!important;color:#858585;background-color:#fff;border:1px solid #d5d5d5;padding:5px 4px 6px;font-size:14px;font-family:inherit;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transition-duration:.1s;transition-duration:.1s}input[type=color]:hover,input[type=date]:hover,input[type=datetime-local]:hover,input[type=datetime]:hover,input[type=email]:hover,input[type=month]:hover,input[type=number]:hover,input[type=password]:hover,input[type=search]:hover,input[type=tel]:hover,input[type=text]:hover,input[type=time]:hover,input[type=url]:hover,input[type=week]:hover,textarea:hover{border-color:#b5b5b5}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{-webkit-box-shadow:none;box-shadow:none;color:#696969;border-color:#f59942;background-color:#fff;outline:0}.form-control,select{border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;color:#858585;background-color:#fff;border:1px solid #d5d5d5}.form-control:focus,select:focus{color:#696969;border-color:#f59942;background-color:#fff;outline:0}textarea.form-control{padding:5px 9px}select{padding:3px 4px;height:30px}select.form-control{padding:4px 6px}select.form-control[multiple],select[multiple]{height:auto}select.input-sm{border-radius:0;padding:2px 3px}select.input-lg{border-radius:0;padding:6px 8px}input.block{display:block;margin-bottom:9px}textarea.autosize-transition{-webkit-transition-duration:"height 0.2s";transition-duration:"height 0.2s"}.limiterBox{border:1px solid #222;border-top:none;background-color:#333;padding:3px 6px;font-size:13px;color:#FFF;margin-top:6px}.limiterBox:after{display:none}.limiterBox:before{display:block;content:"";position:absolute;width:0;height:0;top:-8px;left:50%;margin-left:-5px;border-color:transparent transparent #333;border-style:solid;-moz-border-bottom-colors:#333;border-width:0 8px 8px}select option,select.form-control option{padding:3px 4px}select option:active,select option:focus,select option:hover,select.form-control option:active,select.form-control option:focus,select.form-control option:hover{background-color:#e5e9ee;color:#111}select option[value=""],select.form-control option[value=""]{padding:0}input[disabled]{color:#848484!important;background-color:#eee!important}input[disabled]:hover{border-color:#d5d5d5!important}input[readonly]{color:#939192;background:#f5f5f5!important;cursor:default}input[readonly]:hover{border-color:#c3c3c3}input[readonly]:focus{-webkit-box-shadow:none;box-shadow:none;border-color:#aaa;background-color:#f9f9f9}.help-inline{font-size:13px!important}.input-icon{position:relative}span.input-icon{display:inline-block}.input-icon>input{padding-left:24px;padding-right:6px}.input-icon.input-icon-right>input{padding-left:6px;padding-right:24px}.input-icon>.ace-icon{padding:0 3px;z-index:2;position:absolute;top:1px;bottom:1px;left:3px;line-height:28px;display:inline-block;color:#909090;font-size:16px}.input-icon.input-icon-right>.ace-icon{left:auto;right:3px}.input-icon>input:focus+.ace-icon{color:#579}.input-icon~.help-inline{padding-left:8px}.form-inline .checkbox [type=checkbox]+label,.form-inline .radio [type=radio]+label,.form-search .checkbox [type=checkbox]+label,.form-search .radio [type=radio]+label{float:left;margin-left:-20px}.form-inline .form-inline .checkbox [type=checkbox]+label,.form-inline .form-inline .radio [type=radio]+label,.form-inline .form-search .checkbox [type=checkbox]+label,.form-inline .form-search .radio [type=radio]+label,.form-search .form-inline .checkbox [type=checkbox]+label,.form-search .form-inline .radio [type=radio]+label,.form-search .form-search .checkbox [type=checkbox]+label,.form-search .form-search .radio [type=radio]+label{margin-left:0;margin-right:3px}.form-search .input-append .search-query:focus,.form-search .input-prepend .search-query:focus{-webkit-box-shadow:none;box-shadow:none}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .uneditable-input,.input-prepend input,.input-prepend select{border-radius:0}.input-mini{width:60px;max-width:100%}.input-small{width:90px;max-width:100%}.input-md,.input-medium{width:150px;max-width:100%}.input-large{width:210px;max-width:100%}.input-xlarge{width:270px;max-width:100%}.input-xxlarge{width:530px;max-width:100%}input.input-lg{font-size:18px}input[type=checkbox].ace,input[type=radio].ace{opacity:0;position:absolute;z-index:1;width:18px;height:18px;cursor:pointer}label input[type=checkbox].ace,label input[type=radio].ace{z-index:-100!important;width:1!important;height:0!important}input[type=checkbox].ace:checked,input[type=checkbox].ace:focus,input[type=radio].ace:checked,input[type=radio].ace:focus{outline:0!important}input[type=checkbox].ace+.lbl,input[type=radio].ace+.lbl{position:relative;display:inline-block;margin:0;line-height:20px;min-height:18px;min-width:18px;font-weight:400;cursor:pointer}input[type=checkbox].ace+.lbl::before,input[type=radio].ace+.lbl::before{cursor:pointer;font-family:fontAwesome;font-weight:400;font-size:12px;color:#32a3ce;content:"\a0";background-color:#FAFAFA;border:1px solid #c8c8c8;box-shadow:0 1px 2px rgba(0,0,0,.05);border-radius:0;display:inline-block;text-align:center;height:16px;line-height:14px;min-width:16px;margin-right:1px;position:relative;top:-1px}input[type=checkbox].ace:checked+.lbl::before,input[type=radio].ace:checked+.lbl::before{display:inline-block;content:'\f00c';background-color:#F5F8FC;border-color:#adb8c0;box-shadow:0 1px 2px rgba(0,0,0,.05),inset 0 -15px 10px -12px rgba(0,0,0,.05),inset 15px 10px -12px rgba(255,255,255,.1)}input[type=checkbox].ace+.lbl:hover::before,input[type=checkbox].ace:hover+.lbl::before,input[type=radio].ace+.lbl:hover::before,input[type=radio].ace:hover+.lbl::before{border-color:#ff893c}input[type=checkbox].ace:active+.lbl::before,input[type=checkbox].ace:checked:active+.lbl::before,input[type=radio].ace:active+.lbl::before,input[type=radio].ace:checked:active+.lbl::before{box-shadow:0 1px 2px rgba(0,0,0,.05),inset 0 1px 3px rgba(0,0,0,.1)}input[type=checkbox].ace.ace-checkbox-2+.lbl::before,input[type=radio].ace.ace-checkbox-2+.lbl::before{box-shadow:none}input[type=checkbox].ace.ace-checkbox-2:checked+.lbl::before,input[type=radio].ace.ace-checkbox-2:checked+.lbl::before{background-color:#f9a021;border-color:#f9a021;color:#FFF}input[type=checkbox].ace.disabled+.lbl::before,input[type=checkbox].ace:disabled+.lbl::before,input[type=checkbox].ace[disabled]+.lbl::before,input[type=radio].ace.disabled+.lbl::before,input[type=radio].ace:disabled+.lbl::before,input[type=radio].ace[disabled]+.lbl::before{background-color:#DDD!important;border-color:#CCC!important;box-shadow:none!important;color:#BBB}input.ace+.lbl.padding-16::before{margin-right:16px}input.ace+.lbl.padding-12::before{margin-right:12px}input.ace+.lbl.padding-8::before{margin-right:8px}input.ace+.lbl.padding-4::before{margin-right:4px}input.ace+.lbl.padding-0::before{margin-right:0}input[type=radio].ace+.lbl::before{border-radius:100%;font-size:10px;font-family:FontAwesome;text-shadow:0 0 1px #32a3ce;line-height:15px;height:17px;min-width:17px}input[type=radio].ace:checked+.lbl::before{content:"\f111"}input[type=checkbox].ace.ace-switch{width:55px;height:25px}input[type=checkbox].ace.ace-switch+.lbl{margin:0 4px;min-height:24px}input[type=checkbox].ace.ace-switch+.lbl::before{font-family:'Open Sans';content:"ON\a0\a0\a0\a0\a0\a0\a0\a0\a0OFF";color:#999;text-shadow:0 0 0 #999;font-weight:400;font-size:11px;line-height:17px;height:20px;overflow:hidden;border-radius:12px;background-color:#F5F5F5;-webkit-box-shadow:inset 0 1px 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 1px 0 rgba(0,0,0,.15);border:1px solid #CCC;text-align:left;float:left;padding:0;width:52px;text-indent:-21px;margin-right:0;-webkit-transition:text-indent .3s ease;-o-transition:text-indent .3s ease;transition:text-indent .3s ease;top:auto}input[type=checkbox].ace.ace-switch+.lbl::after{font-family:'Open Sans';content:'III';font-size:12px;font-weight:400;letter-spacing:0;color:#AAA;text-shadow:none;background-color:#FFF;border-radius:100%;width:22px;height:22px;line-height:22px;text-align:center;position:absolute;top:-2px;left:-3px;-webkit-box-shadow:0 1px 1px 1px rgba(0,0,0,.3);box-shadow:0 1px 1px 1px rgba(0,0,0,.3);-webkit-transition:left .3s ease;-o-transition:left .3s ease;transition:left .3s ease}input[type=checkbox].ace.ace-switch:checked+.lbl::before{text-indent:8px;color:#FFF;text-shadow:0 0 0 #FFF;background-color:#8ab2c9;border-color:#6a8ca8}input[type=checkbox].ace.ace-switch:checked+.lbl::after{left:34px;background-color:#FFF;color:#98A0A5}input[type=checkbox].ace.ace-switch.ace-switch-2+.lbl::before{content:"YES\a0\a0\a0\a0\a0\a0\a0\a0\a0NO"}input[type=checkbox].ace.ace-switch.ace-switch-3+.lbl::after{font-family:FontAwesome;font-size:13px;line-height:22px;content:"\f00d";top:-1px;text-shadow:none;padding:0;text-align:center;color:#BBB;letter-spacing:0}input[type=checkbox].ace.ace-switch.ace-switch-3:checked+.lbl::after{content:"\f00c";color:#8AB2C9;text-shadow:none}input[type=checkbox].ace.ace-switch.ace-switch-4,input[type=checkbox].ace.ace-switch.ace-switch-5{width:60px}input[type=checkbox].ace.ace-switch.ace-switch-4+.lbl::before,input[type=checkbox].ace.ace-switch.ace-switch-5+.lbl::before{content:"ON\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0OFF";font-size:12px;line-height:21px;height:24px;overflow:hidden;border-radius:12px;background-color:#8b9aa3;border:1px solid #8b9aa3;color:#FFF;width:56px;text-shadow:0 0 0 #FFF;display:inline-block;position:relative;box-shadow:none;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}input[type=checkbox].ace.ace-switch.ace-switch-4+.lbl::after,input[type=checkbox].ace.ace-switch.ace-switch-5+.lbl::after{content:'III';font-size:11px;position:absolute;top:2px;left:2px;letter-spacing:0;width:20px;height:20px;line-height:19px;text-shadow:none!important;color:#939393;background-color:#FFF;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}input[type=checkbox].ace.ace-switch.ace-switch-4:checked+.lbl::before,input[type=checkbox].ace.ace-switch.ace-switch-5:checked+.lbl::before{background-color:#468fcc;border-color:#468FCC}input[type=checkbox].ace.ace-switch.ace-switch-4:checked+.lbl::after,input[type=checkbox].ace.ace-switch.ace-switch-5:checked+.lbl::after{left:34px;background-color:#FFF;color:#848484}input[type=checkbox].ace.ace-switch.ace-switch-5+.lbl::before{content:"YES\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0NO"}input[type=checkbox].ace.ace-switch.ace-switch-6+.lbl{position:relative}input[type=checkbox].ace.ace-switch.ace-switch-6+.lbl::before{font-family:FontAwesome;content:"\f00d";text-shadow:0 -1px 0 rgba(0,0,0,.25);box-shadow:none;border-width:0;font-weight:lighter;font-size:16px;border-radius:12px;display:inline-block;background-color:#888;color:#F2F2F2;width:52px;height:22px;line-height:21px;text-indent:32px;-webkit-transition:background .1s ease;-o-transition:background .1s ease;transition:background .1s ease}input[type=checkbox].ace.ace-switch.ace-switch-6+.lbl::after{content:'';text-shadow:0 -1px 0 rgba(0,0,0,.25);position:absolute;top:2px;left:3px;border-radius:12px;box-shadow:0 -1px 0 rgba(0,0,0,.25);width:18px;height:18px;text-align:center;background-color:#F2F2F2;border:4px solid #F2F2F2;-webkit-transition:left .2s ease;-o-transition:left .2s ease;transition:left .2s ease}input[type=checkbox].ace.ace-switch.ace-switch-6:checked+.lbl::before{content:"\f00c";text-indent:6px;color:#FFF;border-color:#b7d3e5;background-color:#ff893c}input[type=checkbox].ace.ace-switch.ace-switch-6:checked+.lbl::after{left:32px;background-color:#FFF;border:4px solid #FFF;text-shadow:0 -1px 0 rgba(0,200,0,.25)}input[type=checkbox].ace.ace-switch.ace-switch-7{width:75px}input[type=checkbox].ace.ace-switch.ace-switch-7+.lbl{position:relative}input[type=checkbox].ace.ace-switch.ace-switch-7+.lbl::before{content:"OFF\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0\a0ON";font-weight:bolder;font-size:13px;background-color:#FFF;border:2px solid #AAA;border-radius:0;box-shadow:none;color:#AAA;width:74px;height:26px;line-height:22px;overflow:hidden;text-indent:5px;display:inline-block;position:relative;-webkit-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}input[type=checkbox].ace.ace-switch.ace-switch-7+.lbl::after{content:'\f00d';font-family:FontAwesome;font-size:16px;position:absolute;top:3px;left:39px;width:32px;height:20px;line-height:18px;text-align:center;padding:0;text-indent:0;background-color:#AAA;color:#FFF;border-radius:0;box-shadow:none;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}input[type=checkbox].ace.ace-switch.ace-switch-7:checked+.lbl::before{color:#468fcc;background-color:#FFF;text-indent:-28px;border-color:#6fb3e0}input[type=checkbox].ace.ace-switch.ace-switch-7:checked+.lbl::after{left:3px;content:'\f00c';background-color:#468fcc;color:#FFF}input[type=checkbox].ace.ace-switch+.lbl[data-lbl]::before{content:attr(data-lbl)}input[type=checkbox].ace.ace-switch.btn-empty+.lbl::after{content:""}input[type=checkbox].ace.ace-switch.btn-rotate+.lbl::after{content:"\2261";line-height:20px;font-size:17px}input[type=checkbox].ace.ace-switch-4.btn-rotate+.lbl::after,input[type=checkbox].ace.ace-switch-5.btn-rotate+.lbl::after{line-height:17px}input[type=checkbox].ace.ace-switch.btn-flat+.lbl::after,input[type=checkbox].ace.ace-switch.btn-flat+.lbl::before{border-radius:0!important}input[type=checkbox].ace.ace-switch.ace-switch-4+.lbl::before,input[type=checkbox].ace.ace-switch.ace-switch-5+.lbl::before{text-indent:-24px}input[type=checkbox].ace.ace-switch.ace-switch-4:checked+.lbl::before,input[type=checkbox].ace.ace-switch.ace-switch-5:checked+.lbl::before{text-indent:7px}.ace-file-input{display:block;font-size:inherit;position:relative;height:30px}.ace-file-input input[type=file]{position:fixed;z-index:-2;opacity:0;filter:alpha(opacity=0)}.ace-file-input input[type=file]:focus{outline:0}.ace-file-input .ace-file-container{display:block;position:absolute;top:0;left:0;right:0;height:30px;background-color:#fff;border:1px solid #d5d5d5;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .15s;-o-transition:all .15s;transition:all .15s}.ace-file-input .ace-file-container:hover{-webkit-box-shadow:none;box-shadow:none;border-color:#f59942}.ace-file-input .ace-file-container:before{display:inline-block;content:attr(data-title);position:absolute;right:0;top:0;bottom:0;line-height:24px;text-align:center;padding:0 8px;background-color:#6fb3e0;color:#FFF;font-size:11px;font-weight:700;border:2px solid #FFF;border-left-width:4px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.ace-file-input .ace-file-container .ace-file-name{display:inline-block;height:28px;max-width:80%;white-space:nowrap;overflow:hidden;line-height:28px;color:#888;font-size:13px;vertical-align:top;position:static;padding-left:30px}.ace-file-input .ace-file-container .ace-file-name:after{display:inline-block;content:attr(data-title)}.ace-file-input .ace-file-container.selected{right:16px}.ace-file-input .ace-file-container.selected .ace-file-name{color:#666}.ace-file-input .ace-file-container .ace-icon{display:inline-block;position:absolute;left:0;top:0;bottom:0;line-height:24px;width:26px;text-align:center;font-family:FontAwesome;font-size:13px;border:2px solid #FFF;color:#FFF;-webkit-transition:all .1s;-o-transition:all .1s;transition:all .1s;background-color:#d1d1d1}.ace-file-input .ace-file-container.selected .ace-file-name .ace-icon{background-color:#efad62}.ace-file-input .ace-file-container.selected .ace-file-name .file-image{background-color:#bd7a9d}.ace-file-input .ace-file-container.selected .ace-file-name .file-video{background-color:#87b87f}.ace-file-input .ace-file-container.selected .ace-file-name .file-audio{background-color:#8b7ac9}.ace-file-input .ace-file-container.selected .ace-file-name .file-archive{background-color:#efad62}.ace-file-input .ace-file-container.hide-placeholder:before{display:none}.ace-file-input a:hover{text-decoration:none}.ace-file-input .remove{position:absolute;right:-8px;top:6px;display:none;width:17px;text-align:center;height:17px;line-height:15px;font-size:11px;font-weight:400;background-color:#fb7142;border-radius:100%;color:#FFF;text-decoration:none}.ace-file-input .ace-file-container.selected+.remove{display:inline-block}@media screen and (-webkit-min-device-pixel-ratio:0){.ace-file-input input[type=file]{position:absolute;width:0;height:0}}.ace-file-input input[type=file].disabled+.ace-file-container,.ace-file-input input[type=file][disabled]+.ace-file-container,.ace-file-input input[type=file][readonly]+.ace-file-container{cursor:not-allowed;background-color:#EEE}.ace-file-input input[type=file].disabled+.ace-file-container:hover,.ace-file-input input[type=file][disabled]+.ace-file-container:hover,.ace-file-input input[type=file][readonly]+.ace-file-container:hover{-webkit-box-shadow:none;box-shadow:none;border-color:#E3E3E3}.ace-file-input input[type=file].disabled+.ace-file-container:before,.ace-file-input input[type=file][disabled]+.ace-file-container:before,.ace-file-input input[type=file][readonly]+.ace-file-container:before{border-color:#EEE;background-color:#A1AAAF}.ace-file-input input[type=file][readonly]+.ace-file-container{cursor:default}.ace-file-input .ace-file-overlay{position:absolute;top:-2px;bottom:-2px;left:-2px;right:-10px;z-index:99;background-color:rgba(0,0,0,.5)}.ace-file-input .ace-file-overlay>.overlay-content{display:inline-block;position:relative;top:10%;left:0;right:0;text-align:center}.ace-file-multiple{height:auto}.ace-file-multiple .ace-file-container{position:relative;height:auto;border:1px dashed #aaa;border-radius:4px;text-align:center}.ace-file-multiple .ace-file-container:before{display:inline-block;content:attr(data-title);position:relative;right:0;left:0;margin:12px;line-height:22px;background-color:#FFF;color:#CCC;font-size:18px;font-weight:700;border-width:0}.ace-file-multiple .ace-file-container.selected .ace-file-name .ace-icon{display:inline-block;left:0;top:0;bottom:0;width:26px;text-align:center;font-family:FontAwesome;font-size:13px;border:2px solid #FFF;color:#FFF;-webkit-transition:all .1s;-o-transition:all .1s;transition:all .1s}.ace-file-multiple .ace-file-container .ace-file-name{position:relative;display:block;padding:0;height:auto;width:auto;max-width:100%;margin:0 4px;border-bottom:1px solid #DDD;text-align:left}.ace-file-multiple .ace-file-container .ace-file-name:first-child{margin-top:1px}.ace-file-multiple .ace-file-container .ace-file-name:last-child{border-bottom-width:0;margin-bottom:1px}.ace-file-multiple .ace-file-container .ace-file-name img{padding:2px;border:1px solid #D7D7D7;background-color:#FFF;background-repeat:no-repeat;background-position:center;margin:4px 8px 4px 1px}.ace-file-multiple .ace-file-container .ace-file-name:after{display:none}.ace-file-multiple .ace-file-container.selected .ace-file-name:after{display:inline-block;white-space:pre}.ace-file-multiple .ace-file-container .ace-file-name img+.ace-icon,.ace-file-multiple .ace-file-container.selected .ace-file-name img+.ace-icon{display:none}.ace-file-multiple .remove{right:-11px;top:-11px;border:3px solid #BBB;border-radius:32px;background-color:#FFF;color:red;width:23px;height:23px;line-height:15px}.ace-file-multiple .ace-file-container.selected+.remove:hover{border-color:#f4c0b1}.ace-file-multiple .ace-file-overlay{position:absolute;top:-12px;bottom:-6px;left:-12px;right:-12px}.ace-file-multiple .ace-file-overlay>.overlay-content{top:20%}.ace-file-multiple .ace-file-container .ace-file-name .ace-icon{position:relative;display:block;text-align:center;height:auto;line-height:64px;width:auto;font-size:64px;color:#D5D5D5;margin:4px 0;background-color:transparent}.ace-file-multiple .ace-file-container.selected:after{display:none}.ace-file-multiple .ace-file-container.selected .ace-file-name .ace-icon{position:relative;margin-right:4px;margin-left:2px;line-height:24px}.ace-file-multiple .ace-file-container .ace-file-name.large{text-align:center;border-bottom:1px solid #222;margin:0 1px 3px}.ace-file-multiple .ace-file-container .ace-file-name.large:last-child{margin:0 1px}.ace-file-multiple .ace-file-container .ace-file-name.large:after{position:absolute;top:auto;bottom:0;left:0;right:0;padding:0 4px;background-color:#555;color:#FFF;opacity:.8;filter:alpha(opacity=80)}.ace-file-multiple .ace-file-container .ace-file-name.large img{border-width:0;margin:0!important;padding:0}.ace-file-multiple input[type=file].disabled+.ace-file-container:hover,.ace-file-multiple input[type=file][disabled]+.ace-file-container:hover,.ace-file-multiple input[type=file][readonly]+.ace-file-container:hover{border-color:#AAA}.ace-file-multiple input[type=file].disabled+.ace-file-container:before,.ace-file-multiple input[type=file][disabled]+.ace-file-container:before,.ace-file-multiple input[type=file][readonly]+.ace-file-container:before{background-color:transparent}.ace-file-multiple input[type=file].disabled+.ace-file-container .ace-icon,.ace-file-multiple input[type=file][disabled]+.ace-file-container .ace-icon,.ace-file-multiple input[type=file][readonly]+.ace-file-container .ace-icon{border-color:#EEE}.input-group .input-group-addon{border-radius:0!important}.form-group.has-success .input-group .input-group-addon{border-color:#92bf65}.form-group.has-error .input-group .input-group-addon{border-color:#f09784}.form-group.has-warning .input-group .input-group-addon{border-color:#e0c43a}.form-group.has-info .input-group .input-group-addon{border-color:#64a6bc}.input-group>.btn{line-height:20px;padding:0 6px;border-radius:0!important}.input-group>.btn.btn-sm{line-height:22px}.input-group>.btn+.btn{margin-left:1px}.input-group>.btn-group>.btn{line-height:23px}.input-group>.btn-group>.btn.btn-sm{line-height:26px}.input-group>.btn-group>.btn.btn-sm>.caret,.input-group>.btn-group>.btn>.caret,.input-group>.btn.btn-sm>.caret,.input-group>.btn>.caret{margin-top:10px}.input-group.input-group-compact{width:1px}.form-group input[type=color],.form-group input[type=date],.form-group input[type=datetime-local],.form-group input[type=datetime],.form-group input[type=email],.form-group input[type=month],.form-group input[type=number],.form-group input[type=password],.form-group input[type=search],.form-group input[type=tel],.form-group input[type=text],.form-group input[type=time],.form-group input[type=url],.form-group input[type=week],.form-group select,.form-group textarea{background:#FFF}.form-group.has-success input,.form-group.has-success select,.form-group.has-success textarea{border-color:#92bf65;color:#8bad4c;-webkit-box-shadow:none;box-shadow:none}.form-group.has-success input:focus,.form-group.has-success select:focus,.form-group.has-success textarea:focus{-webkit-box-shadow:0 0 0 2px rgba(130,188,58,.3);box-shadow:0 0 0 2px rgba(130,188,58,.3);color:#786;border-color:#81a85a}.form-group.has-success .ace-icon,.form-group.has-success input:focus+.ace-icon,.form-group.has-success select:focus+.ace-icon,.form-group.has-success textarea:focus+.ace-icon{color:#8bad4c}.form-group.has-success .btn .ace-icon{color:inherit}.form-group.has-success .control-label,.form-group.has-success .help-block,.form-group.has-success .help-inline{color:#7ba065}.form-group.has-info input,.form-group.has-info select,.form-group.has-info textarea{border-color:#64a6bc;color:#4b89aa;-webkit-box-shadow:none;box-shadow:none}.form-group.has-info input:focus,.form-group.has-info select:focus,.form-group.has-info textarea:focus{-webkit-box-shadow:0 0 0 2px rgba(58,120,188,.3);box-shadow:0 0 0 2px rgba(58,120,188,.3);color:#678;border-color:#5a81a8}.form-group.has-info .ace-icon,.form-group.has-info input:focus+.ace-icon,.form-group.has-info select:focus+.ace-icon,.form-group.has-info textarea:focus+.ace-icon{color:#4b89aa}.form-group.has-info .btn .ace-icon{color:inherit}.form-group.has-info .control-label,.form-group.has-info .help-block,.form-group.has-info .help-inline{color:#657ba0}.form-group.has-error input,.form-group.has-error select,.form-group.has-error textarea{border-color:#f09784;color:#d68273;-webkit-box-shadow:none;box-shadow:none}.form-group.has-error input:focus,.form-group.has-error select:focus,.form-group.has-error textarea:focus{-webkit-box-shadow:0 0 0 2px rgba(219,137,120,.3);box-shadow:0 0 0 2px rgba(219,137,120,.3);color:#866;border-color:#db8978}.form-group.has-error .ace-icon,.form-group.has-error input:focus+.ace-icon,.form-group.has-error select:focus+.ace-icon,.form-group.has-error textarea:focus+.ace-icon{color:#d68273}.form-group.has-error .btn .ace-icon{color:inherit}.form-group.has-error .control-label,.form-group.has-error .help-block,.form-group.has-error .help-inline{color:#d16e6c}.form-group.has-warning input,.form-group.has-warning select,.form-group.has-warning textarea{border-color:#e0c43a;color:#d3bd50;-webkit-box-shadow:none;box-shadow:none}.form-group.has-warning input:focus,.form-group.has-warning select:focus,.form-group.has-warning textarea:focus{-webkit-box-shadow:0 0 0 2px rgba(216,188,65,.3);box-shadow:0 0 0 2px rgba(216,188,65,.3);color:#875;border-color:#d8bc41}.form-group.has-warning .ace-icon,.form-group.has-warning input:focus+.ace-icon,.form-group.has-warning select:focus+.ace-icon,.form-group.has-warning textarea:focus+.ace-icon{color:#d3bd50}.form-group.has-warning .btn .ace-icon{color:inherit}.form-group.has-warning .control-label,.form-group.has-warning .help-block,.form-group.has-warning .help-inline{color:#d19d59}.form-group input:disabled,.form-group input[disabled]{color:#848484!important;background-color:#eee!important}@media only screen and (max-width:767px){.help-inline,.input-icon+.help-inline{padding-left:0;display:block!important}}.tab-content{border:1px solid #c5d0dc;padding:16px 12px;position:relative}.tab-content.no-padding{padding:0}.tab-content.no-border{border:none;padding:12px}.tab-content.padding-32{padding:32px 24px}.tab-content.no-border.padding-32{padding:32px}.tab-content.padding-30{padding:30px 23px}.tab-content.no-border.padding-30{padding:30px}.tab-content.padding-28{padding:28px 21px}.tab-content.no-border.padding-28{padding:28px}.tab-content.padding-26{padding:26px 20px}.tab-content.no-border.padding-26{padding:26px}.tab-content.padding-24{padding:24px 18px}.tab-content.no-border.padding-24{padding:24px}.tab-content.padding-22{padding:22px 17px}.tab-content.no-border.padding-22{padding:22px}.tab-content.padding-20{padding:20px 15px}.tab-content.no-border.padding-20{padding:20px}.tab-content.padding-18{padding:18px 14px}.tab-content.no-border.padding-18{padding:18px}.tab-content.padding-16{padding:16px 12px}.tab-content.no-border.padding-16{padding:16px}.tab-content.padding-14{padding:14px 11px}.tab-content.no-border.padding-14{padding:14px}.tab-content.padding-12{padding:12px 9px}.tab-content.no-border.padding-12{padding:12px}.tab-content.padding-10{padding:10px 8px}.tab-content.no-border.padding-10{padding:10px}.tab-content.padding-8{padding:8px 6px}.tab-content.no-border.padding-8{padding:8px}.tab-content.padding-6{padding:6px 5px}.tab-content.no-border.padding-6{padding:6px}.tab-content.padding-4{padding:4px 3px}.tab-content.no-border.padding-4{padding:4px}.tab-content.no-border.padding-2,.tab-content.padding-2{padding:2px}.tab-content.no-border.padding-0,.tab-content.padding-0{padding:0}.nav.nav-tabs.padding-32{padding-left:32px}.tabs-left>.nav.nav-tabs.padding-32,.tabs-right>.nav.nav-tabs.padding-32{padding-left:0;padding-top:32px}.nav.nav-tabs.padding-30{padding-left:30px}.tabs-left>.nav.nav-tabs.padding-30,.tabs-right>.nav.nav-tabs.padding-30{padding-left:0;padding-top:30px}.nav.nav-tabs.padding-28{padding-left:28px}.tabs-left>.nav.nav-tabs.padding-28,.tabs-right>.nav.nav-tabs.padding-28{padding-left:0;padding-top:28px}.nav.nav-tabs.padding-26{padding-left:26px}.tabs-left>.nav.nav-tabs.padding-26,.tabs-right>.nav.nav-tabs.padding-26{padding-left:0;padding-top:26px}.nav.nav-tabs.padding-24{padding-left:24px}.tabs-left>.nav.nav-tabs.padding-24,.tabs-right>.nav.nav-tabs.padding-24{padding-left:0;padding-top:24px}.nav.nav-tabs.padding-22{padding-left:22px}.tabs-left>.nav.nav-tabs.padding-22,.tabs-right>.nav.nav-tabs.padding-22{padding-left:0;padding-top:22px}.nav.nav-tabs.padding-20{padding-left:20px}.tabs-left>.nav.nav-tabs.padding-20,.tabs-right>.nav.nav-tabs.padding-20{padding-left:0;padding-top:20px}.nav.nav-tabs.padding-18{padding-left:18px}.tabs-left>.nav.nav-tabs.padding-18,.tabs-right>.nav.nav-tabs.padding-18{padding-left:0;padding-top:18px}.nav.nav-tabs.padding-16{padding-left:16px}.tabs-left>.nav.nav-tabs.padding-16,.tabs-right>.nav.nav-tabs.padding-16{padding-left:0;padding-top:16px}.nav.nav-tabs.padding-14{padding-left:14px}.tabs-left>.nav.nav-tabs.padding-14,.tabs-right>.nav.nav-tabs.padding-14{padding-left:0;padding-top:14px}.nav.nav-tabs.padding-12{padding-left:12px}.tabs-left>.nav.nav-tabs.padding-12,.tabs-right>.nav.nav-tabs.padding-12{padding-left:0;padding-top:12px}.nav.nav-tabs.padding-10{padding-left:10px}.tabs-left>.nav.nav-tabs.padding-10,.tabs-right>.nav.nav-tabs.padding-10{padding-left:0;padding-top:10px}.nav.nav-tabs.padding-8{padding-left:8px}.tabs-left>.nav.nav-tabs.padding-8,.tabs-right>.nav.nav-tabs.padding-8{padding-left:0;padding-top:8px}.nav.nav-tabs.padding-6{padding-left:6px}.tabs-left>.nav.nav-tabs.padding-6,.tabs-right>.nav.nav-tabs.padding-6{padding-left:0;padding-top:6px}.nav.nav-tabs.padding-4{padding-left:4px}.tabs-left>.nav.nav-tabs.padding-4,.tabs-right>.nav.nav-tabs.padding-4{padding-left:0;padding-top:4px}.nav.nav-tabs.padding-2{padding-left:2px}.tabs-left>.nav.nav-tabs.padding-2,.tabs-right>.nav.nav-tabs.padding-2{padding-left:0;padding-top:2px}.nav-tabs{border-color:#C5D0DC;margin-bottom:0!important;margin-left:0;position:relative;top:1px}.nav-tabs>li>a{padding:7px 12px 8px}.nav-tabs>li>a,.nav-tabs>li>a:focus{border-radius:0!important;border-color:#c5d0dc;background-color:#F9F9F9;color:#999;margin-right:-1px;line-height:18px;position:relative}.nav-tabs>li>a:hover{background-color:#FFF;color:#4c8fbd;border-color:#c5d0dc}.nav-tabs>li>a:active,.nav-tabs>li>a:focus{outline:0!important}.nav-tabs>li:first-child>a{margin-left:0}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#576373;border-color:#c5d0dc #c5d0dc transparent;border-top:2px solid #4c8fbd;background-color:#FFF;z-index:1;line-height:18px;margin-top:-1px;box-shadow:0 -2px 3px 0 rgba(0,0,0,.15)}.tabs-below>.nav-tabs{top:auto;margin-bottom:0;margin-top:-1px;border-color:#c5d0dc;border-bottom-width:0}.tabs-below>.nav-tabs>li>a,.tabs-below>.nav-tabs>li>a:focus,.tabs-below>.nav-tabs>li>a:hover{border-color:#c5d0dc}.tabs-below>.nav-tabs>li.active>a,.tabs-below>.nav-tabs>li.active>a:focus,.tabs-below>.nav-tabs>li.active>a:hover{border-color:transparent #c5d0dc #c5d0dc;border-top-width:1px;border-bottom:2px solid #4c8fbd;margin-top:0;box-shadow:0 2px 3px 0 rgba(0,0,0,.15)}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:60px}.tabs-left>.nav-tabs{top:auto;margin-bottom:0;border-color:#c5d0dc;float:left}.tabs-left>.nav-tabs>li{float:none!important}.tabs-left>.nav-tabs>li>a,.tabs-left>.nav-tabs>li>a:focus,.tabs-left>.nav-tabs>li>a:hover{border-color:#c5d0dc;margin:0 -1px 0 0}.tabs-left>.nav-tabs>li.active>a,.tabs-left>.nav-tabs>li.active>a:focus,.tabs-left>.nav-tabs>li.active>a:hover{border-color:#c5d0dc transparent #c5d0dc #c5d0dc;border-top-width:1px;border-left:2px solid #4c8fbd;margin:0 -1px;-webkit-box-shadow:-2px 0 3px 0 rgba(0,0,0,.15)!important;box-shadow:-2px 0 3px 0 rgba(0,0,0,.15)!important}.tabs-right>.nav-tabs{top:auto;margin-bottom:0;border-color:#c5d0dc;float:right}.tabs-right>.nav-tabs>li{float:none!important}.tabs-right>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a:focus,.tabs-right>.nav-tabs>li>a:hover{border-color:#c5d0dc;margin:0 -1px}.tabs-right>.nav-tabs>li.active>a,.tabs-right>.nav-tabs>li.active>a:focus,.tabs-right>.nav-tabs>li.active>a:hover{border-color:#c5d0dc #c5d0dc #c5d0dc transparent;border-top-width:1px;border-right:2px solid #4c8fbd;margin:0 -2px 0 -1px;-webkit-box-shadow:2px 0 3px 0 rgba(0,0,0,.15);box-shadow:2px 0 3px 0 rgba(0,0,0,.15)}.nav-tabs>li>a>.badge{padding:1px 5px;line-height:15px;opacity:.75}.nav-tabs>li>a>.ace-icon{opacity:.75}.nav-tabs>li.active>a>.ace-icon,.nav-tabs>li.active>a>.badge{opacity:1}.nav-tabs li .ace-icon{width:1.25em;display:inline-block;text-align:center}.nav-tabs>li.open .dropdown-toggle{background-color:#4F99C6;border-color:#4F99C6;color:#FFF}.nav-tabs>li.open .dropdown-toggle>.ace-icon{color:#FFF!important}.tabs-left .tab-content,.tabs-right .tab-content{overflow:auto}.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:focus,.nav>li.dropdown.open.active>a:hover{background-color:#4F99C6;border-color:#4F99C6;color:#FFF}.nav-pills .open .dropdown-toggle>.ace-icon,.nav>li.dropdown.open.active>a:focus>.ace-icon,.nav>li.dropdown.open.active>a:hover>.ace-icon{color:#FFF!important}.nav-tabs>li:not(.active):not(.open)>a:not(:hover)>.ace-icon:first-child.disabled{color:#909090!important}.nav-tabs.tab-size-bigger>li>a{padding-left:14px;padding-right:14px}.nav-tabs.tab-size-bigger>li>a>.ace-icon:first-child{display:block;margin-bottom:6px;width:auto}.nav-tabs.tab-space-1>li>a{margin-right:1px}.nav-tabs.tab-space-2>li>a{margin-right:2px}.nav-tabs.tab-space-3>li>a{margin-right:3px}.nav-tabs.tab-space-4>li>a{margin-right:4px}.nav-tabs[class*=tab-color-]>li>a,.nav-tabs[class*=tab-color-]>li>a:focus,.nav-tabs[class*=tab-color-]>li>a:hover{color:#FFF;border-color:transparent;margin-right:3px}.nav-tabs[class*=tab-color-]>li>a>.badge{border-radius:2px}.nav-tabs[class*=tab-color-]>li:not(.active)>a:hover{opacity:.85;border-color:rgba(0,0,0,.15) rgba(0,0,0,.15) transparent}.nav-tabs[class*=tab-color-]>li:not(.active)>a>.ace-icon:first-child{color:#FFF!important}.nav-tabs[class*=tab-color-]>li:not(.active)>a>.badge{color:rgba(0,0,0,.4)!important;background-color:#FFF!important;border-radius:2px}.nav-tabs.tab-color-blue>li>a,.nav-tabs.tab-color-blue>li>a:focus{background-color:#7db4d8}.nav-tabs[class*=tab-color-]>li.active>a,.nav-tabs[class*=tab-color-]>li.active>a:focus,.nav-tabs[class*=tab-color-]>li.active>a:hover{background-color:#FFF;color:#4f80a0;-webkit-box-shadow:none!important;box-shadow:none!important}.nav-tabs.tab-color-blue>li.active>a,.nav-tabs.tab-color-blue>li.active>a:focus,.nav-tabs.tab-color-blue>li.active>a:hover{color:#4c718a;border-color:#7db4d8 #7db4d8 transparent}.tabs-below .nav-tabs.tab-color-blue>li.active>a{border-color:transparent #7db4d8 #7db4d8}.nav-tabs.tab-color-blue{border-bottom-color:#C5D0DC}.nav-tabs.background-blue{padding-top:6px;background-color:#EFF3F8;border:1px solid #C5D0DC}.tabs-below .nav-tabs.background-blue{padding-top:0;padding-bottom:6px}.tabs-below .nav-tabs.tab-color-blue{border-top:none;border-bottom-color:#C5D0DC}.accordion-style1.panel-group .panel{border-radius:0;border-color:#cdd8e3;background-color:#FFF;box-shadow:none}.accordion-style1.panel-group .panel:last-child{border-bottom-width:1px}.accordion-style1.panel-group .panel .collapse{background-color:#FFF}.accordion-style1.panel-group .panel+.panel{margin-top:2px}.accordion-style1.panel-group .panel-heading+.panel-collapse .panel-body{border-top-color:#cdd8e3!important}.accordion-style1.panel-group .panel-heading{padding:0}.accordion-style1.panel-group .panel-heading .accordion-toggle{color:#4c8fbd;background-color:#eef4f9;position:relative;font-weight:700;font-size:13px;line-height:1;padding:10px;display:block}.accordion-style1.panel-group .panel-heading .accordion-toggle.collapsed{color:#478fca;font-weight:400;background-color:#F9F9F9}.accordion-style1.panel-group .panel-heading .accordion-toggle:hover{color:#6ea6cc;background-color:#f1f8fd;text-decoration:none}.accordion-style1.panel-group .panel-heading .accordion-toggle:active,.accordion-style1.panel-group .panel-heading .accordion-toggle:focus{outline:0;text-decoration:none}.accordion-style1.panel-group .panel-heading .accordion-toggle>.ace-icon:first-child{width:16px}.accordion-style1.panel-group .panel-heading .accordion-toggle:hover>.ace-icon:first-child{text-decoration:none}.accordion-style1.panel-group .collapse.in>.panel-body,.accordion-style1.panel-group .panel-body{border-top:1px solid #cdd8e3}.accordion-style1.panel-group.no-padding{padding:0}.accordion-style2.panel-group .panel{border-width:0}.accordion-style2.panel-group .panel:last-child{border-bottom-width:0}.accordion-style2.panel-group .panel+.panel{margin-top:4px}.accordion-style2.panel-group .panel .panel-body{border-top:none}.accordion-style2.panel-group .panel-heading .accordion-toggle{background-color:#EDF3F7;border:2px solid #6EAED1;border-width:0 0 0 2px}.accordion-style2.panel-group .panel-heading .accordion-toggle:hover{text-decoration:none}.accordion-style2.panel-group .panel-heading .accordion-toggle.collapsed{background-color:#F3F3F3;color:#606060;border-width:0 0 0 1px;border-color:#D9D9D9}.accordion-style2.panel-group .panel-heading .accordion-toggle.collapsed:hover{background-color:#F6F6F6;color:#438EB9;text-decoration:none}.accordion-style2.panel-group .collapse.in>.panel-body,.accordion-style2.panel-group .panel-body{border-top:none}.accordion-style2.panel-group .accordion-style2.panel-group .panel{border-bottom:1px dotted #D9D9D9}.accordion-style2.panel-group .accordion-style2.panel-group .panel:last-child{border-bottom:none}.accordion-style2.panel-group .accordion-style2.panel-group .panel .panel-heading,.accordion-style2.panel-group .accordion-style2.panel-group .panel .panel-heading .accordion-toggle{background-color:transparent;border-width:0;font-size:13px;padding-top:6px;padding-bottom:8px}.accordion-style2.panel-group .accordion-style2.panel-group .panel .panel-heading{padding-top:0;padding-bottom:0}.table-bordered,td,th{border-radius:0!important}.table>thead>tr{color:#707070;font-weight:400;background:#F2F2F2 repeat-x;background-image:-webkit-linear-gradient(top,#f8f8f8 0,#ececec 100%);background-image:-o-linear-gradient(top,#f8f8f8 0,#ececec 100%);background-image:linear-gradient(to bottom,#f8f8f8 0,#ececec 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0)}.table>thead>tr>th{border-color:#ddd;font-weight:700}.table>thead>tr>th .ace-icon:first-child{margin-right:2px}.table>thead>tr>th:first-child{border-left-color:#F1F1F1}.table>thead>tr>th:left-child{border-right-color:#F1F1F1}.table.table-bordered>thead>tr>th{vertical-align:middle}.table.table-bordered>thead>tr>th:first-child{border-left-color:#ddd}td.center,th.center{text-align:center}td .lbl,th .lbl{margin-bottom:0}td .lbl:only-child,th .lbl:only-child{vertical-align:top}.table-header{background-color:#307ecc;color:#FFF;font-size:14px;line-height:38px;padding-left:12px;margin-bottom:1px}.table-header .close{margin-right:8px;margin-top:0;opacity:.45;filter:alpha(opacity=45)}.table-header .close:hover{opacity:.75;filter:alpha(opacity=75)}.widget-box{padding:0;-webkit-box-shadow:none;box-shadow:none;margin:3px 0;border:1px solid #CCC}@media only screen and (max-width:767px){.widget-box{margin-top:7px;margin-bottom:7px}}.widget-header{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;position:relative;min-height:38px;background:#f7f7f7 repeat-x;background-image:-webkit-linear-gradient(top,#fff 0,#eee 100%);background-image:-o-linear-gradient(top,#fff 0,#eee 100%);background-image:linear-gradient(to bottom,#fff 0,#eee 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);color:#669fc7;border-bottom:1px solid #DDD;padding-left:12px}.widget-header:after,.widget-header:before{content:"";display:table;line-height:0}.widget-header:after{clear:right}.widget-box.collapsed>.widget-header{border-bottom-width:0}.collapsed.fullscreen>.widget-header{border-bottom-width:1px}.collapsed>.widget-body{display:none}.widget-header-flat{background:#F7F7F7;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.widget-header-large{min-height:49px;padding-left:18px}.widget-header-small{min-height:31px;padding-left:10px}.widget-header>.widget-title{line-height:36px;padding:0;margin:0;display:inline}.widget-header>.widget-title>.ace-icon{margin-right:5px;font-weight:400;display:inline-block}.widget-header-large>.widget-title{line-height:48px}.widget-header-small>.widget-title{line-height:30px}.widget-toolbar{display:inline-block;padding:0 10px;line-height:37px;float:right;position:relative}.widget-header-large>.widget-toolbar{line-height:48px}.widget-header-small>.widget-toolbar{line-height:29px}.widget-toolbar.no-padding{padding:0}.widget-toolbar.padding-5{padding:0 5px}.widget-toolbar:before{display:inline-block;content:"";position:absolute;top:3px;bottom:3px;left:-1px;border:1px solid #D9D9D9;border-width:0 1px 0 0}.widget-header-large>.widget-toolbar:before{top:6px;bottom:6px}[class*=widget-color-]>.widget-header>.widget-toolbar:before{border-color:#EEE}.widget-color-orange>.widget-header>.widget-toolbar:before{border-color:#FEA}.widget-color-dark>.widget-header>.widget-toolbar:before{border-color:#222;box-shadow:-1px 0 0 rgba(255,255,255,.2),inset 1px 0 0 rgba(255,255,255,.1)}.widget-toolbar.no-border:before{display:none}.widget-toolbar label{display:inline-block;vertical-align:middle;margin-bottom:0}.widget-toolbar>.widget-menu>a,.widget-toolbar>a{font-size:14px;margin:0 1px;display:inline-block;padding:0;line-height:24px}.widget-toolbar>.widget-menu>a:hover,.widget-toolbar>a:hover{text-decoration:none}.widget-header-large>.widget-toolbar>.widget-menu>a,.widget-header-large>.widget-toolbar>a{font-size:15px;margin:0 1px}.widget-toolbar>.btn{line-height:27px;margin-top:-2px}.widget-toolbar>.btn.smaller{line-height:26px}.widget-toolbar>.btn.bigger{line-height:28px}.widget-toolbar>.btn-sm{line-height:24px}.widget-toolbar>.btn-sm.smaller{line-height:23px}.widget-toolbar>.btn-sm.bigger{line-height:25px}.widget-toolbar>.btn-xs{line-height:22px}.widget-toolbar>.btn-xs.smaller{line-height:21px}.widget-toolbar>.btn-xs.bigger{line-height:23px}.widget-toolbar>.btn-minier{line-height:18px}.widget-toolbar>.btn-minier.smaller{line-height:17px}.widget-toolbar>.btn-minier.bigger{line-height:19px}.widget-toolbar>.btn-lg{line-height:36px}.widget-toolbar>.btn-lg.smaller{line-height:34px}.widget-toolbar>.btn-lg.bigger{line-height:38px}.widget-toolbar-dark{background:#444}.widget-toolbar-light{background:rgba(255,255,255,.85)}.widget-toolbar>.widget-menu{display:inline-block;position:relative}.widget-toolbar>.widget-menu>a[data-action],.widget-toolbar>a[data-action]{-webkit-transition:transform .1s;-o-transition:transform .1s;transition:transform .1s}.widget-toolbar>.widget-menu>a[data-action]>.ace-icon,.widget-toolbar>a[data-action]>.ace-icon{margin-right:0}.widget-toolbar>.widget-menu>a[data-action]:focus,.widget-toolbar>a[data-action]:focus{text-decoration:none;outline:0}.widget-toolbar>.widget-menu>a[data-action]:hover,.widget-toolbar>a[data-action]:hover{-moz-transform:scale(1.2);-webkit-transform:scale(1.2);-o-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.widget-body{background-color:#FFF}.widget-main{padding:12px}.widget-main.padding-32{padding:32px}.widget-main.padding-30{padding:30px}.widget-main.padding-28{padding:28px}.widget-main.padding-26{padding:26px}.widget-main.padding-24{padding:24px}.widget-main.padding-22{padding:22px}.widget-main.padding-20{padding:20px}.widget-main.padding-18{padding:18px}.widget-main.padding-16{padding:16px}.widget-main.padding-14{padding:14px}.widget-main.padding-12{padding:12px}.widget-main.padding-10{padding:10px}.widget-main.padding-8{padding:8px}.widget-main.padding-6{padding:6px}.widget-main.padding-4{padding:4px}.widget-main.padding-2{padding:2px}.widget-main.no-padding,.widget-main.padding-0{padding:0}.widget-toolbar .progress{vertical-align:middle;display:inline-block;margin:0}.widget-toolbar>.dropdown,.widget-toolbar>.dropup{display:inline-block}.widget-box>.widget-header>.widget-toolbar>.widget-menu>[data-action=settings],.widget-box>.widget-header>.widget-toolbar>[data-action=settings],.widget-color-dark>.widget-header>.widget-toolbar>.widget-menu>[data-action=settings],.widget-color-dark>.widget-header>.widget-toolbar>[data-action=settings]{color:#99CADB}.widget-box>.widget-header>.widget-toolbar>.widget-menu>[data-action=reload],.widget-box>.widget-header>.widget-toolbar>[data-action=reload],.widget-color-dark>.widget-header>.widget-toolbar>.widget-menu>[data-action=reload],.widget-color-dark>.widget-header>.widget-toolbar>[data-action=reload]{color:#ACD392}.widget-box>.widget-header>.widget-toolbar>.widget-menu>[data-action=collapse],.widget-box>.widget-header>.widget-toolbar>[data-action=collapse],.widget-color-dark>.widget-header>.widget-toolbar>.widget-menu>[data-action=collapse],.widget-color-dark>.widget-header>.widget-toolbar>[data-action=collapse]{color:#AAA}.widget-box>.widget-header>.widget-toolbar>.widget-menu>[data-action=close],.widget-box>.widget-header>.widget-toolbar>[data-action=close],.widget-color-dark>.widget-header>.widget-toolbar>.widget-menu>[data-action=close],.widget-color-dark>.widget-header>.widget-toolbar>[data-action=close]{color:#E09E96}.widget-box[class*=widget-color-]>.widget-header{color:#FFF;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.widget-color-blue{border-color:#307ecc}.widget-color-blue>.widget-header{background:#307ecc;border-color:#307ecc}.widget-color-blue2{border-color:#5090c1}.widget-color-blue2>.widget-header{background:#5090c1;border-color:#5090c1}.widget-color-blue3{border-color:#6379aa}.widget-color-blue3>.widget-header{background:#6379aa;border-color:#6379aa}.widget-color-green{border-color:#82af6f}.widget-color-green>.widget-header{background:#82af6f;border-color:#82af6f}.widget-color-green2{border-color:#2e8965}.widget-color-green2>.widget-header{background:#2e8965;border-color:#2e8965}.widget-color-green3{border-color:#4ebc30}.widget-color-green3>.widget-header{background:#4ebc30;border-color:#4ebc30}.widget-color-red{border-color:#e2755f}.widget-color-red>.widget-header{background:#e2755f;border-color:#e2755f}.widget-color-red2{border-color:#e04141}.widget-color-red2>.widget-header{background:#e04141;border-color:#e04141}.widget-color-red3{border-color:#d15b47}.widget-color-red3>.widget-header{background:#d15b47;border-color:#d15b47}.widget-color-purple{border-color:#7e6eb0}.widget-color-purple>.widget-header{background:#7e6eb0;border-color:#7e6eb0}.widget-color-pink{border-color:#ce6f9e}.widget-color-pink>.widget-header{background:#ce6f9e;border-color:#ce6f9e}.widget-color-orange{border-color:#e8b10d}.widget-color-orange>.widget-header{color:#855d10!important;border-color:#e8b10d;background:#ffc657}.widget-color-dark{border-color:#5a5a5a}.widget-color-dark>.widget-header{border-color:#666;background:#404040}.widget-color-grey{border-color:#9e9e9e}.widget-color-grey>.widget-header{border-color:#aaa;background:#848484}.widget-box.transparent{border-width:0}.widget-box.transparent>.widget-header{background:0 0;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-width:0;border-bottom:1px solid #DCE8F1;color:#4383B4;padding-left:3px}.widget-box.transparent>.widget-header-large{padding-left:5px}.widget-box.transparent>.widget-header-small{padding-left:1px}.widget-box.transparent>.widget-body{border-width:0;background-color:transparent}[class*=widget-color-]>.widget-header>.widget-toolbar>.widget-menu>[data-action],[class*=widget-color-]>.widget-header>.widget-toolbar>[data-action]{text-shadow:0 1px 1px rgba(0,0,0,.2)}[class*=widget-color-]>.widget-header>.widget-toolbar>.widget-menu>[data-action=settings],[class*=widget-color-]>.widget-header>.widget-toolbar>[data-action=settings]{color:#D3E4ED}[class*=widget-color-]>.widget-header>.widget-toolbar>.widget-menu>[data-action=reload],[class*=widget-color-]>.widget-header>.widget-toolbar>[data-action=reload]{color:#DEEAD3}[class*=widget-color-]>.widget-header>.widget-toolbar>.widget-menu>[data-action=collapse],[class*=widget-color-]>.widget-header>.widget-toolbar>[data-action=collapse]{color:#E2E2E2}[class*=widget-color-]>.widget-header>.widget-toolbar>.widget-menu>[data-action=close],[class*=widget-color-]>.widget-header>.widget-toolbar>[data-action=close]{color:#FFD9D5}.widget-color-orange>.widget-header>.widget-toolbar>.widget-menu>[data-action],.widget-color-orange>.widget-header>.widget-toolbar>[data-action]{text-shadow:none}.widget-color-orange>.widget-header>.widget-toolbar>.widget-menu>[data-action=settings],.widget-color-orange>.widget-header>.widget-toolbar>[data-action=settings]{color:#559AAB}.widget-color-orange>.widget-header>.widget-toolbar>.widget-menu>[data-action=reload],.widget-color-orange>.widget-header>.widget-toolbar>[data-action=reload]{color:#7CA362}.widget-color-orange>.widget-header>.widget-toolbar>.widget-menu>[data-action=collapse],.widget-color-orange>.widget-header>.widget-toolbar>[data-action=collapse]{color:#777}.widget-color-orange>.widget-header>.widget-toolbar>.widget-menu>[data-action=close],.widget-color-orange>.widget-header>.widget-toolbar>[data-action=close]{color:#A05656}.widget-box.light-border[class*=widget-color-]:not(.fullscreen){border-width:0}.widget-box.light-border[class*=widget-color-]:not(.fullscreen)>.widget-header{border:1px solid;border-color:inherit}.widget-box.light-border[class*=widget-color-]:not(.fullscreen)>.widget-body{border:1px solid;border-color:#D6D6D6;border-width:0 1px 1px}.widget-box.no-border{border-width:0}.widget-box.fullscreen{position:fixed;margin:0;top:0;bottom:0;left:0;right:0;background-color:#FFF;border-width:3px;z-index:1040;-moz-backface-visibility:hidden}.widget-box.fullscreen:not([class*=widget-color-]){border-color:#AAA}.widget-body .table{border-top:1px solid #E5E5E5}.widget-body .table thead:first-child tr{background:#FFF}[class*=widget-color-]>.widget-body .table thead:first-child tr{background:#f2f2f2 repeat-x;background-image:-webkit-linear-gradient(top,#f8f8f8 0,#ececec 100%);background-image:-o-linear-gradient(top,#f8f8f8 0,#ececec 100%);background-image:linear-gradient(to bottom,#f8f8f8 0,#ececec 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0)}.widget-body .table.table-bordered thead:first-child>tr{border-top-width:0}.widget-main.no-padding .table{margin-bottom:0;border-width:0}.widget-main.no-padding .table-bordered td:first-child,.widget-main.no-padding .table-bordered th:first-child{border-left-width:0}.transparent>.widget-body .widget-main .table-bordered>tbody>tr>td:last-child,.transparent>.widget-body .widget-main .table-bordered>tfoot>tr>td:last-child,.transparent>.widget-body .widget-main .table-bordered>thead>tr>th:last-child,.widget-main.no-padding .table-bordered>tbody>tr>td:last-child,.widget-main.no-padding .table-bordered>tfoot>tr>td:last-child,.widget-main.no-padding .table-bordered>thead>tr>th:last-child{border-right-width:0!important}.transparent>.widget-body .widget-main .table-bordered>tbody>tr:last-child>td,.widget-main.no-padding .table-bordered>tbody>tr:last-child>td{border-bottom-width:0!important}.table-bordered>thead.thin-border-bottom>tr>td,.table-bordered>thead.thin-border-bottom>tr>th{border-bottom-width:1px}.widget-body .alert:last-child{margin-bottom:0}.widget-main .tab-content{border-width:0}.widget-toolbar>.nav-tabs{border-bottom-width:0;margin-bottom:0;top:auto;margin-top:3px!important}.widget-toolbar>.nav-tabs>li{margin-bottom:auto}.widget-toolbar>.nav-tabs>li>a{box-shadow:none;position:relative;top:1px;margin-top:1px}.widget-toolbar>.nav-tabs>li:not(.active)>a{border-color:transparent;background-color:transparent}.widget-toolbar>.nav-tabs>li:not(.active)>a:hover{background-color:transparent}.widget-toolbar>.nav-tabs>li.active>a{background-color:#FFF;border-bottom-color:transparent;box-shadow:none;margin-top:auto}.widget-header-small>.widget-toolbar>.nav-tabs>li>a{line-height:16px;padding-top:6px;padding-bottom:6px}.widget-header-small>.widget-toolbar>.nav-tabs>li.active>a{border-top-width:2px}.widget-header-large>.widget-toolbar>.nav-tabs>li>a{line-height:22px;padding-top:9px;padding-bottom:9px;margin-top:4px}.widget-header-large>.widget-toolbar>.nav-tabs>li.active>a{margin-top:3px}[class*=widget-color-]>.widget-header>.widget-toolbar>.nav-tabs>li>a{border-color:transparent;background-color:transparent;color:#FFF;margin-right:1px}[class*=widget-color-]>.widget-header>.widget-toolbar>.nav-tabs>li>a:hover{background-color:#FFF;color:#555;border-top-color:#FFF}[class*=widget-color-]>.widget-header>.widget-toolbar>.nav-tabs>li.active>a{background-color:#FFF;color:#555;border-top-width:1px;margin-top:0}.widget-toolbar>.nav-tabs .widget-color-orange>.widget-header>li>a{color:#855D10}.transparent>.widget-header>.widget-toolbar>.nav-tabs>li>a{color:#555;background-color:transparent;border-right:1px solid transparent;border-left:1px solid transparent}.transparent>.widget-header>.widget-toolbar>.nav-tabs>li.active>a{border-top-color:#4C8FBD;border-right:1px solid #C5D0DC;border-left:1px solid #C5D0DC;background-color:#FFF;box-shadow:none}.widget-toolbox{background-color:#EEE}.widget-toolbox:first-child{padding:2px;border-bottom:1px solid #CCC}.widget-toolbox:last-child{padding:2px;border-top:1px solid #CCC}.transparent>.widget-body>.widget-toolbox:last-child{border:none;border-top:1px solid #CCC}.widget-toolbox>.btn-toolbar{margin:0!important;padding:0}.widget-toolbox.center{text-align:center}.widget-toolbox.padding-16{padding:16px}.widget-toolbox.padding-14{padding:14px}.widget-toolbox.padding-12{padding:12px}.widget-toolbox.padding-10{padding:10px}.widget-toolbox.padding-8{padding:8px}.widget-toolbox.padding-6{padding:6px}.widget-toolbox.padding-4{padding:4px}.widget-toolbox.padding-2{padding:2px}.widget-toolbox.padding-0{padding:0}.widget-box-overlay{position:absolute;top:-1px;bottom:-1px;right:-1px;left:-1px;z-index:999;text-align:center;min-height:100%;background-color:rgba(0,0,0,.3)}.widget-box-overlay>.loading-icon{position:relative;top:20%;left:0;right:0;text-align:center}.widget-box.collapsed .widget-box-overlay>.loading-icon{top:10%}.widget-box-overlay>.loading-icon.icon-spin{-moz-animation-duration:1.2s;-webkit-animation-duration:1.2s;-o-animation-duration:1.2s;-ms-animation-duration:1.2s;animation-duration:1.2s}.widget-main>form,.widget-main>form .input-append,.widget-main>form .input-prepend{margin-bottom:0}.widget-main.no-padding>form>fieldset,.widget-main.padding-0>form>fieldset{padding:16px}.widget-main.no-padding>form>fieldset+.form-actions,.widget-main.padding-0>form>fieldset+.form-actions{padding:10px 0 12px}.widget-main.no-padding>form>.form-actions,.widget-main.padding-0>form>.form-actions{margin:0;padding:10px 12px 12px}.widget-placeholder{border:2px dashed #D9D9D9}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.tooltip-inner{background-color:#333;color:#FFF;font-size:12px;text-shadow:1px 1px 0 rgba(42,45,50,.5);border-radius:0;padding:5px 9px}.tooltip.top .tooltip-arrow{border-bottom-width:0;border-top-color:#333;-moz-border-top-colors:#333}.tooltip.right .tooltip-arrow{border-left-width:0;border-right-color:#333;-moz-border-right-colors:#333}.tooltip.left .tooltip-arrow{border-right-width:0;border-left-color:#333;-moz-border-left-colors:#333}.tooltip.bottom .tooltip-arrow{border-top-width:0;border-bottom-color:#333;-moz-border-bottom-colors:#333}.tooltip-error+.tooltip>.tooltip-inner,.tooltip.tooltip-error>.tooltip-inner{background-color:#c94d32;text-shadow:1px 1px 0 rgba(100,60,20,.3)}.tooltip-error+.tooltip.top .tooltip-arrow,.tooltip.tooltip-error.top .tooltip-arrow{border-top-color:#c94d32;-moz-border-top-colors:#c94d32}.tooltip-error+.tooltip.right .tooltip-arrow,.tooltip.tooltip-error.right .tooltip-arrow{border-right-color:#c94d32;-moz-border-right-colors:#c94d32}.tooltip-error+.tooltip.left .tooltip-arrow,.tooltip.tooltip-error.left .tooltip-arrow{border-left-color:#c94d32;-moz-border-left-colors:#c94d32}.tooltip-error+.tooltip.bottom .tooltip-arrow,.tooltip.tooltip-error.bottom .tooltip-arrow{border-bottom-color:#c94d32;-moz-border-bottom-colors:#c94d32}.tooltip-success+.tooltip>.tooltip-inner,.tooltip.tooltip-success>.tooltip-inner{background-color:#629b58;text-shadow:1px 1px 0 rgba(60,100,20,.3)}.tooltip-success+.tooltip.top .tooltip-arrow,.tooltip.tooltip-success.top .tooltip-arrow{border-top-color:#629b58;-moz-border-top-colors:#629b58}.tooltip-success+.tooltip.right .tooltip-arrow,.tooltip.tooltip-success.right .tooltip-arrow{border-right-color:#629b58;-moz-border-right-colors:#629b58}.tooltip-success+.tooltip.left .tooltip-arrow,.tooltip.tooltip-success.left .tooltip-arrow{border-left-color:#629b58;-moz-border-left-colors:#629b58}.tooltip-success+.tooltip.bottom .tooltip-arrow,.tooltip.tooltip-success.bottom .tooltip-arrow{border-bottom-color:#629b58;-moz-border-bottom-colors:#629b58}.tooltip-warning+.tooltip>.tooltip-inner,.tooltip.tooltip-warning>.tooltip-inner{background-color:#ed9421;text-shadow:1px 1px 0 rgba(100,90,10,.3)}.tooltip-warning+.tooltip.top .tooltip-arrow,.tooltip.tooltip-warning.top .tooltip-arrow{border-top-color:#ed9421;-moz-border-top-colors:#ed9421}.tooltip-warning+.tooltip.right .tooltip-arrow,.tooltip.tooltip-warning.right .tooltip-arrow{border-right-color:#ed9421;-moz-border-right-colors:#ed9421}.tooltip-warning+.tooltip.left .tooltip-arrow,.tooltip.tooltip-warning.left .tooltip-arrow{border-left-color:#ed9421;-moz-border-left-colors:#ed9421}.tooltip-warning+.tooltip.bottom .tooltip-arrow,.tooltip.tooltip-warning.bottom .tooltip-arrow{border-bottom-color:#ed9421;-moz-border-bottom-colors:#ed9421}.tooltip-info+.tooltip>.tooltip-inner,.tooltip.tooltip-info>.tooltip-inner{background-color:#4b89aa;text-shadow:1px 1px 0 rgba(40,50,100,.3)}.tooltip-info+.tooltip.top .tooltip-arrow,.tooltip.tooltip-info.top .tooltip-arrow{border-top-color:#4b89aa;-moz-border-top-colors:#4b89aa}.tooltip-info+.tooltip.right .tooltip-arrow,.tooltip.tooltip-info.right .tooltip-arrow{border-right-color:#4b89aa;-moz-border-right-colors:#4b89aa}.tooltip-info+.tooltip.left .tooltip-arrow,.tooltip.tooltip-info.left .tooltip-arrow{border-left-color:#4b89aa;-moz-border-left-colors:#4b89aa}.tooltip-info+.tooltip.bottom .tooltip-arrow,.tooltip.tooltip-info.bottom .tooltip-arrow{border-bottom-color:#4b89aa;-moz-border-bottom-colors:#4b89aa}.popover{border-radius:0;padding:0;border-color:#ccc;border-width:1px;-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2);color:#4D6883}.popover-title{border-radius:0;background-color:#eff3f8;color:#555;border-bottom:1px solid #dde6f0;text-shadow:1px 1px 1px rgba(220,220,220,.2)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;border-bottom-color:#eff3f8;-moz-border-bottom-colors:#eff3f8;border-top-width:0}.popover.left>.arrow:after{-moz-border-left-colors:#FFF}.popover.right>.arrow:after{-moz-border-right-colors:#FFF}.popover.top>.arrow:after{-moz-border-top-colors:#FFF}.popover-error+.popover,.popover.popover-error{border-color:#f7f0ef}.popover-error+.popover .popover-title,.popover.popover-error .popover-title{background-color:#f7f0ef;border-bottom-color:#efe0de;color:#b75445;text-shadow:none}.popover-error+.popover.top .arrow:after,.popover.popover-error.top .arrow:after{border-top-color:#f7f0ef;-moz-border-top-colors:#f7f0ef}.popover-error+.popover.bottom .arrow:after,.popover.popover-error.bottom .arrow:after{border-bottom-color:#f7f0ef;-moz-border-bottom-colors:#f7f0ef}.popover-error+.popover.right .arrow:after,.popover.popover-error.right .arrow:after{border-right-color:#f7f0ef;-moz-border-right-colors:#f7f0ef}.popover-error+.popover.left .arrow:after,.popover.popover-error.left .arrow:after{border-left-color:#f7f0ef;-moz-border-left-colors:#f7f0ef}.popover-warning+.popover,.popover.popover-warning{border-color:#f4eee3}.popover-warning+.popover .popover-title,.popover.popover-warning .popover-title{background-color:#f4eee3;border-bottom-color:#ede3d1;color:#d67e31;text-shadow:none}.popover-warning+.popover.top .arrow:after,.popover.popover-warning.top .arrow:after{border-top-color:#f4eee3;-moz-border-top-colors:#f4eee3}.popover-warning+.popover.bottom .arrow:after,.popover.popover-warning.bottom .arrow:after{border-bottom-color:#f4eee3;-moz-border-bottom-colors:#f4eee3}.popover-warning+.popover.right .arrow:after,.popover.popover-warning.right .arrow:after{border-right-color:#f4eee3;-moz-border-right-colors:#f4eee3}.popover-warning+.popover.left .arrow:after,.popover.popover-warning.left .arrow:after{border-left-color:#f4eee3;-moz-border-left-colors:#f4eee3}.popover-success+.popover,.popover.popover-success{border-color:#e8f2e3}.popover-success+.popover .popover-title,.popover.popover-success .popover-title{background-color:#e8f2e3;border-bottom-color:#daead2;color:#629b58;text-shadow:none}.popover-success+.popover.top .arrow:after,.popover.popover-success.top .arrow:after{border-top-color:#e8f2e3;-moz-border-top-colors:#e8f2e3}.popover-success+.popover.bottom .arrow:after,.popover.popover-success.bottom .arrow:after{border-bottom-color:#e8f2e3;-moz-border-bottom-colors:#e8f2e3}.popover-success+.popover.right .arrow:after,.popover.popover-success.right .arrow:after{border-right-color:#e8f2e3;-moz-border-right-colors:#e8f2e3}.popover-success+.popover.left .arrow:after,.popover.popover-success.left .arrow:after{border-left-color:#e8f2e3;-moz-border-left-colors:#e8f2e3}.popover-info+.popover,.popover.popover-info{border-color:#e5edf8}.popover-info+.popover .popover-title,.popover.popover-info .popover-title{background-color:#e5edf8;border-bottom-color:#d1dff3;color:#3f79b6;text-shadow:none}.popover-info+.popover.top .arrow:after,.popover.popover-info.top .arrow:after{border-top-color:#e5edf8;-moz-border-top-colors:#e5edf8}.popover-info+.popover.bottom .arrow:after,.popover.popover-info.bottom .arrow:after{border-bottom-color:#e5edf8;-moz-border-bottom-colors:#e5edf8}.popover-info+.popover.right .arrow:after,.popover.popover-info.right .arrow:after{border-right-color:#e5edf8;-moz-border-right-colors:#e5edf8}.popover-info+.popover.left .arrow:after,.popover.popover-info.left .arrow:after{border-left-color:#e5edf8;-moz-border-left-colors:#e5edf8}.popover-notitle+.popover .popover-title,.popover.popover-notitle .popover-title{display:none}.popover-notitle+.popover.top .arrow:after,.popover.popover-notitle.top .arrow:after{border-top-color:#FFF;-moz-border-top-colors:#FFF}.popover-notitle+.popover.bottom .arrow:after,.popover.popover-notitle.bottom .arrow:after{border-bottom-color:#FFF;-moz-border-bottom-colors:#FFF}.popover-notitle+.popover.left .arrow:after,.popover.popover-notitle.left .arrow:after{border-left-color:#FFF;-moz-border-left-colors:#FFF}.popover-notitle+.popover.right .arrow:after,.popover.popover-notitle.right .arrow:after{border-right-color:#FFF;-moz-border-right-colors:#FFF}.progress{border-radius:0;-webkit-box-shadow:none;box-shadow:none;background:#dadada;height:18px}.progress .progress-bar{-webkit-box-shadow:none;box-shadow:none;line-height:18px}.progress[data-percent]:after{display:inline-block;content:attr(data-percent);color:#FFF;position:absolute;left:0;right:0;top:0;bottom:0;line-height:16px;text-align:center;font-size:12px}.progress.progress-yellow[data-percent]:after{color:#963}.progress.progress-small{height:12px}.progress.progress-small .progress-bar,.progress.progress-small[data-percent]:after{line-height:10px;font-size:11px}.progress.progress-mini{height:9px}.progress.progress-mini .progress-bar,.progress.progress-mini[data-percent]:after{line-height:8px;font-size:11px}.progress-bar{background-color:#2a91d8}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#ca5952}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-success{background-color:#59a84b}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f2bb46}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-pink{background-color:#d6487e}.progress-striped .progress-bar-pink{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-purple{background-color:#9585bf}.progress-striped .progress-bar-purple{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-yellow{background-color:#ffd259}.progress-striped .progress-bar-yellow{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-inverse{background-color:#404040}.progress-striped .progress-bar-inverse{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-grey{background-color:#8a8a8a}.progress-striped .progress-bar-grey{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.infobox-container{text-align:center;font-size:0}.infobox{display:inline-block;width:210px;height:66px;color:#555;background-color:#FFF;box-shadow:none;border-radius:0;margin:-1px 0 0 -1px;padding:8px 3px 6px 9px;border:1px dotted;border-color:#D8D8D8!important;vertical-align:middle;text-align:left;position:relative}.infobox>.infobox-icon{display:inline-block;vertical-align:top;width:44px}.infobox>.infobox-icon>.ace-icon{display:inline-block;height:42px;margin:0;padding:1px 1px 0 2px;background-color:transparent;border-width:0;text-align:center;position:relative;border-radius:100%;-webkit-box-shadow:1px 1px 0 rgba(0,0,0,.2);box-shadow:1px 1px 0 rgba(0,0,0,.2)}.infobox>.infobox-icon>.ace-icon:before{font-size:24px;display:block;padding:6px 0 7px;width:40px;text-align:center;border-radius:100%;color:#FFF;color:rgba(255,255,255,.9);background-color:transparent;background-color:rgba(255,255,255,.2);text-shadow:1px 1px 1px rgba(0,0,0,.14)}.infobox .infobox-content{color:#555}.infobox .infobox-content:first-child{font-weight:700}.infobox>.infobox-data{display:inline-block;border-width:0;font-size:13px;text-align:left;line-height:21px;min-width:130px;padding-left:8px;position:relative;top:0}.infobox>.infobox-data>.infobox-data-number{display:block;font-size:22px;margin:2px 0 4px;position:relative;text-shadow:1px 1px 0 rgba(0,0,0,.15)}.infobox>.infobox-data>.infobox-text{display:block;font-size:16px;margin:2px 0 4px;position:relative;text-shadow:none}.infobox.no-border{border-width:0!important}@media only screen and (max-width:479px){.infobox{min-width:95%;margin-top:2px;margin-bottom:2px}}.infobox-purple{color:#6f3cc4;border-color:#6f3cc4}.infobox-purple>.infobox-icon>.ace-icon{background-color:#6f3cc4}.infobox-purple.infobox-dark{background-color:#6f3cc4;border-color:#6f3cc4}.infobox-purple2{color:#5f47b0;border-color:#5f47b0}.infobox-purple2>.infobox-icon>.ace-icon{background-color:#5f47b0}.infobox-purple2.infobox-dark{background-color:#5f47b0;border-color:#5f47b0}.infobox-pink{color:#cb6fd7;border-color:#cb6fd7}.infobox-pink>.infobox-icon>.ace-icon{background-color:#cb6fd7}.infobox-pink.infobox-dark{background-color:#cb6fd7;border-color:#cb6fd7}.infobox-blue{color:#6fb3e0;border-color:#6fb3e0}.infobox-blue>.infobox-icon>.ace-icon{background-color:#6fb3e0}.infobox-blue.infobox-dark{background-color:#6fb3e0;border-color:#6fb3e0}.infobox-blue2{color:#3983c2;border-color:#3983c2}.infobox-blue2>.infobox-icon>.ace-icon{background-color:#3983c2}.infobox-blue2.infobox-dark{background-color:#3983c2;border-color:#3983c2}.infobox-blue3{color:#1144eb;border-color:#1144eb}.infobox-blue3>.infobox-icon>.ace-icon{background-color:#1144eb}.infobox-blue3.infobox-dark{background-color:#1144eb;border-color:#1144eb}.infobox-red{color:#d53f40;border-color:#d53f40}.infobox-red>.infobox-icon>.ace-icon{background-color:#d53f40}.infobox-red.infobox-dark{background-color:#d53f40;border-color:#d53f40}.infobox-brown{color:#c67a3e;border-color:#c67a3e}.infobox-brown>.infobox-icon>.ace-icon{background-color:#c67a3e}.infobox-brown.infobox-dark{background-color:#c67a3e;border-color:#c67a3e}.infobox-wood{color:#7b3f25;border-color:#7b3f25}.infobox-wood>.infobox-icon>.ace-icon{background-color:#7b3f25}.infobox-wood.infobox-dark{background-color:#7b3f25;border-color:#7b3f25}.infobox-light-brown{color:#cebea5;border-color:#cebea5}.infobox-light-brown>.infobox-icon>.ace-icon{background-color:#cebea5}.infobox-light-brown.infobox-dark{background-color:#cebea5;border-color:#cebea5}.infobox-orange{color:#e8b110;border-color:#e8b110}.infobox-orange>.infobox-icon>.ace-icon{background-color:#e8b110}.infobox-orange.infobox-dark{background-color:#e8b110;border-color:#e8b110}.infobox-orange2{color:#f79263;border-color:#f79263}.infobox-orange2>.infobox-icon>.ace-icon{background-color:#f79263}.infobox-orange2.infobox-dark{background-color:#f79263;border-color:#f79263}.infobox-green{color:#9abc32;border-color:#9abc32}.infobox-green>.infobox-icon>.ace-icon{background-color:#9abc32}.infobox-green.infobox-dark{background-color:#9abc32;border-color:#9abc32}.infobox-green2{color:#0490a6;border-color:#0490a6}.infobox-green2>.infobox-icon>.ace-icon{background-color:#0490a6}.infobox-green2.infobox-dark{background-color:#0490a6;border-color:#0490a6}.infobox-grey{color:#999;border-color:#999}.infobox-grey>.infobox-icon>.ace-icon{background-color:#999}.infobox-grey.infobox-dark{background-color:#999;border-color:#999}.infobox-black{color:#393939;border-color:#393939}.infobox-black>.infobox-icon>.ace-icon{background-color:#393939}.infobox-black.infobox-dark{background-color:#393939;border-color:#393939}.infobox-dark{margin:1px 1px 0 0;border-color:transparent!important;border-width:0;color:#FFF;padding:4px}.infobox-dark>.infobox-icon>.ace-icon,.infobox-dark>.infobox-icon>.ace-icon:before{background-color:transparent;box-shadow:none!important;text-shadow:none;border-radius:0;font-size:30px}.infobox-dark>.infobox-icon>.ace-icon:before{opacity:1;filter:alpha(opacity=100)}.infobox-dark .infobox-content{color:#FFF}.infobox>.infobox-progress{padding-top:0;display:inline-block;vertical-align:top;width:44px}.infobox>.infobox-chart{padding-top:0;display:inline-block;vertical-align:text-bottom;width:44px;text-align:center}.infobox>.infobox-chart>.sparkline{font-size:24px}.infobox>.infobox-chart canvas{vertical-align:middle!important}.infobox>.stat{display:inline-block;position:absolute;right:20px;top:11px;text-shadow:none;color:#ABBAC3;font-size:13px;font-weight:700;padding-right:18px;padding-top:3px}.infobox>.stat:before{display:inline-block;content:"";width:8px;height:11px;background-color:#ABBAC3;position:absolute;right:4px;top:7px}.infobox>.stat:after{display:inline-block;content:"";position:absolute;right:1px;top:-8px;border:12px solid transparent;border-width:8px 7px;border-bottom-color:#ABBAC3}.infobox>.stat.stat-success{color:#77C646}.infobox>.stat.stat-success:before{background-color:#77C646}.infobox>.stat.stat-success:after{border-bottom-color:#77C646}.infobox>.stat.stat-important{color:#E4564F}.infobox>.stat.stat-important:before{background-color:#E4564F;top:3px}.infobox>.stat.stat-important:after{border-top-color:#E4564F;border-bottom-color:transparent;bottom:-6px;top:auto}.infobox.infobox-dark>.stat{color:#FFF}.infobox.infobox-dark>.stat:before{background-color:#E1E5E8}.infobox.infobox-dark>.stat:after{border-bottom-color:#E1E5E8}.infobox.infobox-dark>.stat.stat-success{color:#FFF}.infobox.infobox-dark>.stat.stat-success:before{background-color:#D0E29E}.infobox.infobox-dark>.stat.stat-success:after{border-bottom-color:#D0E29E}.infobox.infobox-dark>.stat.stat-important{color:#FFF}.infobox.infobox-dark>.stat.stat-important:before{background-color:#FF8482;top:3px}.infobox.infobox-dark>.stat.stat-important:after{border-top-color:#FF8482;border-bottom-color:transparent;bottom:-6px;top:auto}.infobox>.badge{position:absolute;right:20px;top:11px;border-radius:0;text-shadow:none;color:#FFF;font-size:11px;font-weight:700;line-height:15px;height:16px;padding:0 1px}.infobox.infobox-dark>.badge{color:#FFF;background-color:rgba(255,255,255,.2)!important;border:1px solid #F1F1F1;top:2px;right:2px}.infobox.infobox-dark>.badge.badge-success>.ace-icon{color:#C6E9A1}.infobox.infobox-dark>.badge.badge-important>.ace-icon,.infobox.infobox-dark>.badge.badge-warning>.ace-icon{color:#ECB792}.infobox-small{width:135px;height:52px;text-align:left;padding-bottom:5px}.infobox-small>.infobox-chart,.infobox-small>.infobox-icon,.infobox-small>.infobox-progress{display:inline-block;width:40px;max-width:40px;height:42px;line-height:38px;vertical-align:middle}.infobox-small>.infobox-data{display:inline-block;text-align:left;vertical-align:middle;max-width:72px;min-width:0}.infobox-small>.infobox-chart>.sparkline{font-size:14px;margin-left:2px}.percentage{font-size:14px;font-weight:700;display:inline-block;vertical-align:top}.infobox-small .percentage{font-size:13px;font-weight:400;margin-top:2px;margin-left:2px}.pricing-box:not(:first-child){padding-left:7px}.pricing-box:not(:last-child){padding-right:7px}.pricing-box .price{font-size:22px;line-height:20px;height:28px;text-align:center;color:#555}.pricing-box .price small{font-size:22px}.pricing-box .btn{font-size:16px}.pricing-box .widget-header{text-align:center;padding-left:0}@media only screen and (max-width:480px){.pricing-box{margin:0 0 16px -1px;padding-left:0!important;padding-right:0!important}.pricing-box:nth-child(odd){padding-left:12px!important}.pricing-box:nth-child(even){padding-right:12px!important}}@media only screen and (max-width:479px){.pricing-box{margin:0 0 16px;width:100%;padding-left:12px!important;padding-right:12px!important}}.pricing-table-header{padding-top:0;margin-top:0;text-align:left}.pricing-table-header>li{padding:7px 0 7px 11px;font-size:13px}.pricing-table{margin-top:0}.pricing-table>li{text-align:center;padding:7px 0;font-size:13px}.list-striped>li:nth-child(odd){background-color:#FFF}.list-striped>li:nth-child(even){background-color:#F2F3EB}.list-striped.pricing-table-header>li:nth-child(even){background-color:#EEE}.pricing-box-small{box-shadow:none;margin-left:-2px;background-color:#FFF;position:relative;z-index:10}.pricing-box-small .price{line-height:20px;height:28px;text-align:center}.pricing-box-small .price .label:after,.pricing-box-small .price .label:before{margin-top:-2px;opacity:.9;filter:alpha(opacity=90)}.pricing-box-small:hover{box-shadow:0 0 4px 2px rgba(0,0,0,.15);z-index:11;-webkit-transform:scale(1.04);-ms-transform:scale(1.04);-o-transform:scale(1.04);transform:scale(1.04)}.pricing-box-small:hover .price>.label{-webkit-transform:scale(0.96);-ms-transform:scale(0.96);-o-transform:scale(0.96);transform:scale(0.96)}.pricing-span{margin:0;width:19%;max-width:150px!important;min-width:110px!important;float:left!important}.pricing-span-header{padding-right:0}@media only screen and (min-width:480px){.pricing-span-body{padding-left:0;padding-right:0}}@media only screen and (max-width:480px){.pricing-span-body,.pricing-span-header{width:100%;padding-right:12px}}.login-container{width:375px;margin:0 auto}.login-layout{background-color:#1D2024}.login-layout .main-container:before{display:none}.login-layout .main-content{margin-left:0!important;margin-right:0!important;min-height:100%;padding-left:15px;padding-right:15px}.login-layout label{margin-bottom:11px}.login-layout .widget-box{visibility:hidden;position:fixed;z-index:-5;border-bottom:none;box-shadow:none;padding:6px;background-color:#394557;-moz-transform:scale(0,1) translate(-150px);-webkit-transform:scale(0,1) translate(-150px);-o-transform:scale(0,1) translate(-150px);-ms-transform:scale(0,1) translate(-150px);transform:scale(0,1) translate(-150px)}.login-layout .widget-box.visible{visibility:visible;position:relative;z-index:auto;-moz-transform:scale(1,1) translate(0);-webkit-transform:scale(1,1) translate(0);-o-transform:scale(1,1) translate(0);-ms-transform:scale(1,1) translate(0);transform:scale(1,1) translate(0);transition:transform .3s ease;-moz-transition:-moz-transform .3s ease;-webkit-transition:-webkit-transform .3s ease;-o-transition:-o-transform .2s ease}.login-layout .widget-box .widget-main{padding:16px 36px 36px;background:#F7F7F7}.login-layout .widget-box .widget-main form{margin:0}.login-layout .widget-box .widget-body .toolbar>div>a{font-size:15px;font-weight:400;text-shadow:1px 0 1px rgba(0,0,0,.25)}.login-box .forgot-password-link{color:#FE9}.login-box .user-signup-link{color:#CF7}.login-box .toolbar{background:#5090C1;border-top:2px solid #597597}.login-box .toolbar>div{width:50%;display:inline-block;padding:9px 0 11px}.login-box .toolbar>div:first-child{float:left;text-align:left}.login-box .toolbar>div:first-child>a{margin-left:11px}.login-box .toolbar>div:first-child+div{float:right;text-align:right}.login-box .toolbar>div:first-child+div>a{margin-right:11px}.forgot-box .toolbar{background:#C16050;border-top:2px solid #976559;padding:9px 18px}.signup-box .toolbar{background:#76B774;border-top:2px solid #759759;padding:9px 18px}.forgot-box .back-to-login-link,.signup-box .back-to-login-link{color:#FE9;font-size:14px;font-weight:700;text-shadow:1px 0 1px rgba(0,0,0,.25)}.login-layout .login-box .widget-main{padding-bottom:16px}.social-or-login{margin-top:4px;text-align:center;position:relative;z-index:1}.social-or-login :first-child{display:inline-block;background:#F7F7F7;padding:0 8px;color:#5090C1;font-size:13px}.social-or-login:before{content:"";display:block;position:absolute;z-index:-1;top:50%;left:0;right:0;border-top:1px dotted #A6C4DB}.social-login a{border-radius:100%;width:42px;height:42px;line-height:46px;padding:0;margin:0 1px;border-width:0}.social-login a>.ace-icon{font-size:24px;margin:0}@media only screen and (max-width:540px){.login-layout .widget-box .widget-main{padding:16px}.login-container{width:98%}.login-layout .widget-box{padding:0}.login-layout .main-content{padding-left:6px;padding-right:6px}.login-box .toolbar>div{width:auto}}.light-login{background:#dfe0e2 url(images/pattern.jpg)}.light-login .widget-box{padding:1px 1px 0;-webkit-box-shadow:0 0 2px 1px rgba(0,0,0,.12);box-shadow:0 0 2px 1px rgba(0,0,0,.12);border-bottom:1px solid rgba(50,50,50,.33)}.light-login .widget-box .toolbar{border-top-width:1px}.light-login .widget-box.login-box{background-color:#BCC6CF;background-color:rgba(100,110,120,.4)}.light-login .widget-box.signup-box{background-color:#C1CEC4;background-color:rgba(110,120,100,.4)}.light-login .widget-box.forgot-box{background-color:#D2C5C5;background-color:rgba(120,110,100,.4)}.blur-login{background:#394557 url(images/meteorshower2.jpg)}.invoice-info{line-height:24px!important;color:#444;vertical-align:bottom;margin-left:9px;margin-right:9px}.invoice-info-label{display:inline-block;max-width:100px;text-align:right;font-size:14px}.invoice-box .label-large[class*=arrowed]{margin-left:11px!important;max-width:95%}.error-container{margin:20px;padding:0;background:#FFF}@media only screen and (max-width:767px){.error-container{margin:12px}}@media only screen and (max-width:479px){.error-container{margin:6px}}.ace-thumbnails{list-style:none;margin:0;padding:0}.ace-thumbnails>li{float:left;display:block;position:relative;overflow:hidden;margin:2px;border:2px solid #333}.ace-thumbnails>li>:first-child{display:block;position:relative}.ace-thumbnails>li>:first-child:focus{outline:0}.ace-thumbnails>li .tags{display:inline-block;position:absolute;bottom:0;right:0;overflow:visible;direction:rtl;padding:0;margin:0;height:auto;width:auto;background-color:transparent;border-width:0;vertical-align:inherit}.ace-thumbnails>li .tags>.label-holder{opacity:.92;filter:alpha(opacity=92);display:table;margin:1px 0 0;direction:ltr;text-align:left}.ace-thumbnails>li .tags>.label-holder:hover{opacity:1;filter:alpha(opacity=100)}.ace-thumbnails>li>.tools{position:absolute;top:0;bottom:0;left:-30px;width:24px;background-color:rgba(0,0,0,.55);text-align:center;vertical-align:middle;-webkit-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.ace-thumbnails>li>.tools.tools-right{left:auto;right:-30px}.ace-thumbnails>li>.tools.tools-bottom{width:auto;height:28px;left:0;right:0;top:auto;bottom:-30px}.ace-thumbnails>li>.tools.tools-top{width:auto;height:28px;left:0;right:0;top:-30px;bottom:auto}.ace-thumbnails>li:hover>.tools{left:0;right:0}.ace-thumbnails>li:hover>.tools.tools-bottom{top:auto;bottom:0}.ace-thumbnails>li:hover>.tools.tools-top{bottom:auto;top:0}.ace-thumbnails>li:hover>.tools.tools-right{left:auto;right:0}.ace-thumbnails>li>.in.tools{left:0;right:0}.ace-thumbnails>li>.in.tools.tools-bottom{top:auto;bottom:0}.ace-thumbnails>li>.in.tools.tools-top{bottom:auto;top:0}.ace-thumbnails>li>.in.tools.tools-right{left:auto;right:0}.ace-thumbnails>li>.tools>a,.ace-thumbnails>li>:first-child .inner a{display:inline-block;color:#FFF;font-size:18px;font-weight:400;padding:0 4px}.ace-thumbnails>li>.tools>a:hover,.ace-thumbnails>li>:first-child .inner a:hover{text-decoration:none;color:#C9E2EA}.ace-thumbnails>li .tools.tools-bottom>a,.ace-thumbnails>li .tools.tools-top>a{display:inline-block}.ace-thumbnails>li>:first-child>.text{position:absolute;right:0;left:0;bottom:0;top:0;text-align:center;color:#FFF;background-color:rgba(0,0,0,.55);opacity:0;filter:alpha(opacity=0);-webkit-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.ace-thumbnails>li>:first-child>.text:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:0}.ace-thumbnails>li>:first-child>.text>.inner{padding:4px 0;margin:0;display:inline-block;vertical-align:middle;max-width:90%}.ace-thumbnails>li:hover>:first-child>.text{opacity:1;filter:alpha(opacity=100)}@media only screen and (max-width:480px){.ace-thumbnails{text-align:center}.ace-thumbnails>li{float:none;display:inline-block}}.dialogs{padding:9px;position:relative}.itemdiv{padding-right:3px;min-height:66px;position:relative}.itemdiv>.user{display:inline-block;width:42px;position:absolute;left:0}.itemdiv>.user>img{border-radius:100%;border:2px solid #5293C4;max-width:40px;position:relative}.itemdiv>.body{width:auto;margin-left:50px;margin-right:12px;position:relative}.itemdiv>.body>.time{display:block;font-size:11px;font-weight:700;color:#666;position:absolute;right:9px;top:0}.itemdiv>.body>.time .ace-icon{font-size:14px;font-weight:400}.itemdiv>.body>.name{display:block;color:#999}.itemdiv>.body>.name>b{color:#777}.itemdiv>.body>.text{display:block;position:relative;margin-top:2px;padding-bottom:19px;padding-left:7px;font-size:13px}.itemdiv>.body>.text:after{display:block;content:"";height:1px;font-size:0;overflow:hidden;position:absolute;left:16px;right:-12px;margin-top:9px;border-top:1px solid #E4ECF3}.itemdiv>.body>.text>.ace-icon:first-child{color:#DCE3ED;margin-right:4px}.itemdiv:last-child>.body>.text{border-bottom-width:0}.itemdiv:last-child>.body>.text:after{display:none}.itemdiv.dialogdiv{padding-bottom:14px}.itemdiv.dialogdiv:before{position:absolute;display:block;content:"";top:0;bottom:0;left:19px;width:3px;max-width:3px;background-color:#E1E6ED;border:1px solid #D7DBDD;border-width:0 1px}.itemdiv.dialogdiv:last-child{padding-bottom:0}.itemdiv.dialogdiv:last-child:before{display:none}.itemdiv.dialogdiv>.user>img{border-color:#C9D6E5}.itemdiv.dialogdiv>.body{border:1px solid #DDE4ED;padding:5px 8px 8px;border-left-width:2px;margin-right:1px}.itemdiv.dialogdiv>.body:before{content:"";display:block;position:absolute;left:-7px;top:11px;width:8px;height:8px;border:2px solid #DDE4ED;border-width:2px 0 0 2px;background-color:#FFF;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.itemdiv.dialogdiv>.body>.time{position:static;float:right}.itemdiv.dialogdiv>.body>.text{padding-left:0;padding-bottom:0}.itemdiv.dialogdiv>.body>.text:after{display:none}.itemdiv.dialogdiv .tooltip-inner{word-break:break-all}.itemdiv.memberdiv{width:175px;padding:2px;margin:3px 0;float:left;border-bottom:1px solid #E8E8E8}@media (min-width:992px){.itemdiv.memberdiv{max-width:50%}}@media (max-width:991px){.itemdiv.memberdiv{min-width:33.333%}}.itemdiv.memberdiv>.user>img{border-color:#DCE3ED}.itemdiv.memberdiv>.body>.time{position:static}.itemdiv.memberdiv>.body>.name{line-height:18px;height:18px;margin-bottom:0}.itemdiv.memberdiv>.body>.name>a{display:inline-block;max-width:100px;max-height:18px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}.itemdiv .tools{position:absolute;right:5px;bottom:10px;display:none}.itemdiv .tools .btn{border-radius:36px;margin:1px 0}.itemdiv .body .tools{bottom:4px}.itemdiv.commentdiv .tools{right:9px}.itemdiv:hover .tools{display:inline-block}.item-list{margin:0;padding:0;list-style:none}.item-list>li{padding:9px;background-color:#FFF;margin-top:-1px;position:relative}.item-list>li.selected{color:#8090A0;background-color:#F4F9FC}.item-list>li.selected .lbl,.item-list>li.selected label{text-decoration:line-through;color:#8090A0}.item-list>li>.checkbox,.item-list>li>label.inline{display:inline-block}.item-list>li label{font-size:13px}.item-list>li .percentage{font-size:11px;font-weight:700;color:#777}.item-list>li.ui-sortable-helper{cursor:move}li[class*=item-]{border:1px solid #DDD;border-left-width:3px}li.item-orange{border-left-color:#e8b110}li.item-orange2{border-left-color:#f79263}li.item-red{border-left-color:#d53f40}li.item-red2{border-left-color:#d15b47}li.item-green{border-left-color:#9abc32}li.item-green2{border-left-color:#0490a6}li.item-blue{border-left-color:#4f99c6}li.item-blue2{border-left-color:#3983c2}li.item-blue3{border-left-color:#1144eb}li.item-pink{border-left-color:#cb6fd7}li.item-purple{border-left-color:#6f3cc4}li.item-black{border-left-color:#505050}li.item-grey{border-left-color:#a0a0a0}li.item-brown{border-left-color:brown}li.item-default{border-left-color:#abbac3}.ui-sortable-helper,.ui-sortable-helper>a,.ui-sortable-placeholder,.ui-sortable-placeholder>a{cursor:move!important}@media only screen and (max-width:480px){.itemdiv.memberdiv{float:none;width:auto}}.profile-user-info{display:table;width:98%;width:calc(100% - 24px);margin:0 auto}.profile-info-row{display:table-row}.profile-info-name{text-align:right;padding:6px 10px 6px 4px;font-weight:400;color:#667E99;background-color:transparent;border-top:1px dotted #D5E4F1;display:table-cell;width:110px;vertical-align:middle}.profile-info-value{display:table-cell;padding:6px 4px 6px 6px;border-top:1px dotted #D5E4F1}.profile-info-value>span+span:before{display:inline;content:",";margin-left:1px;margin-right:3px;color:#666;border-bottom:1px solid #FFF}.profile-info-value>span+span.editable-container:before{display:none}.profile-info-row:first-child .profile-info-name,.profile-info-row:first-child .profile-info-value{border-top:none}.profile-user-info-striped{border:1px solid #DCEBF7}.profile-user-info-striped .profile-info-name{color:#336199;background-color:#EDF3F4;border-top:1px solid #F7FBFF}.profile-user-info-striped .profile-info-value{border-top:1px dotted #DCEBF7;padding-left:12px}.profile-picture{border:1px solid #CCC;background-color:#FFF;padding:4px;display:inline-block;max-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:1px 1px 1px rgba(0,0,0,.15)}.profile-activity{padding:10px 4px;border-bottom:1px dotted #D0D8E0;position:relative;border-left:1px dotted #FFF;border-right:1px dotted #FFF}.profile-activity:first-child{border-top:1px dotted transparent}.profile-activity:first-child:hover{border-top-color:#D0D8E0}.profile-activity:hover{background-color:#F4F9FD;border-left:1px dotted #D0D8E0;border-right:1px dotted #D0D8E0}.profile-activity img{border:2px solid #C9D6E5;border-radius:100%;max-width:40px;margin-right:10px;margin-left:0;box-shadow:none}.profile-activity .thumbicon{background-color:#74ABD7;display:inline-block;border-radius:100%;width:38px;height:38px;color:#FFF;font-size:18px;text-align:center;line-height:38px;margin-right:10px;margin-left:0;text-shadow:none!important}.profile-activity .time{display:block;margin-top:4px;color:#777}.profile-activity a.user{font-weight:700;color:#9585BF}.profile-activity .tools{position:absolute;right:12px;bottom:8px;display:none}.profile-activity:hover .tools{display:block}.user-profile .ace-thumbnails li{border:1px solid #CCC;padding:3px;margin:6px}.user-profile .ace-thumbnails li .tools{left:3px;right:3px}.user-profile .ace-thumbnails li:hover .tools{bottom:3px}.user-profile .user-title-label:hover{text-decoration:none}.user-profile .user-title-label+.dropdown-menu{margin-left:-12px}.profile-contact-links{padding:4px 2px 5px;border:1px solid #E0E2E5;background-color:#F8FAFC}.btn-link:hover .ace-icon{text-decoration:none!important}.profile-social-links>a{text-decoration:none;margin:0 1px}.profile-social-links>a:hover>.ace-icon{text-decoration:none}.profile-skills .progress{height:26px;margin-bottom:2px;background-color:transparent}.profile-skills .progress .progress-bar{line-height:26px;font-size:13px;font-weight:700;font-family:"Open Sans";padding:0 8px}.profile-users .user{display:block;position:static;text-align:center;width:auto}.profile-users .user img{padding:2px;border-radius:100%;border:1px solid #AAA;max-width:none;width:64px;-webkit-transition:all .1s;-o-transition:all .1s;transition:all .1s}.profile-users .user img:hover{-webkit-box-shadow:0 0 1px 1px rgba(0,0,0,.33);box-shadow:0 0 1px 1px rgba(0,0,0,.33)}.profile-users .memberdiv{background-color:#FFF;width:100px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;text-align:center;margin:0 8px 24px}.profile-users .memberdiv .name a:hover .ace-icon{text-decoration:none}.profile-users .memberdiv .body{display:inline-block;margin:8px 0 0}.profile-users .memberdiv .popover{visibility:hidden;min-width:0;max-height:0;max-width:0;margin-left:0;margin-right:0;top:-5%;left:auto;right:auto;opacity:0;display:none;position:absolute;-webkit-transition:opacity .2s linear 0s,visibility 0s linear .2s,max-height 0s linear .2s,max-width 0s linear .2s,min-width 0s linear .2s;-o-transition:opacity .2s linear 0s,visibility 0s linear .2s,max-height 0s linear .2s,max-width 0s linear .2s,min-width 0s linear .2s;transition:opacity .2s linear 0s,visibility 0s linear .2s,max-height 0s linear .2s,max-width 0s linear .2s,min-width 0s linear .2s}.profile-users .memberdiv .popover.right{left:100%;right:auto;display:block}.profile-users .memberdiv .popover.left{left:auto;right:100%;display:block}.profile-users .memberdiv>:first-child:hover .popover{visibility:visible;opacity:1;z-index:1060;max-height:250px;max-width:250px;min-width:150px;-webkit-transition-delay:0s;-moz-transition-delay:0s;-o-transition-delay:0s;transition-delay:0s}.profile-users .memberdiv .tools{position:static;display:block;width:100%;margin-top:2px}.profile-users .memberdiv .tools>a{margin:0 2px}.profile-users .memberdiv .tools>a:hover{text-decoration:none}.user-status{display:inline-block;width:11px;height:11px;background-color:#FFF;border:3px solid #AAA;border-radius:100%;vertical-align:middle;margin-right:1px}.user-status.status-online{border-color:#8AC16C}.user-status.status-busy{border-color:#E07F69}.user-status.status-idle{border-color:#FFB752}.tab-content.profile-edit-tab-content{border:1px solid #DDD;padding:8px 32px 32px;-webkit-box-shadow:1px 1px 0 0 rgba(0,0,0,.2);box-shadow:1px 1px 0 0 rgba(0,0,0,.2);background-color:#FFF}@media only screen and (max-width:480px){.profile-info-name{width:80px}.profile-user-info-striped .profile-info-name{float:none;width:auto;text-align:left;padding:6px 4px 6px 10px;display:block}.profile-user-info-striped .profile-info-value{margin-left:10px;display:block}}@media only screen and (max-width:480px){.user-profile .memberdiv{width:50%;margin-left:0;margin-right:0}}.inbox-tabs.nav-tabs>li>a{background-color:#FAFAFA}.inbox-tabs.nav-tabs>li.active:not(.open)>a,.inbox-tabs.nav-tabs>li.active:not(.open)>a:focus,.inbox-tabs.nav-tabs>li.active:not(.open)>a:hover{background-color:#F1F5FA;box-shadow:0 -2px 3px 0 rgba(0,0,0,.1);color:#48768E}.inbox-tabs.nav-tabs>li>a.btn-new-mail{background-color:transparent;border:none!important;padding:0!important}.inbox-tabs.nav-tabs>li>a.btn-new-mail>.btn{border-width:0!important;border-radius:3px!important;padding:0 6px!important;position:relative;transition:none!important}.inbox-tabs.nav-tabs>li.active>a.btn-new-mail{box-shadow:none!important}.inbox-tabs.nav-tabs>li.active>a.btn-new-mail>.btn:before{content:"";display:block;position:absolute;top:100%;left:50%;margin-left:-6px;border-width:6px 8px;border-style:solid;border-color:transparent;border-top-color:inherit}.inbox-tabs.nav-tabs.tab-size-bigger>li>a{padding:5px 15px 7px;font-size:14px}.inbox-tabs.nav-tabs.tab-size-bigger>li>a>.ace-icon:first-child{margin-bottom:5px}.inbox-tabs.nav-tabs.tab-size-bigger>li>a.btn-new-mail>.btn{padding:10px!important;border-radius:7px!important}.inbox-tabs.nav-tabs.tab-size-bigger>li.active>a.btn-new-mail{margin-top:0!important;top:1px}.inbox-tabs.nav-tabs.tab-size-bigger>li.active>a.btn-new-mail>.btn:before{left:50%;margin-left:-8px;border-width:8px 10px}@media only screen and (max-width:479px){.inbox-tabs>.li-new-mail{display:block;text-align:right;margin-bottom:8px!important;float:none!important}.inbox-tabs>.li-new-mail>.btn-new-mail{display:inline-block;width:auto}}.message-container,.message-list{position:relative}.message-item{border:1px solid #EAEDF1;border-bottom-width:0;padding:12px 12px 14px;line-height:18px;position:relative;background-color:#FFF}.message-item:first-child{border-top-width:0}.message-item:hover{border-color:#E2EAF2;background-color:#F2F6F9}.message-item:hover+.message-item{border-top-color:#E2EAF2}.message-item:hover+.message-item.selected{border-top-color:#FFF}.message-item.selected{background-color:#EFF4F7;border-color:#FFF #E2EAF2}.message-item.selected+.message-item,.message-item.selected+.message-item:hover+.message-item{border-top-color:#FFF}.message-item input.ace+.lbl::before,.message-navbar input.ace+.lbl::before{top:auto}.message-item .sender{margin:0 6px 0 4px;vertical-align:middle;color:#467287;display:inline-block;width:110px;height:18px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.message-item.message-unread .sender{color:#6A9CBA;font-weight:700}.message-item .summary{vertical-align:middle;display:inline-block;position:relative;margin-left:30px;max-width:250px;max-width:calc(100% - 300px);min-width:200px;white-space:nowrap}.message-item .summary .text{color:#555;vertical-align:middle;display:inline-block;width:auto;max-width:100%;height:18px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.message-item .summary .text:hover{text-decoration:underline}.message-item .summary .message-flags{display:block;position:absolute;right:100%;margin-right:4px;height:18px;white-space:nowrap}.message-item.message-unread .summary .text{color:#609FC4;font-weight:700}.message-item .time{float:right;width:60px;height:18px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:#666}.message-item.message-unread .time{font-weight:700;color:#609FC4}.message-item.message-unread .message-content .time{font-weight:400}.message-item .attachment{color:#999;font-size:18px;vertical-align:middle;float:right;margin:0 12px;position:relative}.message-item.message-unread .attachment{color:#4F99C6}.message-content .time{font-weight:400}.message-star{vertical-align:middle;margin:2px 4px 0 6px;font-size:15px;cursor:pointer}.message-star:hover{color:#feb902!important;text-decoration:none}.mail-tag:empty{display:inline-block;width:8px;height:11px;padding:0;line-height:normal;vertical-align:middle;margin:0 1px 0 0}.badge.mail-tag{border-radius:2px}.dropdown-menu>li>a>.mail-tag{vertical-align:inherit}@media only screen and (max-width:991px){.message-item .summary{min-width:0}.message-item .sender{width:100px}}@media only screen and (max-width:550px){.message-item .summary{margin:8px 0 0 32px;max-width:95%;min-width:0;display:block}.message-item .sender{width:auto;max-width:150px}.message-item .summary .text{max-width:95%}}.btn-message,.btn-message:active,.btn-message:focus,.btn-message:hover,.open .btn-message.dropdown-toggle{background-color:#FFF!important;border:1px solid #94B9CE!important;color:#7CA3BA!important;text-shadow:none!important}.message-content{padding:16px 12px;border:1px solid #E9E9E9;-webkit-box-shadow:0 0 1px 1px rgba(0,0,0,.02);box-shadow:0 0 1px 1px rgba(0,0,0,.02);background-color:rgba(255,255,255,.8);border-top-width:0}.message-item .message-content{margin-top:16px;border-top-width:1px}.message-body{padding:0 9px;color:#6A7177}.message-navbar{line-height:24px;padding:10px 12px;border:1px solid #D6E1EA;border-color:#D6E1EA transparent;background-color:#F1F5FA;text-align:center;position:relative}.message-content .dropdown-toggle,.message-navbar .dropdown-toggle{color:#777}.message-content .dropdown-toggle:focus,.message-content .dropdown-toggle:hover,.message-navbar .dropdown-toggle:focus,.message-navbar .dropdown-toggle:hover{text-decoration:none;color:#2283C5}.message-bar{display:inline-block;min-height:28px}@media only screen and (max-width:480px){.message-bar{display:block;min-height:60px}}.message-footer{background-color:#F1F1F1;padding:12px 16px;border:1px solid #E6E6E6;border-width:1px 0;border-top:1px solid #E4E9EE}.message-footer .pagination{margin:0}.message-footer .pagination>li{margin:0;padding:0}.message-footer .pagination>li>a,.message-footer .pagination>li>span{color:#777;padding:3px 6px;margin-left:1px;margin-right:1px;background-color:transparent;border:1px solid transparent}.message-footer .pagination>li.disabled>span{color:#BBB;cursor:default;background-color:transparent;border-color:transparent}.message-footer .pagination>li>a:hover{border-color:#91bad6;color:#2283C5;text-decoration:none;background-color:#FFF}.message-footer input[type=text]{font-size:12px;width:34px;height:24px;line-height:20px;margin-bottom:0;padding:3px;vertical-align:middle;text-align:center}.message-footer-style2 .pagination>li>a,.message-footer-style2 .pagination>li>span{border:1px solid #B5B5B5;border-radius:100%!important;width:26px;height:26px;line-height:26px;display:inline-block;text-align:center;padding:0}.message-footer-style2 .pagination>li.disabled>span,.message-footer-style2 .pagination>li>span{border-color:#CCC}.message-footer-style2 .pagination>li>a:hover{border-color:#84AFC9;background-color:#F7F7F7}.message-item.message-inline-open{background-color:#F2F6F9;border:1px solid #DDD;border-bottom-color:#CCC}.message-item.message-inline-open:first-child{border-top-color:#EEE}.message-item.message-inline-open:last-child{border-bottom-color:#DDD}.message-item.message-inline-open+.message-item{border-bottom-color:transparent}.message-loading-overlay{position:absolute;z-index:14;top:0;bottom:0;right:0;left:0;background-color:rgba(255,255,255,.5);text-align:center}.message-loading-overlay>.ace-icon{position:absolute;top:15%;left:0;right:0;text-align:center}.message-content .sender{color:#6A9CBA;font-weight:700;width:auto;text-overflow:inherit;vertical-align:middle;margin:0}.message-content .time{width:auto;text-overflow:inherit;white-space:normal;float:none;vertical-align:middle}ul.attachment-list{margin:6px 0 4px 8px}ul.attachment-list>li{margin-bottom:3px}.message-attachment{padding-left:10px;padding-right:10px}.attached-file{color:#777;width:200px;display:inline-block}.attached-file>.ace-icon{display:inline-block;width:16px;margin-right:2px;vertical-align:middle}.attached-file:hover{text-decoration:none;color:#438EB9}.attached-file:hover .attached-name{color:#2283C5}.attached-file .attached-name{display:inline-block;max-width:175px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;vertical-align:middle}.messagebar-item-left,.messagebar-item-right{position:absolute;bottom:14px;left:12px;text-align:left}.messagebar-item-right{right:12px;left:auto}.message-navbar .nav-search{right:auto;left:5px;top:auto;bottom:11px}.message-navbar .messagebar-item-left~.nav-search{left:60px}.message-form{border:1px solid #ddd;border-top:none;padding-top:22px}@media only screen and (max-width:480px){.message-form{padding-left:16px;padding-right:16px}}.message-form .form-actions{margin-bottom:0}.message-form .wysiwyg-editor{overflow:auto;min-height:150px;max-height:250px;height:auto}.btn-send-message{position:relative;top:6px;vertical-align:middle}.btn-back-message-list{color:#777}.btn-back-message-list:hover{color:#478FCA;text-decoration:none}.message-condensed .message-item{padding-top:8px;padding-bottom:9px}.message-condensed .message-footer,.message-condensed .message-navbar{padding-top:7px;padding-bottom:7px}.message-condensed .messagebar-item-left,.message-condensed .messagebar-item-right{bottom:9px}.message-condensed .message-navbar .nav-search{bottom:7px}@media only screen and (max-width:480px){.message-condensed .message-bar{min-height:42px}}.inbox-folders .btn-block{margin-top:0}@media only screen and (max-width:767px){.inbox-folders.inbox-folders-responsive .btn-block{width:24%}}@media only screen and (max-width:600px){.inbox-folders.inbox-folders-responsive .btn-block{width:48%}}@media only screen and (max-width:320px){.inbox-folders.inbox-folders-responsive .btn-block{width:99%}}.inbox-folders .btn-lighter,.inbox-folders .btn-lighter.active{background-color:#F4F4F4!important;text-shadow:none!important;color:#7C8395!important;border:1px solid #FFF!important;padding:5px 11px}.inbox-folders .btn-lighter.active{background-color:#EDF2F8!important;color:#53617C!important}.inbox-folders .btn-lighter:hover{background-color:#EFEFEF!important;color:#6092C4!important}.inbox-folders .btn>.ace-icon:first-child{display:inline-block;width:14px;text-align:left}.inbox-folders .btn-lighter+.btn-lighter{border-top-width:0!important}.inbox-folders .btn.active:before{display:block;content:"";position:absolute;top:1px;bottom:1px;left:-1px;border-left:3px solid #4F99C6}.inbox-folders .btn.active:after{display:none}.inbox-folders .btn .counter{border-radius:3px;position:absolute;right:8px;top:8px;padding-left:6px;padding-right:6px;opacity:.75;filter:alpha(opacity=75)}.inbox-folders .btn:hover .badge{opacity:1;filter:alpha(opacity=100)}.timeline-container{position:relative;padding-top:4px;margin-bottom:32px}.timeline-container:last-child{margin-bottom:0}.timeline-container:before{content:"";display:block;position:absolute;left:28px;top:0;bottom:0;border:1px solid #E2E3E7;background-color:#E7EAEF;width:4px;border-width:0 1px}.timeline-container:first-child:before{border-top-width:1px}.timeline-container:last-child:before{border-bottom-width:1px}.timeline-item{position:relative;margin-bottom:8px}.timeline-item .widget-box{background-color:#F2F6F9;color:#595C66}.timeline-item .transparent.widget-box{border-left:3px solid #DAE1E5}.timeline-item .transparent .widget-header{background-color:#ECF1F4;border-bottom-width:0}.timeline-item .transparent .widget-header>.widget-title{margin-left:8px}.timeline-item:nth-child(even) .widget-box{background-color:#F3F3F3;color:#616161}.timeline-item:nth-child(even) .widget-box.transparent{border-left-color:#DBDBDB!important}.timeline-item:nth-child(even) .widget-box.transparent .widget-header{background-color:#EEE!important}.timeline-item .widget-box{margin:0 0 0 60px;position:relative;max-width:none}.timeline-item .widget-main{margin:0;position:relative;max-width:none;border-bottom-width:0}.timeline-item .widget-body{background-color:transparent}.timeline-item .widget-toolbox{padding:4px 8px 0!important;background-color:transparent!important;border-width:0!important;margin:0!important}.timeline-info{float:left;width:60px;text-align:center;position:relative}.timeline-info img{border-radius:100%;max-width:42px}.timeline-info .badge,.timeline-info .label{font-size:12px}.timeline-container:not(.timeline-style2) .timeline-indicator{opacity:1;border-radius:100%;display:inline-block;font-size:16px;height:36px;line-height:30px;width:36px;text-align:center;text-shadow:none!important;padding:0;cursor:default;border:3px solid #FFF!important}.timeline-label{display:block;clear:both;margin:0 0 18px 34px}.timeline-item img{border:1px solid #AAA;padding:2px;background-color:#FFF}.timeline-style2:before{display:none}.timeline-style2 .timeline-item{padding-bottom:22px;margin-bottom:0}.timeline-style2 .timeline-item:last-child{padding-bottom:0}.timeline-style2 .timeline-item:before{content:"";display:block;position:absolute;left:90px;top:5px;bottom:-5px;border-width:0;background-color:#DDD;width:2px;max-width:2px}.timeline-style2 .timeline-item:last-child:before{display:none}.timeline-style2 .timeline-item:first-child:before{display:block}.timeline-style2 .timeline-item .transparent .widget-header{background-color:transparent!important}.timeline-style2 .timeline-item .transparent.widget-box{background-color:transparent!important;border-left:none!important}.timeline-style2 .timeline-info{width:100px}.timeline-style2 .timeline-indicator{font-size:0;height:12px;line-height:12px;width:12px;border-width:1px!important;background-color:#FFF!important;position:absolute;left:85px;top:3px;opacity:1;border-radius:100%;display:inline-block;padding:0}.timeline-style2 .timeline-date{display:inline-block;width:72px;text-align:right;margin-right:25px;color:#777}.timeline-style2 .timeline-item .widget-box{margin-left:112px}.timeline-style2 .timeline-label{width:75px;margin-left:0;margin-bottom:10px;text-align:right;color:#666;font-size:14px}.timeline-time{text-align:center;position:static}.dataTables_length select{width:70px;height:25px;padding:2px 3px}.dataTables_length label{font-weight:400}.dataTables_filter{text-align:right}.dataTables_filter input[type=search],.dataTables_filter input[type=text]{width:125px;height:18px;line-height:18px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:4px 6px}.dataTables_filter label{font-weight:400}.dataTables_info{font-size:14px}.dataTables_paginate{text-align:right}.dataTables_paginate .pagination{margin:0 12px}.dataTables_wrapper label{display:inline-block;font-size:13px}.dataTables_wrapper input[type=search],.dataTables_wrapper input[type=text],.dataTables_wrapper select{margin-bottom:0!important;margin:0 4px}.dataTables_wrapper .row{margin:0!important}.dataTables_wrapper .row:first-child{padding-top:12px;padding-bottom:12px;background-color:#EFF3F8}.dataTables_wrapper .row:first-child+.dataTable{border-top:1px solid #ddd;border-bottom:1px solid #ddd}.dataTables_wrapper .row:last-child{border-bottom:1px solid #e0e0e0;padding-top:12px;padding-bottom:12px;background-color:#EFF3F8}.dataTables_wrapper .dataTables_scroll+.row{border-top:1px solid #e0e0e0}.dataTable{margin-bottom:0}.dataTable>thead>tr>th[class*=sort]{cursor:pointer}.dataTable>thead>tr>th[class*=sort]:after{float:right;display:inline;content:"\f0dc";font-family:FontAwesome;font-size:13px;font-weight:400;color:#555}.dataTable>thead>tr>th[class*=sort]:hover{color:#547ea8}.dataTable>thead>tr>th[class*=sorting_]{color:#307ecc}.dataTable>thead>tr>th.sorting_asc,.dataTable>thead>tr>th.sorting_desc{background-image:-webkit-linear-gradient(top,#eff3f8 0,#e3e7ed 100%);background-image:-o-linear-gradient(top,#eff3f8 0,#e3e7ed 100%);background-image:linear-gradient(to bottom,#eff3f8 0,#e3e7ed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0)}.dataTable>thead>tr>th.sorting_desc:after{content:"\f0dd";top:-6px;color:#307ecc}.dataTable>thead>tr>th.sorting_asc:after{content:"\f0de";top:4px;color:#307ecc}.dataTable>thead>tr>th.sorting_disabled{cursor:inherit}.dataTable>thead>tr>th.sorting_disabled:after,.dataTables_scrollHead+.dataTables_scrollBody>.dataTable>thead>tr>th:after{display:none}.dataTables_scrollHeadInner{width:auto!important}.dataTables_scrollHeadInner>.dataTable>thead>tr>th{border-bottom-width:0!important}.dataTables_borderWrap .dataTables_scrollBody,.dataTables_borderWrap .dataTables_scrollHead{border:1px solid #ddd!important;border-width:0 1px!important}.dataTables_borderWrap .dataTables_scrollBody .table-bordered,.dataTables_borderWrap .dataTables_scrollHead .table-bordered{border-left-width:0;border-right-width:0}.dataTables_borderWrap .dataTables_scrollBody .table-bordered>tbody>tr>td:first-child,.dataTables_borderWrap .dataTables_scrollBody .table-bordered>thead>tr>th:first-child,.dataTables_borderWrap .dataTables_scrollHead .table-bordered>tbody>tr>td:first-child,.dataTables_borderWrap .dataTables_scrollHead .table-bordered>thead>tr>th:first-child{border-left-width:0}.dataTables_borderWrap .dataTables_scrollBody .table-bordered>tbody>tr>td:last-child,.dataTables_borderWrap .dataTables_scrollBody .table-bordered>thead>tr>th:last-child,.dataTables_borderWrap .dataTables_scrollHead .table-bordered>tbody>tr>td:last-child,.dataTables_borderWrap .dataTables_scrollHead .table-bordered>thead>tr>th:last-child{border-right-width:0}table.dataTable{clear:both;max-width:none!important}table.dataTable th:active{outline:0}div.dataTables_scrollHead table{margin-bottom:0!important;border-bottom-left-radius:0;border-bottom-right-radius:0}div.dataTables_scrollHead table thead tr:last-child td:first-child,div.dataTables_scrollHead table thead tr:last-child th:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody tbody tr:first-child td,div.dataTables_scrollBody tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot table{margin-top:0!important;border-top:none}.DTTT_Print .main-content{margin-left:0!important;margin-right:0!important}.fc-header-title>h2{font-size:22px;color:#65A0CE}.fc-widget-content,.fc-widget-header{border:1px solid #BCD4E5}.fc-state-highlight{background:#FFC}.fc-event-skin{border:none!important;background-color:#ABBAC3;padding:0 0 1px 2px}.label-yellow .fc-event-skin{color:#963}.label-light .fc-event-skin{color:#888}[class*=label-]>.fc-event-skin,[class*=label-]>.fc-event-skin>.fc-event-skin.fc-event-head{background-color:inherit}.fc-event-skin.ui-draggable-dragging{cursor:move}.fc-event-skin.fc-event-vert,.fc-event-vert>.fc-event-skin{padding:0 0 1px}.fc-grid .fc-day-number{color:#2E6589}.fc-widget-header{background:#ECF2F7;color:#8090A0}.fc-event-hori,.fc-event-vert{border-radius:0!important;border-color:transparent}.fc-event-vert .fc-event-content{padding-left:1px;padding-right:1px}.fc-event-vert .fc-event-time{padding:0}.fc-state-default,.fc-state-default .fc-button-inner{border:none;background-color:#ABBAC3;color:#FFF;background-image:none;box-shadow:none;text-shadow:none;border-radius:0!important;margin-left:2px}.fc-state-default .fc-button-effect{display:none}.fc-state-disabled,.fc-state-disabled .fc-button-inner{opacity:.75;filter:alpha(opacity=75);color:#DDD}.fc-state-active,.fc-state-active .fc-button-inner{border-color:#4F99C6;background-color:#6FB3E0}.fc-state-hover,.fc-state-hover .fc-button-inner{background-color:#8B9AA3}.external-event{margin:6px 0;padding:0;cursor:default;display:block;color:#FFF;background-color:#ABBAC3;font-size:13px;line-height:28px}.external-event:hover{opacity:1;filter:alpha(opacity=100)}.external-event.ui-draggable-dragging{cursor:move}.external-event>.ace-icon:first-child{display:inline-block;height:32px;width:32px;text-align:center;line-height:30px;margin-right:5px;font-size:15px;border-right:1px solid #FFF}@media only screen and (max-width:480px){.fc-header td{display:block;width:auto;text-align:left}}.chosen-container+.help-inline{vertical-align:middle}.chosen-select{display:inline!important;visibility:hidden;opacity:0;position:absolute;z-index:-1;width:0;height:0;border-width:0}.chosen-container,[class*=chosen-container]{vertical-align:middle}.chosen-container>.chosen-single,[class*=chosen-container]>.chosen-single{line-height:28px;height:30px;box-shadow:none;background:#FAFAFA}.chosen-choices{box-shadow:none!important}.chosen-container-single .chosen-single abbr{background:0 0}.chosen-container-single .chosen-single abbr:after{content:"\f00d";display:inline-block;color:#888;font-family:FontAwesome;font-size:13px;position:absolute;right:0;top:-7px}.chosen-container-single .chosen-single abbr:hover:after,.chosen-container-single.chosen-disabled .chosen-single abbr:hover:after{color:#464646}.chosen-single div b{background:none!important}.chosen-single div b:before{content:"\f0d7";display:inline-block;color:#888;font-family:FontAwesome;font-size:12px;position:relative;top:-1px;left:1px}.chosen-container-active.chosen-with-drop .chosen-single div b:before{content:"\f0d8"}.chosen-container-single .chosen-search{position:relative}.chosen-container-single .chosen-search input[type=text]{background:0 0;border-radius:0;line-height:28px;height:28px}.chosen-container-single .chosen-search:after{content:"\f002";display:inline-block;color:#888;font-family:FontAwesome;font-size:14px;position:absolute;top:8px;right:12px}.chosen-container-multi .chosen-choices li.search-field input[type=text]{height:25px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{background:0 0}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{content:"\f00d";display:inline-block;color:#888;font-family:FontAwesome;font-size:13px;position:absolute;right:2px;top:-1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{text-decoration:none}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before,.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close:before{color:#464646}.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span{background:0 0}.chosen-container .chosen-results-scroll-down span:before,.chosen-container .chosen-results-scroll-up span:before{content:"\f0d7";display:inline-block;color:#888;font-family:FontAwesome;font-size:12px;position:relative;top:-1px;left:1px}.chosen-container .chosen-results-scroll-up span:before,.chosen-container-active .chosen-single-with-drop div b:before{content:"\f0d8"}.chosen-rtl .chosen-search input[type=text]{background:0 0}.chosen-rtl .chosen-search:after{content:"";display:none}.chosen-rtl .chosen-search:before{content:"\f002";display:inline-block;color:#888;font-family:FontAwesome;font-size:14px;position:absolute;top:9px;left:12px}.chosen-container-single .chosen-single{border-radius:0}.chosen-container .chosen-results li.highlighted{background:#316AC5;color:#FFF}.chosen-container-single .chosen-drop{border-radius:0;border-bottom:3px solid #4492C9;border-color:#4492C9}.chosen-container-active .chosen-single,.chosen-single.chosen-single-with-drop{border-color:#4492C9}.form-group.has-error .chosen-single{border-color:#f09784!important}.form-group.has-info .chosen-single{border-color:#64a6bc!important}.form-group.has-warning .chosen-single{border-color:#e0c43a!important}.form-group.has-success .chosen-single{border-color:#92bf65!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#4492C9}.chosen-container .chosen-drop{display:none}.chosen-container.chosen-with-drop .chosen-drop{left:auto;right:auto;display:block}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices li.search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:none!important;background-repeat:no-repeat!important;background-size:auto!important}}.tag-input-style+.chosen-container-multi .chosen-choices li.search-choice{background-image:none;background-color:#91b8d0;color:#FFF;display:inline-block;font-size:13px;font-weight:400;margin-bottom:3px;margin-right:0;padding:6px 22px 7px 9px;position:relative;text-shadow:1px 1px 1px rgba(0,0,0,.15);transition:all .2s ease 0s;vertical-align:baseline;white-space:nowrap;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.tag-input-style+.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:0;bottom:0;right:0;width:18px;height:auto;line-height:25px;text-align:center}.tag-input-style+.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{color:#FFF;position:static;font-size:11px}.tag-input-style+.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-color:rgba(0,0,0,.2)}.tag-input-style+.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before{color:#FFF}.tag-input-style+.chosen-container-multi.chosen-rtl .chosen-choices li.search-choice{padding:6px 9px 7px 22px;margin-left:0;margin-right:3px!important}.tag-input-style+.chosen-container-multi.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:0}.select2-container .select2-choice{border-radius:0;height:30px}.select2-container.select2-drop-above .select2-choice{border-radius:0}.select2-container[class*=input-]{max-width:none}.select2-container.input-mini{min-width:100px}.select2-container .select2-choice abbr,.select2-search-choice-close{background:0 0}.select2-container .select2-choice abbr:before,.select2-search-choice-close:before{font-family:FontAwesome;font-size:12px;display:inline;content:"\f00d";color:#888;position:relative;top:-1px}.select2-container .select2-choice abbr:hover:before,.select2-search-choice-close:hover:before{color:#555}.select2-container .select2-choice abbr:before{top:-7px}.select2-search-choice-close:hover{text-decoration:none!important}.select2-drop{border-radius:0;border:1px solid #4492C9;border-width:0 1px 3px}.select2-drop.select2-drop-above{border-radius:0}.select2-container .select2-choice{background:#FAFAFA}.select2-container-active .select2-choice,.select2-container-active .select2-choices,.select2-container-multi.select2-container-active .select2-choices,.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border-color:#4492C9}.select2-results .select2-highlighted{background:#316AC5}.select2-container .select2-choice .select2-arrow{border-radius:0;background:0 0;border:none}.select2-container .select2-choice .select2-arrow b{background:0 0}.select2-container .select2-choice .select2-arrow b:before{font-family:FontAwesome;font-size:12px;display:inline;content:"\f0d7";color:#888;position:relative;left:5px}.select2-dropdown-open .select2-choice .select2-arrow b:before{content:"\f0d8"}.select2-search .select2-input{background:#fff;margin-top:4px}.select2-search:after{font-family:FontAwesome;font-size:14px;display:inline;content:"\f002";color:#777;position:relative;top:0;left:-20px;z-index:0}.select2-container-multi .select2-choices .select2-search-field input{border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;background:none!important}.select2-container-active .select2-choice,.select2-container-active .select2-choices,.select2-container-multi.select2-container-active .select2-choices,.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{-webkit-box-shadow:none;box-shadow:none}.select2-search input.select2-active{background-color:#FFF;position:relative;z-index:1}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){.select2-container .select2-choice abbr,.select2-container .select2-choice div b,.select2-search input,.select2-search-choice-close{background-image:none!important;background-size:auto!important}.select2-search input{background-position:auto!important}}.select2-container-active.select2-dropdown-open .select2-choice{background-image:-webkit-linear-gradient(top,#eee 0,#fff 100%);background-image:-o-linear-gradient(top,#eee 0,#fff 100%);background-image:linear-gradient(to bottom,#eee 0,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffffffff', GradientType=0)}.select2-container-active.select2-drop-above .select2-choice{background-image:-webkit-linear-gradient(top,#fff 0,#eee 100%);background-image:-o-linear-gradient(top,#fff 0,#eee 100%);background-image:linear-gradient(to bottom,#fff 0,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0)}.form-group.has-error .select2-choice,.form-group.has-error .select2-choices{border-color:#f09784!important}.form-group.has-info .select2-choice,.form-group.has-info .select2-choices{border-color:#64a6bc!important}.form-group.has-warning .select2-choice,.form-group.has-warning .select2-choices{border-color:#e0c43a!important}.form-group.has-success .select2-choice,.form-group.has-success .select2-choices{border-color:#92bf65!important}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){.select2-container .select2-choice .select2-arrow b,.select2-container .select2-choice abbr,.select2-search input,.select2-search-choice-close{background-image:none!important;background-repeat:no-repeat!important;background-size:auto!important}.select2-search input{background-position:auto!important}}#colorbox:active,#colorbox:focus{outline:0}#cboxBottomCenter,#cboxBottomLeft,#cboxBottomRight,#cboxMiddleLeft,#cboxMiddleRight,#cboxTopCenter,#cboxTopLeft,#cboxTopRight{background:none!important;opacity:0}#cboxContent{border:12px solid #000;background-color:#FFF;padding:7px}#cboxOverlay{background:#000}#cboxCurrent{left:64px;margin-bottom:4px;font-size:14px}#cboxTitle{margin-bottom:4px;font-size:14px;color:#777}#cboxClose,#cboxNext,#cboxPrevious{background:0 0;text-indent:0;width:26px;height:26px;line-height:22px;padding:0 4px;text-align:center;border:2px solid #999;border-radius:16px;color:#666;font-size:12px;margin-left:5px;margin-bottom:5px}#cboxNext:hover,#cboxPrevious:hover{color:#333;border-color:#666}#cboxContent{overflow:visible}#cboxClose{background-color:#000;border:2px solid #FFF;border-radius:32px;color:#FFF;font-size:21px;height:28px;width:28px;padding-bottom:2px;margin-left:0;right:-14px;top:-14px}#cboxLoadingOverlay{background:none!important}#cboxLoadingGraphic{background:#FFF!important;text-align:center}#cboxLoadingGraphic>.ace-icon{display:inline-block;background-color:#FFF;border-radius:8px;width:32px;height:32px;position:relative;top:48%;text-align:center;vertical-align:middle;-moz-animation:spin 1.5s infinite linear;-webkit-animation:spin 1.5s infinite linear;-o-animation:spin 1.5s infinite linear;-ms-animation:spin 1.5s infinite linear;animation:spin 1.5s infinite linear;font-size:24px;color:#FE7E3E}.ace-spinner{display:inline-block}.ace-spinner .spinner-buttons{min-width:18px}.ace-spinner .spinner-buttons>.btn{border-radius:0!important;font-size:10px;padding:0;width:18px;height:14px;line-height:8px;margin-left:0}.ace-spinner .spinner-buttons>.btn:first-child{margin-top:0}.ace-spinner .spinner-buttons>.btn>.ace-icon{margin:0;padding:0}.ace-spinner .spinner-buttons>button.btn.spinner-up:active{top:-1px}.ace-spinner .spinner-input{text-align:center;height:29px;line-height:1.2;color:#777}.ace-spinner.touch-spinner .spinner-buttons{margin:0;font-size:0}.ace-spinner.touch-spinner .spinner-buttons>.btn{height:29px;line-height:16px;width:24px;font-size:18px;display:inline-block;vertical-align:sub;margin:0 1px!important}.ace-spinner.touch-spinner .spinner-buttons>.btn>.ace-icon{vertical-align:middle;display:inline-block}.wizard-steps{list-style:none;display:table;width:100%;padding:0;margin:0;position:relative}.wizard-steps li{display:table-cell;text-align:center;width:1%}.wizard-steps li .step{border:5px solid #ced1d6;color:#546474;font-size:15px;border-radius:100%;background-color:#FFF;position:relative;z-index:2;display:inline-block;width:40px;height:40px;line-height:30px;text-align:center}.wizard-steps li:before{display:block;content:"";width:100%;height:1px;font-size:0;overflow:hidden;border-top:4px solid #CED1D6;position:relative;top:21px;z-index:1}.wizard-steps li:last-child:before{max-width:50%;width:50%}.wizard-steps li:first-child:before{max-width:51%;left:50%}.wizard-steps li.active .step,.wizard-steps li.active:before,.wizard-steps li.complete .step,.wizard-steps li.complete:before{border-color:#5293c4}.wizard-steps li.complete .step{cursor:default;color:#FFF;-webkit-transition:transform ease .1s;-o-transition:transform ease .1s;transition:transform ease .1s}.wizard-steps li.complete .step:before{display:block;position:absolute;top:0;left:0;bottom:0;right:0;line-height:30px;text-align:center;border-radius:100%;content:"\f00c";background-color:#FFF;z-index:3;font-family:FontAwesome;font-size:17px;color:#87ba21}.wizard-steps li.complete:hover .step{-moz-transform:scale(1.1);-webkit-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);border-color:#80afd4}.wizard-steps li.complete:hover:before{border-color:#80afd4}.wizard-steps li .title{display:block;margin-top:4px;max-width:100%;color:#949ea7;font-size:14px;z-index:104;text-align:center;table-layout:fixed;word-wrap:break-word}.wizard-steps li.active .title,.wizard-steps li.complete .title{color:#2b3d53}.step-content{position:relative}.step-content .step-pane{display:none;min-height:200px;padding:4px 8px 12px}.step-content .step-pane.active{display:block}.wizard-actions{text-align:right}@media only screen and (max-width:767px){.wizard-steps li .step{width:30px;height:30px;line-height:24px;border-width:3px}.wizard-steps li:after,.wizard-steps li:before{border-width:3px}.wizard-steps li.complete .step:before{line-height:24px;font-size:13px}.wizard-steps li:before{top:16px}.step-content .step-pane{padding:4px 4px 6px;min-height:150px}}.tree{padding-left:9px;overflow-x:hidden;overflow-y:auto;position:relative}.tree:before{display:inline-block;content:"";position:absolute;top:-20px;bottom:16px;left:0;z-index:1;border:1px dotted #67b2dd;border-width:0 0 0 1px}.tree .tree-folder{width:auto;min-height:20px;cursor:pointer}.tree .tree-folder .tree-folder-header{position:relative;height:20px;line-height:20px}.tree .tree-folder .tree-folder-header:hover{background-color:#F0F7FC}.tree .tree-folder .tree-folder-header .tree-folder-name,.tree .tree-item .tree-item-name{display:inline;z-index:2}.tree .tree-folder .tree-folder-header>.ace-icon:first-child,.tree .tree-item>.ace-icon:first-child{display:inline-block;position:relative;z-index:2;top:-1px}.tree .tree-folder .tree-folder-header .tree-folder-name{margin-left:2px}.tree .tree-folder .tree-folder-header>.ace-icon:first-child{margin:-2px 0 0 -2px}.tree .tree-folder:last-child:after{display:inline-block;content:"";position:absolute;z-index:1;top:15px;bottom:0;left:-15px;border-left:1px solid #FFF}.tree .tree-folder .tree-folder-content{margin-left:23px;position:relative}.tree .tree-folder .tree-folder-content:before{display:inline-block;content:"";position:absolute;z-index:1;top:-14px;bottom:16px;left:-14px;border:1px dotted #67b2dd;border-width:0 0 0 1px}.tree .tree-item{height:20px;line-height:20px;cursor:pointer}.tree .tree-item:hover{background-color:#F0F7FC}.tree .tree-item .tree-item-name{margin-left:3px}.tree .tree-item .tree-item-name>.ace-icon:first-child{margin-right:3px}.tree .tree-item>.ace-icon:first-child{margin-top:-1px}.tree .tree-folder,.tree .tree-item{position:relative}.tree .tree-folder:before,.tree .tree-item:before{display:inline-block;content:"";position:absolute;top:14px;left:-13px;width:18px;height:0;border-top:1px dotted #67b2dd;z-index:1}.tree .tree-selected{background-color:rgba(98,168,209,.1);color:#6398B0}.tree .tree-selected:hover{background-color:rgba(98,168,209,.1)}.tree .tree-folder,.tree .tree-item{border:1px solid #FFF}.tree .tree-folder .tree-folder-header{border-radius:0}.tree .tree-folder .tree-folder-header,.tree .tree-item{margin:0;padding:5px;color:#4D6878;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.tree .tree-item>.ace-icon:first-child{color:#F9E8CE;width:13px;height:13px;line-height:13px;font-size:11px;text-align:center;border-radius:3px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;background-color:#FAFAFA;border:1px solid #CCC;box-shadow:0 1px 2px rgba(0,0,0,.05)}.tree .tree-selected>.ace-icon:first-child{background-color:#F9A021;border-color:#F9A021;color:#FFF}.tree .tree-minus.ace-icon:first-child,.tree .tree-plus.ace-icon:first-child{font-style:normal;vertical-align:middle;height:11px;width:11px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;text-align:center;border:1px solid #8BAEBF;line-height:10px;background-color:#FFF;position:relative;z-index:1}.tree .tree-minus.ace-icon:first-child:before,.tree .tree-plus.ace-icon:first-child:before{content:"";display:block;width:7px;height:0;border-top:1px solid #4D6878;position:absolute;top:5px;left:2px}.tree .tree-plus.ace-icon:first-child:after{content:"";display:block;height:7px;width:0;border-left:1px solid #4D6878;position:absolute;top:2px;left:5px}.tree .tree-unselectable .tree-item>.ace-icon:first-child{color:#5084A0;width:13px;height:13px;line-height:13px;font-size:10px;text-align:center;border-radius:0;background-color:transparent;border:none;box-shadow:none}.tree .ace-icon[class*="-down"]{transform:rotate(-45deg)}.tree .fa-spin{height:auto}.tree .tree-loading{margin-left:36px}.tree img{display:inline;veritcal-align:middle}.gritter-item-wrapper{background-image:none!important;box-shadow:0 2px 10px rgba(50,50,50,.5);background:rgba(50,50,50,.92)}.gritter-item-wrapper.gritter-info{background:rgba(49,81,133,.92)}.gritter-item-wrapper.gritter-error{background:rgba(153,40,18,.92)}.gritter-item-wrapper.gritter-success{background:rgba(89,131,75,.92)}.gritter-item-wrapper.gritter-warning{background:rgba(190,112,31,.92)}.gritter-item-wrapper.gritter-light{background:rgba(245,245,245,.95);border:1px solid #BBB}.gritter-item-wrapper.gritter-light.gritter-info{background:rgba(232,242,255,.95)}.gritter-item-wrapper.gritter-light.gritter-info .gritter-item{color:#4A577D}.gritter-item-wrapper.gritter-light.gritter-error{background:rgba(255,235,235,.95)}.gritter-item-wrapper.gritter-light.gritter-error .gritter-item{color:#894A38}.gritter-item-wrapper.gritter-light.gritter-success{background:rgba(239,250,227,.95)}.gritter-item-wrapper.gritter-light.gritter-success .gritter-item{color:#416131}.gritter-item-wrapper.gritter-light.gritter-warning{background:rgba(252,248,227,.95)}.gritter-item-wrapper.gritter-light.gritter-warning .gritter-item{color:#946446}.gritter-item p{line-height:1.8}.gritter-bottom,.gritter-item,.gritter-top{background-image:none}.gritter-close{left:auto;right:3px;background-image:none;width:18px;height:18px;line-height:17px;text-align:center;border:2px solid transparent;border-radius:16px;color:#E17B67}.gritter-close:before{font-family:FontAwesome;font-size:16px;content:"\f00d"}.gritter-info .gritter-close{color:orange}.gritter-error .gritter-close,.gritter-success .gritter-close,.gritter-warning .gritter-close{color:#FFEA07}.gritter-close:hover{color:#FFF!important}.gritter-title{text-shadow:none}.gritter-light .gritter-bottom,.gritter-light .gritter-close,.gritter-light .gritter-item,.gritter-light .gritter-top{background-image:none;color:#444}.gritter-light .gritter-title{text-shadow:none}.gritter-light .gritter-close:hover{color:#8A3104!important}.gritter-center{position:fixed;left:33%;right:33%;top:33%}@media only screen and (max-width:767px){.gritter-center{left:16%;right:16%;top:30%}}@media only screen and (max-width:480px){.gritter-center{left:30px;right:30px}}@media only screen and (max-width:320px){.gritter-center{left:10px;right:10px}}.wysiwyg-editor{max-height:250px;height:250px;background-color:#F7F8FA;border-collapse:separate;border:1px solid #BBC0CA;padding:4px;box-sizing:content-box;overflow-y:scroll;overflow-x:hidden;outline:0}.wysiwyg-editor:focus{background-color:#FFF}.wysiwyg-toolbar{line-height:33px;margin:0!important;position:relative}.wysiwyg-toolbar .dropdown-menu{text-align:left}.wysiwyg-toolbar .btn-group{float:none!important;font-size:0}.wysiwyg-toolbar .btn-group>.btn{float:none;padding-left:0;padding-right:0;text-align:center;margin-left:1px}.wysiwyg-toolbar .btn-group>.btn>.ace-icon:first-child{font-size:14px;width:25px;max-width:25px;display:inline-block;border-width:1px!important}.wysiwyg-toolbar .btn-group>.btn.dropdown-toggle>.ace-icon:last-child{margin-right:4px}.wysiwyg-style1 .btn-group>.btn,.wysiwyg-style1 .btn-group>.inline>.btn,.wysiwyg-style2 .btn-group>.btn,.wysiwyg-style2 .btn-group>.inline>.btn{margin:0!important;background:#FFF!important;border-width:0!important;color:#ADB3BE!important;text-shadow:none!important}.wysiwyg-style1 .btn-group>.btn.active,.wysiwyg-style1 .btn-group>.inline>.btn.active,.wysiwyg-style2 .btn-group>.btn.active,.wysiwyg-style2 .btn-group>.inline>.btn.active{color:#5B80CE!important}.wysiwyg-style1 .btn-group>.btn.active:after,.wysiwyg-style1 .btn-group>.inline>.btn.active:after,.wysiwyg-style2 .btn-group>.btn.active:after,.wysiwyg-style2 .btn-group>.inline>.btn.active:after{display:none}.wysiwyg-style1 .btn-group,.wysiwyg-style2 .btn-group{position:relative}.wysiwyg-style1 .btn-group:after,.wysiwyg-style2 .btn-group:after{display:block;content:"";position:absolute;left:-2px;top:6px;bottom:6px;width:0;max-width:0;border-left:1px solid #E1E6EA}.wysiwyg-style1 .btn-group:first-child:after,.wysiwyg-style2 .btn-group:first-child:after{display:none}.wysiwyg-style2{background-color:#E5E5E5}.wysiwyg-style2+.wysiwyg-editor{border-color:#DDD;background-color:#FFF;border-top:none}.wysiwyg-style2 .btn-group>.btn,.wysiwyg-style2 .btn-group>.inline>.btn{margin:0 1px 0 0!important;background:#FFF!important;border:none!important;color:#8D939E!important;text-shadow:none!important}.wysiwyg-style2 .btn-group>.btn.active,.wysiwyg-style2 .btn-group>.inline>.btn.active{color:#FFF!important;background:#6AAEDF!important}.wysiwyg-style2 .btn-group:after{display:none}.wysiwyg-toolbar .btn-colorpicker{width:24px;height:24px;position:relative;background:#87B87F;background:-moz-linear-gradient(top,#cf3e73 10%,#fff 20%,#2283c5 30%,#fff 40%,#87b87f 50%,#fff 60%,#ffb752 70%,#fff 80%,#d15b47 90%,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(10%,#cf3e73),color-stop(20%,#fff),color-stop(30%,#2283c5),color-stop(40%,#fff),color-stop(50%,#87b87f),color-stop(60%,#fff),color-stop(70%,#ffb752),color-stop(80%,#fff),color-stop(90%,#d15b47),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#cf3e73 10%,#fff 20%,#2283c5 30%,#fff 40%,#87b87f 50%,#fff 60%,#ffb752 70%,#fff 80%,#d15b47 90%,#fff 100%);background:-o-linear-gradient(top,#cf3e73 10%,#fff 20%,#2283c5 30%,#fff 40%,#87b87f 50%,#fff 60%,#ffb752 70%,#fff 80%,#d15b47 90%,#fff 100%);background:-ms-linear-gradient(top,#cf3e73 10%,#fff 20%,#2283c5 30%,#fff 40%,#87b87f 50%,#fff 60%,#ffb752 70%,#fff 80%,#d15b47 90%,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#CF3E73', endColorstr='#FFB752', GradientType=0);background:linear-gradient(top,#cf3e73 10%,#fff 20%,#2283c5 30%,#fff 40%,#87b87f 50%,#fff 60%,#ffb752 70%,#fff 80%,#d15b47 90%,#fff 100%)}.wysiwyg-toolbar .dropdown-colorpicker>.dropdown-menu{top:auto}.wysiwyg-toolbar input[type=file]{position:fixed;z-index:-10;opacity:0;max-width:0;max-height:0;display:block}.wysiwyg-toolbar .wysiwyg-choose-file{display:inline-block;width:auto;margin:4px auto 0;padding-left:5px;padding-right:5px}.wysiwyg-toolbar .dropdown-menu input[type=text]{margin-left:8px;margin-bottom:0}.wysiwyg-toolbar .dropdown-menu input[type=text].form-control{min-width:150px}.wysiwyg-toolbar .dropdown-menu .btn{margin-right:8px;margin-left:8px}.wysiwyg-style1 .btn-colorpicker{width:20px;height:20px;margin-left:4px}@media screen and (-webkit-min-device-pixel-ratio:0){.wysiwyg-editor img{display:inline!important}.wysiwyg-editor .ui-wrapper{border:1px dotted #D00;overflow:visible!important;display:inline-block!important;vertical-align:middle}.wysiwyg-editor .ui-wrapper:after{content:"";display:block;position:absolute;right:-3px;bottom:-3px;width:7px;height:7px;border:1px solid #D00;background-color:#FFF;z-index:1}}.widget-header .wysiwyg-toolbar{background-color:transparent}.widget-header .wysiwyg-toolbar .btn-group>.btn,.widget-header .wysiwyg-toolbar .btn-group>.inline>.btn{border-color:transparent;background:rgba(255,255,255,.25)!important;color:#FFF!important;min-width:32px;border-width:1px!important;border-radius:4px!important;padding:2px 1px 4px}.widget-header .wysiwyg-toolbar .btn-group>.btn.active,.widget-header .wysiwyg-toolbar .btn-group>.inline>.btn.active{background:rgba(0,0,0,.25)!important}.widget-body .wysiwyg-editor{border-width:0}.wysiwyg-speech-input{width:20px!important;color:transparent!important;background:0 0!important;border-width:0!important;-moz-transform:scale(2,2);-webkit-transform:scale(2,2);-o-transform:scale(2,2);-ms-transform:scale(2,2);transform:scale(2,2);-webkit-box-shadow:none!important;box-shadow:none!important;position:absolute;right:0;top:-10px;cursor:pointer}.wysiwyg-speech-input:focus{-webkit-box-shadow:none!important;box-shadow:none!important}.widget-body .md-header{margin-top:-30px;margin-left:9px}.widget-body .md-header .btn{border-color:transparent;background:rgba(255,255,255,.25)!important;color:#FFF!important;text-align:center;min-width:32px;border-width:1px!important;border-radius:4px!important;padding:2px 4px 4px}.widget-body .md-header .btn>.ace-icon{font-size:14px;width:25px;max-width:25px;display:inline-block}.widget-body .md-header .btn-inverse{background:rgba(0,0,0,.25)!important;padding-right:5px;margin-left:4px}.widget-body .md-preview{padding:8px;min-height:200px}.widget-body .md-input{border:none!important;box-shadow:none!important;display:block;margin-bottom:0;background-color:rgba(48,126,204,.07);padding:8px;width:100%}.widget-body .md-input:focus{background-color:#FFF;box-shadow:none!important}.editable-container .popover-title{color:#438EB9}.editable-click{border-bottom:1px dashed #BBB;cursor:pointer;font-weight:400}img.editable-click{border:1px dotted #BBB}.editable-click:hover{border-color:#08C;color:#08C}img.editable-click:hover{opacity:.75;filter:alpha(opacity=75)}.editable-buttons,.editable-input{display:inline-block}.editable-buttons{margin-left:1px}.editable-buttons .btn{padding:0;width:28px;line-height:24px;border-width:3px;font-size:12px;margin:0 1px 0 0}.editable-buttons .btn>.ace-icon{margin:0}.editable-clear-x{cursor:pointer;color:#888;background:0 0}.editable-clear-x:hover{color:#D15B47}.editable-clear-x:before{display:inline-block;content:"\f057";font-family:FontAwesome;font-size:15px;position:absolute;margin-top:-9px;width:16px;height:30px;line-height:30px;text-align:center}.editable-input .ace-spinner{margin-right:8px}.editable-input .ace-spinner .spinner-input{width:100%}.editable-inline .editable-slider{margin-top:10px;margin-right:4px}.editable-popup .editable-slider{display:block;margin-bottom:16px;margin-top:4px}.editable-slider input[type=text]{display:none}.editable-slider input[type=range]{outline:0!important}.editable-input .ace-file-input{display:block}.editable-image .ace-file-multiple .ace-file-container.selected{border-color:transparent}.editable-image+.editable-buttons,.editable-wysiwyg+.editable-buttons{display:block;text-align:center;margin-top:8px}.editable-wysiwyg{width:95%}.editable-wysiwyg .wysiwyg-editor{height:auto;overflow-y:hidden}.editableform .input-append.dropdown-menu{display:none}.editableform .open .input-append.dropdown-menu{display:block}.editable-container .editableform{margin-bottom:10px}.editable-inline .editableform{margin-bottom:0}.editableform .control-group{display:block}.editableform-loading{background:0 0}.editableform-loading .ace-icon,.editableform-loading .progress{position:relative;top:35%}.input-group.date .input-group-addon{cursor:pointer}.datepicker td,.datepicker th,.daterangepicker td,.daterangepicker th{border-radius:0!important;font-size:13px}.datepicker td.active,.datepicker td.active:hover,.daterangepicker td.active,.daterangepicker td.active:hover{background:#2283c5!important}.datepicker td.active.disabled,.datepicker td.active.disabled:hover,.daterangepicker td.active.disabled,.daterangepicker td.active.disabled:hover{background:#8b9aa3!important}.datepicker td,.datepicker th{min-width:32px}.datepicker-dropdown.datepicker-orient-bottom:after,.datepicker-dropdown.datepicker-orient-bottom:before{top:auto}.daterangepicker .calendar-date{border-radius:0}.datepicker-months .month,.datepicker-years .year{border-radius:0!important}.datepicker-months .month.active,.datepicker-months .month.active:active,.datepicker-months .month.active:focus,.datepicker-months .month.active:hover,.datepicker-years .year.active,.datepicker-years .year.active:active,.datepicker-years .year.active:focus,.datepicker-years .year.active:hover{background-image:none!important;background-color:#2283c5!important}.bootstrap-timepicker-widget table td input{width:32px}.well .datepicker table tr td.day:hover{background-color:#7d8893;color:#FFF}.bootstrap-timepicker-widget table td a:hover{border-radius:0}.daterangepicker.opensleft:before,.daterangepicker.opensright:before{-moz-border-bottom-colors:rgba(0,0,0,.2)}.daterangepicker.opensleft:after,.daterangepicker.opensright:after{-moz-border-bottom-colors:#fff}.datepicker-dropdown:before{-moz-border-bottom-colors:rgba(0,0,0,.2)}.datepicker-dropdown:after{-moz-border-bottom-colors:#fff}.datepicker-dropdown.datepicker-orient-bottom:before{-moz-border-top-colors:#999}.datepicker-dropdown.datepicker-orient-bottom:after{-moz-border-top-colors:#FFF}.bootstrap-timepicker-widget.dropdown-menu:before{-moz-border-bottom-colors:rgba(0,0,0,.2)}.bootstrap-timepicker-widget.dropdown-menu:after{-moz-border-bottom-colors:#FFF}.bootstrap-timepicker-widget.timepicker-orient-bottom:before{-moz-border-top-colors:#999}.bootstrap-timepicker-widget.timepicker-orient-bottom:after{-moz-border-top-colors:#FFF}.bootstrap-datetimepicker-widget [class=btn]{border-width:0!important;background-color:transparent!important;color:#777!important;text-shadow:none!important}.bootstrap-datetimepicker-widget [class=btn]:hover{color:#1B6AAA!important}.bootstrap-datetimepicker-widget .btn.btn-primary{border-width:3px!important}.bootstrap-datetimepicker-widget .picker-switch{margin-bottom:2px}.bootstrap-datetimepicker-widget .picker-switch .btn{width:90%!important;background-color:#EEE!important;color:#478fca!important;font-size:16px}.bootstrap-datetimepicker-widget .picker-switch .btn:hover{background-color:#e3edf5!important}.bootstrap-datetimepicker-widget td span{border-radius:0}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{color:#555!important}.ui-slider{background-color:#CCC}.ui-slider-horizontal{height:9px}.ui-slider-vertical{width:9px}.ui-slider .ui-slider-handle{border-radius:0;width:1.45em;height:1.45em;background-color:#F8F8F8;border:1px solid}.ui-slider .ui-slider-handle:after,.ui-slider .ui-slider-handle:before{display:block;content:"";position:absolute;top:4px;left:5px;width:4px;height:8px;border:1px solid;border-width:0 1px;border-color:inherit}.ui-slider .ui-slider-handle:after{left:8px;border-width:0 1px 0 0}.ui-slider .ui-slider-handle:hover{background-color:#FFF}.ui-slider .ui-slider-handle:active,.ui-slider .ui-slider-handle:focus,.ui-slider .ui-slider-handle:hover{outline:0;-webkit-box-shadow:1px 1px 1px 0 rgba(0,0,0,.3);box-shadow:1px 1px 1px 0 rgba(0,0,0,.3)}.ui-slider-horizontal .ui-slider-handle{margin-left:-.725em;top:-.4em}.ui-slider-vertical .ui-slider-handle{left:-.35em;margin-bottom:-.65em}.ui-slider-small.ui-slider-horizontal{height:5px}.ui-slider-small.ui-slider-vertical{width:5px}.ui-slider-small .ui-slider-handle{border-radius:100%;width:17px;height:17px;margin-bottom:-.45em;left:-.35em}.ui-slider-small .ui-slider-handle:after,.ui-slider-small .ui-slider-handle:before{height:7px;left:5px;width:3px}.ui-slider-small .ui-slider-handle:after{left:7px}.ui-slider-simple .ui-slider-handle:after,.ui-slider-simple .ui-slider-handle:before{display:none}.ui-slider-range{background-color:#4aa4ce}.ui-slider-handle{outline:0!important;border-color:#4aa4ce!important}.ui-state-disabled .ui-slider-range{background-color:#8daebe}.ui-state-disabled .ui-slider-handle{-webkit-box-shadow:none!important;box-shadow:none!important;border-color:#8daebe!important}.ui-slider-green .ui-slider-range{background-color:#8bbc67}.ui-slider-green .ui-slider-handle{border-color:#8bbc67!important}.ui-slider-green.ui-state-disabled .ui-slider-range{background-color:#aab2a4}.ui-slider-green.ui-state-disabled .ui-slider-handle{border-color:#aab2a4!important}.ui-slider-red .ui-slider-range{background-color:#d36e6e}.ui-slider-red .ui-slider-handle{border-color:#d36e6e!important}.ui-slider-red.ui-state-disabled .ui-slider-range{background-color:#caaaaa}.ui-slider-red.ui-state-disabled .ui-slider-handle{border-color:#caaaaa!important}.ui-slider-purple .ui-slider-range{background-color:#ac68ba}.ui-slider-purple .ui-slider-handle{border-color:#ac68ba!important}.ui-slider-purple.ui-state-disabled .ui-slider-range{background-color:#afa4b1}.ui-slider-purple.ui-state-disabled .ui-slider-handle{border-color:#afa4b1!important}.ui-slider-orange .ui-slider-range{background-color:#efad62}.ui-slider-orange .ui-slider-handle{border-color:#efad62!important}.ui-slider-orange.ui-state-disabled .ui-slider-range{background-color:#e1c4a3}.ui-slider-orange.ui-state-disabled .ui-slider-handle{border-color:#e1c4a3!important}.ui-slider-dark .ui-slider-range{background-color:#606060}.ui-slider-dark .ui-slider-handle{border-color:#606060!important}.ui-slider-dark.ui-state-disabled .ui-slider-range{background-color:#7a7a7a}.ui-slider-dark.ui-state-disabled .ui-slider-handle{border-color:#7a7a7a!important}.ui-slider-pink .ui-slider-range{background-color:#d6487e}.ui-slider-pink .ui-slider-handle{border-color:#d6487e!important}.ui-slider-pink.ui-state-disabled .ui-slider-range{background-color:#c58ca2}.ui-slider-pink.ui-state-disabled .ui-slider-handle{border-color:#c58ca2!important}.ui-datepicker{background-color:#FFF;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{height:26px;min-width:32px;max-width:32px;text-align:center;cursor:pointer;color:transparent;line-height:26px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-datepicker .ui-datepicker-next .ui-icon,.ui-datepicker .ui-datepicker-prev .ui-icon{color:transparent;visibility:hidden}.ui-datepicker .ui-datepicker-next:hover,.ui-datepicker .ui-datepicker-prev:hover{background-color:#EEE;text-decoration:none}.ui-datepicker .ui-datepicker-next:before,.ui-datepicker .ui-datepicker-prev:before{display:inline;font-family:FontAwesome;font-size:14px;content:"\f060";color:#393939}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:2px}.ui-datepicker .ui-datepicker-next:before{content:"\f061"}.ui-datepicker .ui-datepicker-prev-hover{left:2px}.ui-datepicker .ui-datepicker-next-hover{right:2px}.ui-datepicker td{padding:0}.ui-datepicker td>a,.ui-datepicker td>span{display:inline-block;height:22px;min-width:24px;max-width:24px;text-align:center;color:#393939;font-size:13px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-datepicker td>a:hover{background-color:#EEE}.ui-datepicker td>a.ui-state-highlight{background-color:#D5E5EF}.ui-datepicker td>a.ui-state-active{background-color:#2283c5;color:#FFF}.ui-datepicker td>a.ui-priority-secondary{color:#888}.ui-datepicker td>span{color:#999}.ui-datepicker td .ui-datepicker-title select{height:24px;line-height:24px;padding:2px 3px}.ui-datepicker td .ui-datepicker-buttonpane{background-color:#DDD;height:1px}.ui-widget-overlay{background:rgba(0,0,0,.25);opacity:1!important;filter:alpha(opacity=100)!important;z-index:1040!important}.ui-dialog,.ui-jqdialog{z-index:1050!important;background-color:#FFF;padding:0;border:1px solid #DDD;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}.ui-dialog .ui-dialog-titlebar,.ui-dialog .ui-jqdialog-titlebar,.ui-jqdialog .ui-dialog-titlebar,.ui-jqdialog .ui-jqdialog-titlebar{background-color:#F1F1F1;font-size:16px;color:#669fc7;padding:0}.ui-dialog .ui-dialog-title,.ui-dialog .ui-jqdialog-title,.ui-jqdialog .ui-dialog-title,.ui-jqdialog .ui-jqdialog-title{float:none!important;width:auto}.ui-dialog .widget-header,.ui-jqdialog .widget-header{margin:0;border-width:0 0 1px}.ui-dialog .ui-dialog-buttonpane,.ui-dialog .ui-jqdialog-buttonpane,.ui-jqdialog .ui-dialog-buttonpane,.ui-jqdialog .ui-jqdialog-buttonpane{background-color:#eff3f8;border-top:1px solid #e4e9ee}.ui-dialog .ui-dialog-buttonpane button,.ui-dialog .ui-jqdialog-buttonpane button,.ui-jqdialog .ui-dialog-buttonpane button,.ui-jqdialog .ui-jqdialog-buttonpane button{font-size:14px}.ui-dialog .ui-dialog-titlebar-close,.ui-dialog .ui-jqdialog-titlebar-close,.ui-jqdialog .ui-dialog-titlebar-close,.ui-jqdialog .ui-jqdialog-titlebar-close{border:none;background:0 0;opacity:.4;color:#d15b47;padding:0;top:50%;right:8px!important;text-align:center}.ui-dialog .ui-dialog-titlebar-close:before,.ui-dialog .ui-jqdialog-titlebar-close:before,.ui-jqdialog .ui-dialog-titlebar-close:before,.ui-jqdialog .ui-jqdialog-titlebar-close:before{content:"\f00d";display:inline;font-family:FontAwesome;font-size:16px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-jqdialog-titlebar-close:hover,.ui-jqdialog .ui-dialog-titlebar-close:hover,.ui-jqdialog .ui-jqdialog-titlebar-close:hover{opacity:1;text-decoration:none;padding:0}.ui-dialog .ui-dialog-titlebar-close .ui-button-text,.ui-dialog .ui-jqdialog-titlebar-close .ui-button-text,.ui-jqdialog .ui-dialog-titlebar-close .ui-button-text,.ui-jqdialog .ui-jqdialog-titlebar-close .ui-button-text{text-indent:0;visibility:hidden}.ui-dialog .widget-header .ui-dialog-titlebar-close,.ui-dialog .widget-header .ui-jqdialog-titlebar-close,.ui-jqdialog .widget-header .ui-dialog-titlebar-close,.ui-jqdialog .widget-header .ui-jqdialog-titlebar-close{right:10px!important}.ui-accordion .ui-accordion-header{color:#478fca;font-weight:400;background-color:#F9F9F9;border:1px solid #cdd8e3;padding:8px 8px 9px 24px}.ui-accordion .ui-accordion-header:hover{color:#6ea6cc;background-color:#f1f8fd}.ui-accordion .ui-accordion-header.ui-state-active{color:#4c8fbd;background-color:#eef4f9;position:relative;font-weight:700}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{text-indent:0;margin-top:0;position:absolute;left:10px;top:7px}.ui-accordion .ui-accordion-header .ui-accordion-header-icon:before{display:inline;font-family:FontAwesome;font-size:15px;content:"\f0da"}.ui-accordion .ui-accordion-header.ui-state-active .ui-accordion-header-icon:before{content:"\f0d7";font-weight:400}.ui-accordion .ui-accordion-content{border:1px solid #cdd8e3;border-top-width:0;padding:11px 16px}.ui-tabs .ui-tabs-nav{padding:0;border-bottom:1px solid #C5D0DC}.ui-tabs .ui-tabs-nav li.ui-state-default>a{background-color:#F9F9F9;border:1px solid #C5D0DC;border-bottom-width:0;color:#999;line-height:16px;margin-right:-1px;z-index:11;padding:8px 12px;position:relative;top:2px}.ui-tabs .ui-tabs-nav li>a:focus{outline:0}.ui-tabs .ui-tabs-nav li.ui-tabs-active>a{background-color:#FFF;border:1px solid;border-color:#4C8FBD #C5D0DC transparent;border-top-width:2px;-webkit-box-shadow:0 -2px 3px 0 rgba(0,0,0,.15);box-shadow:0 -2px 3px 0 rgba(0,0,0,.15);color:#576373;position:relative;top:1px}.ui-tabs .ui-tabs-panel{border:1px solid #C5D0DC;border-top-width:0;margin:0;left:auto;right:auto;top:auto;bottom:auto}.ui-menu{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:150px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2);background-color:#FFF;border:1px solid rgba(0,0,0,.2);padding:3px}.ui-menu .ui-menu-item a{padding:4px 7px 5px;color:#444;cursor:pointer;-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}.ui-menu .ui-menu-item a .ui-menu-icon{float:right;position:relative;top:0;left:auto;right:auto;bottom:auto;text-indent:0}.ui-menu .ui-menu-item a .ui-menu-icon:before{content:"\f105";font-family:FontAwesome;font-size:14px;display:inline}.ui-menu .ui-menu-item a.ui-state-active,.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a:hover{background-color:#4f99c6;color:#FFF;margin:auto;font-weight:400}.ui-menu .ui-menu-item a.ui-state-active .ui-menu-icon,.ui-menu .ui-menu-item a.ui-state-focus .ui-menu-icon,.ui-menu .ui-menu-item a:hover .ui-menu-icon{color:#FFF}.ui-menu .ui-state-disabled a{color:#999;cursor:default}.ui-menu .ui-state-disabled a.ui-state-active,.ui-menu .ui-state-disabled a.ui-state-focus,.ui-menu .ui-state-disabled a:hover{background-color:#FFF;color:#999}.ui-autocomplete{background-color:#FFF;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}.ui-autocomplete-category{padding:6px;position:relative;background-color:#eef4f9;color:#478fca;font-weight:bolder;border:1px solid #DAE6ED;border-width:1px 0}.ui-spinner-button{border-width:0!important;font-size:10px;height:14px;line-height:14px;width:18px;color:#FFF!important;text-shadow:0 -1px 0 rgba(0,0,0,.25)!important;display:inline-block;position:absolute;text-align:center;padding:0}.ui-spinner-button>.ace-icon{width:18px;display:inline-block}.ui-spinner-up{top:0;right:5px}.ui-spinner-down{bottom:3px;right:5px}.ui-spinner-input{margin-top:0;padding:5px;max-width:100px;font-size:14px}.ui-tooltip{background-color:#444;color:#FFF}.ui-progressbar{background-color:#f5f5f5;height:22px}.ui-progressbar .ui-progressbar-value{margin:0}.ui-progressbar .ui-progressbar-value[class=progress-bar]{background-color:#2a91d8}.ui-jqgrid .ui-jqgrid-view,.ui-jqgrid .ui-paging-info,.ui-jqgrid .ui-pg-selbox,.ui-jqgrid .ui-pg-table{font-size:13px}.ui-jqgrid .ui-jqgrid-title{float:left;margin:8px}.ui-jqgrid .ui-jqgrid-title-rtl{float:right;margin:8px}.ui-jqgrid-view>.ui-jqgrid-titlebar{height:40px;line-height:24px;color:#FFF;background:#307ecc;padding:0;font-size:15px}.ui-jqgrid tr.jqgrow.ui-row-rtl td:last-child{border-right:none;border-left:1px solid #E1E1E1}.ui-jqgrid .ui-jqgrid-hdiv{background-color:#eff3f8;border:1px solid #D3D3D3;border-width:1px 0 0 1px;line-height:15px;font-weight:700;color:#777;text-shadow:none}.ui-jqgrid .ui-jqgrid-htable thead{background-color:#eff3f8}.ui-jqgrid .ui-jqgrid-htable th span.ui-jqgrid-resize{height:45px!important}.ui-jqgrid .ui-jqgrid-htable th div{padding-top:12px;padding-bottom:12px}.ui-jqgrid-hdiv .ui-jqgrid-htable{border-top:1px solid #E1E1E1}.ui-jqgrid-titlebar{position:relative;top:1px;z-index:1}.ui-jqgrid tr.jqgrow,.ui-jqgrid tr.ui-row-ltr,.ui-jqgrid tr.ui-row-rtl{border:none}.ui-jqgrid tr.ui-row-ltr td,.ui-jqgrid tr.ui-row-rtl td{border-bottom:1px solid #E1E1E1;padding:6px 4px;border-color:#E1E1E1}.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td{border-right-color:#C7D3A9}.ui-jqgrid tr.ui-state-highlight.ui-row-rtl td{border-left-color:#C7D3A9}.ui-jqgrid-btable .ui-widget-content.ui-priority-secondary{background-image:none;background-color:#F9F9F9;opacity:1}.ui-jqgrid-btable .ui-widget-content.ui-state-hover{background-image:none;background-color:#EFF4F7;opacity:1}.ui-jqgrid-btable .ui-widget-content.ui-state-highlight{background-color:#E4EFC9}.ui-jqgrid .ui-jqgrid-pager{line-height:15px;height:55px;padding-top:3px!important;padding-bottom:5px!important;background-color:#eff3f8!important;border-bottom:1px solid #E1E1E1!important;border-top:1px solid #E1E1E1!important}.ui-jqgrid .ui-pg-input{font-size:inherit;width:24px;height:20px;line-height:16px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;text-align:center;padding-top:1px;padding-bottom:1px}.ui-jqgrid .ui-pg-selbox{display:block;height:24px;width:60px;margin:0;padding:1px;line-height:normal}.ui-jqgrid .ui-jqgrid-htable th div{overflow:visible}.ui-jqgrid .ui-pager-control{height:50px;position:relative;padding-left:9px;padding-right:9px}.ui-jqgrid .ui-jqgrid-toppager{height:auto!important;background-color:#eff3f8;border-bottom:1px solid #E1E1E1!important}.ui-jqgrid .jqgrow .editable{max-width:90%;max-width:calc(92%)!important}.ui-pg-table .navtable .ui-corner-all{border-radius:0}.ui-jqgrid .ui-pg-button:hover{padding:1px}.ui-jqgrid .ui-pg-button .ui-separator{margin-left:4px;margin-right:4px;border-color:#C9D4DB}.ui-jqgrid .ui-jqgrid-btable{border-left:1px solid #E1E1E1}.ui-jqgrid .ui-jqgrid-bdiv{border-top:1px solid #E1E1E1}.ui-jqgrid .loading{position:absolute;top:45%;left:45%;width:auto;height:auto;z-index:101;padding:6px;margin:5px;text-align:center;font-weight:700;font-size:12px;background-color:#FFF;border:2px solid #8EB8D1;color:#E2B018}.ui-jqgrid .ui-search-toolbar{border-top:1px solid #E1E1E1}.ui-jqgrid .ui-jqgrid-labels{border-bottom:none;background:#F2F2F2 repeat-x;background-image:-webkit-linear-gradient(top,#f8f8f8 0,#ececec 100%);background-image:-o-linear-gradient(top,#f8f8f8 0,#ececec 100%);background-image:linear-gradient(to bottom,#f8f8f8 0,#ececec 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#ffececec', GradientType=0);padding:0!important;border-left:1px solid #E1E1E1!important}.ui-jqgrid .ui-jqgrid-labels th{border-right:1px solid #E1E1E1!important;text-align:left!important}.ui-jqgrid-labels th[id*="_cb"]:first-child>div{padding-top:0;text-align:center!important}.ui-jqgrid-sortable{padding-left:4px;font-size:13px;color:#777;font-weight:700}.ui-jqgrid-sortable:hover{color:#547ea8}th[aria-selected=true]{background-image:-webkit-linear-gradient(top,#eff3f8 0,#e3e7ed 100%);background-image:-o-linear-gradient(top,#eff3f8 0,#e3e7ed 100%);background-image:linear-gradient(to bottom,#eff3f8 0,#e3e7ed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeff3f8', endColorstr='#ffe3e7ed', GradientType=0)}th[aria-selected=true] .ui-jqgrid-sortable{color:#307ecc}.ui-icon{text-indent:0;color:#307ecc;float:none;right:2px}.rtl .ui-icon{right:auto;left:2px}.ui-grid-ico-sort:before{display:inline;content:"\f0d7";font-family:FontAwesome;font-size:12px}.ui-icon-asc:before{content:"\f0d8"}.ui-state-disabled{color:#BBB}.ui-pg-table>tbody>tr>.ui-pg-button>.ui-icon{display:inline-block;padding:0;width:24px;height:24px;line-height:22px;text-align:center;position:static;float:none;margin:0 2px!important;color:gray;border:1px solid #CCC;background-color:#FFF;border-radius:100%}.ui-pg-table>tbody>tr>.ui-pg-button>.ui-icon:hover{color:#699AB5;border-color:#699AB5}.ui-pg-table>tbody>tr>.ui-pg-button>.ui-icon:before{width:20px;text-align:center;display:inline-block}.ui-pg-table>tbody>tr>.ui-pg-button.ui-state-disabled .ui-icon{color:#B0B0B0;background-color:#F7F7F7;border-color:#DDD;-moz-transform:scale(0.9);-webkit-transform:scale(0.9);-o-transform:scale(0.9);-ms-transform:scale(0.9);transform:scale(0.9)}.ui-jqgrid-btable input,.ui-jqgrid-btable select,.ui-jqgrid-btable textarea{padding:2px;width:auto;max-width:100%;margin-bottom:0}.ui-jqgrid-btable select{padding:1px;height:25px;line-height:25px}.ui-pg-div .ui-icon{display:inline-block;width:18px;float:none;position:static;text-align:center;opacity:.85;-webkit-transition:all .12s;-o-transition:all .12s;transition:all .12s;margin:0 1px;vertical-align:middle;cursor:pointer;font-size:17px}.ui-pg-div .ui-icon:hover{-moz-transform:scale(1.2);-webkit-transform:scale(1.2);-o-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);opacity:1;position:static;margin:0 1px}.ui-pg-div .ui-icon:before{font-family:FontAwesome;display:inline}.ui-icon-pencil{color:#478FCA}.ui-icon-pencil:before{content:"\f040"}.ui-icon-trash{color:#DD5A43}.ui-icon-trash:before{content:"\f014"}.ui-icon-disk{color:#69AA46}.ui-icon-disk:before{content:"\f00c"}.ui-icon-cancel{color:#DD5A43}.ui-icon-cancel:before{content:"\f00d"}.ui-jqdialog .ui-jqdialog-content,.ui-jqdialog-content{font-size:13px;padding:4px 0 0}.ui-jqdialog .ui-jqdialog-content .formdata,.ui-jqdialog-content .formdata{font-size:13px;padding:6px 12px}.ui-jqdialog .ui-jqdialog-content .form-view-data,.ui-jqdialog-content .form-view-data{vertical-align:middle;font-size:13px}.ui-jqdialog .ui-jqdialog-content[id*=alertcnt_],.ui-jqdialog-content[id*=alertcnt_]{padding:8px 11px}.ui-jqdialog-content .CaptionTD{font-size:12px;text-align:right;color:#666}.ui-jqdialog-content .FormData{border-bottom:1px dotted #E8E8E8}.ui-jqdialog-content .FormData:last-child{border-bottom:none}.ui-jqdialog-content .FormData>td{padding-top:6px;padding-bottom:6px}.ui-jqdialog-content input.FormElement{width:auto}.ui-jqdialog-content select.FormElement{padding:1px;height:25px;line-height:25px;width:auto}.ui-jqdialog-content td.EditButton{padding:8px}.EditTable{background-color:#eff3f8;border-top:1px solid #D6E1EA!important;padding:8px}.EditTable tr:first-child{display:none}.EditTable .navButton .fm-button{float:none!important;width:auto!important;margin:1px 1px 2px!important;background-color:transparent;border-radius:100%}.EditTable .navButton .fm-button:hover{background-color:transparent}.EditTable .navButton .fm-button:focus{outline:0}.EditTable .navButton .fm-button .ace-icon{display:inline-block;color:#999;border:1px solid #AAA;width:26px;height:26px;line-height:26px;text-align:center;border-radius:100%;background-color:#FFF}.EditTable .navButton .fm-button:hover .ace-icon{color:#699AB5;border-color:#699AB5}.EditTable .navButton .fm-button.ui-state-disabled .ace-icon,.EditTable .navButton .fm-button.ui-state-disabled:hover .ace-icon{color:#BBB;border-color:#CCC;-moz-transform:scale(0.88);-webkit-transform:scale(0.88);-o-transform:scale(0.88);-ms-transform:scale(0.88);transform:scale(0.88)}.FormGrid .EditTable{background-color:#FFF;border-top:none!important;padding:0}.FormGrid .EditTable tr:first-child{display:none}.ui-jqgrid .ui-jqgrid-view button,.ui-jqgrid .ui-jqgrid-view input,.ui-jqgrid .ui-jqgrid-view select,.ui-jqgrid .ui-jqgrid-view textarea{font-size:13px}.ui-jqdialog-content .searchFilter select{padding:1px;height:26px;line-height:26px;width:auto;max-width:95%;margin-bottom:0}.ui-jqdialog-content .searchFilter .input-elm{margin-bottom:0;height:18px;line-height:18px;width:95%!important;padding-left:1px;padding-right:1px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-jqdialog-content .searchFilter table{margin-left:4px}.ui-jqdialog-content .searchFilter tr td{padding:5px 0}.ui-jqdialog-content .searchFilter .add-group,.ui-jqdialog-content .searchFilter .add-rule,.ui-jqdialog-content .searchFilter .delete-group{margin-left:4px!important;font-size:15px!important}.ui-jqdialog-content .searchFilter .delete-rule{border:none;background-color:#FFF;color:#D15B47;font-size:20px;width:22px;line-height:10px;padding:0;text-shadow:none!important;display:inline-block;-webkit-transition:all .1s;-o-transition:all .1s;transition:all .1s;opacity:.85}.ui-jqdialog-content .searchFilter .delete-rule:hover{-moz-transform:scale(1.1);-webkit-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);color:#B74635;opacity:1}.ui-jqdialog-content .searchFilter .queryresult{margin-bottom:11px}.ui-jqdialog-content .searchFilter .queryresult td.query{padding:6px 11px;border:1px solid #E1E1E1;background-color:#EEE}.ui-jqdialog-content .searchFilter .queryresult td.query:empty{display:none}.ui-state-error{background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;margin:4px 4px 8px;padding:6px 10px;text-shadow:0 1px 0 rgba(255,255,255,.5);font-size:13px}.ui-jqdialog .ui-widget-header{background-image:-webkit-linear-gradient(top,#fff 0,#eee 100%);background-image:-o-linear-gradient(top,#fff 0,#eee 100%);background-image:linear-gradient(to bottom,#fff 0,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);border-image:none;border-bottom:1px solid solid;color:#669FC7;min-height:38px;position:relative}.ui-jqdialog .ui-widget-header .ui-jqdialog-title{line-height:38px;margin:0;padding:0 0 0 12px;text-align:left}.widget-header .ui-jqdialog-title{padding-left:0!important;padding-right:0!important}.ui-jqdialog .ui-widget-header .widget-header{border-bottom:none}.ui-jqdialog .ui-jqdialog-titlebar{border-bottom:1px solid #DDD!important}.fm-button{margin:0 4px}.fm-button:not(.btn){background-color:#abbac3;border-radius:0;box-shadow:none;color:#FFF;cursor:pointer;display:inline-block;font-size:13px;line-height:28px;padding:0 12px 1px;margin:0 8px;position:relative;text-shadow:0 -1px 0 rgba(0,0,0,.25);-webkit-transition:all .15s;-o-transition:all .15s;transition:all .15s;vertical-align:middle}.fm-button.ui-state-default:hover{background-color:#8b9aa3}.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th{height:30px;padding-top:2px;white-space:normal}.ui-jqgrid .ui-jqgrid-htable .ui-search-toolbar th div{padding-top:0;padding-bottom:0;height:30px;line-height:26px}.ui-jqgrid .ui-jqgrid-titlebar-close{top:10%;height:auto;padding:0;margin:2px 8px 0 0;text-align:center;border-radius:4px}.ui-jqgrid .ui-jqgrid-titlebar-close:hover{background-color:rgba(255,255,255,.2)}.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon:before{display:inline-block;font-family:FontAwesome;content:"\f077";color:#FFF}.ui-jqgrid .ui-jqgrid-titlebar-close .ui-icon-circle-triangle-s:before{content:"\f078"}.ui-jqgrid .tree-wrap-ltr{margin:0 4px;float:none;display:inline}.ui-jqgrid .tree-wrap-rtl{margin:2px 4px 0}.ui-jqgrid .ui-subgrid{border-bottom:1px solid #E1E1E1;background-color:#F6FAFF}.ui-jqgrid .ui-subgrid .ui-jqgrid-btable{background-color:#FFF}.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv{background-color:transparent;margin-top:4px}.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable .ui-jqgrid-labels{border-bottom:1px solid #E1E1E1;background:#F1F1F1}.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th[aria-selected=true]{background:#E5E9EF}.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th .ui-jqgrid-sortable{font-size:12px}.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th div{padding-top:8px;padding-bottom:8px}.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-hdiv .ui-jqgrid-htable th span.ui-jqgrid-resize{height:36px!important}.ui-jqgrid .ui-subgrid .ui-jqgrid .ui-jqgrid-bdiv{height:auto!important;max-height:150px;margin-bottom:4px;border-top-width:0;border-bottom:1px solid #E1E1E1}.ui-jqgrid .ui-sgcollapsed>a:hover{text-decoration:none}@media only screen and (max-width:767px){.ui-jqgrid .ui-jqgrid-pager{height:90px}.ui-jqgrid .ui-jqgrid-pager>.ui-pager-control{height:85px;padding-top:9px}.ui-jqgrid .ui-jqgrid-pager>.ui-pager-control>.ui-pg-table>tbody>tr>td{vertical-align:top}.ui-jqgrid .ui-jqgrid-pager>.ui-pager-control>.ui-pg-table>tbody>tr>td#grid-pager_center{width:0!important;position:static}.ui-jqgrid .ui-jqgrid-pager>.ui-pager-control>.ui-pg-table>tbody>tr>td#grid-pager_center>.ui-pg-table{margin:36px auto 0;position:absolute;right:0;left:0;text-align:center}}@media only screen and (max-width:767px) and (-webkit-min-device-pixel-ratio:0){.ui-jqgrid .ui-jqgrid-pager>.ui-pager-control>.ui-pg-table>tbody>tr>td#grid-pager_center>.ui-pg-table{width:300px}}.dd{position:relative;display:block;margin:0;padding:0;max-width:600px;list-style:none;line-height:20px}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-collapsed .dd-list{display:none}.dd-empty,.dd-item,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;line-height:20px}.dd-handle,.dd2-content{display:block;min-height:38px;margin:5px 0;padding:8px 12px;background:#F8FAFF;border:1px solid #DAE2EA;color:#7C9EB2;text-decoration:none;font-weight:700;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dd-handle:hover,.dd2-content:hover{color:#438EB9;background:#F4F6F7;border-color:#DCE2E8}.dd-handle[class*=btn-],.dd2-content[class*=btn-]{color:#FFF;border:none;padding:9px 12px}.dd-handle[class*=btn-]:hover,.dd2-content[class*=btn-]:hover{opacity:.85;color:#FFF}.dd2-handle+.dd2-content,.dd2-handle+.dd2-content[class*=btn-]{padding-left:44px}.dd-handle[class*=btn-]:hover,.dd2-content[class*=btn-] .dd2-handle[class*=btn-]:hover+.dd2-content[class*=btn-]{color:#FFF}.dd-item>button:hover~.dd-handle,.dd-item>button:hover~.dd2-content{color:#438EB9;background:#F4F6F7;border-color:#DCE2E8}.dd-item>button:hover~.dd-handle[class*=btn-],.dd-item>button:hover~.dd2-content[class*=btn-]{opacity:.85;color:#FFF}.dd2-handle:hover~.dd2-content{color:#438EB9;background:#F4F6F7;border-color:#DCE2E8}.dd2-handle:hover~.dd2-content[class*=btn-]{opacity:.85;color:#FFF}.dd2-item.dd-item>button{margin-left:34px}.dd-item>button{display:block;position:relative;z-index:1;cursor:pointer;float:left;width:25px;height:20px;margin:5px 1px 5px 5px;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:0 0;font-size:12px;line-height:1;text-align:center;font-weight:700;top:4px;left:1px;color:#707070}.dd-item>button:before{font-family:FontAwesome;content:'\f067';display:block;position:absolute;width:100%;text-align:center;text-indent:0;font-weight:400;font-size:14px}.dd-item>button[data-action=collapse]:before{content:'\f068'}.dd-item>button:hover{color:#707070}.dd-item.dd-colored>button,.dd-item.dd-colored>button:hover{color:#EEE}.dd-empty,.dd-placeholder{margin:5px 0;padding:0;min-height:30px;background:#F0F9FF;border:2px dashed #BED2DB;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dd-empty{border-color:#AAA;border-style:solid;background-color:#e5e5e5}.dd-dragel{position:absolute;pointer-events:none;z-index:999;opacity:.8}.dd-dragel>li>.dd-handle{color:#4B92BE;background:#F1F5FA;border-color:#D6E1EA;border-left:2px solid #777;position:relative}.dd-dragel>li>.dd-handle[class*=btn-]{color:#FFF}.dd-dragel>.dd-item>.dd-handle{margin-top:0}.dd-list>li[class*=item-]{border-width:0;padding:0}.dd-list>li[class*=item-]>.dd-handle{border-left:2px solid;border-left-color:inherit}.dd-list>li>.dd-handle .sticker{position:absolute;right:0;top:0}.dd-dragel>li>.dd2-handle,.dd2-handle{left:0;top:0;width:36px;margin:0;text-align:center;padding:0!important;line-height:38px;height:38px;background:#EBEDF2;border:1px solid #DEE4EA;cursor:pointer;overflow:hidden;position:absolute;z-index:1}.dd-dragel>li>.dd2-handle,.dd2-handle:hover{background:#E3E8ED}.dd2-content[class*=btn-]{text-shadow:none!important}.dd2-handle[class*=btn-]{text-shadow:none!important;background:rgba(0,0,0,.1)!important;border-right:1px solid #EEE}.dd2-handle[class*=btn-]:hover{background:rgba(0,0,0,.08)!important}.dd-dragel .dd2-handle[class*=btn-]{border-color:transparent #EEE transparent transparent}.dd2-handle.btn-yellow{text-shadow:none!important;background:rgba(0,0,0,.05)!important;border-right:1px solid #FFF}.dd2-handle.btn-yellow:hover{background:rgba(0,0,0,.08)!important}.dd-dragel .dd2-handle.btn-yellow{border-color:transparent #FFF transparent transparent}.dd-item>.dd2-handle .drag-icon{display:none}.dd-dragel>.dd-item>.dd2-handle .drag-icon{display:inline}.dd-dragel>.dd-item>.dd2-handle .normal-icon{display:none}.dropzone{border-radius:0;border:1px solid rgba(0,0,0,.06)}.dropzone .dz-default.dz-message{background-image:none;font-size:24px;text-align:center;line-height:32px;left:0;width:100%;margin-left:auto}.dropzone .dz-default.dz-message span{display:inline;color:#555}.dropzone .dz-default.dz-message span .upload-icon{opacity:.7;filter:alpha(opacity=70);margin-top:8px;cursor:pointer}.dropzone .dz-default.dz-message span .upload-icon:hover{opacity:1;filter:alpha(opacity=100)}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark,.dropzone-previews .dz-preview .dz-error-mark,.dropzone-previews .dz-preview .dz-success-mark{background-image:none;background-color:rgba(255,255,255,.8);border-radius:100%;text-align:center;line-height:35px}.dropzone .dz-preview .dz-error-mark:before,.dropzone-previews .dz-preview .dz-error-mark:before{font-family:FontAwesome;font-size:30px;color:#DB6262;content:"\f00d"}.dropzone .dz-preview .dz-success-mark:before,.dropzone-previews .dz-preview .dz-success-mark:before{font-family:FontAwesome;font-size:30px;color:#6DA552;content:"\f00c"}.dropzone a.dz-remove,.dropzone-previews a.dz-remove{border:none;border-radius:0;color:#FFF;background:#D15B47;cursor:pointer}.dropzone a.dz-remove:hover,.dropzone-previews a.dz-remove:hover{color:#FFF;background:#B74635}.dropzone .progress,.dropzone-previews .progress{margin-bottom:0}.dropzone .dz-preview.dz-error .progress,.dropzone .dz-preview.dz-success .progress,.dropzone-previews .dz-preview.dz-error .progress,.dropzone-previews .dz-preview.dz-success .progress{display:none}input.tt-hint,input.tt-query,input.typeahead{min-width:175px;font-size:16px;line-height:24px;border:1px solid #CCC;border-radius:0;outline:0}.form-group input.tt-hint,input.tt-hint{background-color:#FFF!important;color:#B0B0B0!important}.tt-dropdown-menu{text-align:left;position:absolute;left:0!important;right:0!important;min-width:175px;margin-top:2px;padding:8px 0;background-color:#FFF;border:1px solid #D0D0D0;border:1px solid rgba(0,0,0,.15);border-radius:0;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}.tt-suggestion{padding:3px 12px 4px;font-size:16px;line-height:24px}.tt-suggestion.tt-cursor{color:#FFF;background-color:#4F99C6;cursor:pointer}.tt-suggestion p{margin:0}input.typeahead.scrollable~.tt-dropdown-menu{max-height:200px;overflow-y:auto}.icon-animated-bell{display:inline-block;-moz-animation:ringing 2s 5 ease 1s;-webkit-animation:ringing 2s 5 ease 1s;-o-animation:ringing 2s 5 ease 1s;-ms-animation:ringing 2s 5 ease 1s;animation:ringing 2s 5 ease 1s;-moz-transform-origin:50% 0;-webkit-transform-origin:50% 0;-o-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}@-moz-keyframes ringing{0%{-moz-transform:rotate(-15deg)}2%{-moz-transform:rotate(15deg)}4%{-moz-transform:rotate(-18deg)}6%{-moz-transform:rotate(18deg)}8%{-moz-transform:rotate(-22deg)}10%{-moz-transform:rotate(22deg)}12%{-moz-transform:rotate(-18deg)}14%{-moz-transform:rotate(18deg)}16%{-moz-transform:rotate(-12deg)}18%{-moz-transform:rotate(12deg)}20%{-moz-transform:rotate(0deg)}}@-webkit-keyframes ringing{0%{-webkit-transform:rotate(-15deg)}2%{-webkit-transform:rotate(15deg)}4%{-webkit-transform:rotate(-18deg)}6%{-webkit-transform:rotate(18deg)}8%{-webkit-transform:rotate(-22deg)}10%{-webkit-transform:rotate(22deg)}12%{-webkit-transform:rotate(-18deg)}14%{-webkit-transform:rotate(18deg)}16%{-webkit-transform:rotate(-12deg)}18%{-webkit-transform:rotate(12deg)}20%{-webkit-transform:rotate(0deg)}}@-ms-keyframes ringing{0%{-ms-transform:rotate(-15deg)}2%{-ms-transform:rotate(15deg)}4%{-ms-transform:rotate(-18deg)}6%{-ms-transform:rotate(18deg)}8%{-ms-transform:rotate(-22deg)}10%{-ms-transform:rotate(22deg)}12%{-ms-transform:rotate(-18deg)}14%{-ms-transform:rotate(18deg)}16%{-ms-transform:rotate(-12deg)}18%{-ms-transform:rotate(12deg)}20%{-ms-transform:rotate(0deg)}}@keyframes ringing{0%{transform:rotate(-15deg)}2%{transform:rotate(15deg)}4%{transform:rotate(-18deg)}6%{transform:rotate(18deg)}8%{transform:rotate(-22deg)}10%{transform:rotate(22deg)}12%{transform:rotate(-18deg)}14%{transform:rotate(18deg)}16%{transform:rotate(-12deg)}18%{transform:rotate(12deg)}20%{transform:rotate(0deg)}}.icon-animated-vertical{display:inline-block;-moz-animation:vertical 2s 5 ease 2s;-webkit-animation:vertical 2s 5 ease 2s;-o-animation:vertical 2s 5 ease 2s;-ms-animation:vertical 2s 5 ease 2s;animation:vertical 2s 5 ease 2s}@-moz-keyframes vertical{0%{-moz-transform:translate(0,-3px)}4%{-moz-transform:translate(0,3px)}8%{-moz-transform:translate(0,-3px)}12%{-moz-transform:translate(0,3px)}16%{-moz-transform:translate(0,-3px)}20%{-moz-transform:translate(0,3px)}22%{-moz-transform:translate(0,0)}}@-webkit-keyframes vertical{0%{-webkit-transform:translate(0,-3px)}4%{-webkit-transform:translate(0,3px)}8%{-webkit-transform:translate(0,-3px)}12%{-webkit-transform:translate(0,3px)}16%{-webkit-transform:translate(0,-3px)}20%{-webkit-transform:translate(0,3px)}22%{-webkit-transform:translate(0,0)}}@-ms-keyframes vertical{0%{-ms-transform:translate(0,-3px)}4%{-ms-transform:translate(0,3px)}8%{-ms-transform:translate(0,-3px)}12%{-ms-transform:translate(0,3px)}16%{-ms-transform:translate(0,-3px)}20%{-ms-transform:translate(0,3px)}22%{-ms-transform:translate(0,0)}}@keyframes vertical{0%{transform:translate(0,-3px)}4%{transform:translate(0,3px)}8%{transform:translate(0,-3px)}12%{transform:translate(0,3px)}16%{transform:translate(0,-3px)}20%{transform:translate(0,3px)}22%{transform:translate(0,0)}}.icon-animated-hand-pointer{display:inline-block;-moz-animation:hand-pointer 2s 4 ease 2s;-webkit-animation:hand-pointer 2s 4 ease 2s;-o-animation:hand-pointer 2s 4 ease 2s;-ms-animation:hand-pointer 2s 4 ease 2s;animation:hand-pointer 2s 4 ease 2s}@-moz-keyframes hand-pointer{0%{-moz-transform:translate(0,0)}6%{-moz-transform:translate(5px,0)}12%{-moz-transform:translate(0,0)}18%{-moz-transform:translate(5px,0)}24%{-moz-transform:translate(0,0)}30%{-moz-transform:translate(5px,0)}36%{-moz-transform:translate(0,0)}}.icon-animated-wrench{display:inline-block;-moz-animation:wrenching 2.5s 4 ease;-webkit-animation:wrenching 2.5s 4 ease;-o-animation:wrenching 2.5s 4 ease;-ms-animation:wrenching 2.5s 4 ease;animation:wrenching 2.5s 4 ease;-moz-transform-origin:90% 35%;-webkit-transform-origin:90% 35%;-o-transform-origin:90% 35%;-ms-transform-origin:90% 35%;transform-origin:90% 35%}@-moz-keyframes wrenching{0%{-moz-transform:rotate(-12deg)}8%{-moz-transform:rotate(12deg)}10%{-moz-transform:rotate(24deg)}18%,20%{-moz-transform:rotate(-24deg)}28%,30%{-moz-transform:rotate(24deg)}38%,40%{-moz-transform:rotate(-24deg)}48%,50%{-moz-transform:rotate(24deg)}58%,60%{-moz-transform:rotate(-24deg)}68%{-moz-transform:rotate(24deg)}75%{-moz-transform:rotate(0deg)}}@-webkit-keyframes wrenching{0%{-webkit-transform:rotate(-12deg)}8%{-webkit-transform:rotate(12deg)}10%{-webkit-transform:rotate(24deg)}18%,20%{-webkit-transform:rotate(-24deg)}28%,30%{-webkit-transform:rotate(24deg)}38%,40%{-webkit-transform:rotate(-24deg)}48%,50%{-webkit-transform:rotate(24deg)}58%,60%{-webkit-transform:rotate(-24deg)}68%{-webkit-transform:rotate(24deg)}75%{-webkit-transform:rotate(0deg)}}@-o-keyframes wrenching{0%{-o-transform:rotate(-12deg)}8%{-o-transform:rotate(12deg)}10%{-o-transform:rotate(24deg)}18%,20%{-o-transform:rotate(-24deg)}28%,30%{-o-transform:rotate(24deg)}38%,40%{-o-transform:rotate(-24deg)}48%,50%{-o-transform:rotate(24deg)}58%,60%{-o-transform:rotate(-24deg)}68%{-o-transform:rotate(24deg)}75%{-o-transform:rotate(0deg)}}@-ms-keyframes wrenching{0%{-ms-transform:rotate(-12deg)}8%{-ms-transform:rotate(12deg)}10%{-ms-transform:rotate(24deg)}18%,20%{-ms-transform:rotate(-24deg)}28%,30%{-ms-transform:rotate(24deg)}38%,40%{-ms-transform:rotate(-24deg)}48%,50%{-ms-transform:rotate(24deg)}58%,60%{-ms-transform:rotate(-24deg)}68%{-ms-transform:rotate(24deg)}75%{-ms-transform:rotate(0deg)}}@keyframes wrenching{0%{transform:rotate(-12deg)}8%{transform:rotate(12deg)}10%{transform:rotate(24deg)}18%,20%{transform:rotate(-24deg)}28%,30%{transform:rotate(24deg)}38%,40%{transform:rotate(-24deg)}48%,50%{transform:rotate(24deg)}58%,60%{transform:rotate(-24deg)}68%{transform:rotate(24deg)}75%{transform:rotate(0deg)}}@-moz-keyframes blinking{0%{opacity:1}40%{opacity:0}80%{opacity:1}}@-webkit-keyframes blinking{0%{opacity:1}40%{opacity:0}80%{opacity:1}}@-ms-keyframes blinking{0%{opacity:1}40%{opacity:0}80%{opacity:1}}@keyframes blinking{0%{opacity:1}40%{opacity:0}80%{opacity:1}}@-moz-keyframes pulsating{0%{-moz-transform:scale(1)}5%{-moz-transform:scale(0.75)}10%{-moz-transform:scale(1)}15%{-moz-transform:scale(1.25)}20%{-moz-transform:scale(1)}25%{-moz-transform:scale(0.75)}30%{-moz-transform:scale(1)}35%{-moz-transform:scale(1.25)}40%{-moz-transform:scale(1)}}@-webkit-keyframes pulsating{0%{-webkit-transform:scale(1)}5%{-webkit-transform:scale(0.75)}10%{-webkit-transform:scale(1)}15%{-webkit-transform:scale(1.25)}20%{-webkit-transform:scale(1)}25%{-webkit-transform:scale(0.75)}30%{-webkit-transform:scale(1)}35%{-webkit-transform:scale(1.25)}40%{-webkit-transform:scale(1)}}@-ms-keyframes pulsating{0%{-ms-transform:scale(1)}5%{-ms-transform:scale(0.75)}10%{-ms-transform:scale(1)}15%{-ms-transform:scale(1.25)}20%{-ms-transform:scale(1)}25%{-ms-transform:scale(0.75)}30%{-ms-transform:scale(1)}35%{-ms-transform:scale(1.25)}40%{-ms-transform:scale(1)}}@keyframes pulsating{0%{transform:scale(1)}5%{transform:scale(0.75)}10%{transform:scale(1)}15%{transform:scale(1.25)}20%{transform:scale(1)}25%{transform:scale(0.75)}30%{transform:scale(1)}35%{transform:scale(1.25)}40%{transform:scale(1)}}.btn-scroll-up{border-width:0;position:fixed;right:2px;z-index:99;-webkit-transition-duration:.3s;transition-duration:.3s;opacity:0;filter:alpha(opacity=0);bottom:-24px;visibility:hidden}.btn-scroll-up.display{opacity:.7;filter:alpha(opacity=70);bottom:2px;visibility:visible}.btn-scroll-up:hover{opacity:1;filter:alpha(opacity=100)}.btn-scroll-up:focus{outline:0}@media (min-width:768px){.main-container.container>.btn-scroll-up{right:auto;margin-left:714px}}@media (min-width:992px){.main-container.container>.btn-scroll-up{right:auto;margin-left:934px}}@media (min-width:1200px){.main-container.container>.btn-scroll-up{right:auto;margin-left:1134px}}.ace-settings-container{position:absolute;right:0;top:auto;z-index:12}.btn.ace-settings-btn{float:left;display:block;width:42px!important;text-align:center;border-radius:6px 0 0 6px!important;opacity:.55;vertical-align:top;margin:0}.btn.ace-settings-btn.open,.btn.ace-settings-btn:hover{opacity:1}.ace-settings-box{display:block;float:left;max-width:0;max-height:0;overflow:hidden;padding:0;-moz-transform:translate(0,0);-webkit-transform:translate(0,0);-o-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);background-color:#FFF;border:0 solid #ffb34b;-webkit-transition:max-width .15s linear 0s,max-height 0s linear .15s,padding 0s linear .15s,border-width 0s linear .15s;-o-transition:max-width .15s linear 0s,max-height 0s linear .15s,padding 0s linear .15s,border-width 0s linear .15s;transition:max-width .15s linear 0s,max-height 0s linear .15s,padding 0s linear .15s,border-width 0s linear .15s}.ace-settings-box.open{max-width:320px;max-height:1000px;padding:0 14px;border-width:2px;-webkit-transition-delay:0s;-moz-transition-delay:0s;-o-transition-delay:0s;transition-delay:0s}.ace-settings-box.open .ace-settings-item{z-index:auto;min-width:140px}.ace-settings-box .ace-settings-item{margin:6px 0;color:#444;max-height:24px;position:relative;z-index:-1;white-space:nowrap}.ace-settings-box .ace-settings-item>label.lbl{font-size:13px}@media (max-width:480px){.ace-settings-container{text-align:right}.ace-settings-box{float:none!important;text-align:left}.btn.ace-settings-btn{float:none!important;display:inline-block}}@media (max-width:320px){.ace-settings-box>.clearfix>.pull-left,.ace-settings-box>.clearfix>.pull-right{float:none!important}}.grid2,.grid3,.grid4{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin:0 1%;padding:0 2%;float:left;border-left:1px solid #E3E3E3}.grid2:first-child,.grid3:first-child,.grid4:first-child{border-left:none}.grid2{width:48%}.grid3{width:31.33%}.grid4{width:23%;padding:0 1%}.draggable-placeholder{border:2px dashed #D9D9D9!important;background-color:#F7F7F7!important}.easy-pie-chart,.easyPieChart{position:relative;text-align:center}.easy-pie-chart canvas,.easyPieChart canvas{position:absolute;top:0;left:0}.knob-container{direction:ltr;text-align:left}.tags{display:inline-block;padding:4px 6px;color:#777;vertical-align:middle;background-color:#FFF;border:1px solid #d5d5d5;width:206px}.tags:hover{border-color:#b5b5b5}.tags-hover,.tags-hover:hover{border-color:#f59942;outline:0}.tags[class*=span]{float:none;margin-left:0}.tags input[type=text],.tags input[type=text]:focus{border:none;display:inline;outline:0;margin:0;padding:0;line-height:18px;-webkit-box-shadow:none;box-shadow:none;width:100%}.tags .tag{display:inline-block;position:relative;font-size:13px;font-weight:400;vertical-align:baseline;white-space:nowrap;background-color:#91b8d0;color:#FFF;text-shadow:1px 1px 1px rgba(0,0,0,.15);padding:4px 22px 5px 9px;margin-bottom:3px;margin-right:3px;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.tags .tag:empty{display:none}.tags .tag-important{background-color:#d15b47}.tags .tag-warning{background-color:#ffb752}.tags .tag-success{background-color:#87b87f}.tags .tag-info{background-color:#6fb3e0}.tags .tag-inverse{background-color:#555}.tags .tag .close{font-size:15px;line-height:20px;opacity:1;filter:alpha(opacity=100);color:#FFF;text-shadow:none;float:none;position:absolute;right:0;top:0;bottom:0;width:18px;text-align:center}.tags .tag .close:hover{background-color:rgba(0,0,0,.2)}.page-content>.row .col-lg-12,.page-content>.row .col-md-12,.page-content>.row .col-sm-12,.page-content>.row .col-xs-12{float:left;max-width:100%}.col-xs-reset{width:auto;padding-left:0;padding-right:0;float:none!important}@media (min-width:768px){.col-sm-reset{width:auto;padding-left:0;padding-right:0;float:none!important}}@media (min-width:992px){.col-md-reset{width:auto;padding-left:0;padding-right:0;float:none!important}}@media (min-width:1200px){.col-lg-reset{width:auto;padding-left:0;padding-right:0;float:none!important}}.jqstooltip,.legendColorBox div{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.legendLabel{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:22px;padding-left:2px;font-size:10px}@media only screen and (max-width:991px){body{overflow-x:hidden}}.navbar-fixed-top+.main-container{padding-top:45px}@media (max-width:479px){.navbar-fixed-top+.main-container{padding-top:90px}.navbar-fixed-top.navbar-collapse+.main-container{padding-top:45px}}@media only screen and (max-width:360px){.grid2,.grid3,.grid4{float:none;display:block;width:96%;border-left-width:0;position:relative;margin-bottom:11px;border-bottom:1px solid #E3E3E3;padding-bottom:4px}.grid2>[class*=pull-],.grid3>[class*=pull-],.grid4>[class*=pull-]{float:none!important;display:inline-block;position:absolute;right:11px;top:0;margin-top:0}.grid2:last-child,.grid3:last-child,.grid4:last-child{border-bottom-width:0}}@media only screen and (max-width:480px){.hidden-480{display:none!important}}@media only screen and (max-width:320px){.hidden-320{display:none!important}}.no-skin .navbar .navbar-toggle{background-color:#75B3D7}.no-skin .navbar .navbar-toggle:focus{background-color:#75B3D7;border-color:transparent}.no-skin .navbar .navbar-toggle:hover{background-color:#61a8d1;border-color:rgba(255,255,255,.1)}.no-skin .navbar .navbar-toggle.display,.no-skin .navbar .navbar-toggle[data-toggle=collapse]:not(.collapsed){background-color:#4d9dcc;box-shadow:inset 1px 1px 2px 0 rgba(0,0,0,.25);border-color:rgba(255,255,255,.35)}.no-skin .sidebar{background-color:#f2f2f2;border-style:solid;border-color:#ccc;border-width:0 1px 0 0}.no-skin .nav-list .open>a,.no-skin .nav-list .open>a:focus,.no-skin .nav-list .open>a:hover{background-color:#fafafa}.no-skin .nav-list>li{border-color:#e5e5e5}.no-skin .nav-list>li>a{background-color:#f8f8f8;color:#585858}.no-skin .nav-list>li>a:focus{background-color:#f8f8f8;color:#1963aa}.no-skin .nav-list>li:hover>a{background-color:#fff;color:#266cad}.no-skin .nav-list>li.open>a{background-color:#fafafa;color:#1963aa}.no-skin .nav-list>li.active>a{font-weight:700;color:#2b7dbc}.no-skin .nav-list>li.active>a,.no-skin .nav-list>li.active>a:focus,.no-skin .nav-list>li.active>a:hover{background-color:#fff}.no-skin .nav-list>li .submenu{background-color:#fff;border-color:#e5e5e5}.no-skin .nav-list>li .submenu>li>a{border-top-color:#e4e4e4;background-color:#fff;color:#616161}.no-skin .nav-list>li .submenu>li>a:hover{color:#4b88b7;background-color:#f1f5f9}.no-skin .nav-list>li .submenu>li.active>a{color:#2b7dbc}.no-skin .nav-list>li .submenu>li.active>a>.menu-icon{color:#c86139}.no-skin .nav-list>li .submenu>li.active.open>a>.menu-icon{color:inherit}@media only screen and (min-width:992px){.no-skin .nav-list>li .submenu>li.active.hover>a.dropdown-toggle>.menu-icon{color:inherit}}.no-skin .nav-list>li .submenu>li.active:not(.open)>a{background-color:#f5f7fa}.no-skin .nav-list>li .submenu>li.active:not(.open)>a:hover{background-color:#f1f5f9}.no-skin .nav-list>li>.submenu .open>a,.no-skin .nav-list>li>.submenu .open>a:focus,.no-skin .nav-list>li>.submenu .open>a:hover{border-color:#e4e4e4}.no-skin .nav-list>li>.submenu li>.submenu>li a{color:#757575}.no-skin .nav-list>li>.submenu li>.submenu>li a:hover{color:#4b88b7;background-color:#f1f5f9}.no-skin .nav-list>li>.submenu li.open>a,.no-skin .nav-list>li>.submenu li>.submenu li.active>a,.no-skin .nav-list>li>.submenu li>.submenu li.open>a{color:#4b88b7}.no-skin .nav-list>li>.submenu:before,.no-skin .nav-list>li>.submenu>li:before{border-color:#9dbdd6}.no-skin .nav-list>li.active>.submenu:before,.no-skin .nav-list>li.active>.submenu>li:before{border-color:#8eb3d0}.no-skin .sidebar-toggle{background-color:#f3f3f3;border-color:#e0e0e0}.no-skin .sidebar-toggle>.ace-icon{border-color:#bbb;color:#aaa;background-color:#fff}.no-skin .sidebar-shortcuts{background-color:#fafafa}.no-skin .sidebar-fixed .sidebar-shortcuts{border-color:#ddd}.no-skin .sidebar-shortcuts-mini{background-color:#fff}.no-skin .nav-list li>.arrow:before{border-right-color:#B8B8B8;-moz-border-right-colors:#B8B8B8;border-width:10px 10px 10px 0;left:-11px}.no-skin .nav-list li>.arrow:after{border-right-color:#fff;-moz-border-right-colors:#fff;border-width:10px 10px 10px 0;left:-10px}.no-skin .nav-list>li.pull_up>.arrow:after{border-right-color:#fff!important;-moz-border-right-colors:#fff!important;border-width:10px 10px 10px 0!important;left:-10px!important}.no-skin .nav-list>li.pull_up>.arrow:before{border-width:10px 10px 10px 0!important;left:-11px!important}.no-skin .nav-list li.active>a:after{border-right-color:#2b7dbc;-moz-border-right-colors:#2b7dbc}.no-skin .nav-list>li.active:after{display:block;content:"";position:absolute;right:-2px;top:-1px;bottom:0;z-index:1;border:2px solid;border-width:0 2px 0 0;border-color:#2b7dbc}.no-skin .sidebar-scroll .nav-list>li.active:after{right:0}@media only screen and (max-width:991px){.no-skin .sidebar.responsive .nav-list>li.active.open>a:after{display:block}}.no-skin .sidebar.menu-min .nav-list>li>a>.menu-text{background-color:#f5f5f5;-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);border-color:#ccc}.no-skin .sidebar.menu-min .nav-list>li>a.dropdown-toggle>.menu-text{-webkit-box-shadow:2px 2px 2px 0 rgba(0,0,0,.1);box-shadow:2px 2px 2px 0 rgba(0,0,0,.1)}.no-skin .sidebar.menu-min .nav-list>li.active>.submenu{border-left-color:#83b6d1}.no-skin .sidebar.menu-min .nav-list>li>.submenu{background-color:#fff;border:1px solid #ccc;border-top-color:#e6e6e6;-webkit-box-shadow:2px 2px 2px 0 rgba(0,0,0,.1);box-shadow:2px 2px 2px 0 rgba(0,0,0,.1)}.no-skin .sidebar.menu-min .nav-list>li>.arrow:after{border-right-color:#f5f5f5;-moz-border-right-colors:#f5f5f5;border-width:8px 8px 8px 0;left:-8px}.no-skin .sidebar.menu-min .nav-list>li>.arrow:before{border-width:8px 8px 8px 0;left:-9px}.no-skin .sidebar.menu-min .nav-list>li.active>.arrow:before{border-right-color:#5a9ec2;-moz-border-right-colors:#5a9ec2}.no-skin .sidebar.menu-min .nav-list>li.active>a>.menu-text{border-left-color:#83b6d1}.no-skin .sidebar.menu-min .sidebar-shortcuts-large{background-color:#fff;-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);border-color:#ccc}.no-skin .sidebar.menu-min .sidebar-toggle>.ace-icon{border-color:#b1b1b1}@media (max-width:991px){.no-skin .sidebar.responsive-min .nav-list>li>a>.menu-text{background-color:#f5f5f5;-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);border-color:#ccc}.no-skin .sidebar.responsive-min .nav-list>li>a.dropdown-toggle>.menu-text{-webkit-box-shadow:2px 2px 2px 0 rgba(0,0,0,.1);box-shadow:2px 2px 2px 0 rgba(0,0,0,.1)}.no-skin .sidebar.responsive-min .nav-list>li.active>.submenu{border-left-color:#83b6d1}.no-skin .sidebar.responsive-min .nav-list>li>.submenu{background-color:#fff;border:1px solid #ccc;border-top-color:#e6e6e6;-webkit-box-shadow:2px 2px 2px 0 rgba(0,0,0,.1);box-shadow:2px 2px 2px 0 rgba(0,0,0,.1)}.no-skin .sidebar.responsive-min .nav-list>li>.arrow:after{border-right-color:#f5f5f5;-moz-border-right-colors:#f5f5f5;border-width:8px 8px 8px 0;left:-8px}.no-skin .sidebar.responsive-min .nav-list>li>.arrow:before{border-width:8px 8px 8px 0;left:-9px}.no-skin .sidebar.responsive-min .nav-list>li.active>.arrow:before{border-right-color:#5a9ec2;-moz-border-right-colors:#5a9ec2}.no-skin .sidebar.responsive-min .nav-list>li.active>a>.menu-text{border-left-color:#83b6d1}.no-skin .sidebar.responsive-min .sidebar-shortcuts-large{background-color:#fff;-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);border-color:#ccc}.no-skin .sidebar.responsive-min .sidebar-toggle>.ace-icon{border-color:#b1b1b1}}@media only screen and (min-width:992px){.no-skin .nav-list li.hover>.submenu{-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);border-color:#ccc}.no-skin .nav-list li.hover>.submenu>li.active>a{background-color:#f5f5f5}.no-skin .nav-list li.hover>.submenu>li:hover>a{background-color:#eef3f7;color:#2e7db4}}@media only screen and (min-width:992px) and (max-width:991px){.no-skin .sidebar.navbar-collapse .nav-list li li.hover.active.open>a,.no-skin .sidebar.navbar-collapse .nav-list li li.hover:hover>a{background-color:#fff}.no-skin .sidebar.navbar-collapse .nav-list li li.hover.open.active>a:hover,.no-skin .sidebar.navbar-collapse .nav-list li li.hover.open>a:hover,.no-skin .sidebar.navbar-collapse .nav-list li li.hover>a:hover{background-color:#f1f5f9}.no-skin .sidebar.navbar-collapse .nav-list>li .submenu>li.active.hover>a.dropdown-toggle>.menu-icon{color:#c86139}.no-skin .sidebar.navbar-collapse .nav-list>li .submenu>li.active.open.hover>a.dropdown-toggle>.menu-icon{color:inherit}}@media only screen and (min-width:992px){.no-skin .sidebar.navbar-collapse .nav-list>li.open.hover:not(:hover):not(:focus):not(.active)>a{color:#585858}.no-skin .sidebar.navbar-collapse .nav-list>li.open.hover:not(:hover):not(:focus):not(.active)>a>.arrow{color:inherit}.no-skin .sidebar.navbar-collapse .nav-list>li.open.hover:hover>a{background-color:#fff}.no-skin .sidebar.navbar-collapse .nav-list>li>.submenu li.open.hover:not(:hover):not(:focus):not(.active)>a{color:#616161}.no-skin .sidebar.navbar-collapse .nav-list>li>.submenu li.open.hover:not(:hover):not(:focus):not(.active)>a>.arrow{color:inherit}}@media only screen and (min-width:992px) and (max-width:991px){.no-skin .sidebar.navbar-collapse .nav-list li.hover>.submenu{border-top-color:#e5e5e5;background-color:#fff}.no-skin .nav-list li.hover>.submenu>li.active:not(.open)>a{background-color:#f5f7fa}.no-skin .nav-list li.hover>.submenu>li.active:not(.open)>a:hover{background-color:#f1f5f9}}@media only screen and (min-width:992px){.no-skin .sidebar.h-sidebar{background-color:#f8f8f8}.no-skin .sidebar.h-sidebar:before{background-color:#e4e4e4;-webkit-box-shadow:0 -1px 1px 0 rgba(0,0,0,.05) inset;box-shadow:0 -1px 1px 0 rgba(0,0,0,.05) inset}.no-skin .sidebar.h-sidebar .nav-list>li:hover{border-color:#cedde5}.no-skin .sidebar.h-sidebar .nav-list>li.active{border-color:#79b0ce}.no-skin .sidebar.h-sidebar .nav-list>li.active:before{background-color:#2b7dbc}.no-skin .sidebar.h-sidebar .nav-list>li.active>a:after{border-width:0 0 3px;border-color:transparent transparent #FFF;left:0;right:0;top:auto;bottom:-3px}.no-skin .sidebar.h-sidebar .sidebar-shortcuts-large{background-color:#FFF;border-color:#CCC;-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.1);box-shadow:2px 1px 2px 0 rgba(0,0,0,.1)}.no-skin .sidebar.h-sidebar .sidebar-shortcuts-large:after{border-bottom-color:#FFF;-moz-border-bottom-colors:#FFF}.no-skin .sidebar.h-sidebar .nav-list>li.hover>.submenu{border-color:#ccc}.no-skin .sidebar.h-sidebar .nav-list>li.hover>.arrow:after{border-color:transparent transparent #FFF;-moz-border-right-colors:none;-moz-border-top-colors:none;-moz-border-left-colors:none;-moz-border-bottom-colors:#FFF}.no-skin .sidebar.h-sidebar .nav-list>li.hover>.arrow:before{border-color:transparent transparent #B8B8B8;-moz-border-right-colors:none;-moz-border-top-colors:none;-moz-border-left-colors:none;-moz-border-bottom-colors:#B8B8B8}}@media only screen and (max-width:991px){.no-skin .sidebar{border-width:0 1px 1px 0;border-top-color:#d6d6d6}.no-skin .menu-toggler+.sidebar.responsive{border-top-width:1px}.no-skin .sidebar.responsive-min{border-width:0 1px 0 0}.no-skin .sidebar.navbar-collapse{border-width:0;border-bottom-width:1px!important;border-bottom-color:#ccc;-webkit-box-shadow:0 2px 2px rgba(0,0,0,.1)!important;box-shadow:0 2px 2px rgba(0,0,0,.1)!important}.no-skin .sidebar.navbar-collapse.menu-min .nav-list>li>.submenu{background-color:#fff}}.no-skin .sidebar-scroll .sidebar-shortcuts{border-bottom-color:#ddd}.no-skin .sidebar-scroll .sidebar-toggle{border-top-color:#ddd}.no-skin .main-container .menu-toggler{background-color:#444}.no-skin .main-container .menu-toggler:before{border-top-color:#87b87f;border-bottom-color:#6fb3e0}.no-skin .main-container .menu-toggler:after{border-top-color:#ffa24d;border-bottom-color:#d15b47}.no-skin .main-container .menu-toggler>.toggler-text{border-top-color:#444;-moz-border-top-colors:#444}.no-skin .nav-list>li.disabled:before{display:none!important}.no-skin .nav-list>li.disabled>a{background-color:#ebebeb!important;color:#656565!important}.no-skin .nav-list li .submenu>li.disabled>a,.no-skin .nav-list li.disabled .submenu>li>a{background-color:#f2f2f2!important;color:#7a7a7a!important;cursor:not-allowed!important}.no-skin .nav-list li .submenu>li.disabled>a>.menu-icon,.no-skin .nav-list li.disabled .submenu>li>a>.menu-icon{display:none}.nav-list li li.highlight.active>a:after,.nav-list li li.highlight.active>a:before,.nav-list li.highlight li.active>a:after,.nav-list li.highlight li.active>a:before{display:none!important}.nav-list>li.highlight.active>a:after,.nav-list>li.highlight.active>a:before{display:block!important}.sidebar-scroll .nav-list>li.active.highlight>a:after,.sidebar-scroll .nav-list>li.active.highlight>a:before{display:none!important}.no-skin .nav-list>li.highlight.active,.no-skin .nav-list>li.highlight:hover{border-color:#c8d8e2}.no-skin .nav-list>li.highlight.active+li,.no-skin .nav-list>li.highlight:hover+li{border-top-color:#c8d8e2}.no-skin .nav-list>li.highlight.active>a,.no-skin .nav-list>li.highlight:hover>a{background-color:#FFF}.no-skin .nav-list>li.highlight.active:after{display:none}.no-skin .nav-list>li.highlight.active:before{display:block;background-color:#4f90c2}.no-skin .nav-list>li.highlight.active>a{background-color:#f2f6f9!important}.no-skin .nav-list>li.highlight.active>a:after,.no-skin .nav-list>li.highlight.active>a:before{display:block;content:"";position:absolute;top:-1px;right:-10px;bottom:auto;z-index:1;border-style:solid;border-width:20px 0 21px 10px;border-color:transparent}.no-skin .nav-list>li.highlight.active>a:before{border-left-color:#a0bccd;-moz-border-left-colors:#a0bccd;right:-11px}.no-skin .nav-list>li.highlight.active>a:after{border-left-color:#f2f6f9;-moz-border-left-colors:#f2f6f9}.no-skin .nav-list li li.highlight.active>a{background-color:#f2f6f9}.no-skin .nav-list li li.highlight.active.open>a{background-color:#FFF}.no-skin .nav-list li li.highlight.active.open>a:hover{background-color:#f1f5f9}@media (min-width:992px){.no-skin .sidebar.h-sidebar .nav-list>li.highlight.active>a:after{display:block;content:"";position:absolute;top:auto;right:auto;bottom:-2px;left:50%;margin-left:-7px;border-color:transparent transparent #FFF;-moz-border-right-colors:none;-moz-border-left-colors:none;-moz-border-top-colors:none;border-width:8px 7px;-moz-border-bottom-colors:#FFF}.no-skin .sidebar.h-sidebar .nav-list>li.highlight.active>a:before{content:"";position:absolute;display:block;top:auto;right:auto;bottom:-1px;left:50%;margin-left:-7px;border-width:8px;border-color:transparent transparent #74add7;-moz-border-right-colors:none;-moz-border-left-colors:none;-moz-border-top-colors:none;-moz-border-bottom-colors:#74add7}.no-skin .sidebar.h-sidebar .nav-list>li.highlight.active:hover>a:after,.no-skin .sidebar.h-sidebar .nav-list>li.highlight.active:hover>a:before{display:none}}@media (min-width:992px){.sidebar.compact .nav-list li.highlight.active>a:after,.sidebar.compact .nav-list li.highlight.active>a:before{display:none!important}}@media (min-width:992px){.sidebar.h-sidebar .nav-list li.highlight.active>a:after,.sidebar.h-sidebar .nav-list li.highlight.active>a:before{display:block!important;border-width:8px!important;-moz-border-left-colors:none!important;-moz-border-right-colors:none!important;border-left-color:transparent!important;border-right-color:transparent!important}.sidebar.h-sidebar .nav-list>li.highlight.active:hover>a:after,.sidebar.h-sidebar .nav-list>li.highlight.active:hover>a:before{display:none!important}}.sidebar.menu-min .nav-list>li.highlight.active>a:after,.sidebar.menu-min .nav-list>li.highlight.active>a:before{display:block!important;top:-1px;border-width:20px 0 21px 10px}@media (max-width:991px){.sidebar.responsive-min .nav-list>li.highlight.active>a:after,.sidebar.responsive-min .nav-list>li.highlight.active>a:before{display:block!important;top:-1px;border-width:20px 0 21px 10px}}.onpage-help-backdrop{position:absolute;z-index:99990;top:0;bottom:0;left:0;right:0;background-color:#000;filter:alpha(opacity=5);background-color:rgba(0,0,0,.05)}.onpage-help-section{display:block;position:absolute;z-index:100000;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4DFFFFFF', endColorstr='#4DFFFFFF', GradientType=0);background-color:rgba(255,255,255,.3);border:1px dashed #8BBCD3;border-radius:4px;transition:background-color .2s,border-color .2s;-webkit-transition:background-color .2s,border-color .2s;text-align:center;vertical-align:middle;outline:0!important}.onpage-help-section>.ie-hover-fix{display:block;position:absolute;top:0;bottom:0;left:0;right:0;background-color:#FFF;filter:alpha(opacity=1)}.onpage-help-section:active,.onpage-help-section:focus{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#33C9D8EA', endColorstr='#33C9D8EA', GradientType=0);background-color:rgba(201,216,234,.2);border-color:#77ACC4}.onpage-help-section:hover{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#66C9D8EA', endColorstr='#66C9D8EA', GradientType=0);background-color:rgba(201,216,234,.4);border-color:#77ACC4;border-style:solid}.onpage-help-section>.help-icon-1{font-size:36px;display:inline-block;position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);opacity:0;filter:alpha(opacity=0);color:#FFF;text-shadow:0 0 2px #000;background-color:#85B8DB;border:2px solid #FFF;border-radius:100%;box-shadow:0 0 2px 1px rgba(0,0,0,.4);width:48px;height:48px;line-height:46px;transition:opacity .2s;-webkit-transition:opacity .2s}.onpage-help-section:active>.help-icon-1,.onpage-help-section:focus>.help-icon-1{opacity:.5}.onpage-help-section:hover>.help-icon-1{opacity:1;filter:alpha(opacity=100)}.onpage-help-section.help-section-small>.help-icon-1{font-size:18px;width:28px;height:28px;line-height:26px;border-radius:12px}.onpage-help-section.help-section-smaller>.help-icon-1{font-size:14px;width:20px;height:20px;line-height:17px;border-radius:8px}.onpage-help-section>.help-icon-2{position:absolute;z-index:2;left:-4px;top:-4px;width:18px;height:18px;line-height:16px;display:block;font-size:16px;color:orange;background-color:#FFF;border:1px solid orange;border-radius:4px;opacity:1;transition:all .2s;-webkit-transition:all .2s}.onpage-help-section:hover>.help-icon-2{color:#59A34E;border-color:#59A34E;transform:scale(1.25);-webkit-transform:scale(1.25)}.onpage-help-modal{z-index:100010}.onpage-help-modal+.modal-backdrop{z-index:100009}.onpage-help-modal-buttons button{border-radius:100%;border-width:2px!important}.onpage-help-modal-buttons button:focus{outline:0!important}.onpage-help-modal-buttons button.disabled{transform:scale(0.9);-webkit-transform:scale(0.9)}.onpage-help-content{max-width:800px;margin:0 auto}.code-modal.onpage-help-modal .modal-dialog{margin-top:6px;margin-bottom:6px}.code-modal.onpage-help-modal .modal-header{padding-top:6px;padding-bottom:6px}.code-modal.onpage-help-modal .modal-body{padding:10px 12px}.onpage-help-modal pre{border-width:0;box-shadow:none;border-radius:0;margin-top:8px}.onpage-help-modal .modal-title code{font-size:13px}.onpage-help-modal .modal-body{font-size:14px}@media print{.navbar,.sidebar{display:none!important}.main-content{margin-left:0!important;margin-right:0!important}.main-content .nav-search{display:none!important}.main-content .breadcrumbs{float:right;border-width:0!important}.main-content .breadcrumbs .breadcrumb>li+li:before{content:"/"}.main-content .breadcrumbs .breadcrumb .home-icon{display:none}.ace-settings-container{display:none!important}.footer{width:100%;height:auto;position:relative}.footer .footer-inner,.footer .footer-inner .footer-content{width:100%}.btn-scroll-up{display:none!important}.btn,.btn.btn-app{background:0 0!important;border-width:1px!important;border-radius:0!important;color:#555!important}.label{border:1px solid #666!important}.label[class*=arrowed]:after,.label[class*=arrowed]:before{display:none!important}} \ No newline at end of file diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_alerts.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_alerts.scssc new file mode 100644 index 0000000000000000000000000000000000000000..b63edc5e9ae9bb0cdb1e8092707c63b87cd03910 GIT binary patch literal 4122 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_border-radius.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_border-radius.scssc new file mode 100644 index 0000000000000000000000000000000000000000..61b88bfc0969a48f68d898f25b0216fbc8447854 GIT binary patch literal 4292 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_clearfix.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_clearfix.scssc new file mode 100644 index 0000000000000000000000000000000000000000..d0f876b5b3d7ef20a7dbc55d98544232fa0c35fd GIT binary patch literal 3836 zcmcgvU31e$6it|p;>Zap2?+D;yvm9(&w&wf5-~uel!{?0dUmaKM7Yr+fQhi|!qIwE3jD@7teL1m5gWr7%8{jA8s*i1Y^$ zuqwXp`h6Y+lEudh0^hkD^h^u}EH-gAuDYi*8nR=nUBC9%yt9R#MU2XjpWA2){-YN{ zq5&Yv78 zvlyj)rV-#@p2q^7QZHhNrm5uKFl8Ev$9^;nm_`^uo@9tc3ceTs6bOH)n`q=vF9B7a zaUGB%pAHpMd2zauB!Qj)Uat+MC4d_+sD;xG%*{(ZNoi z`fnYyDjq@K#5$gXR}qgHxA3wnl9Y>BUCar5_p)xj=jS|r&O$A) zWk`tWfVJz(#Tph_)W}f00=%lLl8B~F00;d|igXw;jd2~KCH$?mSG%7xvTY-DAJZ^p z(g3cy36+WkT^*?eu4ffxXGTbjwVG*%{WfH=&ni&*jz4ofZIvrkq3 zVh*pm%6#cc8uysMwY-H)IQX@GyNFj@l~S2@69EWCmwCu5p}3a80`z7j$ON~BQ z9GDdHz226ENnG+3Tzwe3jZuZJi zeb7qa48Y^4qhbzDlc;MD5l{9&?*Vt_|9R)%dzl0+U=S?}?;(#@juau^c zYzvIC9c|}q!wv8PHb9M3$_5pEumHPVXa9B0MyxBYWHjpjpG($U1qZFGPh0nl${4Iw z721IA!J8GI1MgX!@}5^xB-(pc$cna|rThvqtiolQv)b_`PtxL2{f>j2X;dLs1K#Mn z6XOotTX7Ep+Vx5u)eV}BS9kz6!9&g@S$3;%kk+SUyAI-7D`l&nHpnBlMYi2tvdic2 z4L5;$yT&ojaV2JF+N=Ko$es;^ZyBSWp?CM$M8=I`XQm%Z3iQTJAY~&rS6&<-wxms>G znF_$j!O^?LD0h_cyn3Ci8J;g)l;ox$>lJgYWrk~AHQE|jpdjxxS{?E}qqTqwtE^Q& zEtf`Xa+hEe0Ago?r5ePI?O8v8rH*wDy9Cu1x_}E2rnOnBScH+SKP8IIg2G&yn*e^J zEKonKPb@VS#jMP+C?+!tQOy570S%W--o>OU@*>>%Kgxj20BS|G?r8}$Ne3}|3`cym z2+bQ?g;vJQ>!-2Wvn05D!Tj~q1!LJY|C-~Bhk3`b;c?b553m2_Fb@bHYnacVKF%Q2t7J@DN>?;W-;4FAdV>efe_>BeZ_3x%WF#+$)K&J=9DXm_039CE^nO6S>wh&RE literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_forms.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_forms.scssc new file mode 100644 index 0000000000000000000000000000000000000000..8cf5d962cdbc58d6365da4255a38e8a116181a12 GIT binary patch literal 20699 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_gradients.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_gradients.scssc new file mode 100644 index 0000000000000000000000000000000000000000..c87f18bfadd5303808bac82fbaff623194519ed6 GIT binary patch literal 37430 zcmd^I$#dLRdRNmnMN$i?#j-4Ufwh^ExG!1&OKw{dEskwjwq)5O&I||a21!`W2CKUz zYKh`ZDj7SeRL#`PA(Kj_D#;=DWU6w?DU(WaoE(!sAjc%P9Fy;R0N(e$hY#IolJdkA zmsJwbc;AL^d%yPpOpncsO-?$)w}M(wX@w60=T<9t5S$*Esrc34!pzKa;9rwLk%!{r>YimJWT{qzFDnIaR_k)Gr`C|vi&p7Wj{Avh4Hk~u$y>9Qd+wMTQ z^=LhCcQwNrocDSccEG7xSP#NpcTYK5Z-r64`D91r?Hus>kWA?xfzI`)5k8LUEx+ch zBqT?isw}PhA+K8M=REru;vlXp3N8m5N(Q^EH z)d}j=5ohU<(_9ZK;qs%fzT)`FwfOUT)C^G)XBh?uer465Gp1M&S;ub#PCWv;5B#v^ zFVzAktUL49E-FS#K`q)CL-oD>+une;3sv@ZhXdZ8@~+5z)wJY?;lr?gHCRTI?*X&a z{k35J*x^*;(N%2)BnB7wjg{s?|H975eIurGtI`P9Tj}k)<2OQ-XO}lPe{4u8KdS7Z zh94^5uUCUcvl2Ce>SD|*zGzWj1cL5$_m`W|{YE8NZ20w+AaV~Uywpi>5v{U2|T*lYWVASrpKnnCdQlK?R0W{4evm6d@(h7bF5iuHkG;dmczC6sL=`< zk?X|j%_k=yUgkjH=A&jSSnC7v8^C4$Sn#Z+S8@%O!P{$#-z3Y!qzfp(i zfqUL}D`@qC@~eJx^~ny%7O?xkc=ts&&y*J87AjrIZDv zq{IF=8LS5o*7cU62ztb47tOP>o!(MW-dWPl8-Xe?3U_pJqN5TaW3py4fskmf*ZkH5 zRF%C}@xIxJ*0GWddV|RK#U;OTZ>14I(jN`i{FOl6b%;7KEaxDp`nB3#tQ@b5ZUjsB z!qzC3X}>X=CPzhJXaSs7xvotpx!t!~4ag6DULPon#afLTa0f%UyRC3J3>wM(8?=IE z5Ng4cRvnMdnW{(b37#(EmgR%6*-CN>b}i5gVROU$EVRM8uVTg>Xs-K}0J51x=zM!ZkvF}|n<2v#$ZHapPZ^g*Tii5j z77Q|p!w(sUn$5wR_0Hv3;CB0w;2-ybM;lS23gzpy*qc6Wg*Df`5jEEQTKG7qe(107 zbob$Pi_kY!I6M4>po^QL;;)OcfF*R^3I`w5dv0E`7y@98OK?9*)~~VN6mFG5kP_a_Q@I zOziP#mwp_Y^jrQiG@Q=t*yQNB5$DP(wC8~{IdL}I{0_#0$2+7ZZ$jmtmqw!wsmGhN z^NTlyEWj;>tgJEwii~P2;L)Vk2+F)26n58~lPx4J(~OHy@Vm|y5|=XLa>LX`Ss)G$ zX(Z)Vv_fX2ZHWTuLE>_g$#>V5ugmlxaiAKEdSq&Fk{+ayA2HdoBhN?Pg`M6-2y|Bk zyXQ^hcoYRV%CKr{>Ae;1@Gg0mlVFx)p&N3(u5@6$IJ=~wtQWt35mn^7>8_##)(oINhu61kR2(f35gP=38WO-T3TsB zqCjbaQ%KW9&;AnAGcQlzXv`Bm2TEEBmMGrGg5Clw%x?fvHh*n$V#JvX8^Ln)(3w1U zc0^~9F{tn(Y3)A`|4a)1)H$K>@8b#PkTEBL`8uF>Dxh&j0R=ru%KD!8r_qO2wC}g_ z$9~Z1sMa2jj%(d`0+vRSW%)>L**D3uc*V<_HqXF`6y=^_%d%;=vkPz$z&sL7-BZ#m zX1)$rtVb}j1MFhR-CbS+!#9Ftrj^*`ZRizO!m4}q^Ld=l-3EBB30JL+eHd06fWj@e z#?q6 z^y+XeHrJBa)65;&S4{S*uaSdJqVxe%q-s+_RB0JeJ@1_%?_F-;7vCH~q_``)1&rN& z#_mc1n-%D@BrQu%8DHr14e+WclqVX^HJL^sKT0$fcb#cgIhVcKFg(-XaEQ`! zPiSSDbW-*b>Mu+G06gym zjaCTok-b&}i!iuUvlO*j(b~6Yt>zF~Df0I2K{V`8no~y~Bx)vE57%K5h`3-oc*IJ( zN5IanYpdhY+0^O?LB~>LVdA?06W;}x_%6Z39O{<%P+N?A*c_PjD3FUJ+SD>4?Mp>; z=m>R7eBNfZx?=Jn9lAi{Bp!sup)MITE=`0A;oTu2yd0#KSP+7SEIyOfD2Sg)^uNo@ z6qxi)mnsfYOH5W6lY5NGSPV~lX$O=CMJEkKLA*KXg8CqmJ6<0^Wtb}&p(X1(- zJ%uS4y%HCKT#*a&$k^0fPv#^pSGBE?%O|ET$R(M~Nh8m-A8A{nK>SNw2zEvJeqhU| zvt+S#7m33n(}R0kdkfs^FjDR-B^hWkhgxP~Y2FD)6sQy66m%o-pVSE86?v06{7p^f z{wt>u=nkDd8oO%2Xf2G+3W55H6{xR(B2<|0Xu@FrT0dl!)a@k~{N?fQw zA(szrE=izDBPX?+iX&}H6bMv_3jv_Wg)NVoRw!6|Bo23(9?M-=;6{g$a-d2wP@tlg zS(ujxsziYTl~d4xI^M&i%?nf@XcsBU#t31PO4WE6@N+7R+PK3|mQ64@kjU>zR zk=n99A+6<#s|NsL_h_rch|pGK^i0rJiLHUQBHzMjt3->?Rz<3Nv~|KpTO}?A z+N#)a(31n6dVIO(mlRaOFq~@T4*j!^LwVz+xh7aC@}r=)xa+9@HRqCtmEv%PmHvwr z^~JH$*D*H&k}RPggq0$MLmPbN6L>U+4qw*LVHH-=V2^$T+ZYq{u#XU{f)RYoN*>36 z^D$jS@o3C0U@2Nx zIo5J7i2}J7r=Z^YJoARZf=lIgIne3lJAB2WhYBH#y#U_KE@Zk;ZN!`%Wqlu%fRd^^Xen3h+Ip+FMe&Fv0Y8ZZ44*2YW!kuHw!K0YzAG#$i`zr+TRn7zfA zT``#%9WHExvK|G4Gwe|?i8ie%qavBjn35u2f+E*ZkG~~7&igadOXpN~ny&|eW60}s zS&u>Wz$fhBN|sWgu*GD1 zTG;;7gYqAXIBmt(X)rByv3SI~*fePu>|iD8)WITkp@Zd!{oc-@C2^rn7P(|P*;J20 z4lmKCa6c980%cL6{sZk?NWJJDWr-4%MWmEP(|K8xC{S7C6m(hK z`#h62uPowdRTc-I*TK@wL@&PyFAyMStN=L!!cZTMN30J|Z(qRxk*HG-j?{%7yz2mw zxKJ;STr$0Qsz;#!k?0fhi}cxMCe?1l%Q(_VdXh;TnMzh5KqTt42@0uKv_qv6Q@L-H zC{chQr7X7114N=g0m3Qh0J%m1f>-1P2>zx5WNvc-k~6J<=tx~HE`NCs@SL?`VVxdfatHDb)EKtYqZ5K4($ zGBe&ZDhkD`ME^sbijh9+4~=-0Mp7mbN2Zb$h*ydFT_#sH%H(*JC{etkoS7cg!VDw| z6tA3uj@Pd!Uh#^&c*WmTyndY%uf^cnz4d6+cv@yaKTtPf#p4L@BfJ)mPUyVHvy?QF zwB{qV*1sUF@rpdWHj$#-^Cvl4e}fCIqn3q6L2g=b#iM7o;3~1E1y^KUv?xiGsO%!8 zY`AP{!Bt{J3$DoMnJlfq1bRiZ@;u8LIm3$B^RTO=;Vf~#WFZoyTLFZcW% z1(h%i=lOiW)foC$9f$Iu*F%#9SL8=QZ*kXA|F4`&-hwL*R|~HHW<`Apzt33@r;IrG zf+l#8R{W|h1x7eNyj81KQ*YtI7b64>XBm$1sln{CETajWC1D5zXCa1A`YoLXIi7V~ z<5}sm9ovIujazAF9E2Fr1rCocXo>W`vMlsa49$|5xr`ax#AaY9ou}Lq?JJCSW|M1* zMVM>Oh0rXC7j0NYqunu$MtT(Lg(T{qGfgt-IMqb0;1)r%Bp#GMQ3EznCk+bpOcL!c znEWl%I$J`sBwh~~ucwUH_M%zv9B@~?`h*p16JTe8w(v;U?%j2-E^(n5EOOzUgfZtR zZ8Ms#sxYT*KYCsC)kLF!A)7qDW&+8fBqfvXS^cMpYb>4&p+CnKj&aY-8%D><;+tc7C|+5#MT|+vemUSOI&FE z0lBR`Z_1hfCdZk#2&7C~UOEl@2uQ)BJRn6HNm}!fTI;_j zt?`OHASIEa-1Dm(t-nDaWyZ4549HDD3Lf$HXB&5}ORNb$j2$aA}@_-clO#vy-_v(zR8qsG4q|78hiZtybnQ{6` zn;1Bba!}(a_*NLb$9*TwaEHQrJ!tS98}T`|XXBieX3hcAS9Rdv(P?cI-TP*Nla71b zB|c{vpK+6qp+|Hd-W_D=q0V*GgC6lkJ+|j98Im3}_d`BcOg-QQrtnHa=-~=ZYV?~K z;@g_{Cg9}F47(~}qf(1ETG1lKdFz&*2cc+sjzhNUncNE zv0Eu|xXw7-W+u*`085mp$3j_Y-(9*)%@dDAff5g=p!3d6iebDWugAjQRFCzsm3IpI z%E2x8$OX$sE`TgFOTZ)Ry#UD_ES6Lx>g0h)T>yx>@)3yxfkVh4vyhw9hf9>mN03qm zaJ43t5(V-RPC@&~1M(5PBF{(gH{~N6IX<$*KK!EP2N!`K_2GDw*N00ZNozh*YyA~z zjaTIL;fWOGp0AnKu#;9wzeE$$FM%k$V!o&=Ccb5QJ*cY9ghLBP$sAzY8;zsgp=a62 z15U5$oP5J<7rqtIH(g%|yj#My_BimZe zp!1Y)x#!P&@g4XDNYjTIkTl!Pu~pKv?FvaV^uZ*(+&?ikIU8Ff6sVmH&X3k>xm1Mo4Hq~yXTUgJo1l1q#(?+sLw8TV3MJ+mgse~t0sQ^U>n zAoAOX_oNMjp}TE~x2$k^OZim#=?^?&ErxuA30X)}tMBkqojFenlftBiV`$)u7dkU1owW{h`Sr0q3Q_`Lf+G<8GPT8;r!b8C(1jXZgoWQn_c4B&TTt zI&tY2j0{L_%@ZUN)G=Embjuv>WWwf66mYnjD15O~i=m8Ha59;{np&jZU$QFlC6IY18@`V(Z#)|i<&iWEM{-1I;Y()V@L;q))x9Q1fob` z$AT}(L`?`%&pcYREqc=)DC9wJVrj4UlFnk;QCruWnh>PUmwFU+qtPi+-z3}8ek|ni zsNnssGrjpJruS9~z9cTydla|yBU4`H2b;A=>35lGrQbI>w26Sn?S>gQYjgEpGKJBZ zC|mrDNh;TSi4N6!Mds&>3`lO(dx-?qdy9mw_b>2E^6EVfSM|QPPm7_9SFqma>^3P< z>@Qoz{xXO{*fAb4?6}Lxy+oa`W27!X2S#`oDfSW%nx-QU{!)cFolB!=i77j3+rnF7 zOmAsG#_Zh+EV?&qj_>FwMfw~9&o>95UD;93)Eu;J85y%ZILsVHioIm+1!fMu%`D#> z^dc#gijQLE=veF}nSRJ*;)sKyZbZdq^`?0`YVd_lHB{^+$rhPpeAL$Ut}*HYc3|jT zq_{~M&^#UWeo#>FdrUGuis`+TVlRpNkTEVXG=lm6X6;d;Svnd7YQOpMoBRl%4J^Vi z!$~(+>?Ko_evjMYCrnbg*h_S%*el6@%E*A^Ri9`x`2Ks(@V@bJ{bix%0Q?8X*Wr6Vk0ba%YUcYg z_<3Rcz>NAdAY6)9UxBZq!)Jt?)<*JRk%O-^X^y~OegmE^s#oy~Pb1FKBd56@RKn#) z@Qqi;j~_x(Kf?#@Lwr@EdI~AwiWF3IM;SnaF`@j!t{!%S)!n*zj z&r(o}HpT|v<5}>PdHr#mQF?dI@CoCCS+0X$EFW=B=vSM-8TkG;oQbbWK3VNL6DO0a z^cnoB^l9hGfa4fnSW{npcAcEBIS-@tG;Ot@VKFjAiKR;To%S5Cbl&G*Wg#-3blo!l z^s|;CKWnjQIQ5b(DZItc<8eXbCwg5c{n(ucKgVB+bDhn9=fN-Nq9UcO;x*?4Q0BK9jwtnPOI<0#qbnyZ zLU7AI__R%%z#dAr?_vCQJ20bunin!w{Hi!Osp`6Vw%T>z)oZ4;;j;KWW|@23b>m=i zH+h=uPGf-+Jf%ouum$?X8iCC)NFzbNo#R_o!Ml9?9tyslSJG#R-8!||4O@FRmd92sXk@OF2Vmu83t8IdLH9d9tjbQ0s*c#0^s2U7J z;z=Ux#Ts#pjbBdYL|ka%tIdDIHWoh8K9OU~Q6Uz8(=z==jr4Rt?cm)V_F9V{y#TQg N;1VCD&{zz({4e9Vw{QRe literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_grid-framework.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_grid-framework.scssc new file mode 100644 index 0000000000000000000000000000000000000000..64eaf39d862575418d7916e48cfbeddacceb6cbd GIT binary patch literal 29640 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_grid.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_grid.scssc new file mode 100644 index 0000000000000000000000000000000000000000..69f0b939a666f90ccf77088e6de5dd17f4e2476f GIT binary patch literal 29013 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 T)_HYwt5xzd|0+heJU{;nl#GX6 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_image.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_image.scssc new file mode 100644 index 0000000000000000000000000000000000000000..a318f2941b0666a64f157804a68ee673188b621f GIT binary patch literal 9565 zcmcgy>2e##5hhtK5Cp+XCq+u~2&5cRCI|wQ#Arv3)+JjmR4iE$WyJ}tKnv`EoN%$T z*w|lp4+%q=X8y#kJ*NtCx&9%n*o!e&puF2Tl+wJap<92(k^hr@@ zS2hjL)3oO*#N*|;{TcXqgCy3F1x3GHfn(L>SeFuQ zyG5EkW1Er3{D9kDiQFPp@{DAIpvyp92+wn>{E3fm<9 z4kP>A^mmBp;()uvG2pbmw~F%6vFEfz$594a=Hqli9~auSGz#*JU$HL2H34$kMvpZs z=Xr0t>c&S#I`GYKx4o^x)~L{K1SB>)E_eJ0^%sWAjkd+c=~S~)Ho50m#-ZGLN$=Yx zbG?pmnb`_hq!)l}liE4m6MeVCTCQPlGoj6fJme(k6lce@Dc$o8*Kaw(6WYAG&9k}VFuw|_*k-<0Yl8uLzH2xy)>j*= zYc&syGnuUQq+!)s(vnuaj^|03CUxF(gzGa`Xe2mVGn@d^egwjLhn~-RMG)Nu4$TVt ze@iaqn$lfnSgnuAa#r`i5T&WK_6^qtlLvhlH<@36!|xd0&YK~)+^9e_Cw(q3?GQE9 zF2Ch~s9}v!a1)sYFYwZ9+NSRUgCZ?9E2Xw2I=gsmTGFPt30H}CIdhRdniV}S=!G$Q zQ6!f18J$gyKBreenmK)*-q7d3ui!24*Wd=0GfwKMD;&IaQ*;WQfN~#-g3cVdM)X`} zRhds^#F+xao{7c5(Ur6~cnE;cH`*Q_(q?oAL}+=3wr?D0MVsx1ej<-*F`ue-S$d3? za&;v@dPCVU70IE^2Cg<|ONe542z@=;B6UkY3xO(0e|6%2 za{$tGd@vkchy_<6%iEbirtXX&>nW5cW6COIp$xhme^(&;A%d&{kU@R{2mw67v5CL2mV`$L(shCtg=gw#PfH>hJ?*Rb8+s@rrPdaNEaN zA#B6SNxd!w(oarcZZs8SS16)1p6RVINU9=_k1?%UKagM0~*5V_tIr*=!6T zjz|O`1|Vd+mL=ZE5D&-s#48H%TLXwsNXtlx9!w0DeMKREX8`%hz#vof!O-rt6rPh@Be8v*yLH9S}!{X?R>|rCJF8KRxFSr0z#|Xp0 z^j1M=D?!?+CQw0o)C2=}9f3Yn*k!G(w;9|l1|b+Tt1tu)$pb(=1-9IXHL0sB6y{NkiNlPJ_!b~6j zX~06{y)NkOQF;f!zbh3$H`bsa$TPp|3Z4m~?n6No%nk^}oY3yK7k}){=U0A~Zt4dy|?z8qT_p2Czj|N}d06mT<*}tCgiq}E#EAbI= zv=N^GP;6F4H7QicGwbBT0`W<|*JduXYxt;kQMda&C@6j5w)!^rJ?QUT)}c@oAfPfk zsSB5H!=wdAZ-AhWLf4WfTQ=olEZN?uI; z4uX9cNx@8TV4L7MgIM}b$nu0qAVXmk$RON=EMf;LSrjr_si$l-j|Gj@jx6q{Z8Ty5 zw?ZqLd=Fe>OhF&14j;c0?*v$cwD1q3)AKG3-;nhuxr@52>`%ROGd*9fK} zf0xHDK?2!5NZZoKL}DR>#DanZj!uBYXaK~R={P}Y6(Ugr9OO&{L>{*U2;}ywJRqEk$HZK8dC`C0^Iwh z!n39Dlv;T|)D4AfTOoTE)J=u1n#8{+>PhDe@kkP5Osy5v|E8j@t~?#;L^*~~;5i+o zBmqO|ogLrA6Oz&kx^gut zP_JdFkTFG;a4g&+rBczIXgixm1%cGDe6%U$Fh?V-UM5(wUc^y)f8iJ;e z{992f$bBsX?=_&3)R-8-^ca8@*|UXBc}>ft>x)gxhnY>FdwA%?r!#n<9r@oUwVL`S z596FS`EWMX6fTuu?#SDEt%lQQcv~+)g9`pO0G?pd&*V#s;iI=kLcuguT`O_C$8Lub`x<3QD=9D^=V qn3UaMRMZk1OPLrheG7L;#>_HQS?XUO6u@&Pel!?Ge|-=*-=6`kom1lg literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_labels.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_labels.scssc new file mode 100644 index 0000000000000000000000000000000000000000..76120808cd775b2c1c0e8c4d14a97a35082c9ed1 GIT binary patch literal 3160 zcmcguZBHCG5GGQ!?7aYiCION(JuV4_B(Qs=h16~(S8XGmltfW3Nk5=!<=yk$x$LdC z_AW0)^hQdLS3LU=tMKQr^pGk&`J^=_xr+Ul{81qnZ9tzN>8*>;`n z?{`?R=MVOM_u0Px&B0#K89WP~1_MeD4mx`Q9r&HT@7F)G1zPV>r4V{68AIre5Xmdi zXAQJSf)NkEHZX=)F8(+OxdB;Z7(~IS}&;2Le+ZYSjhVMEvl2` zEM};ocnBx3bvOr~LLM=0p#>u1go{X>&k6L!4n%a!y6u%v``$UG zlG7-$a80|Xa;Oe14RIs$& zag*C(da1DrShnnVl+iY5FG zM9!kVIf8GQO}xrCAeaGUsoTExm-9{mHiz~Zq>AqLISo?h7a@fydB@BN(mP|8#e6*L4(>{PLqS*7;VBXA-P- zRiKo~(jwvGSjdD)fm&H?-TVVE<~g8MXDVT18?Z~bqT6Pl8oI%?L?ol3_kUiwMih|H zFvUBeGUCw?3U2pUVnOgDsz&E?&@;M%noZ;uULXw@xG*CtjiybgeFlU2Nt z0RzYh^%b8(%OnOIo;r&XdW!6bo#-b0fLD9ASF~z6)T{K1K}5DHC)NraXf0EX8Am2y zLl9)UIHL18mBBY@$aDr5HT~d!oyO+o;YhN)=S3B=dqnAP=q?L^J z*zYNe0%k*Bj@j6U);qLHMaslg8y9vK-qHK_r=9hnSwdD=HNXl=UPwZD#$(`_QB)5?5I-{x%%vuyH9bdkE{n(t&v@U(2mc{o233Z6 zzT39y`W7)8JN~wT5yl45W#r$v`1^kYVjfakFN>yE%Vp6th&)61Sw$k6l~W6_TDe-D z`yWxJVkA^2?sJ$+Gz=GYJdHk;M=a98xJY)_!xHEcE{DG&$UKD!e<4sQwhSI3<6vov9l8)`yf%d2)s*p2ndB7(~$qc`Y&lb z4_Xa&9?Wq)d|=$v$e6~^#%)(`!BiT0`Lvmh;a&wpXA*-!t{d|q-pmKUtSFiv@bFc} zE^_UnVsN*-Vyi+wT}J>zuKigWWSMIg94XILMWKzXX*Xg8IN4M~`v+IQ!di@<(pHPRzrpRe6_gJuuUIyLAp~Ha*i( zE8E4e2fz8OGNxMiuBu?ZHOo`hTlsZQT0p^V?Y7mrfWH^@3!^!}Mr$hIt1@p*1^f@$ CyKX=L literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_list-group.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_list-group.scssc new file mode 100644 index 0000000000000000000000000000000000000000..c050836a8482d12405cab192da34f88be9b90206 GIT binary patch literal 6922 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 OGYQjC-XVPLRQnr<%YlRd literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_nav-vertical-align.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_nav-vertical-align.scssc new file mode 100644 index 0000000000000000000000000000000000000000..a3854850bd081ff9a1755c160f63d24fc2352772 GIT binary patch literal 3011 zcmc&$ZExE)5Kf1|No=P^)8?()05;7UC#$U_uA7$Ji-4^IJZxF9WZ8!RQz?m#iAkhD z(oTY4zhVDuziCIkI8vIvY```^Ur62YdG7AHBYWK^-Q8W(K4cLK44*J`XxM~p)t~wM z&jWv-vS6p*@AdmncZPi$^ul1@-}C9d-|vUvGrBjde>f-c+9A~%<0Hiw#y?4E4rIt0 z__iC2coZroPG%+kxNP*bjAJHJyE<;T6B>=#No}xx>rZDJ9ngtS6`C+*ct9gWBYrCC zXd6CsoNq=KD1ZZ)LcrV}r4bj%j2IHBch?%fIHz$EF^s4v%+QExMA3-x(~&`PhSkwj3I?5&LED;ckypq_1hj&2M8UyA(j-wbQ9NDC1jSUHa?wTG zP7T*y9O1faE)s?tnn%Et)J|q#E8>Fj8eVW^Vz?Cgaz^4$$~pRhpL6jI8`@+pfP}A^z&u68DU*0LM@%8Oa>7KIx{&4cCt2Zp5Z(~-2O9aq`B?)=hlUK2NV_4Y!Pxmls^1)_M$EJ~ zVNNs_!N`~AUbf}v5rvqXn1QvU1y2%YI%hmQWkx$bXjU6VljB}@ue;-D(DT)%6WdB? z2NE*5rirc&v`$lZ+vRa06(~|-l*Kv7H=s4X1?Kuf8y3$&917qD>+IhSBjwd{6{C^& zUqY_B8l;-a$2+4+aB&L7pF3ox2EjuEjxJ|lIM`}hiMh*U!ENlo7|;o{)DH9q2)Hs+ zUP61>HfWKSof56A!8%4JHbw#?Xg!x!Mejc*Oi`<_CcsI%5aF&Q8%^@5BzMv-Sj^k0 zB<{t*dcIqge3RUjh z$ju7m(>FmHsc=2!VyvONrqta>Z}%pTrs}PZj_+YODjLn(T<7vG436#a#`s_y`%HlW zpT$eA7{@mEQh8&+jfRQ0;)YB}U{v0SDApRHe6EiSe$ySW|!OzE+x2o zWYwL5*xX3+FxUKIu6bV?Bja55xs?B*pck$QdI1EzHl=S@n+5$s(4ddJaSFk{myT~j z+O8lye+_Aqw4o?dPxrfb*aNdID^IeWYLI*eMSbk{a)nLL$+K;v`=WB}t~!?dnP40XH|yV6S+a9oY=Qpn|)}j$gQ7KTx+E=MAqg$Em}=_kV?f@&Eh^tJmH1 z{>~qU*Dmn(M)euAg)ZwTf56%M1*3L*qjE=}4tmYUL3>-|$}j8DzvKFQJ?-cw)U0~R P)GBq%R>dXLOH20`5-??P literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_opacity.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_opacity.scssc new file mode 100644 index 0000000000000000000000000000000000000000..b65e1b67e74c1e2076536945df6a2a9df6d8b3ab GIT binary patch literal 2919 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_panels.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_panels.scssc new file mode 100644 index 0000000000000000000000000000000000000000..ebab3bef658abdf7e85bf625487f51bb4e14ee3f GIT binary patch literal 5999 zcmcgw>uwuG6pkb0I<}MG=H{d=-MDF+rnT2;LeuVuYN3D>1gIjV{D>-R*B&QJ?H#kT zP7{Uv;t#wEPXLd>6Tl*5-!qKk0gpyIYUi8+a4`J@VVlttZ{?6Mtj<;W~cYeYp8}v-nL_X=^Yr-h!8ejkTiuIQB91Ftv4yZP-}#a^?X zdm-*oYt7C(`OjWBMK?YgV5dZb9_&E*-7$F73ql;^ok^Dr;(&zoc#JqV(gwZ?4ukMh z++|26VMFNk@pkR%fa$Iucv0YmaUM-D^G|^yeiL_ItR5rnhS) zpF|xT@tyPTFofT{fIHtA_ ziKTJm4PI_E9yXdbg{13;cArI@+ASVp+MsPpd6=f$pg$l{j3eS$iErED0o2UrfR-N7 z821Z+JpvQkHT-`==eVZb2z$NOyEIvKDU=~EmDU?C3WIPD5?@akLG$6g0E)nj}Z*W08=cqO8%+co*B#a^}aD=0!VL(uF5nj^YS zR!}vy+Cqz9YRO$d%co4vNt6DbX;8js`FrP@dt#XT;w|Q8lsVOB%sctGrQ46SLxyKx z8m4wnnF6w*gPs>Rfk;M~>v=>5j4!6qH0PqkSjz2!OhmfP0bY7p4kkumO+aJLD_CrG zV-yx-KlXeYj5!r|04Q4YD2%;Brx4;djPbzPEUkrXtb6XAsWRBmCVIm-OQ9%k{IVx0`XSr8ZQSWm4+Lc1cjy!)=Y123Y$n@kXzpe9(4 z&mj^y4x13(4*p??!!|Ae+x2nZ2SVG;E2d9|7890oc~oavy)~+A2PmkArBn%|K#L?= zW%4jW=1_J5SHJ1v{&(3-Y z@arODt7|I%E5R6)W|5#BO3Xc`-{%DsIfuZNm~!4+s09(Ngb&oK6Q@t*KxpB$H1!7(W=)V=~BUu=FH8HJB?S zl~e&!A1JtN1#r!i&UkhQM`Y!mK0##?Ae%1fY_5#Kif{&Hbu08Bv0- z3^+Ts#d`HF!hpS+8aws?V%YQUzOZ0}hiJw4JcV(F}r z#`l&3{+}7pMF^oz16#diq*cX1$tQ74`j?(+OR_D*m)a6oTUJHSR;#L!vYR##H_X2uO6(Az7 z6qaNYT)Myw6uTFItF!T&i3PH!%_7(aDn~v)Qlb)!5KN9yqxup^9D`+@ zb9NPwlppFymhy#RI^oEYQ;6Dg%CNXzO3=O45gqD8nCWMKsh}mCDU4mxjdUAkcydxa YDT;%4UKXY3JjO%1&XScpPbPKtFF$G7UH||9 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_progress-bar.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_progress-bar.scssc new file mode 100644 index 0000000000000000000000000000000000000000..c82f47e373b55321d8595279864051e47646147c GIT binary patch literal 2455 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_responsive-visibility.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_responsive-visibility.scssc new file mode 100644 index 0000000000000000000000000000000000000000..08ee1ab7c9e0b885c271c500d5d6bd80cc618016 GIT binary patch literal 5140 zcmchb>u%#j6o6ZV($;C4-mf6M>F%;E+c>>#cV`5$1XPN|qSdx6KOz)4&ZHTw@ zFRJd-V1C^Y$7^HR{q4=G2b%T6TU=e z`XTpt$eA>EtO6-~eMSsByzVhll-vV(TBwh~Bai!x7s!k)dLakVn=wHr3_6J#-&;F| zxnsT-0W+BcV%H}3U9aC_rsH{L*kPs&oe)g4MPLTX_O7yB@tBkqR8n_^f5C!~1wWXN zdkzE^njOb|kKWO#GiuNxdPJxBB%QH~f_yw2^J{*^{jXRXlQRQe`%ahD${Rx_FSz7Q zjQASW!4@Ytm-Rw@LXbzXrc*cIy>O7~cTT{arpJo3R4W%_ha$-pyYIJHAYF*M)rbuZ zy$1)2WWkoAAGoX$IQ}^kWG%4}J%lpi(SE@l z)yPeCMY>W(S(~+aw$Ia&!PU4rz|W$@Eu2XZpNU$v7ktoy@9+}p_66LbHXZg!BloE^gV{; z&tmf6e}wvJ!cz+Bnhyo&2~Y!Q&5>!l$)Gb?l}y=P-V$^^OFLai!4EJ_(?vm-rs%SW z`I`p*47xV7ny2gF^M<`iAH}|d>rNXCSIMe<+2Jq`dJgnPZ2N?)3_pxEo{(i*1pFKT z_Ppyx$gaW@vSeej8sKlk6`lylVtPHox5<=m3t8W4<*|r^1shsiLPKNzWR+~%G8)@p zE!E1|(9`M{2kM~^q0^Ln460SgRO?M3dRVOzE#VNIZgDJZG?pj~{G>b5)94$>THtt- zIUC;Ld?(~I3;-n9P%AGtJpqIBQQUEkA7X^mASK>{smj}&1&9_Z$fVCMlbM{SNK=tg1P~zBIcc>&PnlL6k+t{`%MnSiOZ>LK zP~OJzDOhbwsYYORoffd+8iTX+EIL}~)+~KoheR4sLyuwh1bs3`pH}Io_v(>SCaonf zSyB$*YDGDk^ay=crQ0WT=Y)QCLZ8!JC{CW1nUt2*td@jkTB%Yi)um`tql&9_B@2a( zD5ZP(MACi4jvhp8>6E~Ue3)RA=jr2=r`suONAyL)O`hcD2+89(BD5w0UzMz_FP zCh|3~t3MKPr8!NvK%S(|Sz1!Hz#poLxIrg1eY_`5*yDdHNaGez8MeoNSDG+YIytHZ z@*vVJfDl!b_E-q+WpGKwdl+1{Klp3hvT}b?F$~LszklJE5l}L!(G0k=!QFfKcNN`E z&ywFzw#^%u{98B4@-|wUW^(5sX7;K;VfQVb75L>lBxc@dndlvjw*|v{O!LmR%x6L( z)zMP%!KBxqBS%YSNTZrtO!7mLGdykXo1RQ(#M!wu@EnB^TF7)p0f^E3#H+zwIOgYX DUOp%% literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_size.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_size.scssc new file mode 100644 index 0000000000000000000000000000000000000000..1e8b0cd0126093c61e78c3870da60af707648eda GIT binary patch literal 2382 zcmcgtOK;mo5LSVLmZ+EGCVn;rt+=fnw4!V|F|vEvq7Oia1VQDb2OWqNxe^zlxGZ<& zM~oi&8~TSkyQD}-5zt=R8+Vp7^UcgR-}bwg-SczjbjTv+D}KYAp<*}e%nl|OFZ+{M zmoLxzz5dmUe&4?eg5cHoMgJFsz3)rDkVbKDPsuzDuj9?0#-*Y z;)gs6QWlTkr!SX(`ccegEH?kys7`KZG-o4g&^dCSJ461F$5Tg!B31reN$0t1A?xRB zWD|9tFjSX30$*&6DqxCu%(#V`L?nufSUyw)db*tIHNWHWPi&$wHNhdKGdAedB>%`P zT+>l$I+dfX(Uw5Rnd8t;d7>5ty{9Rsx znaPzQg;LxZgTGxF^CV&FdnkCylyt{1SE*8(yzh4}x;{J5cz@}1j1M5>A=$&nd1%->nM73eV3UCRD@*(~6^UM$Hg4;+T%vV#foI7EaF$LD zURy&`18%kpH2U;p9SyWV(Xr$e^oS&o+>`gQqIakovs=CCK>tlqtDB>uJ+tQC%J!N5 z5O>9+xxj(;GZEV0k~c9gg7g+HdOiX_%UiTOkD^D*#!qHuuXV|WzHArh^l7h1mCp>H z@CyDKf0K7)Q-rc3s}a7<_(8}@hE|c`bcH`T7V<-J55;N;TEkoglvWW@pPnr|K>UEz z-r@elQeL7eqE(nf0n%b5? zhnezZ?~{2CG`CwCNtt8&U!Z8Mp=d$g-2#O^9j&AI$I3Rve7X{|vmO&<;sd+C6=?tp z@>N#cJH;b}-iUNYBaqf&q5OskqcyC8(dwF5}BtoWn5mj(I(2uX_|a+8A(#EKkQi%?u* zcV){kdhI{y|LiPD(V`-tr}oI@yxBKz=FRrIue-gTdpv{)0weCg9U8cU6X){s@;n^( zUSIYuF0QTu2!hMgJ|B-xuY$AQ#X0|R)E|ev{+07(Rg%3S*P4)P1whDqDb4RPgc{jq z!9+x%g7{`rl7r=-pX783aT@248oT4s3~nle_M!L6{RpEs!gREGh`=4oV5Z$yUWHVC zxh4)X4+)T(77?Opi=kB5Mj^KK}3F!Mf2^~p06 zn1c52z>8*aFd50YpB;I6!WD$x6foM;u}BgyoqG}9g3;axM@t*UlMnswS@+b_ICf8m z-qiM4dw$W_t`4+LySvTAG?5DBEucTHI{66 z%-3l_D8RA|Tb;9HzEWvprP2o0)++eeucH67TA6(qS7~|%+HHT%9Z9E*xTZN zwgsyzT&u{gQe?DWdkX~aOSFK$c(|@@U-2Qs)nFe5yVm~pyfsghKZkh#UuikRZzs{aTmYYXh+bQb&>7?DNW0hr>R!Ws;U%5-^Nm}eb D!MsJH literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_table-row.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/86c1908123397cf1005de81f48cf5488379aee2b/_table-row.scssc new file mode 100644 index 0000000000000000000000000000000000000000..2b5468ab02e42deb29edaa5ff39cbc827a99ccfa GIT binary patch literal 6996 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≈;6rL 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 Q=lkMaG+X6Y*$kWi1enG-?f?J) literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_button-groups.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_button-groups.scssc new file mode 100644 index 0000000000000000000000000000000000000000..0d29699a442b031bfb3f38a1dcaaeaaf7a56f6c4 GIT binary patch literal 48185 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_buttons.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_buttons.scssc new file mode 100644 index 0000000000000000000000000000000000000000..8ceb10b82781a4622f8e246c4546de9ae2129d7e GIT binary patch literal 30337 zcmcgVO>-RAam2<3fyEL4zduEdK#CznF0lNRIAcjeNu&*1q&_H7v1xg=*c||4E_R@u zT@th`mp|mBlCoVDyDF~8xg?jIQb|=Rxg>`;ha`vO;{1o?nyTD#NYdT!qo?1_>|zPo z{wVOxd#}G}4rzJ^%cr%hz9c;rgZ3 z=JVH@*J~@Sm5cDd)fcX=-oz|`u;oJDDwTclcaYiX+<;s zY}j0n+pTWYx$hZb>m{8O|5+XT zKi+dolm6t*cl>hLd%PL>GilrgT*2i1UGS+LccOUG-xDUAy%=zOv?~dAmxC$9{`wN2 zZlsZy_8zyR9iR`U-wDdW45ADw@l3EMoN=YpZ$~JlSsuFiz~g(B=q(7g`16T z8nxAj@;V5zqrZA5APVYJll zcbe-f$yQx`T1wX&-Ke#+5kc#vv=eV`M!o8zxV0Ab(xnx!qO{j-Y~H)Pcxkb=l!Ea2 z<5GP^S;%7AOjA^u;8fy!Nj$iaD(WN?ARHCa4&!j zhVYBF9(}x>Nshowax3Y2ac8sNL${8TlAIOhrCjD$lMa}F6tAuKv{d|O zw96B!cdyZn8!PQ-COEXbZ~#D8ou2-ou-|EcJ8CB2U&tO*!#XysXHZl?!KBjd1z{ev z0>IL-v(N?e8Xvb?bXQKXO zwP>aZ_7!yvg&x1?a{utg=A%gtc5!pdOOrMb194X;g$Nuxh+|WSoB=o_)D27QFQvNW_2dDNJ?#Me zr5yllP^4~}h;ZVsj4|BmrVt=o;w-4LEbyE-i4a2Wy%km+!vu?c@?LR?+I;usph zDrK#%iaKD;Qz$ka9M*~NTasu_xiU*i-iP&PRV`p?KR7?lQFY#Qa@0}Zqe6YL z^o&J@>U%8-p5Gn3@X@Z|I{e?S1wl>Iod=2OMo0@55|KSS8_eNq>*SdWWzRd~Hz@l= z|6Wx8CN}1iVDA(pBw%jbuhJL60iB>Q`2f9W_x(4?VNXFWAnmWN##^|uKaLChBemeD zSqM5DPXcAUpvThgV4)VAGJQ4L-OCG;Wh5w3=yxZ<7p8(2Z7Z9cU}Dm!-%4iu10gNY zfV*a$vQgzG=239WW|&XV4p0TmPM92o0X>ZP-9Ro28B6m|LVR#=${}YPf}0Y!u_SRD z5U0he>A2|i6qNQ_wZJ)K61CQ-M&*pZnl$?=yV+a?M&cxlbrQTZ6TBRR$WWPk z->3zzphU6BFo_PT!yYS9>Z?IWu1*3UW$QPv#G$_BO4;cwWFcU^X1KZv`N3kNdfHLe zrvY-s;=z(cdQ5ynYay^7ASX0+Eb*`yETq;AA zX8|jxm#}oo(vZK>&x62fFCl;-V%jt;eZeskZTA{O<4N&gr$P!2_uCAwAyb$ z{NHV0+Lu&i8!M(W4%=sdh~w5Wu=KP=D5KcCp3JW7Y1#b|vx_Z`TG*0ZO+{Gxv0xW0 z_>`eHENw6>sUof&9vwM-4za{@jwNPhrNCGLwi(Y9VX306K*1knimFxKL^KNbpat?o zM13nU{gD=U4hDxU@Hr^C6A|c^(Y;F2?_n&Pr*i|z%JXIbbvpDsz}{~a4oe5DQb>i% z>&Xfyds>D2B`XQGU@oM>X)40fKMI9o9-lZRalzsD0#I?n@{1*&q$Iz2J(*wG)AIW( z<`-LVwodY^sR&E|?(nOo;W^lbslxtCD|tkNiqW!vIxpM$dYtxjvL81zA-=^^0`&W5nCgminO4G}En)oa(tk`Kt0N_OS) zAWaulaNQ=zf-%JnT^dYWA19m2@702-8st(|+l{ppS9YUl9}E*9#i&D+4DGO6>n!xm zxfQ1NrkVq$iB>ZfB*Hs}k|el2$Vvd!Zy?>lo2K0`X%DWjVX_kx>r9AEMU0XGLgd&N zOD6MzC2#QN^<;CDJ#7rpEeY7X_L4D#rXnn*rL0Lav-|ayR25E4K}n-9{#{g*3h|3!sel?1jR;+{HMk;zcvT(~-2TfF8>E%XV*YGR73j^wTaKdjJL zV#(newm7wt2Z<$#ka$^0>(Ju3ab%YDnnU$9qSG8A!V>33hf|#giK#|N98jvsr)F@6 zr55XfG-5URfbq}T#?M#-!4pq##z`k9%sgdu;%(508*SKThp031^qHh5KeZ-tAF|UmAOkgIu2Wy3|*LkUsJykP@envBVo#P6lwl z-i~^R$2j!<;#JIVKXGQ~WixErd%g_lJv)F{x?~3s^^5dbVcVY(P<3UEqzXwS{A`m* z`f~*W8<{~u$X5iOSBvl*7I=6I7I0w|}K95wbDska8lw{y;^y_V;O zQ`LP8H=ONJiEr*e!>O+ZAvOFa2#7TtOFPnVO>&Ng>l&fqx6DXr4Zj8GS;Mh3T*D1E zN5c&&tKoTgSi=#|a1FP3SdEQ_TU=aKiSzKWh9kalG&~O)YdAu4HTgbq2ZK8jgA1)%p&gXSK%CaCdF6v1XI`7*tld^YE~{ zMm)pawZ+4FY}~cQ#Z{F!4v)Yrq_nlSA&pR z{uT&{wH!-e8)CB`)~hPLFk)?ZkSUf*jumyqiqP@5%~)t1e;bgqj$`SfCB<>w`!cv# z#qp~_WHmew3vYlRmK#M_)Hwzk1Go@kPv(Mxt8)xgQ_s{?;yi4xS{IJk-gU7Jap8H; zSice4Jqt~_@VAUi!_u!*`LF6?wJg=Q3 z56E&>qV)#c;cUlL3wzcN2BCdb8jgx}u<7>9hGHGtyb^zHY@^{=hx%#|(rCU0l4qmA zk{j#n;XG{K37I)0QCbOo683T5jHR}Z`+#T8>JpZCe_7jybNeL^0_%^2U^BAEJ|}R% z5i{)$Wd2!G6PAvD&bFY?$0XZxt_+D2?QpIekIB=xaD-*mR%n_`^#IJ+uG=aU3%Jbgc;P`4Etbgzr-hhvG3@Uzp53VH_baaHHwPC zZAtKRI;0qfiqYGRqbM2NZUj>uq-1b|GCYUS-ogG@jG3cLmN<^N&9!15VD`J05eJe5jk&a^xG>;wFH=)GmG;QY2M0I=h{Qo3Q zEd8Hw8nENMX6Ow||HZJR zfL!z2!L5T0vY4T^fK7&-%9#W{d0~Pjz9FK(k2(W2K*XRej3Q!~K~mpJOn;;nZUC{Y zg&iolYbuzXj27mtsqo(3gDUwCxw4{)I#r1ERbqx$t78H<`OX2Bq-RH;EY&g(0;{Ej zVAb;S=k59mTY#U)U0-Qx!qSz`+ZJMdwVgW$v-H#g2*$mtz3K4236yZifu++HtK>Pa zC-W?OTAp8Hp0UMI3tP_Lnu@S=vw-KFhAkgDY<~#E@NsY~6@@K%J(+FU)3W_8vyCl^ z!WKC;UK>>PWb*= zkv8b9IDA()-0*!Avj~xG2}>NlQ{PHVf299Qp&k3b9+ceh9hQ+M$b&mIHon9AsqCcZ zbyPQGQ2V3j8Ei7%c=9}>z>k_|28du5%)OpbM4)8Z1hK?QMSUwV{gHC+i(U_*cy<{$e6UAbshl)d;Malz20T^uf`jixofJ+5dw2@E3Kx^$ni6c-sY*N=tPVVS9eA$E z>m^!hR9LBO?7RQR+JLl*eeKk0jEG z-*vGL*&56rBn}{GkS2c5LR1MQFdlma|3BGNIW}dykBK&vTS(P&c-wOex-p3RyE}0U z)Y$-W+`@OITfpKFxA5fxw}7t{!p44~KS*JVs$J+0zBjf%Ab7?8fT{=l!S~Im8GrD7 z=?}0t+8-#?j=5+3fkN&y0O{wV&-epGza4)-@N@hDe=kCo@dt=(d;WmIy8eJ`iV$Y} z0V3S4KVZOs((wmeSA;a<4-n~i{vdadGX8)d4)}xb8qEqz=Qwc$Mw>OJe1EW&(ok;C zALz!w`6oN^2h`aBas0t2Ky!u#EV}-{9%UIebssVF=T3sHg>UAH$F?SZXhdm@ z^oKwJhqzEb^$p1It;FA*k12%YI#pd4nNxkx{hNWn-<=FY6sif?q~4^qZFQEr*{ zy!3SaiP5RB1P5Tu_8QnwR=16Lnh2N{3;39?j%`1y8&B}OBqbnCSTIMc1%5Voq$ilg z1p~JSZTivJ&VV;GRA&RkaRxsE31tL^MPBmSHG^5^JC7=hV=84Pm`|xp{MZbPG4>x5 z20KDnWE z+Ot%VVfH63vp*s1mRT(F$r*>)+|C(hWoOImzh;=lCPl}PCNwQ!>E8siuqp=yvBBVYPi0IHoiGaY*D=qZLetEMV3F^} zD)WT7+L-5@ew4eHs8>LpV+vF1L#Lvvo8~gkjpg6!D6pKaYtMWT%R91Gj zDm$@T!sooAOgaI4q9rVqc4zGqRraTb?y&UVg#vO_)&rHjyBRg%y>`66?BT0tU3kGg z=fd;EA4%nWjh+C%k8l6IxB$P5uo3qb;1!4L*DgMe>wZ*OlZE$%62rKNOc5kf)#)1r zkJ{2B1QS08H8igfOe1nr_Xa5Ei&TKUfIWsH`asVTP|xu))11!NXo<$0hu3yQYh^*n zX$(>^W6fiXCD<1;)}ti!Yaw;df*!pwXvOmlOe>Zgv7+)K&4FX-KNlS*{uqj!jJ1|- zLW=n_Bm5(H1@e!eTIPw%iBCzHirgjEj;AoZi$I`}GXmmp_9?KEaSB+JZ)eeSk;aFO zIpzMs_yOa;egWWla~dAA&Yo;^rrg}lyi?+Iw*D*1_%DQC7++{w;Fi#U|N7L>9hTn9 zfRn;e{!3|$ouOaJG?!YUn#1cV@IxW^I4%6VOXkhnAF2=)#_4)Bm45|SwiD^9|N?H2_$dz>WyCAn~q>< zMG>!UBAr@U_(@7V&9IMl=D~|=9)xBdzFT&- zb^-s3?{l3a1{G`Lz9VHgr{7^fj_jK~id6aJO-8pzJq;t7(GS6#g(qM1Xyoy!M;(U= zxItGk_}It}9Ey2Ngm`BBv82z`L?p=ejwWewmvS?T&v#=7>&ie zJwR%wftqg?i~Yb@Km>OSuJbDj^u6xU6qvi=SqjWIOM(3$C|EAMZmnp*OS+>8psT!D z?CNf>5wR)>yzdoVja6v%9m&y{%{|L3a`VlyZa)YThF@J&bg0{TqsdV1)OiP^SNeXO z5rS@_+$X6Sna1mIAi}Jf(Nqd&Yihmi3uKCXaNiGzcoGk|MEszrM8A-kMbRbTtt0%L zH#?H#^gI3J0HNKWPal22il`B@ttKsVq+Yo!wruvG8P8(T+w(qp63CwCHrN#P`IvA% z$($O>pGrt>nIn{nMCWm1AATtXex(H3MyftDK@7pYZJ}kT9Go!C2&0c9YRw@V9`2!& zpP5*-#}>Q4sG? zB{a?usW!3EnzPEUzVbAYZVcmZj9t``j8T$4k1!~MqK_&``4LFlu1V}-gtEU7eM71j!vJ*0V`My) z%T@5R`AiZcXX<>6{S5fr?3BndJwfh?5M~kvRED(!=C%!YDmbG=2mBDHS)A%c_26lF KP9dvB=l=r@?~cs? literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_carousel.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_carousel.scssc new file mode 100644 index 0000000000000000000000000000000000000000..ec373527a9d7a919b929f75586483b15816fd511 GIT binary patch literal 45408 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 aag?hJmxlO_aXhL?OJK63A5)PlVE+%K(hR`> literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_close.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_close.scssc new file mode 100644 index 0000000000000000000000000000000000000000..06e51250d73cb78722372f052aee85063644d2e8 GIT binary patch literal 7412 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 OLgwhMovqBvkN*S3h8y4j literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_dropdowns.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_dropdowns.scssc new file mode 100644 index 0000000000000000000000000000000000000000..5aeb1e62e1e00e265c0cc2b1c7b096a0484f11a4 GIT binary patch literal 41124 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 literal 0 HcmV?d00001 diff --git a/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_forms.scssc b/packages/smartsnippets/static/libs/bootstrap/.sass-cache/f36248dd960f1a9339c30cc05a0df413bcc543e4/_forms.scssc new file mode 100644 index 0000000000000000000000000000000000000000..a403b69eb70a3bd39d9cf51459c37a7bd6e6673e GIT binary patch literal 94156 zcmdtL3zTKoSsti5*wx+D@7DWej!IIiTk3jst0nclYURk1+G^{q)&tyyHHkb*Jti+xf)+7NI218=PBf-F|8I}WfFoZ`YUHI=tW#!ZZ3k%C9PMo+Ox%ZyH|L;F}-@T_=56n-!WoKTy@m!-Q zYPA=7X zXXoyoitmok}Fe|bHv?Jlx5TB=W;zY1CHtea+&wY^Ec z-p}%G@%mMHeaBRNC$;_Z+}-ihXt>eNUQ6R{-koXY-F`1`Q%|Tf&!4wO-$o?XK@lcKhfWv{ORYKJ>1K-_(=6D_PoZ z6=|Q~Ylo8cMz2U)i}bn3YtsUeV#@MftwzXfoJ-#`NW0B+CkEF^JIiUWI6s-!ZuJYR za+CE#^!@hI_pGztPF1PhqLiFF)8u1fkh{?7Zlja>UEa^R#d@Qe&STvBK?*B04JbN~ z{uP7eZvwgT&wS8p(x`Tx!*EgETBBHd{VEK);4h24Mt3#MYd6S#awdq3a(C7CCq=)} z>o2b7sNrU}$g_Eo(H!qU2PSKKl6++a80E=NyDbK($NaH=TSnNY9?qkuKtSH>r#bEDi*Y8N~sNbDkRXdoh zqqmF2