From 7dcf82af94592a06a806a37f4b22a68079d6fb2b Mon Sep 17 00:00:00 2001 From: Antoine Rey Date: Mon, 4 Apr 2016 08:06:27 +0200 Subject: [PATCH] Fix #78 Migrate to Bootstrap 3.x --- .travis.yml | 1 - bower.json | 7 +- pom.xml | 3 +- src/main/resources/spring/mvc-core-config.xml | 2 +- src/main/webapp/WEB-INF/jsp/exception.jsp | 11 +- .../WEB-INF/jsp/fragments/bodyHeader.jsp | 22 - .../webapp/WEB-INF/jsp/fragments/footer.jsp | 28 +- .../WEB-INF/jsp/fragments/htmlHeader.jsp | 44 + .../WEB-INF/jsp/fragments/staticFiles.jsp | 31 - .../jsp/owners/createOrUpdateOwnerForm.jsp | 38 +- .../webapp/WEB-INF/jsp/owners/findOwners.jsp | 31 +- .../WEB-INF/jsp/owners/ownerDetails.jsp | 45 +- .../webapp/WEB-INF/jsp/owners/ownersList.jsp | 12 +- .../jsp/pets/createOrUpdatePetForm.jsp | 78 +- .../jsp/pets/createOrUpdateVisitForm.jsp | 35 +- src/main/webapp/WEB-INF/jsp/vets/vetList.jsp | 10 +- src/main/webapp/WEB-INF/jsp/welcome.jsp | 18 +- src/main/webapp/WEB-INF/tags/bodyHeader.tag | 18 + src/main/webapp/WEB-INF/tags/inputField.tag | 19 +- src/main/webapp/WEB-INF/tags/menu.tag | 60 + src/main/webapp/WEB-INF/tags/selectField.tag | 19 +- src/main/webapp/resources/css/petclinic.css | 20 - src/main/webapp/resources/images/favicon.png | Bin 0 -> 528 bytes src/main/webapp/vendors/bootstrap/.bower.json | 21 - src/main/webapp/vendors/bootstrap/.gitignore | 37 - src/main/webapp/vendors/bootstrap/.travis.yml | 3 - .../webapp/vendors/bootstrap/CHANGELOG.md | 368 - .../webapp/vendors/bootstrap/CONTRIBUTING.md | 75 - src/main/webapp/vendors/bootstrap/LICENSE | 176 - src/main/webapp/vendors/bootstrap/Makefile | 126 - src/main/webapp/vendors/bootstrap/README.md | 113 - src/main/webapp/vendors/bootstrap/bower.json | 8 - .../webapp/vendors/bootstrap/composer.json | 9 - .../bootstrap/dist/css/bootstrap-theme.css | 587 ++ .../dist/css/bootstrap-theme.css.map | 1 + .../dist/css/bootstrap-theme.min.css | 6 + .../dist/css/bootstrap-theme.min.css.map | 1 + .../vendors/bootstrap/dist/css/bootstrap.css | 6760 +++++++++++++++++ .../bootstrap/dist/css/bootstrap.css.map | 1 + .../bootstrap/dist/css/bootstrap.min.css | 6 + .../bootstrap/dist/css/bootstrap.min.css.map | 1 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../vendors/bootstrap/dist/js/bootstrap.js | 2363 ++++++ .../bootstrap/dist/js/bootstrap.min.js | 7 + .../webapp/vendors/bootstrap/dist/js/npm.js | 13 + .../docs/assets/css/bootstrap-responsive.css | 1109 --- .../bootstrap/docs/assets/css/bootstrap.css | 6167 --------------- .../bootstrap/docs/assets/css/docs.css | 1067 --- .../ico/apple-touch-icon-114-precomposed.png | Bin 11392 -> 0 bytes .../ico/apple-touch-icon-144-precomposed.png | Bin 16780 -> 0 bytes .../ico/apple-touch-icon-57-precomposed.png | Bin 4026 -> 0 bytes .../ico/apple-touch-icon-72-precomposed.png | Bin 5681 -> 0 bytes .../bootstrap/docs/assets/ico/favicon.ico | Bin 1150 -> 0 bytes .../bootstrap/docs/assets/ico/favicon.png | Bin 2711 -> 0 bytes .../docs/assets/img/bootstrap-docs-readme.png | Bin 30612 -> 0 bytes .../assets/img/bootstrap-mdo-sfmoma-01.jpg | Bin 125346 -> 0 bytes .../assets/img/bootstrap-mdo-sfmoma-02.jpg | Bin 81284 -> 0 bytes .../assets/img/bootstrap-mdo-sfmoma-03.jpg | Bin 49063 -> 0 bytes .../assets/img/bs-docs-bootstrap-features.png | Bin 11244 -> 0 bytes .../assets/img/bs-docs-masthead-pattern.png | Bin 6450 -> 0 bytes .../img/bs-docs-responsive-illustrations.png | Bin 10572 -> 0 bytes .../assets/img/bs-docs-twitter-github.png | Bin 30968 -> 0 bytes .../assets/img/example-sites/8020select.png | Bin 62853 -> 0 bytes .../img/example-sites/adoptahydrant.png | Bin 136480 -> 0 bytes .../assets/img/example-sites/breakingnews.png | Bin 72725 -> 0 bytes .../docs/assets/img/example-sites/fleetio.png | Bin 39837 -> 0 bytes .../img/example-sites/gathercontent.png | Bin 76560 -> 0 bytes .../docs/assets/img/example-sites/jshint.png | Bin 7258 -> 0 bytes .../docs/assets/img/example-sites/kippt.png | Bin 48259 -> 0 bytes .../assets/img/example-sites/soundready.png | Bin 50225 -> 0 bytes .../examples/bootstrap-example-carousel.png | Bin 339980 -> 0 bytes .../img/examples/bootstrap-example-fluid.png | Bin 209039 -> 0 bytes .../bootstrap-example-justified-nav.png | Bin 136021 -> 0 bytes .../bootstrap-example-marketing-narrow.png | Bin 117303 -> 0 bytes .../examples/bootstrap-example-marketing.png | Bin 134269 -> 0 bytes .../img/examples/bootstrap-example-signin.png | Bin 22037 -> 0 bytes .../examples/bootstrap-example-starter.png | Bin 36099 -> 0 bytes .../bootstrap-example-sticky-footer.png | Bin 30820 -> 0 bytes .../img/examples/browser-icon-chrome.png | Bin 55522 -> 0 bytes .../img/examples/browser-icon-firefox.png | Bin 175994 -> 0 bytes .../img/examples/browser-icon-safari.png | Bin 209527 -> 0 bytes .../docs/assets/img/examples/slide-01.jpg | Bin 83303 -> 0 bytes .../docs/assets/img/examples/slide-02.jpg | Bin 137070 -> 0 bytes .../docs/assets/img/examples/slide-03.jpg | Bin 137378 -> 0 bytes .../assets/img/glyphicons-halflings-white.png | Bin 8777 -> 0 bytes .../docs/assets/img/glyphicons-halflings.png | Bin 12799 -> 0 bytes .../docs/assets/img/grid-baseline-20px.png | Bin 84 -> 0 bytes .../docs/assets/img/less-logo-large.png | Bin 12824 -> 0 bytes .../assets/img/responsive-illustrations.png | Bin 1008 -> 0 bytes .../bootstrap/docs/assets/js/README.md | 106 - .../bootstrap/docs/assets/js/application.js | 156 - .../docs/assets/js/bootstrap-affix.js | 117 - .../docs/assets/js/bootstrap-alert.js | 99 - .../docs/assets/js/bootstrap-button.js | 105 - .../docs/assets/js/bootstrap-carousel.js | 207 - .../docs/assets/js/bootstrap-collapse.js | 167 - .../docs/assets/js/bootstrap-dropdown.js | 169 - .../docs/assets/js/bootstrap-modal.js | 247 - .../docs/assets/js/bootstrap-popover.js | 114 - .../docs/assets/js/bootstrap-scrollspy.js | 162 - .../bootstrap/docs/assets/js/bootstrap-tab.js | 144 - .../docs/assets/js/bootstrap-tooltip.js | 361 - .../docs/assets/js/bootstrap-transition.js | 60 - .../docs/assets/js/bootstrap-typeahead.js | 335 - .../bootstrap/docs/assets/js/bootstrap.js | 2280 ------ .../bootstrap/docs/assets/js/bootstrap.min.js | 6 - .../js/google-code-prettify/prettify.css | 30 - .../js/google-code-prettify/prettify.js | 28 - .../bootstrap/docs/assets/js/holder/holder.js | 401 - .../bootstrap/docs/assets/js/html5shiv.js | 8 - .../bootstrap/docs/assets/js/jquery.js | 5 - .../vendors/bootstrap/docs/base-css.html | 2240 ------ .../vendors/bootstrap/docs/build/index.js | 44 - .../vendors/bootstrap/docs/build/package.json | 6 - .../vendors/bootstrap/docs/components.html | 2651 ------- .../vendors/bootstrap/docs/customize.html | 539 -- .../bootstrap/docs/examples/carousel.html | 454 -- .../bootstrap/docs/examples/fluid.html | 163 - .../vendors/bootstrap/docs/examples/hero.html | 126 - .../docs/examples/justified-nav.html | 174 - .../docs/examples/marketing-narrow.html | 137 - .../bootstrap/docs/examples/signin.html | 94 - .../docs/examples/starter-template.html | 79 - .../docs/examples/sticky-footer-navbar.html | 161 - .../docs/examples/sticky-footer.html | 125 - .../webapp/vendors/bootstrap/docs/extend.html | 307 - .../bootstrap/docs/getting-started.html | 402 - .../webapp/vendors/bootstrap/docs/index.html | 246 - .../vendors/bootstrap/docs/javascript.html | 1805 ----- .../vendors/bootstrap/docs/scaffolding.html | 627 -- .../bootstrap/docs/templates/layout.mustache | 151 - .../docs/templates/pages/base-css.mustache | 2102 ----- .../docs/templates/pages/components.mustache | 2505 ------ .../docs/templates/pages/customize.mustache | 393 - .../docs/templates/pages/extend.mustache | 161 - .../templates/pages/getting-started.mustache | 256 - .../docs/templates/pages/index.mustache | 100 - .../docs/templates/pages/javascript.mustache | 1660 ---- .../docs/templates/pages/scaffolding.mustache | 485 -- .../img/glyphicons-halflings-white.png | Bin 8777 -> 0 bytes .../bootstrap/img/glyphicons-halflings.png | Bin 12799 -> 0 bytes .../webapp/vendors/bootstrap/js/.jshintrc | 12 - .../vendors/bootstrap/js/bootstrap-affix.js | 117 - .../vendors/bootstrap/js/bootstrap-alert.js | 99 - .../vendors/bootstrap/js/bootstrap-button.js | 105 - .../bootstrap/js/bootstrap-carousel.js | 207 - .../bootstrap/js/bootstrap-collapse.js | 167 - .../bootstrap/js/bootstrap-dropdown.js | 169 - .../vendors/bootstrap/js/bootstrap-modal.js | 247 - .../vendors/bootstrap/js/bootstrap-popover.js | 114 - .../bootstrap/js/bootstrap-scrollspy.js | 162 - .../vendors/bootstrap/js/bootstrap-tab.js | 144 - .../vendors/bootstrap/js/bootstrap-tooltip.js | 361 - .../bootstrap/js/bootstrap-transition.js | 60 - .../bootstrap/js/bootstrap-typeahead.js | 335 - .../vendors/bootstrap/js/tests/index.html | 56 - .../vendors/bootstrap/js/tests/phantom.js | 63 - .../vendors/bootstrap/js/tests/server.js | 14 - .../js/tests/unit/bootstrap-affix.js | 25 - .../js/tests/unit/bootstrap-alert.js | 62 - .../js/tests/unit/bootstrap-button.js | 102 - .../js/tests/unit/bootstrap-carousel.js | 81 - .../js/tests/unit/bootstrap-collapse.js | 94 - .../js/tests/unit/bootstrap-dropdown.js | 151 - .../js/tests/unit/bootstrap-modal.js | 137 - .../js/tests/unit/bootstrap-phantom.js | 21 - .../js/tests/unit/bootstrap-popover.js | 113 - .../js/tests/unit/bootstrap-scrollspy.js | 37 - .../bootstrap/js/tests/unit/bootstrap-tab.js | 86 - .../js/tests/unit/bootstrap-tooltip.js | 294 - .../js/tests/unit/bootstrap-transition.js | 13 - .../js/tests/unit/bootstrap-typeahead.js | 236 - .../bootstrap/js/tests/vendor/jquery.js | 5 - .../bootstrap/js/tests/vendor/qunit.css | 232 - .../bootstrap/js/tests/vendor/qunit.js | 1510 ---- .../vendors/bootstrap/less/accordion.less | 34 - .../webapp/vendors/bootstrap/less/alerts.less | 79 - .../vendors/bootstrap/less/bootstrap.less | 63 - .../vendors/bootstrap/less/breadcrumbs.less | 24 - .../vendors/bootstrap/less/button-groups.less | 229 - .../vendors/bootstrap/less/buttons.less | 228 - .../vendors/bootstrap/less/carousel.less | 158 - .../webapp/vendors/bootstrap/less/close.less | 32 - .../webapp/vendors/bootstrap/less/code.less | 61 - .../bootstrap/less/component-animations.less | 22 - .../vendors/bootstrap/less/dropdowns.less | 248 - .../webapp/vendors/bootstrap/less/forms.less | 690 -- .../webapp/vendors/bootstrap/less/grid.less | 21 - .../vendors/bootstrap/less/hero-unit.less | 25 - .../vendors/bootstrap/less/labels-badges.less | 84 - .../vendors/bootstrap/less/layouts.less | 16 - .../webapp/vendors/bootstrap/less/media.less | 55 - .../webapp/vendors/bootstrap/less/mixins.less | 702 -- .../webapp/vendors/bootstrap/less/modals.less | 95 - .../webapp/vendors/bootstrap/less/navbar.less | 497 -- .../webapp/vendors/bootstrap/less/navs.less | 409 - .../webapp/vendors/bootstrap/less/pager.less | 43 - .../vendors/bootstrap/less/pagination.less | 123 - .../vendors/bootstrap/less/popovers.less | 133 - .../vendors/bootstrap/less/progress-bars.less | 122 - .../webapp/vendors/bootstrap/less/reset.less | 216 - .../bootstrap/less/responsive-1200px-min.less | 28 - .../bootstrap/less/responsive-767px-max.less | 193 - .../less/responsive-768px-979px.less | 19 - .../bootstrap/less/responsive-navbar.less | 189 - .../bootstrap/less/responsive-utilities.less | 59 - .../vendors/bootstrap/less/responsive.less | 48 - .../vendors/bootstrap/less/scaffolding.less | 53 - .../vendors/bootstrap/less/sprites.less | 197 - .../webapp/vendors/bootstrap/less/tables.less | 244 - .../vendors/bootstrap/less/tests/buttons.html | 139 - .../bootstrap/less/tests/css-tests.css | 150 - .../bootstrap/less/tests/css-tests.html | 1399 ---- .../less/tests/forms-responsive.html | 71 - .../vendors/bootstrap/less/tests/forms.html | 179 - .../less/tests/navbar-fixed-top.html | 104 - .../less/tests/navbar-static-top.html | 107 - .../vendors/bootstrap/less/tests/navbar.html | 107 - .../vendors/bootstrap/less/thumbnails.less | 53 - .../vendors/bootstrap/less/tooltip.less | 70 - .../webapp/vendors/bootstrap/less/type.less | 247 - .../vendors/bootstrap/less/utilities.less | 30 - .../vendors/bootstrap/less/variables.less | 301 - .../webapp/vendors/bootstrap/less/wells.less | 29 - .../webapp/vendors/bootstrap/package.json | 26 - src/main/webapp/vendors/jquery-ui/.bower.json | 20 - src/main/webapp/vendors/jquery-ui/.gitignore | 3 - src/main/webapp/vendors/jquery-ui/AUTHORS.txt | 260 - .../webapp/vendors/jquery-ui/MIT-LICENSE.txt | 26 - src/main/webapp/vendors/jquery-ui/README.md | 11 - src/main/webapp/vendors/jquery-ui/bower.json | 10 - .../webapp/vendors/jquery-ui/component.json | 13 - .../webapp/vendors/jquery-ui/composer.json | 63 - .../webapp/vendors/jquery-ui/package.json | 66 - .../black-tie/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-thick_8_333333_40x40.png | Bin 364 -> 0 bytes .../images/ui-bg_flat_65_ffffff_40x100.png | Bin 260 -> 0 bytes .../images/ui-bg_glass_40_111111_1x400.png | Bin 312 -> 0 bytes .../images/ui-bg_glass_55_1c1c1c_1x400.png | Bin 312 -> 0 bytes .../ui-bg_highlight-hard_100_f9f9f9_1x100.png | Bin 304 -> 0 bytes .../ui-bg_highlight-hard_40_aaaaaa_1x100.png | Bin 302 -> 0 bytes .../ui-bg_highlight-soft_50_aaaaaa_1x100.png | Bin 329 -> 0 bytes .../ui-bg_inset-hard_45_cd0a0a_1x100.png | Bin 376 -> 0 bytes .../ui-bg_inset-hard_55_ffeb80_1x100.png | Bin 361 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6837 -> 0 bytes .../images/ui-icons_4ca300_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_bbbbbb_256x240.png | Bin 7058 -> 0 bytes .../images/ui-icons_ededed_256x240.png | Bin 7008 -> 0 bytes .../images/ui-icons_ffcf29_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/black-tie/jquery-ui.css | 1178 --- .../themes/black-tie/jquery-ui.min.css | 7 - .../themes/black-tie/jquery.ui.theme.css | 410 - .../blitzer/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-thick_75_f3d8d8_40x40.png | Bin 465 -> 0 bytes .../images/ui-bg_dots-small_65_a6a6a6_2x2.png | Bin 260 -> 0 bytes .../images/ui-bg_flat_0_333333_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_65_ffffff_40x100.png | Bin 260 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 260 -> 0 bytes .../images/ui-bg_glass_55_fbf8ee_1x400.png | Bin 392 -> 0 bytes .../ui-bg_highlight-hard_100_eeeeee_1x100.png | Bin 304 -> 0 bytes .../ui-bg_highlight-hard_100_f6f6f6_1x100.png | Bin 304 -> 0 bytes .../ui-bg_highlight-soft_15_cc0000_1x100.png | Bin 379 -> 0 bytes .../images/ui-icons_004276_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/blitzer/jquery-ui.css | 1178 --- .../themes/blitzer/jquery-ui.min.css | 7 - .../themes/blitzer/jquery.ui.theme.css | 410 - .../cupertino/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-thick_90_eeeeee_40x40.png | Bin 368 -> 0 bytes .../images/ui-bg_flat_15_cd0a0a_40x100.png | Bin 274 -> 0 bytes .../images/ui-bg_glass_100_e4f1fb_1x400.png | Bin 402 -> 0 bytes .../images/ui-bg_glass_50_3baae3_1x400.png | Bin 388 -> 0 bytes .../images/ui-bg_glass_80_d7ebf9_1x400.png | Bin 398 -> 0 bytes .../ui-bg_highlight-hard_100_f2f5f7_1x100.png | Bin 384 -> 0 bytes .../ui-bg_highlight-hard_70_000000_1x100.png | Bin 300 -> 0 bytes .../ui-bg_highlight-soft_100_deedf7_1x100.png | Bin 439 -> 0 bytes .../ui-bg_highlight-soft_25_ffef8f_1x100.png | Bin 361 -> 0 bytes .../images/ui-icons_2694e8_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_3d80b3_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_72a7cf_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/cupertino/jquery-ui.css | 1178 --- .../themes/cupertino/jquery-ui.min.css | 7 - .../themes/cupertino/jquery.ui.theme.css | 410 - .../dark-hive/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_30_cccccc_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 282 -> 0 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 368 -> 0 bytes .../ui-bg_highlight-hard_20_0972a5_1x100.png | Bin 375 -> 0 bytes .../ui-bg_highlight-soft_33_003147_1x100.png | Bin 404 -> 0 bytes .../ui-bg_highlight-soft_35_222222_1x100.png | Bin 329 -> 0 bytes .../ui-bg_highlight-soft_44_444444_1x100.png | Bin 329 -> 0 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 332 -> 0 bytes .../images/ui-bg_loop_25_000000_21x21.png | Bin 338 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6837 -> 0 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_a83300_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cccccc_256x240.png | Bin 7038 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/dark-hive/jquery-ui.css | 1178 --- .../themes/dark-hive/jquery-ui.min.css | 7 - .../themes/dark-hive/jquery.ui.theme.css | 410 - .../dot-luv/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-thick_15_0b3e6f_40x40.png | Bin 476 -> 0 bytes .../ui-bg_dots-medium_30_0b58a2_4x4.png | Bin 289 -> 0 bytes .../images/ui-bg_dots-small_20_333333_2x2.png | Bin 260 -> 0 bytes .../images/ui-bg_dots-small_30_a32d00_2x2.png | Bin 270 -> 0 bytes .../images/ui-bg_dots-small_40_00498f_2x2.png | Bin 276 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_flat_40_292929_40x100.png | Bin 282 -> 0 bytes .../ui-bg_gloss-wave_20_111111_500x100.png | Bin 3831 -> 0 bytes .../images/ui-icons_00498f_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_98d2fb_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_9ccdfc_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/dot-luv/jquery-ui.css | 1178 --- .../themes/dot-luv/jquery-ui.min.css | 7 - .../themes/dot-luv/jquery.ui.theme.css | 410 - .../eggplant/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_flat_0_eeeeee_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_55_994d53_40x100.png | Bin 274 -> 0 bytes .../images/ui-bg_flat_55_fafafa_40x100.png | Bin 282 -> 0 bytes .../ui-bg_gloss-wave_30_3d3644_500x100.png | Bin 5993 -> 0 bytes .../ui-bg_highlight-soft_100_dcd9de_1x100.png | Bin 394 -> 0 bytes .../ui-bg_highlight-soft_100_eae6ea_1x100.png | Bin 425 -> 0 bytes .../ui-bg_highlight-soft_25_30273a_1x100.png | Bin 421 -> 0 bytes .../ui-bg_highlight-soft_45_5f5964_1x100.png | Bin 413 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 6973 -> 0 bytes .../images/ui-icons_734d99_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_8d78a5_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_a8a3ae_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ebccce_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/eggplant/jquery-ui.css | 1178 --- .../themes/eggplant/jquery-ui.min.css | 7 - .../themes/eggplant/jquery.ui.theme.css | 410 - .../excite-bike/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 394 -> 0 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 469 -> 0 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 461 -> 0 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 458 -> 0 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 274 -> 0 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 274 -> 0 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 331 -> 0 bytes .../ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 305 -> 0 bytes .../images/ui-icons_0a82eb_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_0b54d5_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_5fa5e3_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_fcdd4a_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../themes/excite-bike/jquery-ui.css | 1178 --- .../themes/excite-bike/jquery-ui.min.css | 7 - .../themes/excite-bike/jquery.ui.theme.css | 410 - .../themes/flick/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_flat_0_eeeeee_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_55_ffffff_40x100.png | Bin 260 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 260 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 259 -> 0 bytes .../ui-bg_highlight-soft_100_f6f6f6_1x100.png | Bin 330 -> 0 bytes .../ui-bg_highlight-soft_25_0073ea_1x100.png | Bin 387 -> 0 bytes .../ui-bg_highlight-soft_50_dddddd_1x100.png | Bin 332 -> 0 bytes .../flick/images/ui-icons_0073ea_256x240.png | Bin 4601 -> 0 bytes .../flick/images/ui-icons_454545_256x240.png | Bin 6973 -> 0 bytes .../flick/images/ui-icons_666666_256x240.png | Bin 6974 -> 0 bytes .../flick/images/ui-icons_ff0084_256x240.png | Bin 4601 -> 0 bytes .../flick/images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/flick/jquery-ui.css | 1178 --- .../jquery-ui/themes/flick/jquery-ui.min.css | 7 - .../themes/flick/jquery.ui.theme.css | 410 - .../hot-sneaks/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-small_40_db4865_40x40.png | Bin 384 -> 0 bytes .../ui-bg_diagonals-small_50_93c3cd_40x40.png | Bin 385 -> 0 bytes .../ui-bg_diagonals-small_50_ff3853_40x40.png | Bin 382 -> 0 bytes .../ui-bg_diagonals-small_75_ccd232_40x40.png | Bin 385 -> 0 bytes .../ui-bg_dots-medium_80_ffff38_4x4.png | Bin 277 -> 0 bytes .../images/ui-bg_dots-small_35_35414f_2x2.png | Bin 275 -> 0 bytes .../images/ui-bg_flat_75_ba9217_40x100.png | Bin 274 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 260 -> 0 bytes .../ui-bg_white-lines_85_f7f7ba_40x100.png | Bin 416 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 6973 -> 0 bytes .../images/ui-icons_88a206_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_c02669_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_e1e463_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffeb33_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/hot-sneaks/jquery-ui.css | 1178 --- .../themes/hot-sneaks/jquery-ui.min.css | 7 - .../themes/hot-sneaks/jquery.ui.theme.css | 410 - .../humanity/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_75_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_glass_100_f5f0e5_1x400.png | Bin 406 -> 0 bytes .../images/ui-bg_glass_25_cb842e_1x400.png | Bin 387 -> 0 bytes .../images/ui-bg_glass_70_ede4d4_1x400.png | Bin 406 -> 0 bytes .../ui-bg_highlight-hard_100_f4f0ec_1x100.png | Bin 379 -> 0 bytes .../ui-bg_highlight-hard_65_fee4bd_1x100.png | Bin 366 -> 0 bytes .../ui-bg_highlight-hard_75_f5f5b5_1x100.png | Bin 375 -> 0 bytes .../ui-bg_inset-soft_100_f4f0ec_1x100.png | Bin 455 -> 0 bytes .../images/ui-icons_c47a23_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cb672b_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_f08000_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_f35f07_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ff7519_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/humanity/jquery-ui.css | 1178 --- .../themes/humanity/jquery-ui.min.css | 7 - .../themes/humanity/jquery.ui.theme.css | 410 - .../le-frog/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-small_0_aaaaaa_40x40.png | Bin 259 -> 0 bytes .../ui-bg_diagonals-thick_15_444444_40x40.png | Bin 366 -> 0 bytes .../ui-bg_diagonals-thick_95_ffdc2e_40x40.png | Bin 463 -> 0 bytes .../images/ui-bg_glass_55_fbf5d0_1x400.png | Bin 388 -> 0 bytes .../ui-bg_highlight-hard_30_285c00_1x100.png | Bin 383 -> 0 bytes .../ui-bg_highlight-soft_33_3a8104_1x100.png | Bin 397 -> 0 bytes .../ui-bg_highlight-soft_50_4eb305_1x100.png | Bin 403 -> 0 bytes .../ui-bg_highlight-soft_60_4ca20b_1x100.png | Bin 416 -> 0 bytes .../ui-bg_inset-soft_10_285c00_1x100.png | Bin 440 -> 0 bytes .../images/ui-icons_4eb305_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_72b42d_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/le-frog/jquery-ui.css | 1178 --- .../themes/le-frog/jquery-ui.min.css | 7 - .../themes/le-frog/jquery.ui.theme.css | 410 - .../mint-choc/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_glass_15_5f391b_1x400.png | Bin 393 -> 0 bytes .../ui-bg_gloss-wave_20_1c160d_500x100.png | Bin 5845 -> 0 bytes .../ui-bg_gloss-wave_25_453326_500x100.png | Bin 5904 -> 0 bytes .../ui-bg_gloss-wave_30_44372c_500x100.png | Bin 5966 -> 0 bytes .../ui-bg_highlight-soft_20_201913_1x100.png | Bin 438 -> 0 bytes .../ui-bg_highlight-soft_20_619226_1x100.png | Bin 398 -> 0 bytes .../ui-bg_inset-soft_10_201913_1x100.png | Bin 448 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6837 -> 0 bytes .../images/ui-icons_9bcc60_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_add978_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_e3ddc9_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_f1fd86_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/mint-choc/jquery-ui.css | 1178 --- .../themes/mint-choc/jquery-ui.min.css | 7 - .../themes/mint-choc/jquery.ui.theme.css | 410 - .../overcast/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_flat_0_eeeeee_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_55_c0402a_40x100.png | Bin 274 -> 0 bytes .../images/ui-bg_flat_55_eeeeee_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_glass_100_f8f8f8_1x400.png | Bin 314 -> 0 bytes .../images/ui-bg_glass_35_dddddd_1x400.png | Bin 314 -> 0 bytes .../images/ui-bg_glass_60_eeeeee_1x400.png | Bin 314 -> 0 bytes .../ui-bg_inset-hard_75_999999_1x100.png | Bin 303 -> 0 bytes .../ui-bg_inset-soft_50_c9c9c9_1x100.png | Bin 334 -> 0 bytes .../images/ui-icons_3383bb_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 6973 -> 0 bytes .../images/ui-icons_70b2e1_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_999999_256x240.png | Bin 7039 -> 0 bytes .../images/ui-icons_fbc856_256x240.png | Bin 4601 -> 0 bytes .../jquery-ui/themes/overcast/jquery-ui.css | 1178 --- .../themes/overcast/jquery-ui.min.css | 7 - .../themes/overcast/jquery.ui.theme.css | 410 - .../images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonal-maze_20_6e4f1c_10x10.png | Bin 348 -> 0 bytes .../ui-bg_diagonal-maze_40_000000_10x10.png | Bin 291 -> 0 bytes .../ui-bg_fine-grain_10_eceadf_60x60.png | Bin 10811 -> 0 bytes .../ui-bg_fine-grain_10_f8f7f6_60x60.png | Bin 9956 -> 0 bytes .../ui-bg_fine-grain_15_eceadf_60x60.png | Bin 10581 -> 0 bytes .../ui-bg_fine-grain_15_f7f3de_60x60.png | Bin 10943 -> 0 bytes .../ui-bg_fine-grain_15_ffffff_60x60.png | Bin 3510 -> 0 bytes .../ui-bg_fine-grain_65_654b24_60x60.png | Bin 14497 -> 0 bytes .../ui-bg_fine-grain_68_b83400_60x60.png | Bin 11929 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6837 -> 0 bytes .../images/ui-icons_3572ac_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_8c291d_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_b83400_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_fbdb93_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../themes/pepper-grinder/jquery-ui.css | 1178 --- .../themes/pepper-grinder/jquery-ui.min.css | 7 - .../themes/pepper-grinder/jquery.ui.theme.css | 410 - .../redmond/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 274 -> 0 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 388 -> 0 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 393 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 384 -> 0 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 5876 -> 0 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 385 -> 0 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 344 -> 0 bytes .../images/ui-icons_217bc0_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_469bdd_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 4601 -> 0 bytes .../jquery-ui/themes/redmond/jquery-ui.css | 1178 --- .../themes/redmond/jquery-ui.min.css | 7 - .../themes/redmond/jquery.ui.theme.css | 410 - .../smoothness/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 260 -> 0 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 387 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 259 -> 0 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 314 -> 0 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 314 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 384 -> 0 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 332 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6837 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 6973 -> 0 bytes .../images/ui-icons_888888_256x240.png | Bin 7044 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4601 -> 0 bytes .../jquery-ui/themes/smoothness/jquery-ui.css | 1178 --- .../themes/smoothness/jquery-ui.min.css | 7 - .../themes/smoothness/jquery.ui.theme.css | 410 - .../south-street/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_glass_55_fcf0ba_1x400.png | Bin 385 -> 0 bytes .../ui-bg_gloss-wave_100_ece8da_500x100.png | Bin 5811 -> 0 bytes .../ui-bg_highlight-hard_100_f5f3e5_1x100.png | Bin 388 -> 0 bytes .../ui-bg_highlight-hard_100_fafaf4_1x100.png | Bin 373 -> 0 bytes .../ui-bg_highlight-hard_15_459e00_1x100.png | Bin 380 -> 0 bytes .../ui-bg_highlight-hard_95_cccccc_1x100.png | Bin 304 -> 0 bytes .../ui-bg_highlight-soft_25_67b021_1x100.png | Bin 405 -> 0 bytes .../ui-bg_highlight-soft_95_ffedad_1x100.png | Bin 403 -> 0 bytes .../ui-bg_inset-soft_15_2b2922_1x100.png | Bin 401 -> 0 bytes .../images/ui-icons_808080_256x240.png | Bin 7039 -> 0 bytes .../images/ui-icons_847e71_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_8DC262_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_eeeeee_256x240.png | Bin 7007 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../themes/south-street/jquery-ui.css | 1178 --- .../themes/south-street/jquery-ui.min.css | 7 - .../themes/south-street/jquery.ui.theme.css | 410 - .../themes/start/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_55_999999_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_75_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_glass_45_0078ae_1x400.png | Bin 398 -> 0 bytes .../images/ui-bg_glass_55_f8da4e_1x400.png | Bin 397 -> 0 bytes .../images/ui-bg_glass_75_79c9ec_1x400.png | Bin 400 -> 0 bytes .../ui-bg_gloss-wave_45_e14f1c_500x100.png | Bin 5916 -> 0 bytes .../ui-bg_gloss-wave_50_6eac2c_500x100.png | Bin 5958 -> 0 bytes .../ui-bg_gloss-wave_75_2191c0_500x100.png | Bin 6029 -> 0 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 344 -> 0 bytes .../start/images/ui-icons_0078ae_256x240.png | Bin 4601 -> 0 bytes .../start/images/ui-icons_056b93_256x240.png | Bin 4601 -> 0 bytes .../start/images/ui-icons_d8e7f3_256x240.png | Bin 4601 -> 0 bytes .../start/images/ui-icons_e0fdff_256x240.png | Bin 4601 -> 0 bytes .../start/images/ui-icons_f5e175_256x240.png | Bin 4601 -> 0 bytes .../start/images/ui-icons_f7a50d_256x240.png | Bin 4601 -> 0 bytes .../start/images/ui-icons_fcd113_256x240.png | Bin 4601 -> 0 bytes .../jquery-ui/themes/start/jquery-ui.css | 1178 --- .../jquery-ui/themes/start/jquery-ui.min.css | 7 - .../themes/start/jquery.ui.theme.css | 410 - .../themes/sunny/images/animated-overlay.gif | Bin 1738 -> 0 bytes ...ui-bg_diagonals-medium_20_d34d17_40x40.png | Bin 434 -> 0 bytes .../images/ui-bg_flat_30_cccccc_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 282 -> 0 bytes .../ui-bg_gloss-wave_45_817865_500x100.png | Bin 5942 -> 0 bytes .../ui-bg_gloss-wave_60_fece2f_500x100.png | Bin 5902 -> 0 bytes .../ui-bg_gloss-wave_70_ffdd57_500x100.png | Bin 5595 -> 0 bytes .../ui-bg_gloss-wave_90_fff9e5_500x100.png | Bin 5441 -> 0 bytes .../ui-bg_highlight-soft_100_feeebd_1x100.png | Bin 395 -> 0 bytes .../ui-bg_inset-soft_30_ffffff_1x100.png | Bin 255 -> 0 bytes .../sunny/images/ui-icons_3d3d3d_256x240.png | Bin 6948 -> 0 bytes .../sunny/images/ui-icons_bd7b00_256x240.png | Bin 4601 -> 0 bytes .../sunny/images/ui-icons_d19405_256x240.png | Bin 4601 -> 0 bytes .../sunny/images/ui-icons_eb990f_256x240.png | Bin 4601 -> 0 bytes .../sunny/images/ui-icons_ed9f26_256x240.png | Bin 4601 -> 0 bytes .../sunny/images/ui-icons_fadc7a_256x240.png | Bin 4601 -> 0 bytes .../sunny/images/ui-icons_ffe180_256x240.png | Bin 4601 -> 0 bytes .../jquery-ui/themes/sunny/jquery-ui.css | 1178 --- .../jquery-ui/themes/sunny/jquery-ui.min.css | 7 - .../themes/sunny/jquery.ui.theme.css | 410 - .../swanky-purse/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_diamond_10_4f4221_10x8.png | Bin 359 -> 0 bytes .../images/ui-bg_diamond_20_372806_10x8.png | Bin 362 -> 0 bytes .../images/ui-bg_diamond_25_675423_10x8.png | Bin 364 -> 0 bytes .../images/ui-bg_diamond_25_d5ac5d_10x8.png | Bin 365 -> 0 bytes .../images/ui-bg_diamond_8_261803_10x8.png | Bin 362 -> 0 bytes .../images/ui-bg_diamond_8_443113_10x8.png | Bin 362 -> 0 bytes .../images/ui-bg_flat_75_ddd4b0_40x100.png | Bin 274 -> 0 bytes .../ui-bg_highlight-hard_65_fee4bd_1x100.png | Bin 366 -> 0 bytes .../images/ui-icons_070603_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_e8e2b5_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_e9cd86_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_efec9f_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_f2ec64_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_f9f2bd_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ff7519_256x240.png | Bin 4601 -> 0 bytes .../themes/swanky-purse/jquery-ui.css | 1178 --- .../themes/swanky-purse/jquery-ui.min.css | 7 - .../themes/swanky-purse/jquery.ui.theme.css | 410 - .../trontastic/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-small_50_262626_40x40.png | Bin 304 -> 0 bytes .../images/ui-bg_flat_0_303030_40x100.png | Bin 282 -> 0 bytes .../images/ui-bg_flat_0_4c4c4c_40x100.png | Bin 282 -> 0 bytes .../images/ui-bg_glass_40_0a0a0a_1x400.png | Bin 312 -> 0 bytes .../images/ui-bg_glass_55_f1fbe5_1x400.png | Bin 400 -> 0 bytes .../images/ui-bg_glass_60_000000_1x400.png | Bin 309 -> 0 bytes .../ui-bg_gloss-wave_55_000000_500x100.png | Bin 3878 -> 0 bytes .../ui-bg_gloss-wave_85_9fda58_500x100.png | Bin 5992 -> 0 bytes .../ui-bg_gloss-wave_95_f6ecd5_500x100.png | Bin 5850 -> 0 bytes .../images/ui-icons_000000_256x240.png | Bin 5383 -> 0 bytes .../images/ui-icons_1f1f1f_256x240.png | Bin 6825 -> 0 bytes .../images/ui-icons_9fda58_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_b8ec79_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../jquery-ui/themes/trontastic/jquery-ui.css | 1178 --- .../themes/trontastic/jquery-ui.min.css | 7 - .../themes/trontastic/jquery.ui.theme.css | 410 - .../ui-darkness/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_30_cccccc_40x100.png | Bin 272 -> 0 bytes .../images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 282 -> 0 bytes .../images/ui-bg_glass_20_555555_1x400.png | Bin 312 -> 0 bytes .../images/ui-bg_glass_40_0078a3_1x400.png | Bin 394 -> 0 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 368 -> 0 bytes .../ui-bg_gloss-wave_25_333333_500x100.png | Bin 3891 -> 0 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 332 -> 0 bytes .../ui-bg_inset-soft_25_000000_1x100.png | Bin 327 -> 0 bytes .../ui-bg_inset-soft_30_f58400_1x100.png | Bin 392 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6837 -> 0 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_a83300_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_cccccc_256x240.png | Bin 7038 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../themes/ui-darkness/jquery-ui.css | 1178 --- .../themes/ui-darkness/jquery-ui.min.css | 7 - .../themes/ui-darkness/jquery.ui.theme.css | 410 - .../ui-lightness/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 470 -> 0 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 366 -> 0 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 257 -> 0 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 315 -> 0 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 400 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 259 -> 0 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 5867 -> 0 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 332 -> 0 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 380 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6837 -> 0 bytes .../images/ui-icons_228ef1_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 4601 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6351 -> 0 bytes .../themes/ui-lightness/jquery-ui.css | 1178 --- .../themes/ui-lightness/jquery-ui.min.css | 7 - .../themes/ui-lightness/jquery.ui.theme.css | 410 - .../themes/vader/images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 264 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 384 -> 0 bytes .../ui-bg_gloss-wave_16_121212_500x100.png | Bin 3833 -> 0 bytes .../ui-bg_highlight-hard_15_888888_1x100.png | Bin 301 -> 0 bytes .../ui-bg_highlight-hard_55_555555_1x100.png | Bin 303 -> 0 bytes .../ui-bg_highlight-soft_35_adadad_1x100.png | Bin 330 -> 0 bytes .../ui-bg_highlight-soft_60_dddddd_1x100.png | Bin 333 -> 0 bytes .../ui-bg_inset-soft_15_121212_1x100.png | Bin 327 -> 0 bytes .../vader/images/ui-icons_666666_256x240.png | Bin 6974 -> 0 bytes .../vader/images/ui-icons_aaaaaa_256x240.png | Bin 7039 -> 0 bytes .../vader/images/ui-icons_bbbbbb_256x240.png | Bin 7058 -> 0 bytes .../vader/images/ui-icons_c98000_256x240.png | Bin 4601 -> 0 bytes .../vader/images/ui-icons_cccccc_256x240.png | Bin 7038 -> 0 bytes .../vader/images/ui-icons_cd0a0a_256x240.png | Bin 4601 -> 0 bytes .../vader/images/ui-icons_f29a00_256x240.png | Bin 4601 -> 0 bytes .../jquery-ui/themes/vader/jquery-ui.css | 1178 --- .../jquery-ui/themes/vader/jquery-ui.min.css | 7 - .../themes/vader/jquery.ui.theme.css | 410 - src/main/webapp/vendors/jquery/.bower.json | 21 - src/main/webapp/vendors/jquery/.editorconfig | 43 - src/main/webapp/vendors/jquery/.gitattributes | 2 - src/main/webapp/vendors/jquery/.gitignore | 14 - src/main/webapp/vendors/jquery/.gitmodules | 6 - src/main/webapp/vendors/jquery/.jshintrc | 17 - src/main/webapp/vendors/jquery/.mailmap | 94 - src/main/webapp/vendors/jquery/AUTHORS.txt | 173 - .../webapp/vendors/jquery/CONTRIBUTING.md | 218 - src/main/webapp/vendors/jquery/Gruntfile.js | 599 -- .../webapp/vendors/jquery/MIT-LICENSE.txt | 21 - src/main/webapp/vendors/jquery/README.md | 399 - src/main/webapp/vendors/jquery/bower.json | 11 - .../vendors/jquery/build/release-notes.js | 59 - .../webapp/vendors/jquery/build/release.js | 317 - src/main/webapp/vendors/jquery/component.json | 15 - src/main/webapp/vendors/jquery/composer.json | 35 - .../webapp/vendors/jquery/jquery-migrate.js | 511 -- .../vendors/jquery/jquery-migrate.min.js | 3 - src/main/webapp/vendors/jquery/package.json | 38 - .../webapp/vendors/jquery/speed/benchmark.js | 15 - .../vendors/jquery/speed/benchmarker.css | 65 - .../vendors/jquery/speed/benchmarker.js | 181 - .../webapp/vendors/jquery/speed/closest.html | 39 - src/main/webapp/vendors/jquery/speed/css.html | 82 - .../webapp/vendors/jquery/speed/event.html | 58 - .../webapp/vendors/jquery/speed/filter.html | 183 - .../webapp/vendors/jquery/speed/find.html | 179 - .../webapp/vendors/jquery/speed/index.html | 72 - .../vendors/jquery/speed/jquery-basis.js | 6238 --------------- .../vendors/jquery/speed/slice.vs.concat.html | 47 - src/main/webapp/vendors/jquery/src/.jshintrc | 26 - src/main/webapp/vendors/jquery/src/ajax.js | 855 --- .../webapp/vendors/jquery/src/ajax/jsonp.js | 80 - .../webapp/vendors/jquery/src/ajax/script.js | 57 - .../webapp/vendors/jquery/src/ajax/xhr.js | 111 - .../webapp/vendors/jquery/src/attributes.js | 502 -- .../webapp/vendors/jquery/src/callbacks.js | 197 - src/main/webapp/vendors/jquery/src/core.js | 846 --- src/main/webapp/vendors/jquery/src/css.js | 563 -- src/main/webapp/vendors/jquery/src/data.js | 356 - .../webapp/vendors/jquery/src/deferred.js | 141 - .../webapp/vendors/jquery/src/deprecated.js | 11 - .../webapp/vendors/jquery/src/dimensions.js | 41 - src/main/webapp/vendors/jquery/src/effects.js | 730 -- .../webapp/vendors/jquery/src/event-alias.js | 32 - src/main/webapp/vendors/jquery/src/event.js | 829 -- src/main/webapp/vendors/jquery/src/exports.js | 24 - src/main/webapp/vendors/jquery/src/intro.js | 20 - .../webapp/vendors/jquery/src/manipulation.js | 577 -- src/main/webapp/vendors/jquery/src/offset.js | 167 - src/main/webapp/vendors/jquery/src/outro.js | 2 - src/main/webapp/vendors/jquery/src/queue.js | 145 - .../vendors/jquery/src/selector-native.js | 164 - .../webapp/vendors/jquery/src/serialize.js | 99 - .../vendors/jquery/src/sizzle-jquery.js | 7 - src/main/webapp/vendors/jquery/src/support.js | 113 - .../webapp/vendors/jquery/src/traversing.js | 283 - src/main/webapp/vendors/jquery/src/wrap.js | 69 - .../webapp/vendors/jquery/test/.jshintignore | 3 - src/main/webapp/vendors/jquery/test/.jshintrc | 60 - .../webapp/vendors/jquery/test/data/1x1.jpg | Bin 693 -> 0 bytes .../jquery/test/data/ajax/unreleasedXHR.html | 25 - .../vendors/jquery/test/data/atom+xml.php | 4 - .../vendors/jquery/test/data/badcall.js | 1 - .../vendors/jquery/test/data/badjson.js | 1 - .../vendors/jquery/test/data/cleanScript.html | 10 - .../vendors/jquery/test/data/core/cc_on.html | 22 - .../jquery/test/data/core/dont_return.php | 3 - .../jquery/test/data/core/dynamic_ready.html | 35 - .../vendors/jquery/test/data/dashboard.xml | 11 - .../test/data/dimensions/documentLarge.html | 17 - .../test/data/dimensions/documentSmall.html | 21 - .../vendors/jquery/test/data/echoData.php | 1 - .../vendors/jquery/test/data/echoQuery.php | 1 - .../jquery/test/data/errorWithJSON.php | 6 - .../jquery/test/data/errorWithText.php | 5 - .../webapp/vendors/jquery/test/data/etag.php | 21 - .../vendors/jquery/test/data/evalScript.php | 1 - .../jquery/test/data/event/focusElem.html | 16 - .../jquery/test/data/event/longLoadScript.php | 4 - .../test/data/event/onbeforeunload.html | 20 - .../jquery/test/data/event/promiseReady.html | 17 - .../jquery/test/data/event/syncReady.html | 23 - .../vendors/jquery/test/data/headers.php | 18 - .../jquery/test/data/if_modified_since.php | 20 - .../vendors/jquery/test/data/iframe.html | 8 - .../test/data/jquery-1.9.1.ajax_xhr.min.js | 5 - .../webapp/vendors/jquery/test/data/json.php | 13 - .../vendors/jquery/test/data/json_obj.js | 1 - .../webapp/vendors/jquery/test/data/jsonp.php | 14 - .../test/data/manipulation/iframe-denied.html | 36 - .../webapp/vendors/jquery/test/data/name.html | 1 - .../webapp/vendors/jquery/test/data/name.php | 24 - .../vendors/jquery/test/data/nocontent.php | 5 - .../jquery/test/data/offset/absolute.html | 41 - .../vendors/jquery/test/data/offset/body.html | 26 - .../jquery/test/data/offset/fixed.html | 34 - .../jquery/test/data/offset/relative.html | 31 - .../jquery/test/data/offset/scroll.html | 39 - .../jquery/test/data/offset/static.html | 31 - .../jquery/test/data/offset/table.html | 43 - .../vendors/jquery/test/data/params_html.php | 12 - .../jquery/test/data/readywaitasset.js | 1 - .../jquery/test/data/readywaitloader.js | 25 - .../vendors/jquery/test/data/script.php | 11 - .../test/data/selector/html5_selector.html | 114 - .../test/data/selector/sizzle_cache.html | 21 - .../vendors/jquery/test/data/statusText.php | 5 - .../test/data/support/bodyBackground.html | 28 - .../jquery/test/data/support/boxSizing.html | 19 - .../vendors/jquery/test/data/support/csp.js | 3 - .../vendors/jquery/test/data/support/csp.php | 22 - .../test/data/support/shrinkWrapBlocks.html | 23 - .../test/data/support/testElementCrash.html | 17 - .../webapp/vendors/jquery/test/data/test.html | 7 - .../webapp/vendors/jquery/test/data/test.js | 3 - .../webapp/vendors/jquery/test/data/test.php | 7 - .../vendors/jquery/test/data/test2.html | 5 - .../vendors/jquery/test/data/test3.html | 3 - .../vendors/jquery/test/data/testinit.js | 264 - .../vendors/jquery/test/data/testrunner.js | 377 - .../vendors/jquery/test/data/testsuite.css | 155 - .../webapp/vendors/jquery/test/data/text.php | 12 - .../webapp/vendors/jquery/test/data/ua.txt | 272 - .../vendors/jquery/test/data/with_fries.xml | 25 - .../test/data/with_fries_over_jsonp.php | 7 - .../vendors/jquery/test/delegatetest.html | 228 - .../webapp/vendors/jquery/test/hovertest.html | 158 - .../webapp/vendors/jquery/test/index.html | 337 - src/main/webapp/vendors/jquery/test/jquery.js | 5 - .../webapp/vendors/jquery/test/localfile.html | 75 - .../vendors/jquery/test/networkerror.html | 84 - .../webapp/vendors/jquery/test/readywait.html | 70 - .../webapp/vendors/jquery/test/unit/ajax.js | 1954 ----- .../vendors/jquery/test/unit/attributes.js | 1384 ---- .../vendors/jquery/test/unit/callbacks.js | 342 - .../webapp/vendors/jquery/test/unit/core.js | 1387 ---- .../webapp/vendors/jquery/test/unit/css.js | 1017 --- .../webapp/vendors/jquery/test/unit/data.js | 758 -- .../vendors/jquery/test/unit/deferred.js | 436 -- .../vendors/jquery/test/unit/deprecated.js | 8 - .../vendors/jquery/test/unit/dimensions.js | 473 -- .../vendors/jquery/test/unit/effects.js | 2204 ------ .../webapp/vendors/jquery/test/unit/event.js | 2682 ------- .../vendors/jquery/test/unit/exports.js | 7 - .../vendors/jquery/test/unit/manipulation.js | 2121 ------ .../webapp/vendors/jquery/test/unit/offset.js | 558 -- .../webapp/vendors/jquery/test/unit/queue.js | 320 - .../vendors/jquery/test/unit/selector.js | 172 - .../vendors/jquery/test/unit/serialize.js | 148 - .../vendors/jquery/test/unit/support.js | 172 - .../vendors/jquery/test/unit/traversing.js | 797 -- .../webapp/vendors/jquery/test/unit/wrap.js | 265 - src/main/webapp/vendors/jquery/test/xhtml.php | 5 - 830 files changed, 10357 insertions(+), 122967 deletions(-) delete mode 100644 src/main/webapp/WEB-INF/jsp/fragments/bodyHeader.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/fragments/htmlHeader.jsp delete mode 100644 src/main/webapp/WEB-INF/jsp/fragments/staticFiles.jsp create mode 100644 src/main/webapp/WEB-INF/tags/bodyHeader.tag create mode 100644 src/main/webapp/WEB-INF/tags/menu.tag create mode 100644 src/main/webapp/resources/images/favicon.png delete mode 100644 src/main/webapp/vendors/bootstrap/.bower.json delete mode 100644 src/main/webapp/vendors/bootstrap/.gitignore delete mode 100644 src/main/webapp/vendors/bootstrap/.travis.yml delete mode 100644 src/main/webapp/vendors/bootstrap/CHANGELOG.md delete mode 100644 src/main/webapp/vendors/bootstrap/CONTRIBUTING.md delete mode 100644 src/main/webapp/vendors/bootstrap/LICENSE delete mode 100644 src/main/webapp/vendors/bootstrap/Makefile delete mode 100644 src/main/webapp/vendors/bootstrap/README.md delete mode 100644 src/main/webapp/vendors/bootstrap/bower.json delete mode 100644 src/main/webapp/vendors/bootstrap/composer.json create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap-theme.css create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap-theme.css.map create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap-theme.min.css create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap-theme.min.css.map create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap.css create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap.css.map create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap.min.css create mode 100644 src/main/webapp/vendors/bootstrap/dist/css/bootstrap.min.css.map create mode 100644 src/main/webapp/vendors/bootstrap/dist/fonts/glyphicons-halflings-regular.eot create mode 100644 src/main/webapp/vendors/bootstrap/dist/fonts/glyphicons-halflings-regular.svg create mode 100644 src/main/webapp/vendors/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf create mode 100644 src/main/webapp/vendors/bootstrap/dist/fonts/glyphicons-halflings-regular.woff create mode 100644 src/main/webapp/vendors/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 create mode 100644 src/main/webapp/vendors/bootstrap/dist/js/bootstrap.js create mode 100644 src/main/webapp/vendors/bootstrap/dist/js/bootstrap.min.js create mode 100644 src/main/webapp/vendors/bootstrap/dist/js/npm.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/css/bootstrap-responsive.css delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/css/bootstrap.css delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/css/docs.css delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/ico/apple-touch-icon-114-precomposed.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/ico/apple-touch-icon-144-precomposed.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/ico/apple-touch-icon-57-precomposed.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/ico/apple-touch-icon-72-precomposed.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/ico/favicon.ico delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/ico/favicon.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bootstrap-docs-readme.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bs-docs-bootstrap-features.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bs-docs-masthead-pattern.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bs-docs-responsive-illustrations.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/bs-docs-twitter-github.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/8020select.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/adoptahydrant.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/breakingnews.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/fleetio.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/gathercontent.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/jshint.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/kippt.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/soundready.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-carousel.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-fluid.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-justified-nav.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-marketing-narrow.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-marketing.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-signin.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-starter.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/bootstrap-example-sticky-footer.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/browser-icon-chrome.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/browser-icon-firefox.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/browser-icon-safari.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/slide-01.jpg delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/slide-02.jpg delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/examples/slide-03.jpg delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/glyphicons-halflings-white.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/glyphicons-halflings.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/grid-baseline-20px.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/less-logo-large.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/img/responsive-illustrations.png delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/README.md delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/application.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-affix.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-alert.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-button.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-carousel.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-collapse.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-dropdown.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-modal.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-popover.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-scrollspy.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-tab.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-tooltip.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-transition.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap-typeahead.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/bootstrap.min.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/google-code-prettify/prettify.css delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/google-code-prettify/prettify.js delete mode 100755 src/main/webapp/vendors/bootstrap/docs/assets/js/holder/holder.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/html5shiv.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/assets/js/jquery.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/base-css.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/build/index.js delete mode 100644 src/main/webapp/vendors/bootstrap/docs/build/package.json delete mode 100644 src/main/webapp/vendors/bootstrap/docs/components.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/customize.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/carousel.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/fluid.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/hero.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/justified-nav.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/marketing-narrow.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/signin.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/starter-template.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/sticky-footer-navbar.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/examples/sticky-footer.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/extend.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/getting-started.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/index.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/javascript.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/scaffolding.html delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/layout.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/base-css.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/components.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/customize.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/extend.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/getting-started.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/index.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/javascript.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/docs/templates/pages/scaffolding.mustache delete mode 100644 src/main/webapp/vendors/bootstrap/img/glyphicons-halflings-white.png delete mode 100644 src/main/webapp/vendors/bootstrap/img/glyphicons-halflings.png delete mode 100644 src/main/webapp/vendors/bootstrap/js/.jshintrc delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-affix.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-alert.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-button.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-carousel.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-collapse.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-dropdown.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-modal.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-popover.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-scrollspy.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-tab.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-tooltip.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-transition.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/bootstrap-typeahead.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/index.html delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/phantom.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/server.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-affix.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-alert.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-button.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-carousel.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-collapse.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-dropdown.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-modal.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-phantom.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-popover.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-scrollspy.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-tab.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-tooltip.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-transition.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/unit/bootstrap-typeahead.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/vendor/jquery.js delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/vendor/qunit.css delete mode 100644 src/main/webapp/vendors/bootstrap/js/tests/vendor/qunit.js delete mode 100644 src/main/webapp/vendors/bootstrap/less/accordion.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/alerts.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/bootstrap.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/breadcrumbs.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/button-groups.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/buttons.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/carousel.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/close.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/code.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/component-animations.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/dropdowns.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/forms.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/grid.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/hero-unit.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/labels-badges.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/layouts.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/media.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/mixins.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/modals.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/navbar.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/navs.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/pager.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/pagination.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/popovers.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/progress-bars.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/reset.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/responsive-1200px-min.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/responsive-767px-max.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/responsive-768px-979px.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/responsive-navbar.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/responsive-utilities.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/responsive.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/scaffolding.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/sprites.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/tables.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/buttons.html delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/css-tests.css delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/css-tests.html delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/forms-responsive.html delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/forms.html delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/navbar-fixed-top.html delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/navbar-static-top.html delete mode 100644 src/main/webapp/vendors/bootstrap/less/tests/navbar.html delete mode 100644 src/main/webapp/vendors/bootstrap/less/thumbnails.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/tooltip.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/type.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/utilities.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/variables.less delete mode 100644 src/main/webapp/vendors/bootstrap/less/wells.less delete mode 100644 src/main/webapp/vendors/bootstrap/package.json delete mode 100644 src/main/webapp/vendors/jquery-ui/.bower.json delete mode 100644 src/main/webapp/vendors/jquery-ui/.gitignore delete mode 100644 src/main/webapp/vendors/jquery-ui/AUTHORS.txt delete mode 100644 src/main/webapp/vendors/jquery-ui/MIT-LICENSE.txt delete mode 100644 src/main/webapp/vendors/jquery-ui/README.md delete mode 100644 src/main/webapp/vendors/jquery-ui/bower.json delete mode 100644 src/main/webapp/vendors/jquery-ui/component.json delete mode 100644 src/main/webapp/vendors/jquery-ui/composer.json delete mode 100644 src/main/webapp/vendors/jquery-ui/package.json delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_flat_65_ffffff_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_glass_40_111111_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-icons_222222_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-icons_4ca300_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-icons_bbbbbb_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-icons_ededed_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-icons_ffcf29_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/black-tie/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_dots-small_65_a6a6a6_2x2.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_flat_0_333333_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_flat_65_ffffff_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_glass_55_fbf8ee_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_eeeeee_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_f6f6f6_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-bg_highlight-soft_15_cc0000_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-icons_004276_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-icons_cc0000_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/blitzer/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_glass_50_3baae3_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-icons_2694e8_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-icons_2e83ff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-icons_3d80b3_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-icons_72a7cf_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/cupertino/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_flat_30_cccccc_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_flat_50_5c5c5c_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-bg_loop_25_000000_21x21.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-icons_222222_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-icons_4b8e0b_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-icons_a83300_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-icons_cccccc_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dark-hive/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_flat_40_292929_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-icons_00498f_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-icons_98d2fb_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-icons_9ccdfc_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/dot-luv/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_flat_0_eeeeee_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_flat_55_994d53_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_flat_55_fafafa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-icons_454545_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-icons_734d99_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-icons_8d78a5_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-icons_a8a3ae_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-icons_ebccce_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/eggplant/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_flat_0_e69700_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-icons_0a82eb_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-icons_0b54d5_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-icons_5fa5e3_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-icons_fcdd4a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/excite-bike/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_flat_0_eeeeee_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_flat_55_ffffff_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-icons_0073ea_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-icons_454545_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-icons_666666_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-icons_ff0084_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/flick/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_flat_75_ba9217_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-icons_454545_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-icons_88a206_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-icons_c02669_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-icons_e1e463_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-icons_ffeb33_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/hot-sneaks/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_flat_75_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_glass_25_cb842e_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_glass_70_ede4d4_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-icons_c47a23_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-icons_cb672b_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-icons_f08000_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-icons_f35f07_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-icons_ff7519_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/humanity/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_15_444444_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_glass_55_fbf5d0_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_highlight-hard_30_285c00_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_33_3a8104_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_50_4eb305_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_60_4ca20b_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-bg_inset-soft_10_285c00_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-icons_4eb305_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-icons_72b42d_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/le-frog/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-icons_222222_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-icons_9bcc60_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-icons_add978_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-icons_e3ddc9_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-icons_f1fd86_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/mint-choc/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_flat_0_eeeeee_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_flat_55_c0402a_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_flat_55_eeeeee_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_glass_35_dddddd_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_glass_60_eeeeee_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_inset-hard_75_999999_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-icons_3383bb_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-icons_454545_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-icons_70b2e1_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-icons_999999_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/images/ui-icons_fbc856_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/overcast/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-icons_222222_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-icons_3572ac_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-icons_8c291d_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-icons_b83400_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-icons_fbdb93_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/pepper-grinder/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_flat_55_fbec88_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_glass_85_dfeffc_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-icons_217bc0_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-icons_2e83ff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-icons_469bdd_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-icons_6da8d5_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-icons_d8e7f3_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/images/ui-icons_f9bd01_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/redmond/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/smoothness/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-icons_808080_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-icons_847e71_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-icons_8DC262_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-icons_eeeeee_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/south-street/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_flat_55_999999_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_flat_75_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_glass_45_0078ae_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_glass_55_f8da4e_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_glass_75_79c9ec_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-icons_0078ae_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-icons_056b93_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-icons_d8e7f3_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-icons_e0fdff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-icons_f5e175_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-icons_f7a50d_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/images/ui-icons_fcd113_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/start/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_flat_30_cccccc_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_flat_50_5c5c5c_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-icons_3d3d3d_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-icons_bd7b00_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-icons_d19405_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-icons_eb990f_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-icons_ed9f26_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-icons_fadc7a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/images/ui-icons_ffe180_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/sunny/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_flat_75_ddd4b0_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-icons_070603_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-icons_e8e2b5_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-icons_e9cd86_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-icons_efec9f_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-icons_f2ec64_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-icons_f9f2bd_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/images/ui-icons_ff7519_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/swanky-purse/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_diagonals-small_50_262626_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_flat_0_303030_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_flat_0_4c4c4c_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_glass_40_0a0a0a_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_glass_55_f1fbe5_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_glass_60_000000_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_55_000000_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_85_9fda58_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_95_f6ecd5_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-icons_000000_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-icons_1f1f1f_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-icons_9fda58_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-icons_b8ec79_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/trontastic/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-icons_222222_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-icons_a83300_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-icons_cccccc_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-darkness/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-icons_222222_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-icons_228ef1_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/images/ui-icons_ffffff_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/ui-lightness/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/animated-overlay.gif delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_gloss-wave_16_121212_500x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_highlight-hard_15_888888_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_highlight-hard_55_555555_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-bg_inset-soft_15_121212_1x100.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-icons_666666_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-icons_aaaaaa_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-icons_bbbbbb_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-icons_c98000_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-icons_cccccc_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/images/ui-icons_f29a00_256x240.png delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/jquery-ui.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/jquery-ui.min.css delete mode 100644 src/main/webapp/vendors/jquery-ui/themes/vader/jquery.ui.theme.css delete mode 100644 src/main/webapp/vendors/jquery/.bower.json delete mode 100644 src/main/webapp/vendors/jquery/.editorconfig delete mode 100644 src/main/webapp/vendors/jquery/.gitattributes delete mode 100644 src/main/webapp/vendors/jquery/.gitignore delete mode 100644 src/main/webapp/vendors/jquery/.gitmodules delete mode 100644 src/main/webapp/vendors/jquery/.jshintrc delete mode 100644 src/main/webapp/vendors/jquery/.mailmap delete mode 100644 src/main/webapp/vendors/jquery/AUTHORS.txt delete mode 100644 src/main/webapp/vendors/jquery/CONTRIBUTING.md delete mode 100644 src/main/webapp/vendors/jquery/Gruntfile.js delete mode 100644 src/main/webapp/vendors/jquery/MIT-LICENSE.txt delete mode 100644 src/main/webapp/vendors/jquery/README.md delete mode 100755 src/main/webapp/vendors/jquery/bower.json delete mode 100644 src/main/webapp/vendors/jquery/build/release-notes.js delete mode 100644 src/main/webapp/vendors/jquery/build/release.js delete mode 100755 src/main/webapp/vendors/jquery/component.json delete mode 100755 src/main/webapp/vendors/jquery/composer.json delete mode 100755 src/main/webapp/vendors/jquery/jquery-migrate.js delete mode 100755 src/main/webapp/vendors/jquery/jquery-migrate.min.js delete mode 100644 src/main/webapp/vendors/jquery/package.json delete mode 100644 src/main/webapp/vendors/jquery/speed/benchmark.js delete mode 100644 src/main/webapp/vendors/jquery/speed/benchmarker.css delete mode 100644 src/main/webapp/vendors/jquery/speed/benchmarker.js delete mode 100644 src/main/webapp/vendors/jquery/speed/closest.html delete mode 100644 src/main/webapp/vendors/jquery/speed/css.html delete mode 100644 src/main/webapp/vendors/jquery/speed/event.html delete mode 100644 src/main/webapp/vendors/jquery/speed/filter.html delete mode 100644 src/main/webapp/vendors/jquery/speed/find.html delete mode 100644 src/main/webapp/vendors/jquery/speed/index.html delete mode 100644 src/main/webapp/vendors/jquery/speed/jquery-basis.js delete mode 100644 src/main/webapp/vendors/jquery/speed/slice.vs.concat.html delete mode 100644 src/main/webapp/vendors/jquery/src/.jshintrc delete mode 100644 src/main/webapp/vendors/jquery/src/ajax.js delete mode 100644 src/main/webapp/vendors/jquery/src/ajax/jsonp.js delete mode 100644 src/main/webapp/vendors/jquery/src/ajax/script.js delete mode 100644 src/main/webapp/vendors/jquery/src/ajax/xhr.js delete mode 100644 src/main/webapp/vendors/jquery/src/attributes.js delete mode 100644 src/main/webapp/vendors/jquery/src/callbacks.js delete mode 100644 src/main/webapp/vendors/jquery/src/core.js delete mode 100644 src/main/webapp/vendors/jquery/src/css.js delete mode 100644 src/main/webapp/vendors/jquery/src/data.js delete mode 100644 src/main/webapp/vendors/jquery/src/deferred.js delete mode 100644 src/main/webapp/vendors/jquery/src/deprecated.js delete mode 100644 src/main/webapp/vendors/jquery/src/dimensions.js delete mode 100644 src/main/webapp/vendors/jquery/src/effects.js delete mode 100644 src/main/webapp/vendors/jquery/src/event-alias.js delete mode 100644 src/main/webapp/vendors/jquery/src/event.js delete mode 100644 src/main/webapp/vendors/jquery/src/exports.js delete mode 100644 src/main/webapp/vendors/jquery/src/intro.js delete mode 100644 src/main/webapp/vendors/jquery/src/manipulation.js delete mode 100644 src/main/webapp/vendors/jquery/src/offset.js delete mode 100644 src/main/webapp/vendors/jquery/src/outro.js delete mode 100644 src/main/webapp/vendors/jquery/src/queue.js delete mode 100644 src/main/webapp/vendors/jquery/src/selector-native.js delete mode 100644 src/main/webapp/vendors/jquery/src/serialize.js delete mode 100644 src/main/webapp/vendors/jquery/src/sizzle-jquery.js delete mode 100644 src/main/webapp/vendors/jquery/src/support.js delete mode 100644 src/main/webapp/vendors/jquery/src/traversing.js delete mode 100644 src/main/webapp/vendors/jquery/src/wrap.js delete mode 100644 src/main/webapp/vendors/jquery/test/.jshintignore delete mode 100644 src/main/webapp/vendors/jquery/test/.jshintrc delete mode 100644 src/main/webapp/vendors/jquery/test/data/1x1.jpg delete mode 100644 src/main/webapp/vendors/jquery/test/data/ajax/unreleasedXHR.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/atom+xml.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/badcall.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/badjson.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/cleanScript.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/core/cc_on.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/core/dont_return.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/core/dynamic_ready.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/dashboard.xml delete mode 100644 src/main/webapp/vendors/jquery/test/data/dimensions/documentLarge.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/dimensions/documentSmall.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/echoData.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/echoQuery.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/errorWithJSON.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/errorWithText.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/etag.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/evalScript.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/event/focusElem.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/event/longLoadScript.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/event/onbeforeunload.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/event/promiseReady.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/event/syncReady.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/headers.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/if_modified_since.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/iframe.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/jquery-1.9.1.ajax_xhr.min.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/json.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/json_obj.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/jsonp.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/manipulation/iframe-denied.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/name.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/name.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/nocontent.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/offset/absolute.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/offset/body.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/offset/fixed.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/offset/relative.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/offset/scroll.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/offset/static.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/offset/table.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/params_html.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/readywaitasset.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/readywaitloader.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/script.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/selector/html5_selector.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/selector/sizzle_cache.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/statusText.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/support/bodyBackground.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/support/boxSizing.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/support/csp.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/support/csp.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/support/shrinkWrapBlocks.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/support/testElementCrash.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/test.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/test.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/test.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/test2.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/test3.html delete mode 100644 src/main/webapp/vendors/jquery/test/data/testinit.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/testrunner.js delete mode 100644 src/main/webapp/vendors/jquery/test/data/testsuite.css delete mode 100644 src/main/webapp/vendors/jquery/test/data/text.php delete mode 100644 src/main/webapp/vendors/jquery/test/data/ua.txt delete mode 100644 src/main/webapp/vendors/jquery/test/data/with_fries.xml delete mode 100644 src/main/webapp/vendors/jquery/test/data/with_fries_over_jsonp.php delete mode 100644 src/main/webapp/vendors/jquery/test/delegatetest.html delete mode 100644 src/main/webapp/vendors/jquery/test/hovertest.html delete mode 100644 src/main/webapp/vendors/jquery/test/index.html delete mode 100644 src/main/webapp/vendors/jquery/test/jquery.js delete mode 100644 src/main/webapp/vendors/jquery/test/localfile.html delete mode 100644 src/main/webapp/vendors/jquery/test/networkerror.html delete mode 100644 src/main/webapp/vendors/jquery/test/readywait.html delete mode 100644 src/main/webapp/vendors/jquery/test/unit/ajax.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/attributes.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/callbacks.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/core.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/css.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/data.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/deferred.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/deprecated.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/dimensions.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/effects.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/event.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/exports.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/manipulation.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/offset.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/queue.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/selector.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/serialize.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/support.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/traversing.js delete mode 100644 src/main/webapp/vendors/jquery/test/unit/wrap.js delete mode 100644 src/main/webapp/vendors/jquery/test/xhtml.php diff --git a/.travis.yml b/.travis.yml index 6d5c5a337..c0f28cfa4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,2 @@ language: java jdk: oraclejdk8 -script: mvn package \ No newline at end of file diff --git a/bower.json b/bower.json index 65f2293e6..1d7ce55eb 100644 --- a/bower.json +++ b/bower.json @@ -1,11 +1,8 @@ { "name": "spring-petclinic", - "authors": [ - "ihabritane.faycal@gmail.com" - ], "dependencies": { - "bootstrap": "~2.3.0", - "jquery": "~2.0.3", + "bootstrap": "3.3.6", + "jquery": "~2.0.3", "jquery-ui": "~1.10.3" } } diff --git a/pom.xml b/pom.xml index 2310a36ff..78d27ba13 100644 --- a/pom.xml +++ b/pom.xml @@ -402,11 +402,12 @@ bower-install - + org.codehaus.mojo exec-maven-plugin + 1.4.0 generate-sources diff --git a/src/main/resources/spring/mvc-core-config.xml b/src/main/resources/spring/mvc-core-config.xml index 23f8cb657..6e254423f 100644 --- a/src/main/resources/spring/mvc-core-config.xml +++ b/src/main/resources/spring/mvc-core-config.xml @@ -25,7 +25,7 @@ + (see htmlHeader.jsp for more details) --> diff --git a/src/main/webapp/WEB-INF/jsp/exception.jsp b/src/main/webapp/WEB-INF/jsp/exception.jsp index 3c7a5f404..ecff19830 100644 --- a/src/main/webapp/WEB-INF/jsp/exception.jsp +++ b/src/main/webapp/WEB-INF/jsp/exception.jsp @@ -3,13 +3,15 @@ <%@ page session="false" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - + +<
- + @@ -22,11 +24,8 @@ ${stackTrace} --> - - - -
+ diff --git a/src/main/webapp/WEB-INF/jsp/fragments/bodyHeader.jsp b/src/main/webapp/WEB-INF/jsp/fragments/bodyHeader.jsp deleted file mode 100644 index 3cb66aa25..000000000 --- a/src/main/webapp/WEB-INF/jsp/fragments/bodyHeader.jsp +++ /dev/null @@ -1,22 +0,0 @@ -<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> - - - - - - diff --git a/src/main/webapp/WEB-INF/jsp/fragments/footer.jsp b/src/main/webapp/WEB-INF/jsp/fragments/footer.jsp index c9992c782..e499b2682 100644 --- a/src/main/webapp/WEB-INF/jsp/fragments/footer.jsp +++ b/src/main/webapp/WEB-INF/jsp/fragments/footer.jsp @@ -1,11 +1,25 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> - - - - - - +
+
+
" + alt="Sponsored by Pivotal"/>
+
+
+ +<%-- Placed at the end of the document so the pages load faster --%> + + + +<%-- jquery-ui.js file is really big so we only load what we need instead of loading everything --%> + + + + + +<%-- Bootstrap --%> + + + diff --git a/src/main/webapp/WEB-INF/jsp/fragments/htmlHeader.jsp b/src/main/webapp/WEB-INF/jsp/fragments/htmlHeader.jsp new file mode 100644 index 000000000..eea7b8231 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/fragments/htmlHeader.jsp @@ -0,0 +1,44 @@ +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + +<%-- +PetClinic :: a Spring Framework demonstration +--%> + + + + + + + <%-- The above 4 meta tags *must* come first in the head; any other head content must come *after* these tags --%> + + + + + PetClinic :: a Spring Framework demonstration + + <%-- Bootstrap CSS --%> + + + + + + + <%-- Custom styles for Petclinic --%> + + + + + <%-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --%> + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/fragments/staticFiles.jsp b/src/main/webapp/WEB-INF/jsp/fragments/staticFiles.jsp deleted file mode 100644 index c8c9fd3ae..000000000 --- a/src/main/webapp/WEB-INF/jsp/fragments/staticFiles.jsp +++ /dev/null @@ -1,31 +0,0 @@ -<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> - - - - - - PetClinic :: a Spring Framework demonstration - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp b/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp index 30329e107..b18a88fed 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp @@ -11,31 +11,33 @@ - + +
- -

New Owner

- - - - - - -
- - - - - - - - +
+ + + + + +
+
+
+ + + + + + + + +
diff --git a/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp b/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp index f6b1930eb..15b82afac 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp @@ -5,38 +5,43 @@ <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - + +
-

Find Owners

-
+
- - - + +
+ + +
-
- +
+
+
+
-
+
+

- Add Owner - - - + Add Owner
+ + diff --git a/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp b/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp index 8e7e10bbd..14981958f 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp @@ -6,18 +6,20 @@ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %> +<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - + +
-

Owner Information

- + +
@@ -34,26 +36,26 @@ - - - -
Name Telephone
- - - - Edit Owner - - - - Add New Pet
+ + + + Edit Owner + + + + + Add New Pet + +

Pets and Visits

- - +
+ + -
+
Name
@@ -96,13 +98,14 @@
- -
- + +
+ + diff --git a/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp b/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp index 2e88f0fb8..f2fb639c4 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp @@ -6,17 +6,18 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="datatables" uri="http://github.com/dandelion/datatables" %> +<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - + +
-

Owners

- @@ -37,10 +38,9 @@ - - -
+ + diff --git a/src/main/webapp/WEB-INF/jsp/pets/createOrUpdatePetForm.jsp b/src/main/webapp/WEB-INF/jsp/pets/createOrUpdatePetForm.jsp index 985984aba..5bd1667c3 100644 --- a/src/main/webapp/WEB-INF/jsp/pets/createOrUpdatePetForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/pets/createOrUpdatePetForm.jsp @@ -9,50 +9,54 @@ - + + + +
+

+ New Pet +

+ + +
+
+ +
+ +
+
+ + +
+ +
+
+
+
+ + + + + + + + +
+
+
+ + +
+ + -
- - -

- New - Pet -

- - - -
- - - -
- - -
- -
-
- - - - - - - - -
-
- - - -
diff --git a/src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp b/src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp index a90e757f8..d48499ea0 100644 --- a/src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp @@ -11,17 +11,12 @@ - - + - + +
-

New Visit

Pet @@ -42,20 +37,23 @@ - + +
+ + +
- - - -
- - +
+
+ + +

Previous Visits - +
@@ -72,6 +70,11 @@ + diff --git a/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp b/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp index 1c57ea93c..9c60cf5b9 100644 --- a/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp +++ b/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp @@ -5,22 +5,22 @@ <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="datatables" uri="http://github.com/dandelion/datatables" %> +<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - - +
- +

Veterinarians

- - + diff --git a/src/main/webapp/WEB-INF/jsp/welcome.jsp b/src/main/webapp/WEB-INF/jsp/welcome.jsp index a1cf5fcae..ed6583fc1 100644 --- a/src/main/webapp/WEB-INF/jsp/welcome.jsp +++ b/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -3,22 +3,26 @@ <%@ page session="false" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - + + +
-

- - - - - +
+
+ + +
+
+ diff --git a/src/main/webapp/WEB-INF/tags/bodyHeader.tag b/src/main/webapp/WEB-INF/tags/bodyHeader.tag new file mode 100644 index 000000000..bef25d9e0 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/bodyHeader.tag @@ -0,0 +1,18 @@ +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> + +<%@ attribute name="menuName" required="true" rtexprvalue="true" + description="Name of the active menu: home, owners, vets or error" %> + +
+
+
+ + +
+
+
+ +
+ +
diff --git a/src/main/webapp/WEB-INF/tags/inputField.tag b/src/main/webapp/WEB-INF/tags/inputField.tag index 796dc91c0..0db10f39d 100644 --- a/src/main/webapp/WEB-INF/tags/inputField.tag +++ b/src/main/webapp/WEB-INF/tags/inputField.tag @@ -7,13 +7,20 @@ description="Label appears in red color if input is considered as invalid after submission" %> - + +
- + -
- - ${status.errorMessage} +
+ + + + + + + ${status.errorMessage} +
- \ No newline at end of file + diff --git a/src/main/webapp/WEB-INF/tags/menu.tag b/src/main/webapp/WEB-INF/tags/menu.tag new file mode 100644 index 000000000..b6a2da4ba --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/menu.tag @@ -0,0 +1,60 @@ +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core_1_1" %> + +<%@ attribute name="name" required="true" rtexprvalue="true" + description="Name of the active menu: home, owners, vets or error" %> + +<%-- Static navbar --%> + diff --git a/src/main/webapp/WEB-INF/tags/selectField.tag b/src/main/webapp/WEB-INF/tags/selectField.tag index f93256ac8..21fad89c3 100644 --- a/src/main/webapp/WEB-INF/tags/selectField.tag +++ b/src/main/webapp/WEB-INF/tags/selectField.tag @@ -11,13 +11,20 @@ description="Size of Select" %> - + +
- + -
- - ${status.errorMessage} +
+ + + + + + + ${status.errorMessage} +
- \ No newline at end of file + diff --git a/src/main/webapp/resources/css/petclinic.css b/src/main/webapp/resources/css/petclinic.css index 76a8ef83d..e69de29bb 100644 --- a/src/main/webapp/resources/css/petclinic.css +++ b/src/main/webapp/resources/css/petclinic.css @@ -1,20 +0,0 @@ -.container { - padding-top: 10px; - width: 700px; -} - -.form-horizontal { - width: 100%; -} - -input[type="text"] { - height: 25px; -} - -.navbar .nav > li > a { - color: #000000; -} - -.form-horizontal .control-label { - text-align: left; -} diff --git a/src/main/webapp/resources/images/favicon.png b/src/main/webapp/resources/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1c649a3cdeb151c78c41f1958a80f1ca120f9d32 GIT binary patch literal 528 zcmV+r0`L8aP)5y8CtUpj5;qA#B#0X)BH<#@^k7K{hYETSn%Lq*;%1N7VvDUY!9fr~Y-uSf zrHxFfrBth?ulJqwn{>VmzvM}0rtkBc`DTfV;!-}GnvC=yXNVVhM)r|LBrZHtfW-4+ zEYgig2>ihz?A=LfYg z%oTy_)ee+ip^lEVQh|{l0(|-aL&>dC@EsLcvdprQ=u044F z@+cBZC?tXN^_FIxR3I|3ex?wtk4OBxDx%jZ7X*I%H1!<7#nW2(gFHM3Ng35Cf7B>HGrxUUksW S^PRu|0000=1.8.0 <2.1.0" - }, - "homepage": "https://github.com/twbs/bootstrap", - "_release": "2.3.2", - "_resolution": { - "type": "version", - "tag": "v2.3.2", - "commit": "b4c4072679943773a7582daa63f545ba818fa627" - }, - "_source": "git://github.com/twbs/bootstrap.git", - "_target": "~2.3.0", - "_originalSource": "bootstrap" -} \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/.gitignore b/src/main/webapp/vendors/bootstrap/.gitignore deleted file mode 100644 index 3b10ffb38..000000000 --- a/src/main/webapp/vendors/bootstrap/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -# Numerous always-ignore extensions -*.diff -*.err -*.orig -*.log -*.rej -*.swo -*.swp -*.zip -*.vi -*~ -*.sass-cache - -# OS or Editor folders -.DS_Store -._* -Thumbs.db -.cache -.project -.settings -.tmproj -*.esproj -nbproject -*.sublime-project -*.sublime-workspace - -# Komodo -*.komodoproject -.komodotools - -# Folders to ignore -.hg -.svn -.CVS -.idea -node_modules -dist diff --git a/src/main/webapp/vendors/bootstrap/.travis.yml b/src/main/webapp/vendors/bootstrap/.travis.yml deleted file mode 100644 index b8e1f1720..000000000 --- a/src/main/webapp/vendors/bootstrap/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/CHANGELOG.md b/src/main/webapp/vendors/bootstrap/CHANGELOG.md deleted file mode 100644 index 9af956135..000000000 --- a/src/main/webapp/vendors/bootstrap/CHANGELOG.md +++ /dev/null @@ -1,368 +0,0 @@ -## 2.3.2 re-release (July 26, 2013) - -Patch to update jQuery in Bower and bump Recess to 1.1.9. - -## 2.3.2 (May 17, 2013) - -Fix dropdown for firefox (middleclick) and mobile. - -## 2.3.1 (February 28, 2013) - -Patch release for @fat's n00bery - -- fix missing event type in dropdown -- fix delegated data-attrs for popover/tooltip -- make carousel actually pause when you click cycle -- fix jshint ref in makefile -- fix trying to remove backdrop when no backdrop - -## 2.3.0 (February 7, 2013) - -Minor release to add carousel indicators, improve tooltips, improve dev setup, and fix hella bugs. - -- **Repository changes:** - - **Local instead of global dependencies** for our makefile and install process. Now getting started is way easier—just run `npm install`. - - Upgraded to jQuery 1.9. No changes were needed, but we did upgrade the included jQuery file to the latest release. - - Moved changelog to be within the repo instead of as a wiki page. -- **New and improved features:** - - **Added carousel indicators!** Add the HTML and it automagically works. - - **Added `container` option to tooltips.** The default option is still `insertAfter`, but now you may specify where to insert tooltips (and by extension, popovers) with the optional container parameter. - - Improved popovers now utilize `max-width` instead of `width`, have been widened from 240px to 280px, and will automatically hide the title if one has not been set via CSS `:empty` selector. - - Improved tooltip alignment on edges with [#6713](https://github.com/twbs/bootstrap/pull/6713). - - **Improved accessibility for links in all components.** After merging [#6441](https://github.com/twbs/bootstrap/pull/6441), link hover states now apply to the `:focus` state as well. This goes for basic `` tags, as well as buttons, navs, dropdowns, and more. - - Added print utility classes to show and hide content between `screen` and `print` via CSS. - - Updated input groups to make them behave more like default form controls. Added `display: inline-block;`, increased `margin-bottom`, and added `vertical-align: middle;` to match `` styles. - - Added `.horizontal-three-colors()` gradient mixin (with example in the CSS tests file). - - Added `.text-left`, `.text-center`, and `.text-right` utility classes for easy typographic alignment. - - Added `@ms-viewport` so IE10 can use responsive CSS when in split-screen mode. -- **Docs changes:** - - Added [new justified navigation example](https://f.cloud.github.com/assets/98681/25869/5e2f812c-4afa-11e2-9293-501cd689232d.png). - - Added sticky footer with fixed navbar example. - -See more on the [2.3.0 pull request](https://github.com/twbs/bootstrap/pull/6346). - - -## 2.2.2 (December 8, 2012) - -Bugfix release addressing docs, CSS, and some JavaScript issues. Key changes include: - -- **Docs:** - - Assets (illustrations and examples) are now retina-ready. - - Replaced [Placehold.it](http://placehold.it) with [Holder.js](http://imsky.github.com/holder/), a client-side and retina-ready placeholder image tool. -- **Dropdowns:** Temporary fix added for dropdowns on mobile to prevent them from closing early. -- **Popovers:** - - No longer inherits `font-size: 0;` when placed in button groups. - - Arrows refactored to work in IE8, and use less code. - - Plugin no longer inserts popover content into a `

`, but rather directly into `.popover-content`. -- **Labels and badges:** Now [automatically collapse](https://github.com/twbs/bootstrap/commit/ead5dbeba5cd7acfa560bfb353f5e7c4f4a19256) if they have no content. -- **Tables:** Nesting support with `.table-bordered` and `.table-striped` greatly improved. -- **Typeahead:** - - Now [inserts dropdown menu after the input](https://github.com/twbs/bootstrap/commit/1747caf19d59cad7fdc90ae56a00e0e2849f95f4) instead of at the close of the document. - - Hitting escape will place focus back on the ``. -- Print styles, from HTML5 Boilerplate, have been added. - -See more on the [2.2.2 milestone](https://github.com/twbs/bootstrap/issues?milestone=17&state=closed). - - -## 2.2.1 (October 30, 2012) - -Hotfix release to address the carousel bug reports. - - -## 2.2.0 (October 29, 2012) - -### tl;dr - -2.1.2 is now 2.2.0: four new example templates, added media component, new typographic scale, fixed that box-shadow mixin bug, fixed z-index issues, and [more](https://github.com/twbs/bootstrap/issues?milestone=15&page=1&state=closed). - -### Highlights - -- **Added four new example templates** to the docs, including a narrow marketing page, sign in form, sticky footer, and a fancy carousel (created for an upcoming .net magazine article). -- **Added the media component**, to create larger common components like comments, Tweets, etc. -- **New variable-driven typographic scale** based on `@baseFontSize` and `@baseLineHeight`. -- Revamped mini, small, and large padding via new variables for inputs and buttons so everything is the same size. -- Reverted 2.1.1's `.box-shadow();` mixin change that caused compiler errors. -- Improved dropdown submenus to support dropups and left-aligned submenus. -- Fixed z-index issues with tooltips and popovers in modals. -- Hero unit now sets basic type styles for the entire component, rather than on `.hero-unit p { ... }`. -- Updated JavaScript plugins and docs to jQuery 1.8.1. -- Added Contributing.md file. -- Added support for installing Bootstrap via [Bower](http://twitter.github.com/bower). -- Miscellaneous variable improvements across the board. -- Miscellaneous documentation typos fixed. - -For the full list of issues included in this release, visit the [2.2.0 milestone on GitHub](https://github.com/twbs/bootstrap/issues?milestone=15&page=1&state=closed) - - - -## 2.1.1 (September 4, 2012) - -* New feature: alert text. We documented these new classes, like `.text-success`, at the bottom of the [Typography section](http://twbs.github.com/bootstrap/base-css.html#typography) along with the long undocumented `.muted`. -* Fixed a lot of typos in the docs. Spelling is hard. -* Made the `.box-shadow()` mixin more durable. It no longer requires escaping for multiple shadows, meaning you can easily use variables and functions in them once again. -* Widened `.dl-horizontal dt` and `.horizontal-form .control-group` to better handle the increased font-size. -* Dropdown submenus improved: now you only see the next level, not all levels, on hover of the submenu toggle. -* Clarified jQuery and Bootstrap template requirements in Getting Started section. -* `select` now utilizes `@inputBorder`. -* `.lead` now scales up from `@baseFontSize` instead of being a fixed font-size and line-height. -* Fixed the vertical three color gradient in latest Firefox. -* Reordered some variables that caused errors in certain Less compilers. - -View all closed issues on the [2.1.1 milestone](https://github.com/twbs/bootstrap/issues?milestone=14&state=closed). - - -## 2.1.0 (August 20, 2012) - -### Key changes - -* Submenu support on dropdowns -* Affix JavaScript plugin -* Block level buttons -* State classes on table rows -* Improved disabled states on navs and dropdowns -* The navbar component is now white by default, with an optional class to darken it -* Improved prepended and appended inputs -* New base font-size and line-height -* Added variable for navbar collapse trigger point -* Fluid grid offsets -* Fluid grid system variables are no longer fixed percentages -* Removed LESS docs page - -For full set of changes, see the completed milestone: https://github.com/twbs/bootstrap/issues?milestone=7&page=1&state=closed - -## 2.0.4 (June 1, 2012) - - -### Docs - -- Added `type="button"` to all dismiss buttons in alerts and modals to avoid a bug in which they prevent their parent's `form` from properly submitting. -- Added simple documentation to Base CSS for `.lead`. -- Added new CSS test to illustrate how the navbar, static and fixed, behaves. -- Clarified grid sizing copy to include mention of responsive variations. -- Reformatted the LESS docs page to prevent terrible table displays at smaller grid sizes. -- Miscellaneous typos and tweaks. - -### CSS - -- Refactored forms.less to make our selectors more specific for fewer overrides and less code. Instead of a generic `input` selector and various resets, we target each type of input like `input[type="text"]`, `input[type="password"]`, etc. -- Form field state (e.g., success or error) now applies to checkbox and radio labels. -- Removed redundant CSS on `

` for `font-family`, `font-size`, and `line-height`. -- Removed redundant `color` declaration from the ` Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n \n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on

\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"
Date Description !`S(KQUb+kfbX&)WK$fbi&0UX-7K$26a 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 diff --git a/src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/soundready.png b/src/main/webapp/vendors/bootstrap/docs/assets/img/example-sites/soundready.png deleted file mode 100644 index 94e0e01b11080edc0e552177a9e352cca16f4f7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50225 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ŒJhA5QVRxJnMIY2tpVFl{ZZO8fu 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�q_YpUO_0~ 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 z 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 @mM-C63 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�{7d2dxH~Oaq6(Ik3z_AZ47c7SqU*+0)=K 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%0A{S_H1Q?H)918yKmUjs=jm@s39LIkgbmR zr0K`|L0GI4bnSQh%;XZXDcMD#Hi*P#APKmQKyw|cMU4&Bs9&UcvVR%`YSwA5Gj>QY zdh8DH|5kXDXLByg{jGVs-7&PpgQ@;Lfi0ISz%P$@oI6UkVwoD1fN97Px zO-7N%?b9rmTCl$CuEh?>uEUN~5?_pL;&uBqeP0TkYA(v?|}06j6Z-RayZ-ErI@-$B$jhtStyX@1|n`vyMF-ADg-9xHt% zSUBJ%*hK8gKJy~ATaS^lMvR{9*o7f(`x>LZ1uH$CS*(8RU*6LF=*eLrBk->& zV}-Vr`mC`siQ3e={g+u@ZW~A9FSlj93+yTRTiiHp{tD7t;@HSf4Rr8{jEiA`i`5-( z|M&ov;@=Xk97b9mH-eu(F69LVD9aR>@HgpD1&r?&_7||<^a}@E4W%plX7);Cc@PkO zAv#X;;uFQ>kjM%+Xs{q{s=UY1wig$cx^i%@%3QS&i(=F3_!7q_OX*PnlUV z`9j=l58=hcY*lJ54@BrP*J?kiEG4hO!d{%Dymbu<)3zT>6G89ccCn=z^OZqHRU+i07rbn%>B2T{-8QFfC=xZ5}Q~7ORny8={fTj2F4ynFitatQ>>Q>NGh~5wl5h=#B z`$+iSihACOG7O}-6(6@FVsTS2bk?G>Is6--ds6)z5w)4Q5hgxritydi%eMRXmG6Z? z?!Fah7?f*>?SNx-mKLt~lY->4e9*l;vt2POS z6FEM}4>AMmSLJu`2k2Tqmt1g&AJ`kqi{ajNR!WW11dIrdbhL#txsS%d_|G09;TP)S zsagKzNpdw0m)?@B{CF{`g33NqIr#f6B-uN|2w^YPLVaoaC+9$4+TpO>*)*j`+@SbY zXxpEImlSml;^@=NPET%76qo=S^G_ulKm359n%NfU8*p#t0O6oAf}=UUw00aQAlcw? zMN9UDY+hN^LJM73IKI5&fl~tlf@4&O^31O|So}%{)sbv-d1>|EZvkDH!Sto73Tz)! zj9}LJH4l9UzFm(5iZ#7*q00O(+WdeZk}$F`I2kZFe+(!D5fP@afaD#{3}pTbp|Sd) z1B&*Luj(z6&~)#oY;V&qNrwMR+L>McZ|A`4|4Z5d`M)U)6n)Shb2ep`bO5=sps;@R zG-k}w*4{pE2AHyF@uDpSa>s=QSpcyXeB-*!hrr)O%QCg{x`R9SWEo2CLwhdsM$J>e zCT5!;Q?y{sVM3caUbcMxn!3KOb?C_L-TdHD35d*AX|W=2-#*Tqd3dPS|EXn8O6Wme z{N`1m`%Oel41jNB1^KA#?Ch4F<}S=Pc$-|V#()sy0>OyMg z+neX0A+yuA5-2DZh%6O)c5ZGa)sdK=DhyB~COy{K@Af0=x&Mw?rYJu%6aPb? zrL9f5d@*6LEVNgjBs6X38v)Y!>#L?M5a(bgiZ!ud!)xp4XlP%8i;=~7$|j2sgPprr zVvm;^Ie!@2zd1=WuGbjcclbai$rI$}j?bQ-SDA+fvL2=DMr)#wfx=EW&&+A^B}Z`p zqLv}|YuDcVb<|T4z&%amOny9=*l}d0v)i*pfq&LnJ$4|1G2?v30VsB--3-4$Rvqn4!(*$K!%P!u6p%2TyRhs5G{&4@CT4ScKe-qr! zq+q&u@@%ld&!GOBIYwDK|ES~%)IFuUrm*I6^xC8Gz4X=;9*VA=P6i(x&JFJs<}qA! z_CqSty3c$NUvkH?W0`#_>V$oGvhDeZO5XckI!=4u{>FM@DY&*19+1yobk3d||JL8X zGk)WnR!TW!>e32)?+u}l_E|l}5>tZU2I;|3Reg9{$}`G3mpov=e!>;}9s#D2@;y3s z_kH*cRUP`7K;rSiF(>)%C8~edkGbJgPZ$MCdhV|@4D+Er^3-?-i# zOQkM(m|+N=68<}@nNFsFB?%8mEA&9T%;75ot<+{;rtX`4&x0P+^?z7$^F4Y0PMq5Q zJK$}-NGmfi!^xQB5yc-6gfZ5b% z4HXv_hEXRetEmlH1i8$a^IrG#_<{INTacorKP1FEc5H@<^P79oSeWqkeOKc_$Fxi zuFA6k@0*}Dv$U*i(*3=2HqeSDsTNpM!(?G&v*`VsnU|L?I5^m23{pZug6ofA^qK~< zfB-}J;LJ>%v9Ym!=Gw}}20g6lrr3(nw%#ZdiQh2IYtF-N0 z@j0z80?l$7c9;M|9{TX>Gjf1H?#i$m`BiypFvg@vKa%*=pH|68LGM901s-p0kp z7j^wP+`(vZalg8#yU4R|Zevp^z?!E};cpcY1xx*%!OYZ@f|?pyCum*UET};HoD{lc z8QIyc!%!WB+5eFlo5K*jb`+NJ4Fwxp@^c5UxCL=5 zySuvstmnqW&XZLfz;L3u;{B+ttvzAudM`yPEH0*UP*PV9Wpv(bZEbx{rla!VO>XH6 z>l_~+-}6Q-Tn+}!Hd+a?<6;9<>RH&eGHqUf%JZ z_fzrA%rpVXq!y&@fFt6iLEdYkTti-t9?nM;UHy`A@iWkIJA35y-D>}gK-b!E?Ws0I zdyI8@YDFh5qkhTf9~G=khj7rOGt3cK&u8En!X5o)E&i9ipl7Jtw$g?~xy(oeUXqjUX&TlhID2ifD)#6CiR%l!x$!^iiPm6MYOsgX1fT@>$#at}mvD@U!VWG^PueGwpkS=LmK;Lp zO>5@xNz;&?J;sz$eIocx(UhK|VxD`yP?v#kbb&l!Ob%ouqi=5a$pLl9-)wirG~e)X zzuc>eADQJx@3tGH)u`R&A~1iDD!x{m$8&fS$l-ck#8YHz2@56&Y6yp!>4VZo@f~NR zJ4R6chvZ=zht(&W>>=~5)QP=XPjdFM#IrDY`DrWtw5m$LMgD=yR&;_nbp8TR_K9On zjO^j^{=Nufqnxz|OEC1kI9N8Lm3U?2e7xG$E19LmA&*qePPkfcW=wz}50=U<16F%$ zXBO$oEHi1zANvFN_yfX4J&F<|Y3Y0;hcE$h=<2WR@*7SP4nL?pK zGx0z4ES0y4-8Ji#oq@eE(NLsCd|kvhO8^eW9?FJxspE8leqo)5X;#GCLwBh(JrUx@ zmL;?wa#RaI;l$vKUTkEKes1K55GXu*PcqBt%l2|{*lk5k-+=0twUpq*gm6FT-jy(y z+(h${(8zDMI+e6OJx?fAI2hl2q*Ut-EXFrT3CpJo>6S3C=x3U}kH`kmEMiR>b{8?4uqVSzot`X%RM9u&vK*_SEaL z)VSyPe7!5Bf)N)Yxp^JcrZ-%2N0F(1s~G)2mE%(7P+S^=dP#fSo>HmZ$^xt)qg&*Y z$>~qB%SCfSlzkerN(twJk zvWJ!;%k?m}wjySLiMLlNlQnN=rsaEX`SmxtsJ4gyAV-tlY++t^`is)n9DaFUr6U=U zVtd|dfBkQZ6w442zANmmKD zeftI-Lsq~?Il~Uj``MKxW~B&u80ly6_X^Oo0tYQdyYCw4%yuiHT;dx8VA~m-JJ3&k zkoO$_#PB_lW_sM@2=8$}hq2*%J1*FJwpCvCS(%5Tom0%_w%kXs0kakM@saFJ@%}#} ztKyJ-LcT(dFxNp#xYd#Lj_xdoEOQ^W470iMTWHCtzIy)gt5Xi1*)}t$?|I9@l}^63 zLz71yw+EvmLn&@yCW}*0TN9>P?*+6Mm1DGVjApBPiJ#+IYWLB#V7l4A^ltddyYDp4 z4POHGqm`l-hQyhM3BJ1I@P9c?{Neh>VdO8Y9HveV2Ls!U4{Q4#r9oDcUIUdVIT5o= zLj+g##-cRhMb9=IOI)1~A?0OFbO0NEPCZzA{0%L_yT38)H^iKczsx|?5JW8D%a}N;BYbK>hWDWQW2+`@W zE%j;bCxnOFqob`}TbJx1ZWj6i!i+1-g2&DEF?68d!cZW+e)HcJ){5)1`@X&yfg^=! zQEB9`4XEk5Ri?+EwnXL2$v=3YVUveNeNJScl8c?UAmg}FIlxV1y`hgG%E|84?RSqn zr8X5wG<~)|5CUolGVZX5)rE5X|L6f zR$te&b)FQY!NI5sJ3u1B4V*lrJZ))p#p=^%mN?8S-oG*P$RgLiKs6_ zvVtmE*ADEpe~_M=X^?l4-{*eLS-T?Mvu9ZDc-~z73d7CG=I`O~ zaWR0pUp)BGDzH-I;WLj7sJ7Ur#Q~rED-7X{62m*}GS;kF;17R_^s>;ixm4it=NF=Y zXn~^FX~N*sa>JJ+GV`T3Q)AcAZ#CcL2Z_xYKdTX=*8R9I`ZS}MuNv1>W+!VCf*$C# zxsPGD}H zr8Xg!87Tz$L3+8R(PXUwo+Ls5um?42^o7yQ3)&|E#YJMuI=xO?gGGHphM%i?rDn2n zbg?Q^(myF_wJDP16_4WB(mZyz!dn^sln{E%b}jgwZRJ)ia*>Sc-|Y==QSN{uwDVun zs-Rpsj&tcE;9Io?Kz-}~rh(+^MJ(FXr4Q_w7TDZ$k>5JG2}L9}BL~!75=Yf!MQf6s zRdIuKn|G>wx8We1#nfh&U(-(5Lq%`r(#W~;nU=vC0hfK=dL~DiMQ5_ZT00W-4|CSB zC==^+(;g>#h0}oUwfdM>wX-%LMH{b2%j@-Qzbao3#9dF{o$$Wi`$5L=0RQk309x&Y z?Qtpc_~YtTI2mFg!{vTkn1IH0es*FE+{WcVwuQ}TQ@Q^&%m>g>#-40df_5hHS?%@( zU;ptU)@cnWaEo-r_T44)f$L5x>MgfL0y4c;GCk{oiI@11-Ry`-9jx#CU&waT9{~1L zv)eJ}r09uGCX>U)61WS^L8w*hM(aIP!G9X_gKfDewy}f*4l38T7T}aS#w?BU)e}2G z-F+iHUx2|)`&8z{fqh2oPh4fclb7VvrJ5>Ty1?D#f}`ia}oBdJ5n?LRG(*kQ+i zy;3JvhfK71F8aAr66JmN&~skV?9K4haRJW2piyUhfjwx+$Kq=AeZ9eV)#?7vKqvua z>O{K>)Ik^8cMpl9a<=*H6BL=~3&~~q^9yrL(W&ome!5AoapT7Ej;*M-W`0DUOc6-0 zC)-O<)ui{)%kh+;`%xETUz6-!*;OH&-@+SG>{oeAt!2WK9p^kx-zxhH zEC}fk^PXzKHKEBeYKWW@FTL}`GGmIeG}mQr)vC0^87G4TAN>U?3*}mi_OV6!k=~#W zw2iSyj@K?4iXnJbfQOxlTqKRHK6S|^g=%?No#^35FN_uB!>pKqJjNQ&q9h!D<+ooP<-^x-n0S?&B906|FFUz;`V*cM@4l!%nwU0WlKQFhTUNbo2 zmUiVcUA7u}3y%aW?0mro)9MlB|87de4IZrcB&&rdj7mknC&Vf+ zy$tn(`$`j}Emc6d`?3S%3bi6j5#smK?{DVw@!W}74?^L21B!7`D!$o@{0@5%p)lex zfraHx({4k;Qy2yfDvvb6T_M1H@c7)VAg zwvd0)8iTRPNsxrOb}kTY?5+E#$1t>6w*_%aD0Ji*C$xGs98ZofU^Pmg;0zFpT$U*Gsl3Z8AtycWFY6LU%923IHj zK+1KDN<7k?6F2W9lH|VfkY(?dLU*VtqFC2Q&aJ$7DrA(9EOJ zM90F@&oK7wx&IW>Q`U6f;2z6EI5Rsc*5P&_?rDPldEb=>(!Gj!3VsTiMTe=Mz|sTO z`+JPi?^{};h11j$o#X{g$oSCL`N-TnxF-bEC{{b zB{5YppDMl==C0R;aB|Q4>jJT#B~Zl`iWdmY4F6q1LwOZC?nfpQI#^sk^iH>$|2 zvZu=BA8X9nJY_$}It|vAlo9Man6MK$f^q>9yIyQJ64AKbKCU3@ERi4^gls?2V)CAU z2KHR~pRbcVDk);#_1gd)q?_&Xl;D>Wad*Gw?8ti`h`AI5?v(OQA~U6^=)KDQT$d9~ zzBfw7v9r{@&xVf^)vChm2Tkr4DsFM!6igQRQ17pjd#ZA1JEkKG`#F9t;{M^R#$A?a zE+ioQMRm7yYG7G_ZI{Td!Xs*ov6E{Ko$J8(q=1~~f)qQ)LkSk2~M1MTfpUOuQn#XDBvwcl{PN?g;dB1<;9aeB%@j$E$R;iC9E{)Zn3W{FYYnmB%!8LR2`}KW`{)9W0!EaPXKt z^!}F;o$5jxRAA7(@+C2n1?kVWHDSg|%@vaQyc>}*psrZucfgB+SmJNc{vMIdE4;nnX=P#7VOH=KjClJ-bE9&_dr!-7J`r?a zR4(UCbl?R%Re@D>ZWj~zDsN40;!PkUkQ@>!h!PX1vpnGpWkn*C&7gM(sXT_w$y+3s z#=}@g7npC_(P|VqpY?zCkt#X(&Wc47vww=k)4NCbz9HHL^+&OQg3PKo^^nif8j;8^ zYa@0KIQv;~swi7z zZ%gmEN*G=r%Tt7JabcaV+#7E~TF>bukl-*^OkZ;-HBbl`EY$(mcHT!CbxEvAqNuUG zSF;_=(fbZZ2|j_?*M%u`OEh)i7Y$dhyp%Q24|)L+R;4iy;txPC?iNKt#pOSCOP!@ZJk8sK=y$l(7pEFVQr zsn-g~X9+Ky>eO!E>7PZZdjv-vUJ-L>d36-Y(y2Rnw4bwuKs&In#Zv3;A<+66N8s3u z_*s@`@ely@=)JcePk%;C$c5N#e^N1VEOm`9TStFy>2D$x^(WzfD+~dJGXF1u+_@4ju0-%j zEJ`A_sY8O|>Y7S=neNZ!kcyjtLOMVy64nkMe|lvQ98h-o1MFi7pTT)s>uEvY?LzZ- zBX!%-I?PjrO`I?hL_5t1PM?g)ATIz^3v2^S7c3MU1PmGs6q-ciPzdrKF(1|u1`dbB zHt(XRUMNtgB`?Ck>4*G=$pHipf)K8h3FhC~Mt@_dIbFv%@MR>~S?>d5FBD0A!x|ZT zIh5HRvEFcQd%w_t{tVxpUXqrrAAWd4+;sNRGcMcE1`z2GMUcaYFv{Ksi;5%QJu2Dg z;*!|=xWn*n%zt#x!16RuEg7)61JpCDj)>C!;=N3`i2t(P2)K`a)0E6JW7_Y@Z>=Bb z{mvx4UkZIZ472$#iQvZTUc#sC~ zXLAm#FZWWeBYHj2vP$vJSiL<(%!fzOF`G|YQN+GTtedy&uZ-;};8ApJB!XhbvrVg` z2O*9hyPon1YrRgV|NEnO*(f6JbJVqf7`9E!GanmQ@AFbP^&Dw>Pyo#Pdoc{2-h!?v zoHKR}k0yS?>1Qt88Y}Zs!5vH8Wwci|!-&-Mzb| zzMQ$KH1uIQ6Y|>SYIOvNm;dNL#!ERtLuFLI#x{^H_2A=0O^P}4p?ZPW5gbTweTZamA1XKn4L+{0jhbLT#^Mn+ zTR@}VXwgnPAK!kM>Ti6denS@W&Dq5%PdX!hQeueA+pCK9taK@lIlHO9VydbU#Cmcv z6Z2L^UCNZ0LqC$aAK>oQRJ-hcAw(zfS&|_{bNqAFpslA-vQTw&r~2^*|5ulIh4ox( zTeJHrtqS6~I(3e>Dqb>&^ltg<3m`wx&w?9(1P}T)WmirHbY=%Pz4A6Rt6)@ozxas) zfm$(uf%Th1_bT;jAA$m2w2C)V?2!)zto?^6$DJuvdOFir8<{$3(%&dJe6X&4ssbn< z1;`13tF&M`NhQ$vS|-?o@Q{G}-kj+;3h5aG(f;u>lAq6*H`no*Q07?{V#9;(WR+BI zibWTq7C!Fgrg|8h8zia%#0QO}x59k!y1MBJxwA-IhStvF)pH%U{KH{%6TZ}9e2QH_ zt}Lp~F5=cCGA|nEup^ev*PwF~x<$mDT z1iy%Ud*5+`!(>e5^Mk0{)y!I_4aI=;_SuiUG&iE}09Q|YTN~aWs-*jPE9kXmtakNQ z?Y#&+%&JcQ{n~TxuS&6j?szQmzHVkipc87rrAZ_M{kDXQ;8*&}Df6m7Wq5pLuYS)6 z*!VF^z@%e~k|Z9^s{VZt>hSZx?V>Z+9FqdF^hBZIK__7Xh3Ps{Xuq?X@f*c|e`wJn zt9tYxs4H#+=X#H;Z=JYbjy%z)KVb1q%J8@F_;LqDxO$8`dy={sFV!d#{U~&Pw{!vp z@aC=gZ!4Wpn7ayO1o_JXg)sbPBQ=^xerZ9XDHkdbN~IIFK=4A=qS(+|2R()1OGR|N z^G*4mnnmz3>9OAQ{+Ayi2}cGzQ6L~-SpRPe^XtE#fvxv8AjrA-Yod`~b)I(2ty^ic zjuS$n(^>Pi6<5P5VCDvRDDoo_h#5`)dOYP9aW;ipr)qg z;^OifH4Z>kS681Y%d&TH@PFeH6bw~EG~pTo+zENA2s^-{8ISMpR+S;OFU|32lnVVAvmMwp< zU}Ixbhr^dvSEn+Qlat5C#rb7t6QaaS{^E)O++F}*qNbrCC@YIVdSXIWR#u3&t{~G+ zTwMH@wzin2Cf<|G1T%R^NC+48GTAafxaOywoR|nIDWQIUe~(K}rVL*y5&fe$<6Kr+ z3cA~vpWm0?SyhF!hANs?T3IP>Z_nf+eqUEzjV#6s1&xf1d=_VZcy{(p%F3#|D!b#h zlX+HfY)R#+GmD6-D1umAW!BfNQdz?@{>+iZ7T(25bStY=DTDDZLncx7)O4<8vB z(cj3IUb_*jN`Iw1pN)CsSKg+dWV7U47UFktaw-rWe1m=Z17TP3KhD%@)R+UGHwa@4HkdgDOTHAj6LY%t=t zcX27&rS@(pV2jd;Vq^j8;$dMh2S-Pa)f6cTp(20sNagy2u3gi!vaDxwa&xQIU6t#z zva<3B`HN#_tkM3hZ*5_Li}TJ=AB~QTz`#sWTT;HwrtL0HO(6lsH>UieqQj|Y08`QS zBLA^#_SeY7#Ds0GR3|^a`Oo7o4Gkr|LF?Si%mUjnPmzMJ)q1nA@bKP?3;ONIVgPSl zP*<0*sJ>u1MCTL-gkU63@!x8)HOmQimnN$_I{03QV4gA@W}NpvLaHs6;!jU4rl_eh z(}6J@68mQ=j{T%Sq>GXf*5R6*n!0}qoTQ4s2iszKwD6vyAc{H6wn4Hf=qkGOBp!K<9wpe@A=491Zlm~;}5l>3l#?% zj$@ayRi(oVj^^CterIa6Se6XB^+Osgli4T)w5Z}ei(;!oAvucmKX;5Y2JXpxNi404 z37*9(BG>($rMY>H zd^XREli!_@&b@j3tO*dazjIn6Owz7-xjW7jO9I7pFJ{Z+q)pjr7)_+s0(?_8BXOi0 zKzd-kU5Wy@6q=D492w$Z>V+zd=AcQyhm0#~rnrS^NfU9W>zoF!cl)#PO)|KyMx!{3 zgltadilE$5;!W^5ZP{?e8@+RP(#G~(FIHwju6kdAW}THn=|ox6uJ76{Gi5W~zP>6M z^lppISDWq4rEJq+_MF=MCSw@jS)9=)$zB0pS>+}HvuT~P?^t|e4~Rs3E5-;Z+W5=n zEbH&DnoZUgfIN)3Xh0UWVkLJ!m2a}?nr#}8JSqVT@(6(OC&e?`ms&1Rj11NL`B`U7 z``DNH^Z4%28~TN?ul(8`5N+?SN!+W;QlQD1>rL``h4~HvV`#rO5N=CF`{$5z$miqL;8!gX^C4A|#H`#Y?N>X%0x4z_ z3X@Sm8y|`#wxe80mGt{Skr1L~`O>0=CW4WMAZ0abHpNc6D5lma$dXzfidy{5+KD%$(d*5k}(7J zPu;>V>mmI+L8tR2TCgb=j#UTd*S0;-ph?AL{9SjZc`0{pA$pent1&nAzI6mvZ? z6v`E(#!Tiie?r3GNCQuVD3bNlAL2=Nu7qgW_F4cMrFbM(x{Rvqp=*=%DvOFmSSdk} z%?1i^*$_Y_ZnG^)QYu4tTpr_uxxh$I#s9MkHVdPGK3jD#U<^~*gL^n+w>rlsEHOcnJJ&H?@}HS< z4zKnmj!$HR)u9K7Svh06&30GzbWdW(H;n^Lsc~_z$^#3|CNPQtshHBN_#_5XobwH5 zD?AFc^bLPbro(oZ^P{1guE+tvboS9sz+wICg;1+rh%6pTjVwNIAV!&ASu`mPMB<;c zEHfcbwGmor>W}n37IswA`y5|2DRa`1Z+4C_h!26x5Aw_pOLgvdM>joL`9a7I5?~0R zXeRVZYEmySoQevh)|+j~Ht%jXZ5gDVaP(rb9UO)OVKnfLwU~KXp$TYXT3lEnmGp!n zaRzzfYr>OT;l1i&hvmX}f9$rqyof$Epcb5<&?kRb?rHCP8{z8b{NtxU(*P5-^!sUP z5z`Z0AQ8<{V=+&KfT0k_pxcoanhIly1}FO;iZep&+YyrXsfinCiiV*1OkNq9v0KI2 zGtRH%KnQC+NI7`}0I&1#0oqac8Kf%li$8{r+j9D)^7T3S3iZu?`wxA>lV3Hhdf`19 ztK~!*vpt(MOZOMZ!*;$H%C0PT0d@7laMYYMQ4W&|GCho}k9hUWsm+J0>AaO?vgG7giUCu9eb8Amk+FxLN#w-5!u;|ZO$7*pH$ zr3|h&r#LGZ(U9~Mr(B?;Rih6Yf{{O%3Thaj+_R?3PytU`LNywOAko*kAUZkKiHw=I z4OehL0G%jXubpl>R0o8B@JTucd8Pu51Mphsoq~1M!s1ZW?wccWSU)pN+YK>b4F+kt zVn?dAnx}*|l7NeI+<{i*#)REq=;s}gwxtKbUfi;jm%CUO5gRM^-l%vE9u;|22Xth{ zgceA@EntC%VR#L{Sv5?0Y5nhHSm-NR4%wmW_9%vyJZ~C#1QPLk%(TNY+$}G5WQ(DP zsN5erIq9%I^+H~Mdl!j-WrZc*Qc=zDpDqL8RJ7Fb^kTQ-1Sy$2rcIE!#^;-OGulY) zdG{}u*6o$dm;t*C{y{t4Kd`$t7KC$kF5wf-^au(ptG*xxh7)Oottm4(AZ`%L%rrB# zBrgNCI#|a3_$)?K;$`80l>G#^0zsU>?-U-)-BO`1zcUbmAecXJnO~&r9AX3SR+pfa z*;xOSG<*sIw-tm(@ls|lbv(L8J}rh}C&GnIY_`v5_xD?NuFNF5ZHxPmO;!rDa44SE zJ8QWRF|tAY{78YHg$d?CF{MH7Dvx9NLEwq7sDD;#%vbQEcbGl3Hz0mdxeW5y`XmL` z2!g@Qhhu=q?Y`iXRIxc>h=d$qQvFDt7-_x?+h7ttRq<|eR2G$RQG++!}D7TCF%t%$5hpo?MIE=C9!Uehy zkq8w?Ax2QDI41%GfXqnzB+g~s{9z%QXQxL!UsVe}Za313`W-0>HM0`3x-h-IM9Dgf3Bi@BgV<>4+wYETwwM#!i zov4mHDDzD5hj~Kgk{(A|jI_>^5Chbxz`LUypl0Drq`} z=Th^`GoagdoA0rmZ?2=?BKEm_USInASQg;u5o>#UiB)|46KOdx7s!x!PDr@0xOrZ% z*;>Rh6XlTt5Ca(CLIQB%lxGx`iXVBmpr`7kQWwSpkvsKB_*eL!2)vHkO3imq1xekQSoP zmWguy7Xw+k2}LG>Vz?wUBxKM0dRIEZ1m|6A&Wm_{SqZk9;=j+N5QzPzmtcH-6Kif) zjGBQK!oP2m#HzTEm?1iUPPR{fG3kyID~nj;zLi@C?;|0@zQSl!z1JB_DaP{OF(gnN z68oUQpe`xGDe34Ce*5+frUb@H*-sP{xpE%kc!qxL0Ye^xSAVwxLK;J~kZPfVS$ax> zDHV(ptZf1%;yU6{HA29A!Ia-~wom2-;yjWj^jc=_#(v>{76^JVt62k4MesE*p`fAr zdwM_&kWKJ{hj>48vF5wF1o}vH=V9b(23=O4wt45$9+DfeE~Hz;oH*nv`Dh=O-vWOx z4GxNHR>F31*&ThfZeLtjTX$`(t>p^?@i#o{{jHVb7v$Hsms}D0QB;xtKG89ViC4_P zI4&5#&ADh^~jU_Y)=p;T$&-p}&8oIl4M*(^BoE#!BZVB*J)-HK2 zEf10M(o))}=;+|Gva*_{rW6TScu({bO6}>kgE&&PB~O}BkRSgI^gBXDOiTUiTlgl3U) zNbkUAXJJ7L%%xdBvBCc&Cnw`1G&VJ1O(8w*2%I7SN&K6Pl#~>%qc9A=%IfM+V217H z4RpKwt*D3sT|GOq{PpV>%;Di7+vX5;IUXJ!+@Fo1A&I}$)g^pEjSzZSk^IUv$$eFQ zt3$vXo(3>9V*@fY3s2(L6pexg z_M614G6sU!%%%j2cpQeIQ9*Pii3}W_)~pPQFc>^OX=CuOG_n9;FlO-}h`WzL0rxF% zR;G1&>&C%W{WKFbv#r&Cwo?dx@EbHTv_(nEz=n%GXwnp1p4LCM*Z-^493(`bFgJ7{Qk0iK?9XqIlgR85!BNzXxuI~kweob$Qw&;9v+I_+aq_5J7!i-g}kc%Uw=pA*s_m?XW6)dCLV(jNV} zQ5r>dwcJV^yB#3v_Z#$Q=e+-Ek-VFr(|>avA;Ma7^fiD3;DvlU&dUvwc|3g-ti~&~ zu<-pNx&HpILTyHd=$dqIOJm2`PqF_7`PAw%MtOq5%+OBe+uM)nN=thj`Is)hMsg$k zUYHsO0~JPEaXRze!cLyD;D5c3O@x8MwYN>mtOHKzBEhO@9<{VtAKVWoZwm1Pe5H8q zz24Q(mM;|SlN$;QX6`Q?B;#3bASJVYs8mm(``yT{wah)&>WQc+v4ca%%i6V=D;M{g z1defYeuExz9Q!8@lflZ|9RyLK+ksZsx**lw)Z!X9MOMBprSOYuP487rc)c8312|om zIUee#4?DIQA>~Q0O$JIBzq!~fpijF#!AWS>fFJ9U@;Q3ZH=_(K-`4A0NAk|-?c&PO z8Re8yN|G;R;;bMT89|#ZVYnn{0WI>TrI?o0hE`VY>I(5wpq2rI;4C z?I)0y0NZZUxFKk47yICP=S(sqll=ma(kU_U;KvO*fldNM>Xy&_xe)fVz@5W(5%dQD zFKR_b3O?f0g+2XzPQ}EV7A0lpJ>YFFVON9qw$+2NWt^XU_HXC$hJ7Yd&2@3mS~LLn zlFeu$OWX1UkR>iLP~lQRJi~w=Tx4PrDl?z4VWn#LqIw9W5|f5B!_MH%sp_I?6OI&r zBs}NJ3Ze3GW-K8*)i=3g7JzYplq|orc;B6?1A--5tw#m4GrR9MeQ93aph^5UJVf2Q zSY-r*3w=m2DCRaGRSTKk+1%}Bx<4Wmi)6v`dfkK?&)r{$s&H8qKV;-l9WQ1OPJL(1 zPESfdGJvi&IK0Xp2@r&UULt4^(u?)T;1Z`^odOA6nJ+RfW=}g4AL*Kk&hYC(AD{RF zxAVgeawg(hS=oVA=519zf7{FI|l{^DgaNe zn9rmuTXeQLUF!?vEVlNpr?)2c^>VPR$nJ|JMDQRCJDC3(AA$z#<2idpF86U=WI7?X zDXxIYd1cbxU+-m5tP1A?%{A3bAuSyMAwoNGa2{`(ZT0nB-Y{XSU{ z;0}L2USU`317rbG)pbjvh&}7^C}Si;jsP5qiG4=beauO?L^cXG;C8kwkbGBOjyXMj z;D6Pv59AX^r0G6M>5<)hgcJvVK)#k1J5EmoSw55r*v4(`MhEbH37m%~{2ifS+s_F0 z2b$B%(PcDHRwX@I8xJKvx|hW1Wrm8|V>$tyKa!;70qJr6W_*KoMVOlwsg0UXEb&sw zGg2&VbBMIqw%Kgx*K&glUL*@R#{nK!ZrJ>nuoEr;33<$U3x#ltakhNrXlV(qZ{SGY zsSRAx?_C3uz^|A$S2ezkD}#UW2qDY8Sj}#SBSJ-HK0kcMe3mP945?o;+l+l z$tDZA2`0dw)U)AvWnYWj)VTABf6*U4h>6;&pJGO1f8ctmo116QxN66i$;3AR1M2FJ zJ^^sD3m8=auZTn0q1;9Wk~ZVZb)72dlu=Fq5QGKbEbEE_xF|bT|Ka6Cg^X;3Fvqmr zcy946_9dNGm)W!ooHP?&0*>D7Mmp5ZV4UOi-mzHGqg9bKHzlQiu8k$DSc=oz^V{eg z>Ts7RtB2~rQ<3a#kjYq5atwQeYP43i&aAQ9jqhKg7-*pHyR8yt?d`z`+k(B7ppaB4 z?RAPe6TbQBB@^GKVZry;lK$c2Di-4Aj4(sB6QtVh2z}(UcE9KK@$H(!zK*gY&{1#BN5eSqX;Rwfb z&D1!Fw3;y(tU@853KuMV1ms7m6o^^BQ@BW%6Pgl0z3&gu6Ef4(3U5J;+4QdNgRMgj zVd<{at5;ArHmMKTbw%N^n+8{xJHu&rRkxIxrUQ`DrAG@fMKku2+4Y=IeB%~7CIRGt z{d(&>hiNwYeqL_KPB);Lu7r*|YPWiUm8@A~#$&>m`u)DBzm7JY1S1Z${cvi2 zibpSfA*WtPzg427g3>`XAUY^Om)Sh5ElF1$uzqNb?jXBt)6r?1{n~^KN>L=YDFPs{ zv-FFli_4{^c^JF}^_6Q1{D~l-boSRH;n0>~y4Cd}0+bw$evKOjd=e)Tf%@hp{YIbv z=6B~rc_^#qSjJ*02(}UWzM%@yw{-X`-8bT5T~py5i0;oG^C(sbZG3t*Jj}d{5b-M& z{9S(03QKSib_r~z1ZBoRuhG~6FC{*juu9iBz0-()#f}};IBQ~~!hk%?2bmEN1Y8>F zjIX#KoEqmkfPnYSjy1UhnwxJm_aP?h6xp|@JMI^;E+(Ev`B|a zeg2cvjcWTtJzgDU;w?#cH(T@JW-?ha1frUL$u; zW9r+)p!y}igQYOlUD4PS^JA8qF6G%1%)$zCPSvm}<#6o_dE84=hxvK1L$7=KU7Q~s zr4>v$#mw2Bs~vxdw+;hqEwb4KJ4O9`R&Z}X6u+k))5-tWd63duu20xHgLHl^p%+BK!S^gJ^O5_e70?Rl`j)^ap`4UTGtqlJ>{%>XfDF>5d+z}EwV#S^=dWqh=j)Z77DzdRX$YmW~Q)R`O~ccX{EF%jE1>T0z!Xz2I4 z23puCAn(388#G-1*{{VnE9jfK;0H3z)728i=wD&Kn`EjT>5xT{KT;m@s?Yp6lXWLE zHP+O~wyc%r5&6LIogLTTU__vtoBRzMo0&fzU6O?V7$3O5-LlgFL=A`lfvys8wuRx# zoDJZFJ6U5*xTv$x40om3fOyBKpA(!*!t8J_Z|^O@TnJWOVfRHJfjteA#eGQtZL)sm!b4z=rCxJetB)OI_*1-YdNtr#pslgqy44gUsiS%3SE;qj7} zibsWpn@GjY`qa9xnC%zwmt4~Ju-E}XnxOB;cJ_(V?`WVmC))=&G*g`M@j!az^y{o! z>vnlpiX!iEXCMv9_voP1pg7{CoELcTq4|Lk1H)P4WhL+qZsfV*fp%oP+pn+s3-}?D ztrYkE6;!+tD&~O64Xu7ibhWv4i`O%4t8pQk+cUYTKmYV#%~h)H;4x3cCiZaJvnWug z$hH2mQg`&M4mG>Vkfnqi)J;7e#AkJ$^MpsfHS46ZQS6V!)YZu}YIzsike~@ER|;1T zGn$)KDJqEM83k21-1N}Zoz_o^#JxpL%b!1gy7}Xdt#95;og317yHXT0f18MLt~-Lq zmK8l{4XN!9TIeKVdlb1(otlG12_5NOMOuxAly`I#iN$(o zhgj8(irU>h0mbl!ZlK=u-5pLh0ROGgj;F#g{^-9_RF{-Q)p+3$Jfb(*=#CGf?l!R&rG)be;OePVYtnJk=kbQZh+!I~c0wes*R4RP;I z%*@>~oX`$#rBJ8iM-wSZ1>aITtkE*jWW)_HMQL4d_FIzgk6mgw?&!4c!-)VRzduMI40rucB19EXt?&K+p6}{J$>~9MpbStIAe&k4xu}Tv zVh)L8{aH=o&11Wa9psk;>L}97^j#PNY{^mH=woMHUav0x=siMW?hQ9n+za{8P2``@ z-(2`g0TmJ4=rirY?hrt_v@0W2TL6^HOj}J<@9~w$a*D?J&NWYDP@~-3Xm?l84DlZ% zTLy*A^6x0khY5suI{1*)yaf&QrFFpiB2RSs)UsLjw-?$qL%cak=x+hR`#mIyI5dVE zU?8Qg>I+}q!u0bG32o`6WyY08^C|&^)8pRAI0ZR2VE^mWAU^m-LE(>wEt1-F0@WaU zrgLeuQ1W=~Y|WVWmABevD21}+?=tT_=0K$NESqra4c^19C$it-k7kxbITw-wzDkD>fEg2qaI5Ql+PHbS>c5>=3qJtU(-g+OvoVX4h>WGS_aa5xSpOUuqclrOS> z?MZk~v1SyQ0ICHl_nYzIA5h3j>hgC5a@W|djSUP#LGj-8m1Grs!K)F|lHIn(?UAu-~s>355LdPq zzLl#h_bD2XIVQrcw!Bw2M2rD=Am*Iep$k1maooormq`Bo9w%A|wjBw;B{1a>tvA=Z zhSV}`-sx4^=maP+Z0mH!!5zH=lm5pBHNTZn)f{@xQp7J?~DOD^x@@qIU0&azYsOo^_OioX~t zKvwKKHx~(%nvseewiSByyIv5vB89~~C~%6^Sdb!7v&RLTRaKVneyjKV2F>HiKJJuqs7P{cI&=!#?3&TY2Z?Y%BZPL6Mfw}VExU_MQd+izIFp*hIzZRZo zIg}U)7dgbHfVQE%Y*h-ESZ$#Gr)IBiRhLDiEnAlX&VlUvQp7j* zwnjA|M`xXfg9wPCp(1PZ`}X;THv(5gx#$)AO@mtQdkp2Ygsr!(9I5$hvLFL{*ruG2 z!~Cc|ss9jhyd8ejq_I(nj?v^&li|V^)WEe#WKr%A)R$ zUGB3U#QYI;D$OIxVj+4-Q(=ysE1pa3ox&6nP)6}1oUFs|xa zw%oUbW~EF+=_~0MJd3=x4p=_~m3EoSYXNc4$Nvs>$uV+V*M-N+O7)>={#O`ML{o9e zo9hFQ^;H1rU+q58KC1)fV%7q8wV_Y8NQRK-FTi*-CHNd_!lO!`OAAA%>C`bcqgQtA zfigqdn~#d`Naj}lG*T}@Y=ouDkBw+vsu)B5W|$jqejQ?|NCN-dFrv9?r?A3LGp;b& zrv#rsQueb5+?hX$`mnDCU;5+$YFXX&ulO(RqH{hfk$5A~l7u&c$D8vS_ca&Jhiy~D zh;d8T@S5UYNiP^uUps~4Ax9deJL~88)N&$f6;1i$1@S|SybE}`ZJQ<_9W$P> zw!WUaP#{1own+_t%>@C|3=z&>e3WCkrp`V*sVioPmN|N{(~GUwJ9T4$erYp&2=|x< zvKq4O@HZXPrXz0CycM;vq6H|S6YHsaD?AjXf^ccMHyJKD8M!xu< z+HUc4djs$lt*UM)Ol!q#a8d2+oO)sDqHWG zc)U1uu%fNBOV+tlhB|9S|CzEsaYP~J>4z8%-kM|K{p3CjOZDUy*Ohp4-t`SOs>=lmEoRcycvDRl&!+4tDH9b-vJVYo1&2Od+=P_@dz3>j zBdQ|xRNRszn-~v>rd%~>efE=FyYJQ866qI`a5e8qxI(=yfPtAQV1xbLK7nuPnZ)77 zX{`nH13h=FA99pt?UhXYRA=anl1pd{%e zu7>g=X7R#vm=YuH>v`tEkm%09UUteGFl+DV_*Gt_2vYoZg4$u92z%z zR=y*eNl{{uA*_*Om&z;tcr%JQ;F+_se43|EaWFE|@YP)fLTi81b4iJHV;x%kCvhvv zZ0eAOF{9*!hg``z z0fI{()F*}KEWCnVX=lNHn4WjJbWsL8Gn5f#`CXd>?pU$n=CoI^?YYSs7c(0qW+l$zwgC@oae(@|K6aDM3C zwrHj+l%W%gLn$o=14%uDGOq8OSVo-O+emjhYQZVGqJdmnyRXLw|AecH<6&OL-@X&E zt~rN^OD~p9Ex4{dh0MFuY;>ivbNn3iI{GS0)i#vC5YXY;oVUoOmKa1OHx{htuK(5D zvgjBUo{`L9)tP4^C!A|2YFTMT@%olrjDvWaeF9v7QByH-Imf23XJ^?tPG&OOr2geH z@_=pL?OwRe20Jd*Jfz4yU}C3F-AZ6CL!8rbzEb`tE?4QF>l1`{sU9BCTCD<|+|sw4 z?)TsZ!+aa{J($5)+uGXF;G!bX)@N+tj?r+)WO$%gJ_HD;kql z4jfG2F|;y-t=K#JyeT*D>UPKJ!a5B*b;4MV>OSUecLu@q_ZastQq~$xQmUj}mnE@rD}Hdr0THlr`POqEhP{-e>hG zO+T+ncIO@U27Pgg9P0Za!%IH2oD{NT%AIDe&J^^qcF8#Ct7#s!iSq2gF|*$CRq{&& z+j86})-zvV{(!g5d*ia-Kf5%9zhHAd`(vFTHn-%wRj9`drM9-4Of(J6h$V&YFX51( zbamIB;{?`Bi~C;$;yP50n&zVtG7nUbK!}7??}wT#^&o+t$HlZ2!)g>3LD3RcUNQc1*~@~3;f>abL3UjkPXGp{4uB@60KjDtG3^Fu0A)Klx z$jF$$S;nq1kbLSO^DnHO*gQUN+T7X6+S=M;^(bgd5$>@|#dLRfheO+NIJ+5A0N)$v z?>ACWR_-%OC|EWPmphS_8JtR4ZL0ms2qAJoHpa?o7 zq~5O{U2SS@g&P(%TiHwB9W&qZ4*eSkW^&`smvk2>mf|>2&v2ARtsQ>T0e4u-19_4aU z5{fwf=U<%mFDY)1*lY;@p)L^5wuq#(0EM9g<9hLF(t_wx(f#N7?FWCgO8=w$^MUNI zI4Q+H-oyW=P4idD^xr%G+XnsPN&J21Uz`7L&CmZ|TMMvMfN}Bno&Rmec8~$z{(Jtv nZIZv8{`dTU+y8ek|L?#cbbatUKOV$K!l~Pd6^pDs`*9Y5K|5nqQgVCUOs&D7!hi zTlM-Nbbf)iO3g&zW1JyKsXFcrE0aoyrM4shmx&s2Ld)kpL^aZI;>l~HPHW?rou#*e z#aUdI(lF<2Muw6lsH>7VZ6sA`sQt}_C=bClk#)yb%QPUZ;*kez+kgMbA}s}UCuSVw zt4zP$nS6K)_4qD|J+692jdgbN_^3}ABSQjMMbQlKmV8^$BJp`#zw*`xpVtWX?=)sj zGMoQc^myF&W}CIOU!j#Dv9b3H;zrNzC*_gtdy>u%K{3M=j^R>Nyvnp5u_!#? ztnBP#?RJ!D+j_M~M(*&wAo;NFuu3@Mk= z%AZfgu)l{9P0|N^w337;!mv++B*ntAK0>$=@D%-3&R8rn;Lj~=B!KX-@wv(G$BcJ> z;f-GR2SDE3P*MIy;4Q8+#OHl*!~zjzj+isoGC()VIAlL*t#*Fb2y#s|}{H?&@6_ffV8lixV-$L>8`7xfQF-jnbxXpI5 ze#Kj=MuB^M?6OO2;8t^^u&5NuPXU+%B*D){^Xp6@ul zsnHGE$gl8tmC^Vo;&gOMCNjjq7%%$MnfLD=n!y;Jx~1c*ci;{zmf4KZp*7v}v-Z|h zD$1Mc;s(rFOwZmhrKoMggq8pjD>-XR%ycmEIy|pY!Yw6l_0Oj^62Q=pJvevzDKC0zE$~`FjkV%B&kvrg1Zs8T!1A-G%lGAi zG(_S!hk_(U$jPh&)XIkmOAn(#`#w!W#fX>U@XsAS*gPF=|=Mw75i__LR@iUtC6F#SdDN%0bf zvq}bk<#!GviPM&2AG>g*j3$u*mg-kdBf@S`zxQZl*ty=SH0(KKczN2%9CHPISJ1!W zN*@?4WlQU)x)`8X+%Ts^B53<6VOUu|$qM|4&LX%MA{?J`<|y(dotKFDUfHfSbsfc6 zAJGeQ4KN1OJI_t8JRkC%HwN_#P4jsrlAw^f!+@1V={yb zc5N-@aoUV|m6&_d88)pqTV1wIhnj=$kDJ4;_uNz&zDW8|_tW&a7x*XmFKuN5AEl89 z9!3QBL0y>KgCA*2$wv6sBfH#Mq2xV*(uQ62Bnz~U0(S@16B@brA9yE}4m~N=Sh*ZM zPnA54P;IiU${XY#2044kWT$-h;m7onax8AbtjQ0dhwf8*U-*eX>(#W*-J1P{-mdQQ z`f``1oqnrvD`pE4n2S+$`_rymzmw@~E8R{6dWDn}StQ(x*g18L)zf!(cx9=Mf!7>Ooq%s(qX@>o&fepDyf$+ag_zndTAr}E81FrUCvuY$R)hdi26e` z=@2P;zlziKT1yu`;}YRa8WZ#(@nMUvP5d`CoUWCs>l4Jsi8#M9UVM+)pFaNBT=Y)6 za=*Mu(EJHo;N5nH6G7YUR7H4M-F*Kk)k^@iFUkHAq;1}^^tI^2t_s$9CVh+S66M2= zOxL_sMdr_r$}=TbY(~EF*3?R~x;ZmuzP@Fn5c2R&9MNX}6+gtC_6Yj193__=Hj&{h zk4oOdqJBe_+rgU}3g-MuGUj;)r+eqI)}GJHWW|_ec6F_DzbXFi=8Z{ujau6VxdzZU zIInp4$kFtWI$2uI$Gg~lPa~{FC;CDxk^x`Bs`N0}e*I{6xKKI+Rd$nr8MOsRt_z^G z)1R3EgSFFqGPXE3%ea7shIq^1i!{G?Ch!RRlWHnb9L_XkbROjm#~Dt;jBJfNxp2F- z0a_JKp?)WyTOIka8AgOX%GbnHXLvRD(HGLa^kld)yp9^W?0|PVetZ|sDlP(vQ%WO! zv@%DBZ=Cw+N9;WlW~_)+%dr@M6Ou(y=qzzsz`KRz7f-WU6~VpnR|nN21QpF^;l>x3 zEdKOSb=f6W{>TJxZ5wwB*N&Qwc}JNIvK~WMKD_nH8C#v~KiuNhJC4adZhLy{y4|lB z!B(1|xYoX+8q(5pnOfT`tzcto*ocpZ+%6vb_M}LLduopZ%WPWqsIRCxe9scHUxiS3 zeyu#|z?eB-keaFWD!IJB839JyPmJu=FH~cx23Fm^*L;^GPQp%{KTWZ$>?QjEmf27L zi~X(H^FeemrpWx`?Mxe+10-I7&4Nutc!%b?!Ac;vv~KoG#M(DfTaJ_?q-fbK=su`A z`Uf#xihv_x`n!61-HRU4$I5GH_LJ@)_lQuYK%>F+Q6%>;1h|52n71RAwsgCD{$4W( zvNzTqZ#nag7L5J=0K5jf7il&>jRV%iiP-1js_ltfffy3K5ua_U)c?gWveeO8Y`CBC zUeHZgtgTwzvM|-GM5@A`;L1D(6iePvAz$(~kY(?5zdtNGdX|Byk`gx6yiXQwNPBmSNeX3QO7#6Wbwh28P!`5b0ohHlPD>}A+EMZD+Y6V| zh^lg|+zvEK%ABG&i)Ux|Cyb;0&gwplY7a2Y2_{h0H`yKR zA=EaBTj@89sSy_#4(TLskp8wp&}N~+x@_kjy2_Cz)XrLz;V2&kQ7yDd0=-gG3E=Pj z?ilz`Rl<7lMk7Ew5nc!Bs%aUzhpxi)$0;i=rP0{U#2qvEKqw=>-+i2K)B>;I_wU;-xM_B%-2mORXD zTn8H_P!2J{^U1?uTTrcWFFA7Yq`LEN%nCO zt*c77hs+7{2gPWHa=>|Ke}rUM^iKBR*ccERp?kbZU(wu(3xF8`jnh7cZ0AshANo3E zqA*9$Ra((H-*Du1wdlr9;klEu){aWa;yQ1^FoVldaEL9ifvd15|K+T>D2r)W^y!`p zI3`8N3iFV4YpLd0jF+>7Y{2=-Q@-3V{FjgKRNpN~am9z?26y+nrFYO{TF%^#$Q&g2*}6MYM#^lx)( z&P9XNLm+pnIKZ8P&vg#fL%g+Z*>$dOFiJsH;g4_nOV7)uvG$z#*p53>o$TgdW=6F~ED{nNl0Oc@?h-FDEbA7DX{w7^6!#% zIbKs0GC6NNe^b~jeyP+0vw9W6D1CfQNsG@u$=b&W)4N*UkQHX|QkS=v3{jj+0PVWV z$)a1ospSQ|wAh;tsx&ncoo1&rb!vYflUjqtv)m}X=_#dyS*N1BUo_CWcV*1IKxU@V zRgjFoVPipdf*f*uYv9EsMPPPJz>rQjCQIIBVW^Qp^R8QuexJ6z-LNWRovx5xRLTxL zTS0_6*}P*&VaJ8zO*WX|nX6TJm0VY-L=EmmEDbsE$Jm*_&~u#&J_;z<`CY>0`jJm} zh1f=uLIlCA%kJj{=br*aenhi&K0s38VZVBv`5ZDq{H$~;IYnm!*Nm>y(D=8zqoxWW zN$Nl1sH@tEsWwVGdOjbTd;K|R^&-1|?cS3jC`iYI{g6`|n2~$5LL%Vu?_BhT4uul@ zz>cG@QSO0rb>Wi6BE?jn=Zo+cC^10#zMnw{$T%l|$#Iu_M;K`7%?HnhL2gHYkLv&? zTBG}Q3>y3Ub;PsYCs<5IVAuBG>agr{m4wHZ?R#r+S^<10z1|jm(!TxOa<#ONcbDyf zQmMA(0}DMj9cQ<*f%?2_60QDU)R8nVBTDw0u6)z{6ZLN5#Ftk(FZEHv%r-*iJ?AZo zcHeu4shp`jhTdO%$>m0*iyxqHx{r#K6{4#US57@Oxarlaq5{V9hkkkpx7J>J?^=A6 zz9GeH!OoSjJac4Tjkytxb#yMyu3wY<<(u zeqb_wvd=C%@J7MmtdGH~{f<7SDw4gM85qpej%w{;3QC+W@D< z3QQ+u{G1B8 zg@4!Lo&LtQr)z=0FC$%MC{S#IIUkWu)z|8P_v@6uaBTc-dJEa=G})SS{(yJ`cV{uS za)5^#DO_>kS?$YU+Q9(I(QnkGddXsFBJEl`gvp0?Phy5xuitsd_oPTK%SjMf(B;zo zhOeUU^T^dCLW$_xC4RZzgcjk=^ z516W9hgks$@%t`c-4_K{uItflTyS=M-wG>xu^m!!^!{?wajQVsS9z_*)l1(>`96GyI)|htyGV!ub|oVy5|YmdS!)%QPaKWsrfLPxZyn zG{wV=R3;>VyX5ACY7GrV*$`dGkZqrqDZa=1b?T=~DAPa&(X?|khr}hMbZcm9jsu}X zUYMqIg$` zuCe8ldn2?#2IG2M_}fu^xA{?^=PPj6n4Bi9(WO)}dqyoNaP(%7cWjuS@hw$ zKbnJsYC2vpQ*FmOJFn~iL2Aae?F@0a^ACFq#Y~+FBaE}FO@95>Imz+#4F}2GZt?+w znfGAI@p=;+cDta*Hyn5AoBQCQkn_txrdG2a(DiQ06T>knf|Wc&3e$FNM`O_er4(_- zr~HH`Nxg><@|W`dmlSSaX%hy_Quisjk??jB8Q;)CxwzJ zob#h~n#R19)9$A(QdV%Ki$)8P+@SNohRoy$4fM{+4py#nfI8nehMq}G$3-b>gj@q9PCSClT__v)SsbbGsL+J4tvJH;Cyl`30S?Uv9*N?Z)x+YoT~25p@- zDCGq9_&BU<#=d>1OZz}hdm3iT{t8jo7$M@%qmj4E+fR}xq>}Ke`wiP!P6osp7vl=- zQl2C)gxITbz(>&Vz>Q8zFemT_Uupg2rJYMxjU2+_@O5o1# znY%t39oQe;6R|623_P}ofXDAV_O|pL8#2g%Wn$zu_>{r*1@7KIZpp~iXJTkqKXf$o zxZI!_OA_eqlFBmK6p6AsvAY8;f+!wnz&r1~3QtAZVUayKvD+*)JFqbvhlo~ad*CJM z&mMP6MYT3U#q-g0wml27gE86Yv3@EgZsN54T!xz>H?QX$#1_>YA}+DX^7$a#UE%#R z)vcF}jdL(&hkHht{55>0|LFe4W>L!ora9g2V9B5*o-}*ZG=K!&Vxl{>7jD&Mg~;JY z73lLX>T0Kon9v%PJ)-GN+PIi=|LtS|h==fV_tNa@T2gude zN|Jkm~zj|~@@V>drA>n1j;*4=LUciaxYg5QG zJRH)}fWKwfaiJ=HThF-qex?}B6N$iCMWlwM*fD+6<+=w)l7x-$7IFI3Yr|c^^-sEf zy0u5n95-QxqkTk4Yt6-Q+5Y214dzED-k{e=B16E4 z`+B$k!{`nmft=uUbmul|EuqvBj%A`|2uU-r~)sU;+lery1Oa9&E1#`fRJCJzM@5jfDlBXTGeKBL7q;QlpF8>vEc zeUAK?Ao_L%85cpJ0p(GWc>4ZJzVXo89*}k8PlFw(K6uLI!~{CkalK04e;n6zn{dw( zGpI1wkU|sBpH5Kq9$_GY11Z_*A%!i{>o!a9I*kxdLi7?hb8}NV#5wii>a42GFGaE= za;~5-9dEC?&jf_(^^Sr$ZGhvl@#J7-Klh2Nrd7b_Ij=U&SH!UF{O5LS(x=)drnYrX z9R)f<;;+$wW9G*?yH~pa_F6!ie-kT&auI z&kY>(l2VLQAg8I3NJeskG;m-F5h#-0thj9?-w3buH~)do!7Y+4^1yQrm)_D=QxQNt zo$Tl+zF<)sD^NIjx$CwBe6%O(Wxe{m`nr{BGY<7poT#9D#b?_-2@P})&k^@EcV>md zgh05144nG2atD35<2B?MjYqKf(THucN!pkB_hgc=OPu0sM!bDZ;&U!H{uj zq@*+55BFn~zTa9`M6QY4;7B_?&kbrBfetucZ>!skrD(vavh2I4&?l) zl68r3gTNtHpYKu>rmbmTNhwR?sOD_nFk^0{7Nsqx&zPy`UW@sjNM1GvJe4_0V7FV% zU3Tkgri#pV=x~GxxW0CR?ApJZ`#=&5sp5(8sNNn*Ag5J6BRrKbR7!hi5sn73?oj6a z{n0+_EXj!53rUZrb0hBk0*J~l03&{9D8!Cm!pl6Y34wp8y9dQyd9(yo0TUD*&Cju2m5}A3d(jl{Vy2dPRhQk^X%+hx@D8%L2_{ z(rEj>GeLzHjCJyc^z<|VFM~@p&_M@1dBzRhsZvsObBRi8XnV%$k#skfNScou40(*z z5{7Y{j#w#)QRt2OtfHJz@FIFE*XToC3X>#lSc&rF<|@Cr_mv479cVPinugd ze>I>5PxkOaz|lX21dDh2en|LU@Lj}^M97aQp|cp^w?5ul9sa}vJjNTMu^^@Zlhd~< zP{W(g*ntkij_tUdyOWn)Rrkz@>0g$-W=KxGvH)f^WvMtk4emX>bx3n|Bs`w}l*ddZjwyc9Zp$ zW@JC%{D(d}%L6@iZ42hdA%<5MCS>Ah)H&V`eP+oUXJ^u~G#51rcP)yNIb)3JI|;W* zcTwcG*%f@$;HpY59)y8`S%{rAr@-jb*_X?t51GlIwXX2(V+84qqpar1+qltBH@k^c zC(N^NEdssnn0l!CsG^cERiCXVEDZ3e)@k@B+n%@FNOWJ>p-bj(T9D9Cc2nw6jD$g@ z8vB7G>Fp2eA|qcMzD>juv~)??I1GU=`-vcZe~cAG7e+*MldOXe|C~1hFuY^~zy77?J@E2~?Y%AOHw63ah5E;Qi>63d!a4EFHthOG<>3n>`4}!^c?#xM z95CHu0GuS=3{}zXFEP}eygKa#kd5#C?D6c(g(EMQpX9rE7t62b0`Q{KnbW_ge@s7| za^Ad|Ztx=#DZ8iup5OI|{-782?xw6SoWjOMr7~`@S!AV*&G)%M6BT3H-^t(^2m!yT zzue0E%+Q1ov^Eiq2bh;dO7@!JM8K#Bqe}C(e{x2J>@y=2{r!@NZADDS2KBA{E=OkY1CjW9;{%R7PJdUQC(mtzK{6I+Tn-6EuGRH|o_I_B(X%1%Tr}ZX1l@PN zLhZbj4u6g0tkCS=%OKG!s-MT5Zf>hrhmfn}HcGy-aO>sEX)q6=X^j*&FbPhfI=Mw0 z59$d!Hd+&mKaY#4M4xM-k^FvSyx!d<5;Y++wt@Nci|7U(DasLJy2BeKoqnQvXUYS~ zpJP!^@;BetKD5^D`jcH0ll#zkN8%;Vsn|xJaH?*<6$lnuj_ChzQQ6hmv<>5xk2*o^ z(7c(AQy_@8%(Sc%o_2bz9BtHakp%a5+RGm%N|a)6F3Jqb{MSF6xMg@G8c-)vKJ}3B zgd`!xo~fMI6ydbf3T(@_-bpHJ)0U?HWPa53D;is_T`k0(aJ-8knG7?_mUDBPaI-V+Oc3x6D3KDxa>3jzvR^blH23><4NZPi1! zg2XAJUy^~U>;{^CqMDXqK5hpYMdW-E7$O7%6!(*ao)U$)5_(ObbdQ9E1B)!$N(2%{m3x#qf$bGxi&^BxO?#Gf4+- z2jsJ6zP)dotWaKjjjz(Krn%By_1|4* zx0fIyfbgrWNjhe<6MN!Ecf$-951m5}$CX4`Mn45iv`uSThO>wogk~{MJt-`?tCwBB zB&9Y7L2spgqlpbEAhD<#ILF(Idjye-NXo4u{-RIBku5NQORq#m3P_%pc|lfP^iH%z zG%9M`Uu7PS$-{kwT2 zO-``i*NXUhc^Ys7`HoSMgy)=7iwgBuE30UaS41PJ zrl+in)4W#cu*v#{WTGVIZmv-9dE&MiKSYz$V6^7zVR&0V<}!;WwWT6LL?2Jb;@)BV zqB@^a-z1z~S;E>0n{dJb?(lj@*O<<6_yfvIjF}@@6~)zL3h|X_-!~?@lnlK7DGu`bQKR7E_x);1 zbSj&0mJ-sZq{QYbtZ*YEj`PbeIB4tPo982580z5|Cdn757OOMCcH_dKqN#7`7Z#Cp zW;K%!9laMbW(G%Ue1>@*3vQ3~zZFQm@VoeGPwVGGY=4U-yqTwjI8v99UvMAX`Z7A% z$)!-xVFP%3T6CXi;=9RuA#i^q_3o1zJXm#kAdjte(k&aep`xGqliHcuaP@ib+7*t< zn3^B!dQuzmKl1tln9>f55I zn>(J}_wIRC(3NpI^s<$)Bpi6ZP+?%x7eP6H0kmNIdcv8cljlM)igyc$?TWWm3P1+e!Gkn>f-KYf47^lIW1zc;f6~LMQ9)yKXVkY*^eF7`4y6SMqA%W0H{|{eUvj<5p{GN5;pN;Hq{WY<rn1j{nF!wV`*getHtwo;aW&^m0l3?E&uh@+|Z9Gs7h&Gr(^;9UBP}H zwL`~VWDIazt<< zb)K6Y!++=nW0~jGIg%m#%a2@VLWOo4dP%+t55cX;3;MfO6?HS4t;2|d@|4t{q>;hA z-9Cg1y6kS63qpA;1h=0po9a9$VU`e7*D&rn1F-Aly(8bh1$Oz~k~hWJT)v;?(VTgL z)l&MN^mHn{9&hRLgT>>5~ zVp-CNG~yZ8Xsx~BVXbDTT;z)GnI?@DPlbM$*K;n?*1IQ0$H zU2H*vbAnI#82-6)EuTs8q#5Mt8}De}IK4%d3#{iBC-!;SBt9B0T8EAel5M@J ze9Is0o}b0<_|le==eA_8eEz~S$~W!<@VOJXEVFqH4Y#R1g%tb?n&%3k`JJM|+^%C2 zExzZ|m0g-I?u_6S!Y0@F01jNKPm>Sq+!J)MW-rID^LeR)k)k}Y|6on7;84)Z#nZ{f zJI7%Hp7(Tew^i_^YYWqDqKSV`Fze1@C+pb|^F1=r&{U-p6xS>#Y_i8^Z1 zxUya|-HS<$)+?d~Z`fDtD?Say(F;s=Gk>@ZTl6bhEYiqImJNszLX8Ql@aDp;yKfqN z7hVo?fn%O>V8CA|mhZo;JgXaMLC`GG(VOvlycW{nRGOfG3L*Zk#ONvYo{OA_c&K7o zdksTmdvm(K%x%O^L%z?S$q-%?8Puz(`x1P%p*7l%iQq+rtGdEy5w#(bLY&Wc#>n2g zvJ@$2z7VAp@#gpO@iAg~x!a$_yn36!pn^g|LegWWe+nHJ7T|2p^&O>}&U zQ%GS$E_Pn;j*5-`tfx2B6GPc~I#HyOBl|h-S6X&9&Q+05EFFQ39~#>WM(GkuXXkfU zM~efy6GhdPm2ou9xF))4-Lxw(c=$)4E70AoDCnp!@ACr((phjn+dsPOE zgk=^~ds)h<9i$pd>gss^G@*fDSbn?EYw_gqYZe4P3ROi?+itMsLSFtI_miQ zonKW54(4F@XF4g=CnhGWW1}VKsloC(l)GhB#~M01IiPR1^em!AUz19Rjf3@pU|=%X>H>eswZ zCLtvqSZeX=)Ykz8`&7uP!;|(+WC6zYUR7By+|!lg8fMf7f0Tqx;OCMHDful7mi;(} z&?|kgxVV`5{d;e%)r^E{`1#cSOa+XPStrS&6fY6NgI*cqDtfc+GVh&j4v4#-@_xvF zDP!`=4nLpOVY$^Oqi8BNpYUpxTOyoSx^UJNp?3uz=(DRJ`F%RGunAoaUwoFQiBGW!<- zGsNkK_58~bTdU*qy33JcKReeWI^IHlzx8Va#!pRk+))v1QqynrqAlY$ko=rJWtF&f_M5Z|Xh2JYjB zr{gEv;}fN&PL(@wcW9HYFkG9b#b&i0!Bw~M~85oxyxeQHhKw3}DOsT1; z@A5h5?5L(KmUKuGgze0dEX3Mhnh5KhXG01I% zUs9t8DC~X5yeBURFTFz^>XKF8lgArUTV0}WT>ouqMlbtDSiYg{ap!6sQ>(%y+OePZ zv#!yMpgeoseyiSxL4?2f!h(S5Y_0~L&z`MPu8MzV=&IjLT8Pj;rF9?LCX%bg{Bhi_ zundh-rROZTGbY(7omyE7NtbK^Q*VgYSD^@8+at7yHnbl*IEF7k-M(r7K+Yx^ZZd}PA6FZT|{kApLdl`%bFsSHBm% zruw6+y0^I^N=ymVtp+bW<>Ztqz9y$?6%61Qlvb5X8P90R_gyi)sO<;+{PcO%#p5RS z{r~VZg^+ByCElOQP4uUmo=NPf0ZQX^axLxbW)2eEOdZ+wMx)GCt3LF_P)<%S<$zu@ z{JBHgWZk^e`j^1qs@nvm3f#gh^l z^^QbBMlnK>5P$PF$)s4AqlcJ*Qn5Hs*c(ZzF#q)`KljZ(MY&`*OCp587sq>LiQ8#p zaF3-m!U-MlgbTi$#C}^iTa;MRD)kV~e3k~Tr85lf#50}3>1&R&*KJfnKA4@UND8BM%E=Ovx=` zUG}nQ+vKKq2~4M3oe?yZ+Qyk%!h<>mowrB)rt(JrWK@x6`dv(B`15emG8akR?V*@T z9}R6^dJf5#?dd_O;i>+a&}aZ=!_32v`cR$JPm{9+h+1h$PAy8^eWWpotCln6R&NYh zzuJ{8HwTZ}YU7dHqV*zye&w>6>K-N#bO?H0)q>W`Jh=q-n}bhuLqOak>f71L?*R?BR?%>el``a+kpLdpy}B zrv(%?_YtWJ>RUk3R z8Du)P;HB`T^8N#`d&tB?T$1vVB zA{vLY+7AdW7tc!Y!AY84qE%}-qyDGM&qIE%(f1dxy=pOiCp%Z=YNNeT{C*Bn7+t=o zHh=r_&9hGLzbrrMrK7F$N28Mc)>wQ%{oS?L*Qmh9h-QmDtepFb1?@$yo@CGq)lVgX z*fgQR07;fH6AHcpbKzoCo}$AyDr-D|IoMDj=f zU2ef#9n6ow?7=PJ-!<-Eto|e0-z)#==C9BB*Mz#xSd$14%E`a}rrG_S+^Owqra-dn zt$MZaa#WkB+!w|O)2KM~P?Z0=hItu?D)XdnL*ZTCz~@q)#76s`KgR=8-|p{aOh1Ho zwq&PBdL|gmj2@(M5i-?CBL3G*9Wod)j^&-^I?jk#RsoV;J#o9G>6bIP`A8naJ|Ww# zBQH289Q8bGxwtA4d~%mIr&R7=CJk}*G7HoG@8GuvstO~8{eq5GijUcV_yx}T^ufZ< z6D39nQqxQdw6&je@&WR+a>^Dj`|7f19)v0|RJJ#^hf(Bp#$2ztzJ>m8!Xsh=imN}D z@l1;9#{-k>^Ts9@<4lJtrd_!Rhyf<^CQ#fnuo`??q_-WjGxCJ{6+o*1IOviN5#vX-t}%737Bx z`B^zq#Vv2-T{dl_cOSk;`Rb7k?)UEp>|y1pUA6A)Egb7m3Wu3Q?q2^DZ-w2J2G>sz#};m9w%{y^H07^Cf-X#Jfrh;6Qc|IO+FV2EA1)stE2##CHCr!0wIb zI1B_ozY7G!WcHOrN}v0wOt!f?60*@i+qQ6Qp4|z`1=ERigC&hqnVF=vwoeUrty)hB z;yNkr$p5vygp}Z01Z8AO-HC?x`g4upLC(tyMIAfMBfxNEQ2p>9wdwbSE+^xZOg9_f z4%|%S@a|yWrs1Idj}(0H``xrH&Bs+oZg=!pQo;Dv9?(FFO^pXuLk)w8)P>A26>96< zNL0`k0K!z!RF+grG3R`g!e-j?P_}0`cZ(+yjQd|(GC~24UUdHna%-CiOUIeI2kQ_X zyY+ed%#;r6x7mvBX}E5h^3--AXbwM0XI|1FBp z#+DQfDXXz;_wcaRh5PXifBi8;hm;{Nnm&8Pe82FRQ~1tfYM46G0TwD+388={>IKi` zP4ixqRFv$D)*{_?9o)6vXpjs0z6QGMi3;t+v9ILDq`y034XOZo>tSVK&#B{KX__+F zb|vqJQ8dNszjxQL^FFP9N2d9*{X> zth-TJn8pQj=nF&L!KSCP2^8yI=f+h|vtPFbVX>;89}fkhCP)8qz}an}<-Wsh*~0GC zujw9TeFN*3@|`m=;9BMVa9xzcCt&w>aKOVJHqr%uf3m>#D`L!IcA|0N3Ke+sCo5@L z*wk8IfI$43^($Nt=L?k5c`f#*%jA-hk}O~g>#*x{p*t%ptBGjx_cb2St;9Q>Hs6-Z zgE?bDKMOC0WF?!p6_3J8QL9a^? zT~sra$w7Y+Z1ka@v(;f;dQL!6wHrwJyyjVFGDOyG>&W@>jx71xW8aok2V&Jqe$MYq zwaOkuae*0jZd?P3=wT@8mv&43{<*Vj-&bM75kcG{RL|_-;OGAt9gWSZQ>Qpls5Frw z;1r)GGd<6fTaz1EXMQm7ltwf)L_|)nIvYdU%#ZJkw7h8SM%<20?BWbGk(IdOEDIZ z5)eqyLlL$*o(@9CS65S`O_%<5dwJ=~s@JHlR;Vb~==14QT%mHNq+dXw@Il0~*x?lYQAo}r71axp zS&FD7D|rR;7nsf_BrSJN?PsB1AMPwNID;w7omwS+JS=%Q)YjI83Z)vX^czc9kk!$uIoXpsCV|DILZK7u(h^w>Uj zgA#9FU?Wu7{yl%}HsgnzgMOLu1K+-V0ZQyP`}fSBqI&zizrVyr6y8Cc1pu?;^~rIe z=_wP*BHhKy`(R4{+!*qtJATm26%=aXf>AF}#~*zmm=|;2vUYlTlL@s57<#_?#%acC zf*4cJ#~yX_vAmprH5|-&d*lE4cej5Q%?ZzMDZKv3>J)f+@?9d}N-sV>er0Q_LKf+D zd1CKrZGe-#&``g*eV`XpjKkefQ|B@RBM7y2}(ol(&%7QdY&%Yubi;EjL%r`u;>`!~m zz|SMP8wTPmiJIe>&Oco2h@zF1oD3I@{q!mS#ugMr;qi?Uxm0(?3WY++kxSIoyl``1 zYX4{cZ!@;}|7PZ4^JhDc;br3%@{8`XPwkJox1T8O%DkT0hTg&ve$gL=EVVnahQQ^Y+> z+S=RkpgWUgxdkyeckZ!9Q1K)Jvf{}NdGgDlPNdW{Ht5Uu5-2ZYjnp8{w)mfx5FA-? z-=j6=?ddAARc7fz05gqGOr(@Vy2u$ecA7MJX|4`r^7sQobYol$2y3kK+~o$OQqp~; z=ru_=^aT!V-~ajtA+1oPt+zkpf)g=j-tE5sf9?2UAZobB%oKF6)J~v}fCZ7{L1JE2 zS}_9yq?pHW>hh7k>a)Z=$LxUT0VsKQBA0=H*O+SFB(~lW<66$5%}|a4=Bi=p#d_{Z zW>(7e;WIQ66Rrd-M4t7?7ZA2|DE5KbKpTHs&TONv?ma;p*5i#aGMF6Vo`4k-0FtsF zvKMpFI7SX-%Y{7yu0!^UrUp?jUJDNsRwVi?$8;On}yFO$wuw> z_NwYP`H7l_UQjo0nEKt@GKE??ESr{0d^Zs8U_I44cCNW(awVycq!S&srh+nxdlZAD z%I^OG?#J)Cs+z@z&Px{~rt!Q|qZ~hl=pA8z)M|Z>AD;>~;aDwAPlnWLc0*?wKMOl@ zN6`vX?x^&xfB1=JdJM;szMpEl)D}KmZmv?gyXoh5v=;a8wEh(k|ITdTZxF%FK5?Ag zU4By#Kjv|R7BLM&LtP#UgrV2p>KR7N$W6=$9p#hFG$n@(1@&*Na_X`gb$kT>KZ^3-fv6fND1I2`|O&wU$I-P0kUm-Px?6u92%|&3Kn*pR|fFn zA_Bx-I`?S`pDA__zx!SC`i<{eBm`TF7l2N4l`c*O=}iZo=zZpW4MF47SxFU|Vq6g8 z&LCc61l2&I^{zDKMV%Hwh@VqD(P|kI`V}FD$C{JugllkO*}gD7(+=JfS?>FJK%^+N zm~n+}Ggm3*i&57|=ar=Wv;cn}_43#WUk>q^7qDL^v78%iFgWo+)W~;p^oRSt5YFj4 zm~Ya`>0*n;v-I0eA^n!~`)D%u=Uru{o$wc=5YF^vkWx}3yq%NJ?E1~jE5^lS;M8@4 zbfO@7ftY^r$NLd!-WM_lP2|eonrnug=TX-M($^{1GV_7`N&J#KT#xp<=S-x!zfXAo ztZi?{zVlBe%7Px0E5m8(m|X>OV6Gs_i3kv^7UDaN^^hgEjbc)Xt}UKR4j#BYEtuT~ zLc07c0z^o~Rd-wzSrrg%#yr?!T$!ZhWXqd^QvCWUaT&tZUFdUukWYZS!SIGN8#C`K z7yZ-|y1?rzQCAjnLsQ2G(nQN6WNc-AQRuRV3{Z=PSTt@!PW0}&Y1X~PkN%6nLVPjQ zFh1fgznsR&&t-is3ejj~c)kWbT+p(gj{j?+DSK1rq$L!bOszcx;RGd<6<6DgJ^P}X z0s-ZttDs1}zrv{a9u`8rXJxT428y5ZBY*tMnqVO^A-> z0y0!!y-rv`YbcWB|y;ibIqp$QDzB^gd;jDC!WQiAf{LdNEe4 z3QjVc4m0c+h-cOgxQw%wb8DBj( zFQET;gZMJz<(8bzCI;QDy+DI3d<`mk@m!)iuDQ68-CFb}5eEOm!5zcCdv6jbTSg=YA5 zk%5eUnFl?$qb{Z0$GP+ZgvMF&{^9|j{exd&jWg7?pZt1jc7Yh6zb^H1kI0)e!#cO8 z{&dX9oG3Glc>h0G1+~~7u%;o$X-w8aBBa)WrMdYKF|3MglzE54FmO2UDI~!>h3ORI zqz=#q4BH)v(U;n7pa}oIuO9<^=4jU{>=zyW6MQr5@cbxW zy2+0#VfhaVm2l%PaNZax`ic3b=A_7v`^K>63Lk+DMzAt9+-L;YP4Vc*A3fI18#UQv z4*t8Z$JJkY!SlhkHa3r^G|ikztgvy8kKV#kIxjapCGctP)|tiX#$-u|I9*SHeo-Jc zP0x&A7_@gq$Y7>&F~PfFgU|M>U5Xe&dzfO0$&akU=^t@|hGF6p$!``Omm49%Ea`zz zIEcv3AfHdnVOC`0U=}CB1=UZ#wP8c%VLp{!5K~c65yV>AInpVud!?8eq$AB%8lRf_ z3xfzQ9!XUYL({pxzyEoN@^(5Sh3z^Ql$q(XXy6o7RP1u^2uXK@&0f1acX4q^0I8tv z3b970mae}l6onx{PoF&-&L5O{`yg9FG}iVJbu=ZcEHCZ?-WD0O*egE$F*X)lys!8?drPgPdrxJzE}QYH7{YPKq(EsLB3@GBJ>3FY}+^#6GF4}T9Q@JN0#`X`o^@mx2LPfEJt1dpY zIFXUA_CaYF-mgF|g1`mNiWouMKj!#w{~wh)^BncelKyxS;2BiKQ&I7frDGfHDJXblsz0somCGt@BVtz?9QRuPCoAMgdZBeI}^}4PvByVMD*BqRgBiu7SCe#{6{#-hz=4fwkkEEY)2$XMy74AgZ-2b5BnXbYU z^$G~iW4#Yme7imKgIGi6Qgr0rK)N{9mMQxnp6sg)4Zs~GN4`;JH0>{0J(A|6M-gRp z^oLG&62U)xYor>?v zz9+iR68-bAMhp4~IH%ycC_LEy{F3NC55bP~dW$8?JR$5>!UKxW7*ag++Ir28+Yw!- zvmq78=67-&W3!^f{uxtGp?31*1%80D8h4c>X^;Bj&npFi_G+1aQP5}F28kS1R219ChB(VQwE0*#+PGuLS6 zoCkjoU?K*Ogp_FaMD2?~K^JR+a?pch$u8!W!6nUw6yh{8jxQ z%Cm}f(4D@Xjdkcr&dyv0ajGrk2Z(#_jP5J^o`Ofc5A<~v;6`eF^n-mo(Zn760*#7_ zGQl=Ef4+&imm^uDNC;QR94wW08?ul&>z2S;{2xob*biIJarfIN+DGtX{uOxEcKBAM615My;d*gs3c$@2bi1Avp#MXjnB9 zPQ#@hClgoFYl?Bl;t+OCDG2`o(pMtEx;+dUSf#lz^zm*2%@Ye=?4N!}S^uvfZt5f) ze}t8KP82=?fv9jX_mN~==K3GnISa|NW;Dl@OPT3?lEDu6jK)U;fHN6l zulS5v)3m`8aC;V7XgmR(iq|^W4`9_7*+zw^WJ6C%x#Quk3 zv~PXGWolse!1WLts8}}yo8-Tlx&s48>&Yi2B-Bt2al*&G&P0%3@W=V&*EiO}$TiGX zdsFhnhb;6#dOi%|No5Z`xeCMY4UMwC#irq&25>ZjhfXbg(~`RWzRDE&QPjWkG~SIf ziiCU<(^L=0WXESaK6B`?9k+GJOVs46ADOXdUe@7(V1LY z5F!evVA3syLY)@j6*1n%NPXbJ32#3)OjQ=bM~Q3*>%iNqo+`CX^c?TJA!3#|%&DX> z4L6+v1>1IF>0KE1b}x!xvigXBSVb>&{1c{ZyvV}1>iHx%TNXJ>-G_SR)>f3f(Ie!= zc&EEdb*<7_wCS|Z1?Jad)H{c4PUsltE~7Qcv-T(@EyVA5KbO*pod2*9S;E|KB=g;H z1vV*D+^k&eZg~j>klxjjDRUtyUyy4Jo3yfaTTVmgBLLt_W2{548^!tR=;{(YAOJ-u z2r@u9{n9nH - - - -
- -
- -

Introducing Bootstrap.

- - -
-
- -

By nerds, for nerds.

-

Built at Twitter by @mdo and @fat, Bootstrap utilizes LESS CSS, is compiled via Node, and is managed through GitHub to help nerds do awesome stuff on the web.

-
-
- -

Made for everyone.

-

Bootstrap was made to not only look and behave great in the latest desktop browsers (as well as IE7!), but in tablet and smartphone browsers via responsive CSS as well.

-
-
- -

Packed with features.

-

A 12-column responsive grid, dozens of components, JavaScript plugins, typography, form controls, and even a web-based Customizer to make Bootstrap your own.

-
-
- -
- -

Built with Bootstrap.

- -
- -
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/webapp/vendors/bootstrap/docs/javascript.html b/src/main/webapp/vendors/bootstrap/docs/javascript.html deleted file mode 100644 index 9166fe35c..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/javascript.html +++ /dev/null @@ -1,1805 +0,0 @@ - - - - - Javascript · Bootstrap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

JavaScript

-

Bring Bootstrap's components to life—now with 13 custom jQuery plugins. -

-
- -
- - -
- -
- - - -
- - -

Individual or compiled

-

Plugins can be included individually (though some have required dependencies), or all at once. Both bootstrap.js and bootstrap.min.js contain all plugins in a single file.

- -

Data attributes

-

You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first class API and should be your first consideration when using a plugin.

- -

That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this: -

$('body').off('.data-api')
- -

Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:

-
$('body').off('.alert.data-api')
- -

Programmatic API

-

We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.

-
$(".btn.danger").button("toggle").addClass("fat")
-

All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):

-
-$("#myModal").modal()                       // initialized with defaults
-$("#myModal").modal({ keyboard: false })   // initialized with no keyboard
-$("#myModal").modal('show')                // initializes and invokes show immediately

-
-

Each plugin also exposes its raw constructor on a `Constructor` property: $.fn.popover.Constructor. If you'd like to get a particular plugin instance, retrieve it directly from an element: $('[rel=popover]').data('popover').

- -

No Conflict

-

Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.

- -
-var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
-$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the bootstrap functionality
-
- -

Events

-

Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is trigger on the completion of an action.

-

All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.

-
-$('#myModal').on('show', function (e) {
-    if (!data) return e.preventDefault() // stops modal from being shown
-})
-
-
- - - - -
- -

About transitions

-

For simple transition effects, include bootstrap-transition.js once alongside the other JS files. If you're using the compiled (or minified) bootstrap.js, there is no need to include this—it's already there.

-

Use cases

-

A few examples of the transition plugin:

-
    -
  • Sliding or fading in modals
  • -
  • Fading out tabs
  • -
  • Fading out alerts
  • -
  • Sliding carousel panes
  • -
- -
- - - - -
- - - -

Examples

-

Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.

- -

Static example

-

A rendered modal with header, body, and set of actions in the footer.

-
- -
-
-<div class="modal hide fade">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-    <h3>Modal header</h3>
-  </div>
-  <div class="modal-body">
-    <p>One fine body…</p>
-  </div>
-  <div class="modal-footer">
-    <a href="#" class="btn">Close</a>
-    <a href="#" class="btn btn-primary">Save changes</a>
-  </div>
-</div>
-
- -

Live demo

-

Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.

- - - -
-<!-- Button to trigger modal -->
-<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
-
-<!-- Modal -->
-<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
-    <h3 id="myModalLabel">Modal header</h3>
-  </div>
-  <div class="modal-body">
-    <p>One fine body…</p>
-  </div>
-  <div class="modal-footer">
-    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
-    <button class="btn btn-primary">Save changes</button>
-  </div>
-</div>
-
- - -
- - -

Usage

- -

Via data attributes

-

Activate a modal without writing JavaScript. Set data-toggle="modal" on a controller element, like a button, along with a data-target="#foo" or href="#foo" to target a specific modal to toggle.

-
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
- -

Via JavaScript

-

Call a modal with id myModal with a single line of JavaScript:

-
$('#myModal').modal(options)
- -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-backdrop="".

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
backdropbooleantrueIncludes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.
keyboardbooleantrueCloses the modal when escape key is pressed
showbooleantrueShows the modal when initialized.
remotepathfalse

If a remote url is provided, content will be loaded via jQuery's load method and injected into the .modal-body. If you're using the data api, you may alternatively use the href tag to specify the remote source. An example of this is shown below:

-
<a data-toggle="modal" href="remote.html" data-target="#modal">click me</a>
- -

Methods

-

.modal(options)

-

Activates your content as a modal. Accepts an optional options object.

-
-$('#myModal').modal({
-  keyboard: false
-})
-
-

.modal('toggle')

-

Manually toggles a modal.

-
$('#myModal').modal('toggle')
-

.modal('show')

-

Manually opens a modal.

-
$('#myModal').modal('show')
-

.modal('hide')

-

Manually hides a modal.

-
$('#myModal').modal('hide')
-

Events

-

Bootstrap's modal class exposes a few events for hooking into modal functionality.

- - - - - - - - - - - - - - - - - - - - - - - - - -
EventDescription
showThis event fires immediately when the show instance method is called.
shownThis event is fired when the modal has been made visible to the user (will wait for css transitions to complete).
hideThis event is fired immediately when the hide instance method has been called.
hiddenThis event is fired when the modal has finished being hidden from the user (will wait for css transitions to complete).
-
-$('#myModal').on('hidden', function () {
-  // do something…
-})
-
-
- - - - - - - - - -
- - - -

Example in navbar

-

The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.

-
- -
-

@fat

-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

-

@mdo

-

Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

-

one

-

Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

-

two

-

In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

-

three

-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

-

Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. -

-
-
- - -
- - -

Usage

- -

Via data attributes

-

To easily add scrollspy behavior to your topbar navigation, just add data-spy="scroll" to the element you want to spy on (most typically this would be the body) and data-target=".navbar" to select which nav to use. You'll want to use scrollspy with a .nav component.

-
<body data-spy="scroll" data-target=".navbar">...</body>
- -

Via JavaScript

-

Call the scrollspy via JavaScript:

-
$('#navbar').scrollspy()
- -
- Heads up! - Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the dom like <div id="home"></div>. -
- -

Methods

-

.scrollspy('refresh')

-

When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:

-
-$('[data-spy="scroll"]').each(function () {
-  var $spy = $(this).scrollspy('refresh')
-});
-
- -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset="".

- - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
offsetnumber10Pixels to offset from top when calculating position of scroll.
- -

Events

- - - - - - - - - - - - - -
EventDescription
activateThis event fires whenever a new item becomes activated by the scrollspy.
-
- - - - -
- - - -

Example tabs

-

Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.

-
- -
-
-

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

-
-
-

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

-
- - -
-
- - -
- - -

Usage

-

Enable tabbable tabs via JavaScript (each tab needs to be activated individually):

-
-$('#myTab a').click(function (e) {
-  e.preventDefault();
-  $(this).tab('show');
-})
-

You can activate individual tabs in several ways:

-
-$('#myTab a[href="#profile"]').tab('show'); // Select tab by name
-$('#myTab a:first').tab('show'); // Select first tab
-$('#myTab a:last').tab('show'); // Select last tab
-$('#myTab li:eq(2) a').tab('show'); // Select third tab (0-indexed)
-
- -

Markup

-

You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" or data-toggle="pill" on an element. Adding the nav and nav-tabs classes to the tab ul will apply the Bootstrap tab styling.

-
-<ul class="nav nav-tabs">
-  <li><a href="#home" data-toggle="tab">Home</a></li>
-  <li><a href="#profile" data-toggle="tab">Profile</a></li>
-  <li><a href="#messages" data-toggle="tab">Messages</a></li>
-  <li><a href="#settings" data-toggle="tab">Settings</a></li>
-</ul>
- -

Methods

-

$().tab

-

- Activates a tab element and content container. Tab should have either a data-target or an href targeting a container node in the DOM. -

-
-<ul class="nav nav-tabs" id="myTab">
-  <li class="active"><a href="#home">Home</a></li>
-  <li><a href="#profile">Profile</a></li>
-  <li><a href="#messages">Messages</a></li>
-  <li><a href="#settings">Settings</a></li>
-</ul>
-
-<div class="tab-content">
-  <div class="tab-pane active" id="home">...</div>
-  <div class="tab-pane" id="profile">...</div>
-  <div class="tab-pane" id="messages">...</div>
-  <div class="tab-pane" id="settings">...</div>
-</div>
-
-<script>
-  $(function () {
-    $('#myTab a:last').tab('show');
-  })
-</script>
-
- -

Events

- - - - - - - - - - - - - - - - - -
EventDescription
showThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
shownThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
-
-$('a[data-toggle="tab"]').on('shown', function (e) {
-  e.target // activated tab
-  e.relatedTarget // previous tab
-})
-
-
- - - -
- - - -

Examples

-

Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.

-

For performance reasons, the tooltip and popover data-apis are opt in, meaning you must initialize them yourself.

-

Hover over the links below to see tooltips:

-
-

Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. -

-
- -

Four directions

- - - -

Tooltips in input groups

-

When using tooltips and popovers with the Bootstrap input groups, you'll have to set the container (documented below) option to avoid unwanted side effects.

- -
- - -

Usage

-

Trigger the tooltip via JavaScript:

-
$('#example').tooltip(options)
- -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
animationbooleantrueapply a css fade transition to the tooltip
htmlbooleanfalseInsert html into the tooltip. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.
placementstring | function'top'how to position the tooltip - top | bottom | left | right
selectorstringfalseIf a selector is provided, tooltip objects will be delegated to the specified targets.
titlestring | function''default title value if `title` tag isn't present
triggerstring'hover focus'how tooltip is triggered - click | hover | focus | manual. Note you case pass trigger mutliple, space seperated, trigger types.
delaynumber | object0 -

delay showing and hiding the tooltip (ms) - does not apply to manual trigger type

-

If a number is supplied, delay is applied to both hide/show

-

Object structure is: delay: { show: 500, hide: 100 }

-
containerstring | falsefalse -

Appends the tooltip to a specific element container: 'body'

-
-
- Heads up! - Options for individual tooltips can alternatively be specified through the use of data attributes. -
- -

Markup

-
<a href="#" data-toggle="tooltip" title="first tooltip">hover over me</a>
- -

Methods

-

$().tooltip(options)

-

Attaches a tooltip handler to an element collection.

-

.tooltip('show')

-

Reveals an element's tooltip.

-
$('#element').tooltip('show')
-

.tooltip('hide')

-

Hides an element's tooltip.

-
$('#element').tooltip('hide')
-

.tooltip('toggle')

-

Toggles an element's tooltip.

-
$('#element').tooltip('toggle')
-

.tooltip('destroy')

-

Hides and destroys an element's tooltip.

-
$('#element').tooltip('destroy')
-
- - - - -
- - -

Examples

-

Add small overlays of content, like those on the iPad, to any element for housing secondary information. Hover over the button to trigger the popover. Requires Tooltip to be included.

- -

Static popover

-

Four options are available: top, right, bottom, and left aligned.

-
-
-
-

Popover top

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover right

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover bottom

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover left

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

No markup shown as popovers are generated from JavaScript and content within a data attribute.

- -

Live demo

- - -

Four directions

- - - -
- - -

Usage

-

Enable popovers via JavaScript:

-
$('#example').popover(options)
- -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
animationbooleantrueapply a css fade transition to the tooltip
htmlbooleanfalseInsert html into the popover. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.
placementstring | function'right'how to position the popover - top | bottom | left | right
selectorstringfalseif a selector is provided, tooltip objects will be delegated to the specified targets
triggerstring'click'how popover is triggered - click | hover | focus | manual
titlestring | function''default title value if `title` attribute isn't present
contentstring | function''default content value if `data-content` attribute isn't present
delaynumber | object0 -

delay showing and hiding the popover (ms) - does not apply to manual trigger type

-

If a number is supplied, delay is applied to both hide/show

-

Object structure is: delay: { show: 500, hide: 100 }

-
containerstring | falsefalse -

Appends the popover to a specific element container: 'body'

-
-
- Heads up! - Options for individual popovers can alternatively be specified through the use of data attributes. -
- -

Markup

-

For performance reasons, the Tooltip and Popover data-apis are opt in. If you would like to use them just specify a selector option.

- -

Methods

-

$().popover(options)

-

Initializes popovers for an element collection.

-

.popover('show')

-

Reveals an elements popover.

-
$('#element').popover('show')
-

.popover('hide')

-

Hides an elements popover.

-
$('#element').popover('hide')
-

.popover('toggle')

-

Toggles an elements popover.

-
$('#element').popover('toggle')
-

.popover('destroy')

-

Hides and destroys an element's popover.

-
$('#element').popover('destroy')
-
- - - - -
- - - -

Example alerts

-

Add dismiss functionality to all alert messages with this plugin.

-
-
- - Holy guacamole! Best check yo self, you're not looking too good. -
-
- -
-
- -

Oh snap! You got an error!

-

Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.

-

- Take this action Or do this -

-
-
- - -
- - -

Usage

-

Enable dismissal of an alert via JavaScript:

-
$(".alert").alert()
- -

Markup

-

Just add data-dismiss="alert" to your close button to automatically give an alert close functionality.

-
<a class="close" data-dismiss="alert" href="#">&times;</a>
- -

Methods

-

$().alert()

-

Wraps all alerts with close functionality. To have your alerts animate out when closed, make sure they have the .fade and .in class already applied to them.

-

.alert('close')

-

Closes an alert.

-
$(".alert").alert('close')
- - -

Events

-

Bootstrap's alert class exposes a few events for hooking into alert functionality.

- - - - - - - - - - - - - - - - - -
EventDescription
closeThis event fires immediately when the close instance method is called.
closedThis event is fired when the alert has been closed (will wait for css transitions to complete).
-
-$('#my-alert').bind('closed', function () {
-  // do something…
-})
-
-
- - - - -
- - -

Example uses

-

Do more with buttons. Control button states or create groups of buttons for more components like toolbars.

- -

Stateful

-

Add data-loading-text="Loading..." to use a loading state on a button.

-
- -
-
<button type="button" class="btn btn-primary" data-loading-text="Loading...">Loading state</button>
- -

Single toggle

-

Add data-toggle="button" to activate toggling on a single button.

-
- -
-
<button type="button" class="btn btn-primary" data-toggle="button">Single Toggle</button>
- -

Checkbox

-

Add data-toggle="buttons-checkbox" for checkbox style toggling on btn-group.

-
-
- - - -
-
-
-<div class="btn-group" data-toggle="buttons-checkbox">
-  <button type="button" class="btn btn-primary">Left</button>
-  <button type="button" class="btn btn-primary">Middle</button>
-  <button type="button" class="btn btn-primary">Right</button>
-</div>
-
- -

Radio

-

Add data-toggle="buttons-radio" for radio style toggling on btn-group.

-
-
- - - -
-
-
-<div class="btn-group" data-toggle="buttons-radio">
-  <button type="button" class="btn btn-primary">Left</button>
-  <button type="button" class="btn btn-primary">Middle</button>
-  <button type="button" class="btn btn-primary">Right</button>
-</div>
-
- - -
- - -

Usage

-

Enable buttons via JavaScript:

-
$('.nav-tabs').button()
- -

Markup

-

Data attributes are integral to the button plugin. Check out the example code below for the various markup types.

- -

Options

-

None

- -

Methods

-

$().button('toggle')

-

Toggles push state. Gives the button the appearance that it has been activated.

-
- Heads up! - You can enable auto toggling of a button by using the data-toggle attribute. -
-
<button type="button" class="btn" data-toggle="button" >…</button>
-

$().button('loading')

-

Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute data-loading-text. -

-
<button type="button" class="btn" data-loading-text="loading stuff..." >...</button>
-
- Heads up! - Firefox persists the disabled state across page loads. A workaround for this is to use autocomplete="off". -
-

$().button('reset')

-

Resets button state - swaps text to original text.

-

$().button(string)

-

Resets button state - swaps text to any data defined text state.

-
<button type="button" class="btn" data-complete-text="finished!" >...</button>
-<script>
-  $('.btn').button('complete')
-</script>
-
-
- - - - -
- - -

About

-

Get base styles and flexible support for collapsible components like accordions and navigation.

-

* Requires the Transitions plugin to be included.

- -

Example accordion

-

Using the collapse plugin, we built a simple accordion style widget:

- -
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
-
-
-<div class="accordion" id="accordion2">
-  <div class="accordion-group">
-    <div class="accordion-heading">
-      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
-        Collapsible Group Item #1
-      </a>
-    </div>
-    <div id="collapseOne" class="accordion-body collapse in">
-      <div class="accordion-inner">
-        Anim pariatur cliche...
-      </div>
-    </div>
-  </div>
-  <div class="accordion-group">
-    <div class="accordion-heading">
-      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
-        Collapsible Group Item #2
-      </a>
-    </div>
-    <div id="collapseTwo" class="accordion-body collapse">
-      <div class="accordion-inner">
-        Anim pariatur cliche...
-      </div>
-    </div>
-  </div>
-</div>
-...
-
-

You can also use the plugin without the accordion markup. Make a button toggle the expanding and collapsing of another element.

-
-<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">
-  simple collapsible
-</button>
-
-<div id="demo" class="collapse in"> … </div>
-
- - -
- - -

Usage

- -

Via data attributes

-

Just add data-toggle="collapse" and a data-target to element to automatically assign control of a collapsible element. The data-target attribute accepts a css selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you'd like it to default open, add the additional class in.

-

To add accordion-like group management to a collapsible control, add the data attribute data-parent="#selector". Refer to the demo to see this in action.

- -

Via JavaScript

-

Enable manually with:

-
$(".collapse").collapse()
- -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-parent="".

- - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
parentselectorfalseIf selector then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior)
togglebooleantrueToggles the collapsible element on invocation
- - -

Methods

-

.collapse(options)

-

Activates your content as a collapsible element. Accepts an optional options object. -

-$('#myCollapsible').collapse({
-  toggle: false
-})
-
-

.collapse('toggle')

-

Toggles a collapsible element to shown or hidden.

-

.collapse('show')

-

Shows a collapsible element.

-

.collapse('hide')

-

Hides a collapsible element.

- -

Events

-

Bootstrap's collapse class exposes a few events for hooking into collapse functionality.

- - - - - - - - - - - - - - - - - - - - - - - - - -
EventDescription
showThis event fires immediately when the show instance method is called.
shownThis event is fired when a collapse element has been made visible to the user (will wait for css transitions to complete).
hide - This event is fired immediately when the hide method has been called. -
hiddenThis event is fired when a collapse element has been hidden from the user (will wait for css transitions to complete).
-
-$('#myCollapsible').on('hidden', function () {
-  // do something…
-})
-
- - - - - - - - - -
- - - -

Example

-

A basic, easily extended plugin for quickly creating elegant typeaheads with any form text input.

-
- -
-
<input type="text" data-provide="typeahead">
-

You'll want to set autocomplete="off" to prevent default browser menus from appearing over the Bootstrap typeahead dropdown.

- -
- - -

Usage

- -

Via data attributes

-

Add data attributes to register an element with typeahead functionality as shown in the example above.

- -

Via JavaScript

-

Call the typeahead manually with:

-
$('.typeahead').typeahead()
- -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-source="".

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
sourcearray, function[ ]The data source to query against. May be an array of strings or a function. The function is passed two arguments, the query value in the input field and the process callback. The function may be used synchronously by returning the data source directly or asynchronously via the process callback's single argument.
itemsnumber8The max number of items to display in the dropdown.
minLengthnumber1The minimum character length needed before triggering autocomplete suggestions
matcherfunctioncase insensitiveThe method used to determine if a query matches an item. Accepts a single argument, the item against which to test the query. Access the current query with this.query. Return a boolean true if query is a match.
sorterfunctionexact match,
case sensitive,
case insensitive
Method used to sort autocomplete results. Accepts a single argument items and has the scope of the typeahead instance. Reference the current query with this.query.
updaterfunctionreturns selected itemThe method used to return selected item. Accepts a single argument, the item and has the scope of the typeahead instance.
highlighterfunctionhighlights all default matchesMethod used to highlight autocomplete results. Accepts a single argument item and has the scope of the typeahead instance. Should return html.
- -

Methods

-

.typeahead(options)

-

Initializes an input with a typeahead.

-
- - - - -
- - -

Example

-

The subnavigation on the left is a live demo of the affix plugin.

- -
- -

Usage

- -

Via data attributes

-

To easily add affix behavior to any element, just add data-spy="affix" to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.

- -
<div data-spy="affix" data-offset-top="200">...</div>
- -
- Heads up! - You must manage the position of a pinned element and the behavior of its immediate parent. Position is controlled by affix, affix-top, and affix-bottom. Remember to check for a potentially collapsed parent when the affix kicks in as it's removing content from the normal flow of the page. -
- -

Via JavaScript

-

Call the affix plugin via JavaScript:

-
$('#navbar').affix()
- -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset-top="200".

- - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
offsetnumber | function | object10Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and left directions. To listen for a single direction, or multiple unique offsets, just provide an object offset: { x: 10 }. Use a function when you need to dynamically provide an offset (useful for some responsive designs).
-
- - - -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/webapp/vendors/bootstrap/docs/scaffolding.html b/src/main/webapp/vendors/bootstrap/docs/scaffolding.html deleted file mode 100644 index 8db4fa5eb..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/scaffolding.html +++ /dev/null @@ -1,627 +0,0 @@ - - - - - Scaffolding · Bootstrap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Scaffolding

-

Bootstrap is built on responsive 12-column grids, layouts, and components.

-
-
- -
- - -
- -
- - - - -
- - -

Requires HTML5 doctype

-

Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.

-
-<!DOCTYPE html>
-<html lang="en">
-  ...
-</html>
-
- -

Typography and links

-

Bootstrap sets basic global display, typography, and link styles. Specifically, we:

-
    -
  • Remove margin on the body
  • -
  • Set background-color: white; on the body
  • -
  • Use the @baseFontFamily, @baseFontSize, and @baseLineHeight attributes as our typographic base
  • -
  • Set the global link color via @linkColor and apply link underlines only on :hover
  • -
-

These styles can be found within scaffolding.less.

- -

Reset via Normalize

-

With Bootstrap 2, the old reset block has been dropped in favor of Normalize.css, a project by Nicolas Gallagher and Jonathan Neal that also powers the HTML5 Boilerplate. While we use much of Normalize within our reset.less, we have removed some elements specifically for Bootstrap.

- -
- - - - - -
- - -

Live grid example

-

The default Bootstrap grid system utilizes 12 columns, making for a 940px wide container without responsive features enabled. With the responsive CSS file added, the grid adapts to be 724px and 1170px wide depending on your viewport. Below 767px viewports, the columns become fluid and stack vertically.

-
-
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
2
-
3
-
4
-
-
-
4
-
5
-
-
-
9
-
-
- -

Basic grid HTML

-

For a simple two column layout, create a .row and add the appropriate number of .span* columns. As this is a 12-column grid, each .span* spans a number of those 12 columns, and should always add up to 12 for each row (or the number of columns in the parent).

-
-<div class="row">
-  <div class="span4">...</div>
-  <div class="span8">...</div>
-</div>
-
-

Given this example, we have .span4 and .span8, making for 12 total columns and a complete row.

- -

Offsetting columns

-

Move columns to the right using .offset* classes. Each class increases the left margin of a column by a whole column. For example, .offset4 moves .span4 over four columns.

-
-
-
4
-
3 offset 2
-
-
-
3 offset 1
-
3 offset 2
-
-
-
6 offset 3
-
-
-
-<div class="row">
-  <div class="span4">...</div>
-  <div class="span3 offset2">...</div>
-</div>
-
- -

Nesting columns

-

To nest your content with the default grid, add a new .row and set of .span* columns within an existing .span* column. Nested rows should include a set of columns that add up to the number of columns of its parent.

-
-
- Level 1 column -
-
- Level 2 -
-
- Level 2 -
-
-
-
-
-<div class="row">
-  <div class="span9">
-    Level 1 column
-    <div class="row">
-      <div class="span6">Level 2</div>
-      <div class="span3">Level 2</div>
-    </div>
-  </div>
-</div>
-
-
- - - - -
- - -

Live fluid grid example

-

The fluid grid system uses percents instead of pixels for column widths. It has the same responsive capabilities as our fixed grid system, ensuring proper proportions for key screen resolutions and devices.

-
-
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
4
-
4
-
4
-
-
-
4
-
8
-
-
-
6
-
6
-
-
-
12
-
-
- -

Basic fluid grid HTML

-

Make any row "fluid" by changing .row to .row-fluid. The column classes stay the exact same, making it easy to flip between fixed and fluid grids.

-
-<div class="row-fluid">
-  <div class="span4">...</div>
-  <div class="span8">...</div>
-</div>
-
- -

Fluid offsetting

-

Operates the same way as the fixed grid system offsetting: add .offset* to any column to offset by that many columns.

-
-
-
4
-
4 offset 4
-
-
-
3 offset 3
-
3 offset 3
-
-
-
6 offset 6
-
-
-
-<div class="row-fluid">
-  <div class="span4">...</div>
-  <div class="span4 offset2">...</div>
-</div>
-
- -

Fluid nesting

-

Fluid grids utilize nesting differently: each nested level of columns should add up to 12 columns. This is because the fluid grid uses percentages, not pixels, for setting widths.

-
-
- Fluid 12 -
-
- Fluid 6 -
-
- Fluid 6 -
-
- Fluid 6 -
-
-
-
- Fluid 6 -
-
-
-
-
-<div class="row-fluid">
-  <div class="span12">
-    Fluid 12
-    <div class="row-fluid">
-      <div class="span6">
-        Fluid 6
-        <div class="row-fluid">
-          <div class="span6">Fluid 6</div>
-          <div class="span6">Fluid 6</div>
-        </div>
-      </div>
-      <div class="span6">Fluid 6</div>
-    </div>
-  </div>
-</div>
-
- -
- - - - - -
- - -

Fixed layout

-

Provides a common fixed-width (and optionally responsive) layout with only <div class="container"> required.

-
-
-
-
-<body>
-  <div class="container">
-    ...
-  </div>
-</body>
-
- -

Fluid layout

-

Create a fluid, two-column page with <div class="container-fluid">—great for applications and docs.

-
-
-
-
-
-<div class="container-fluid">
-  <div class="row-fluid">
-    <div class="span2">
-      <!--Sidebar content-->
-    </div>
-    <div class="span10">
-      <!--Body content-->
-    </div>
-  </div>
-</div>
-
-
- - - - - -
- - -

Enabling responsive features

-

Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the <head> of your document. If you've compiled Bootstrap from the Customize page, you need only include the meta tag.

-
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-

Heads up! Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed.

- -

About responsive Bootstrap

- Responsive devices -

Media queries allow for custom CSS based on a number of conditions—ratios, widths, display type, etc—but usually focuses around min-width and max-width.

-
    -
  • Modify the width of column in our grid
  • -
  • Stack elements instead of float wherever necessary
  • -
  • Resize headings and text to be more appropriate for devices
  • -
-

Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries.

- -

Supported devices

-

Bootstrap supports a handful of media queries in a single file to help make your projects more appropriate on different devices and screen resolutions. Here's what's included:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LabelLayout widthColumn widthGutter width
Large display1200px and up70px30px
Default980px and up60px20px
Portrait tablets768px and above42px20px
Phones to tablets767px and belowFluid columns, no fixed widths
Phones480px and belowFluid columns, no fixed widths
-
-/* Large desktop */
-@media (min-width: 1200px) { ... }
-
-/* Portrait tablet to landscape and desktop */
-@media (min-width: 768px) and (max-width: 979px) { ... }
-
-/* Landscape phone to portrait tablet */
-@media (max-width: 767px) { ... }
-
-/* Landscape phones and down */
-@media (max-width: 480px) { ... }
-
- - -

Responsive utility classes

-

For faster mobile-friendly development, use these utility classes for showing and hiding content by device. Below is a table of the available classes and their effect on a given media query layout (labeled by device). They can be found in responsive.less.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassPhones 767px and belowTablets 979px to 768pxDesktops Default
.visible-phoneVisible
.visible-tabletVisible
.visible-desktopVisible
.hidden-phoneVisibleVisible
.hidden-tabletVisibleVisible
.hidden-desktopVisibleVisible
- -

When to use

-

Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities should not be used with tables, and as such are not supported.

- -

Responsive utilities test case

-

Resize your browser or load on different devices to test the above classes.

-

Visible on...

-

Green checkmarks indicate that class is visible in your current viewport.

-
    -
  • Phone✔ Phone
  • -
  • Tablet✔ Tablet
  • -
  • Desktop✔ Desktop
  • -
-

Hidden on...

-

Here, green checkmarks indicate that class is hidden in your current viewport.

-
    -
  • Phone✔ Phone
  • -
  • Tablet✔ Tablet
  • -
  • Desktop✔ Desktop
  • -
- -
- - - -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/layout.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/layout.mustache deleted file mode 100644 index 5254fc069..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/layout.mustache +++ /dev/null @@ -1,151 +0,0 @@ - - - - - {{title}} - - - - - - - - - - - - - - - - - - - - - {{#production}} - - {{/production}} - - - - - - - -{{>body}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{#production}} - - - {{/production}} - - - diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/base-css.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/base-css.mustache deleted file mode 100644 index 1f40f3711..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/base-css.mustache +++ /dev/null @@ -1,2102 +0,0 @@ - -
-
-

{{_i}}Base CSS{{/i}}

-

{{_i}}Fundamental HTML elements styled and enhanced with extensible classes.{{/i}}

-
-
- - -
- - -
- -
- - - - -
- - - {{! Headings }} -

{{_i}}Headings{{/i}}

-

{{_i}}All HTML headings, <h1> through <h6> are available.{{/i}}

-
-

h1. {{_i}}Heading 1{{/i}}

-

h2. {{_i}}Heading 2{{/i}}

-

h3. {{_i}}Heading 3{{/i}}

-

h4. {{_i}}Heading 4{{/i}}

-
h5. {{_i}}Heading 5{{/i}}
-
h6. {{_i}}Heading 6{{/i}}
-
- - {{! Body copy }} -

{{_i}}Body copy{{/i}}

-

{{_i}}Bootstrap's global default font-size is 14px, with a line-height of 20px. This is applied to the <body> and all paragraphs. In addition, <p> (paragraphs) receive a bottom margin of half their line-height (10px by default).{{/i}}

-
-

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

-

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.

-

Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.

-
-
<p>...</p>
- - {{! Body copy .lead }} -

{{_i}}Lead body copy{{/i}}

-

{{_i}}Make a paragraph stand out by adding .lead.{{/i}}

-
-

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.

-
-
<p class="lead">...</p>
- - {{! Using LESS }} -

{{_i}}Built with Less{{/i}}

-

{{_i}}The typographic scale is based on two LESS variables in variables.less: @baseFontSize and @baseLineHeight. The first is the base font-size used throughout and the second is the base line-height. We use those variables and some simple math to create the margins, paddings, and line-heights of all our type and more. Customize them and Bootstrap adapts.{{/i}}

- - -
- - - {{! Emphasis }} -

{{_i}}Emphasis{{/i}}

-

{{_i}}Make use of HTML's default emphasis tags with lightweight styles.{{/i}}

- -

<small>

-

{{_i}}For de-emphasizing inline or blocks of text, use the small tag.{{/i}}

-
-

This line of text is meant to be treated as fine print.

-
-
-<p>
-  <small>This line of text is meant to be treated as fine print.</small>
-</p>
-
- -

{{_i}}Bold{{/i}}

-

{{_i}}For emphasizing a snippet of text with a heavier font-weight.{{/i}}

-
-

The following snippet of text is rendered as bold text.

-
-
<strong>rendered as bold text</strong>
- -

{{_i}}Italics{{/i}}

-

{{_i}}For emphasizing a snippet of text with italics.{{/i}}

-
-

The following snippet of text is rendered as italicized text.

-
-
<em>rendered as italicized text</em>
- -

{{_i}}Heads up!{{/i}} {{_i}}Feel free to use <b> and <i> in HTML5. <b> is meant to highlight words or phrases without conveying additional importance while <i> is mostly for voice, technical terms, etc.{{/i}}

- -

{{_i}}Alignment classes{{/i}}

-

{{_i}}Easily realign text to components with text alignment classes.{{/i}}

-
-

Left aligned text.

-

Center aligned text.

-

Right aligned text.

-
-
-<p class="text-left">Left aligned text.</p>
-<p class="text-center">Center aligned text.</p>
-<p class="text-right">Right aligned text.</p>
-
- -

{{_i}}Emphasis classes{{/i}}

-

{{_i}}Convey meaning through color with a handful of emphasis utility classes.{{/i}}

-
-

Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

-

Etiam porta sem malesuada magna mollis euismod.

-

Donec ullamcorper nulla non metus auctor fringilla.

-

Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.

-

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

-
-
-<p class="muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
-<p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
-<p class="text-error">Donec ullamcorper nulla non metus auctor fringilla.</p>
-<p class="text-info">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.</p>
-<p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
-
- - -
- - - {{! Abbreviations }} -

{{_i}}Abbreviations{{/i}}

-

{{_i}}Stylized implementation of HTML's <abbr> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a title attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover.{{/i}}

- -

<abbr>

-

{{_i}}For expanded text on long hover of an abbreviation, include the title attribute.{{/i}}

-
-

{{_i}}An abbreviation of the word attribute is attr.{{/i}}

-
-
<abbr title="attribute">attr</abbr>
- -

<abbr class="initialism">

-

{{_i}}Add .initialism to an abbreviation for a slightly smaller font-size.{{/i}}

-
-

{{_i}}HTML is the best thing since sliced bread.{{/i}}

-
-
<abbr title="HyperText Markup Language" class="initialism">HTML</abbr>
- - -
- - - {{! Addresses }} -

{{_i}}Addresses{{/i}}

-

{{_i}}Present contact information for the nearest ancestor or the entire body of work.{{/i}}

- -

<address>

-

{{_i}}Preserve formatting by ending all lines with <br>.{{/i}}

-
-
- Twitter, Inc.
- 795 Folsom Ave, Suite 600
- San Francisco, CA 94107
- P: (123) 456-7890 -
-
- {{_i}}Full Name{{/i}}
- {{_i}}first.last@example.com{{/i}} -
-
-
-<address>
-  <strong>Twitter, Inc.</strong><br>
-  795 Folsom Ave, Suite 600<br>
-  San Francisco, CA 94107<br>
-  <abbr title="Phone">P:</abbr> (123) 456-7890
-</address>
-
-<address>
-  <strong>{{_i}}Full Name{{/i}}</strong><br>
-  <a href="mailto:#">{{_i}}first.last@example.com{{/i}}</a>
-</address>
-
- - -
- - - {{! Blockquotes }} -

{{_i}}Blockquotes{{/i}}

-

{{_i}}For quoting blocks of content from another source within your document.{{/i}}

- -

{{_i}}Default blockquote{{/i}}

-

{{_i}}Wrap <blockquote> around any HTML as the quote. For straight quotes we recommend a <p>.{{/i}}

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
-
-
-<blockquote>
-  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-</blockquote>
-
- -

{{_i}}Blockquote options{{/i}}

-

{{_i}}Style and content changes for simple variations on a standard blockquote.{{/i}}

- -

{{_i}}Naming a source{{/i}}

-

{{_i}}Add <small> tag for identifying the source. Wrap the name of the source work in <cite>.{{/i}}

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

- {{_i}}Someone famous in Source Title{{/i}} -
-
-
-<blockquote>
-  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-  <small>{{_i}}Someone famous <cite title="Source Title">Source Title</cite>{{/i}}</small>
-</blockquote>
-
- -

{{_i}}Alternate displays{{/i}}

-

{{_i}}Use .pull-right for a floated, right-aligned blockquote.{{/i}}

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

- {{_i}}Someone famous in Source Title{{/i}} -
-
-
-<blockquote class="pull-right">
-  ...
-</blockquote>
-
- - -
- - - -

{{_i}}Lists{{/i}}

- -

{{_i}}Unordered{{/i}}

-

{{_i}}A list of items in which the order does not explicitly matter.{{/i}}

-
-
    -
  • Lorem ipsum dolor sit amet
  • -
  • Consectetur adipiscing elit
  • -
  • Integer molestie lorem at massa
  • -
  • Facilisis in pretium nisl aliquet
  • -
  • Nulla volutpat aliquam velit -
      -
    • Phasellus iaculis neque
    • -
    • Purus sodales ultricies
    • -
    • Vestibulum laoreet porttitor sem
    • -
    • Ac tristique libero volutpat at
    • -
    -
  • -
  • Faucibus porta lacus fringilla vel
  • -
  • Aenean sit amet erat nunc
  • -
  • Eget porttitor lorem
  • -
-
-
-<ul>
-  <li>...</li>
-</ul>
-
- -

{{_i}}Ordered{{/i}}

-

{{_i}}A list of items in which the order does explicitly matter.{{/i}}

-
-
    -
  1. Lorem ipsum dolor sit amet
  2. -
  3. Consectetur adipiscing elit
  4. -
  5. Integer molestie lorem at massa
  6. -
  7. Facilisis in pretium nisl aliquet
  8. -
  9. Nulla volutpat aliquam velit
  10. -
  11. Faucibus porta lacus fringilla vel
  12. -
  13. Aenean sit amet erat nunc
  14. -
  15. Eget porttitor lorem
  16. -
-
-
-<ol>
-  <li>...</li>
-</ol>
-
- -

{{_i}}Unstyled{{/i}}

-

{{_i}}Remove the default list-style and left padding on list items (immediate children only).{{/i}}

-
-
    -
  • Lorem ipsum dolor sit amet
  • -
  • Consectetur adipiscing elit
  • -
  • Integer molestie lorem at massa
  • -
  • Facilisis in pretium nisl aliquet
  • -
  • Nulla volutpat aliquam velit -
      -
    • Phasellus iaculis neque
    • -
    • Purus sodales ultricies
    • -
    • Vestibulum laoreet porttitor sem
    • -
    • Ac tristique libero volutpat at
    • -
    -
  • -
  • Faucibus porta lacus fringilla vel
  • -
  • Aenean sit amet erat nunc
  • -
  • Eget porttitor lorem
  • -
-
-
-<ul class="unstyled">
-  <li>...</li>
-</ul>
-
- -

{{_i}}Inline{{/i}}

-

{{_i}}Place all list items on a single line with inline-block and some light padding.{{/i}}

-
-
    -
  • Lorem ipsum
  • -
  • Phasellus iaculis
  • -
  • Nulla volutpat
  • -
-
-
-<ul class="inline">
-  <li>...</li>
-</ul>
-
- -

{{_i}}Description{{/i}}

-

{{_i}}A list of terms with their associated descriptions.{{/i}}

-
-
-
{{_i}}Description lists{{/i}}
-
{{_i}}A description list is perfect for defining terms.{{/i}}
-
Euismod
-
Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
-
Donec id elit non mi porta gravida at eget metus.
-
Malesuada porta
-
Etiam porta sem malesuada magna mollis euismod.
-
-
-
-<dl>
-  <dt>...</dt>
-  <dd>...</dd>
-</dl>
-
- -

{{_i}}Horizontal description{{/i}}

-

{{_i}}Make terms and descriptions in <dl> line up side-by-side.{{/i}}

-
-
-
{{_i}}Description lists{{/i}}
-
{{_i}}A description list is perfect for defining terms.{{/i}}
-
Euismod
-
Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
-
Donec id elit non mi porta gravida at eget metus.
-
Malesuada porta
-
Etiam porta sem malesuada magna mollis euismod.
-
Felis euismod semper eget lacinia
-
Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
-
-
-
-<dl class="dl-horizontal">
-  <dt>...</dt>
-  <dd>...</dd>
-</dl>
-
-

- {{_i}}Heads up!{{/i}} - {{_i}}Horizontal description lists will truncate terms that are too long to fit in the left column fix text-overflow. In narrower viewports, they will change to the default stacked layout.{{/i}} -

-
- - - - -
- - -

Inline

-

Wrap inline snippets of code with <code>.

-
- For example, <section> should be wrapped as inline. -
-
-{{_i}}For example, <code>&lt;section&gt;</code> should be wrapped as inline.{{/i}}
-
- -

Basic block

-

{{_i}}Use <pre> for multiple lines of code. Be sure to escape any angle brackets in the code for proper rendering.{{/i}}

-
-
<p>{{_i}}Sample text here...{{/i}}</p>
-
-
-<pre>
-  &lt;p&gt;{{_i}}Sample text here...{{/i}}&lt;/p&gt;
-</pre>
-
-

{{_i}}Heads up!{{/i}} {{_i}}Be sure to keep code within <pre> tags as close to the left as possible; it will render all tabs.{{/i}}

-

{{_i}}You may optionally add the .pre-scrollable class which will set a max-height of 350px and provide a y-axis scrollbar.{{/i}}

-
- - - - -
- - -

{{_i}}Default styles{{/i}}

-

{{_i}}For basic styling—light padding and only horizontal dividers—add the base class .table to any <table>.{{/i}}

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
{{! /example }} -
-<table class="table">
-  …
-</table>
-
- - -
- - -

{{_i}}Optional classes{{/i}}

-

{{_i}}Add any of the following classes to the .table base class.{{/i}}

- -

{{_i}}.table-striped{{/i}}

-

{{_i}}Adds zebra-striping to any table row within the <tbody> via the :nth-child CSS selector (not available in IE7-8).{{/i}}

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
{{! /example }} -
-<table class="table table-striped">
-  …
-</table>
-
- -

{{_i}}.table-bordered{{/i}}

-

{{_i}}Add borders and rounded corners to the table.{{/i}}

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
1MarkOtto@mdo
MarkOtto@TwBootstrap
2JacobThornton@fat
3Larry the Bird@twitter
-
{{! /example }} -
-<table class="table table-bordered">
-  …
-</table>
-
- -

{{_i}}.table-hover{{/i}}

-

{{_i}}Enable a hover state on table rows within a <tbody>.{{/i}}

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
{{! /example }} -
-<table class="table table-hover">
-  …
-</table>
-
- -

{{_i}}.table-condensed{{/i}}

-

{{_i}}Makes tables more compact by cutting cell padding in half.{{/i}}

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#{{_i}}First Name{{/i}}{{_i}}Last Name{{/i}}{{_i}}Username{{/i}}
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
{{! /example }} -
-<table class="table table-condensed">
-  …
-</table>
-
- - -
- - -

{{_i}}Optional row classes{{/i}}

-

{{_i}}Use contextual classes to color table rows.{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Class{{/i}}{{_i}}Description{{/i}}
- .success - {{_i}}Indicates a successful or positive action.{{/i}}
- .error - {{_i}}Indicates a dangerous or potentially negative action.{{/i}}
- .warning - {{_i}}Indicates a warning that might need attention.{{/i}}
- .info - {{_i}}Used as an alternative to the default styles.{{/i}}
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#{{_i}}Product{{/i}}{{_i}}Payment Taken{{/i}}{{_i}}Status{{/i}}
1TB - Monthly01/04/2012Approved
2TB - Monthly02/04/2012Declined
3TB - Monthly03/04/2012Pending
4TB - Monthly04/04/2012Call in to confirm
-
{{! /example }} -
-...
-  <tr class="success">
-    <td>1</td>
-    <td>TB - Monthly</td>
-    <td>01/04/2012</td>
-    <td>Approved</td>
-  </tr>
-...
-
- - -
- - -

{{_i}}Supported table markup{{/i}}

-

{{_i}}List of supported table HTML elements and how they should be used.{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Tag{{/i}}{{_i}}Description{{/i}}
- <table> - - {{_i}}Wrapping element for displaying data in a tabular format{{/i}} -
- <thead> - - {{_i}}Container element for table header rows (<tr>) to label table columns{{/i}} -
- <tbody> - - {{_i}}Container element for table rows (<tr>) in the body of the table{{/i}} -
- <tr> - - {{_i}}Container element for a set of table cells (<td> or <th>) that appears on a single row{{/i}} -
- <td> - - {{_i}}Default table cell{{/i}} -
- <th> - - {{_i}}Special table cell for column (or row, depending on scope and placement) labels{{/i}} -
- <caption> - - {{_i}}Description or summary of what the table holds, especially useful for screen readers{{/i}} -
-
-<table>
-  <caption>...</caption>
-  <thead>
-    <tr>
-      <th>...</th>
-      <th>...</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr>
-      <td>...</td>
-      <td>...</td>
-    </tr>
-  </tbody>
-</table>
-
- -
- - - - -
- - -

{{_i}}Default styles{{/i}}

-

{{_i}}Individual form controls receive styling, but without any required base class on the <form> or large changes in markup. Results in stacked, left-aligned labels on top of form controls.{{/i}}

-
-
- Legend - - - {{_i}}Example block-level help text here.{{/i}} - - -
-
{{! /example }} -
-<form>
-  <fieldset>
-    <legend>{{_i}}Legend{{/i}}</legend>
-    <label>{{_i}}Label name{{/i}}</label>
-    <input type="text" placeholder="{{_i}}Type something…{{/i}}">
-    <span class="help-block">Example block-level help text here.</span>
-    <label class="checkbox">
-      <input type="checkbox"> {{_i}}Check me out{{/i}}
-    </label>
-    <button type="submit" class="btn">{{_i}}Submit{{/i}}</button>
-  </fieldset>
-</form>
-
- - -
- - -

{{_i}}Optional layouts{{/i}}

-

{{_i}}Included with Bootstrap are three optional form layouts for common use cases.{{/i}}

- -

{{_i}}Search form{{/i}}

-

{{_i}}Add .form-search to the form and .search-query to the <input> for an extra-rounded text input.{{/i}}

- {{! /example }} -
-<form class="form-search">
-  <input type="text" class="input-medium search-query">
-  <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
-</form>
-
- -

{{_i}}Inline form{{/i}}

-

{{_i}}Add .form-inline for left-aligned labels and inline-block controls for a compact layout.{{/i}}

-
- - - - -
{{! /example }} -
-<form class="form-inline">
-  <input type="text" class="input-small" placeholder="{{_i}}Email{{/i}}">
-  <input type="password" class="input-small" placeholder="{{_i}}Password{{/i}}">
-  <label class="checkbox">
-    <input type="checkbox"> {{_i}}Remember me{{/i}}
-  </label>
-  <button type="submit" class="btn">{{_i}}Sign in{{/i}}</button>
-</form>
-
- -

{{_i}}Horizontal form{{/i}}

-

{{_i}}Right align labels and float them to the left to make them appear on the same line as controls. Requires the most markup changes from a default form:{{/i}}

-
    -
  • {{_i}}Add .form-horizontal to the form{{/i}}
  • -
  • {{_i}}Wrap labels and controls in .control-group{{/i}}
  • -
  • {{_i}}Add .control-label to the label{{/i}}
  • -
  • {{_i}}Wrap any associated controls in .controls for proper alignment{{/i}}
  • -
-
-
- -
- -
-
-
- -
- -
-
-
-
- - -
-
-
-
-<form class="form-horizontal">
-  <div class="control-group">
-    <label class="control-label" for="inputEmail">{{_i}}Email{{/i}}</label>
-    <div class="controls">
-      <input type="text" id="inputEmail" placeholder="{{_i}}Email{{/i}}">
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label" for="inputPassword">{{_i}}Password{{/i}}</label>
-    <div class="controls">
-      <input type="password" id="inputPassword" placeholder="{{_i}}Password{{/i}}">
-    </div>
-  </div>
-  <div class="control-group">
-    <div class="controls">
-      <label class="checkbox">
-        <input type="checkbox"> {{_i}}Remember me{{/i}}
-      </label>
-      <button type="submit" class="btn">{{_i}}Sign in{{/i}}</button>
-    </div>
-  </div>
-</form>
-
- - -
- - -

{{_i}}Supported form controls{{/i}}

-

{{_i}}Examples of standard form controls supported in an example form layout.{{/i}}

- -

{{_i}}Inputs{{/i}}

-

{{_i}}Most common form control, text-based input fields. Includes support for all HTML5 types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.{{/i}}

-

{{_i}}Requires the use of a specified type at all times.{{/i}}

-
- -
-
-<input type="text" placeholder="Text input">
-
- -

{{_i}}Textarea{{/i}}

-

{{_i}}Form control which supports multiple lines of text. Change rows attribute as necessary.{{/i}}

-
- -
-
-<textarea rows="3"></textarea>
-
- -

{{_i}}Checkboxes and radios{{/i}}

-

{{_i}}Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.{{/i}}

-

{{_i}}Default (stacked){{/i}}

-
- -
- - -
-
-<label class="checkbox">
-  <input type="checkbox" value="">
-  {{_i}}Option one is this and that—be sure to include why it's great{{/i}}
-</label>
-
-<label class="radio">
-  <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
-  {{_i}}Option one is this and that—be sure to include why it's great{{/i}}
-</label>
-<label class="radio">
-  <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
-  {{_i}}Option two can be something else and selecting it will deselect option one{{/i}}
-</label>
-
- -

{{_i}}Inline checkboxes{{/i}}

-

{{_i}}Add the .inline class to a series of checkboxes or radios for controls appear on the same line.{{/i}}

-
- - - -
-
-<label class="checkbox inline">
-  <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
-</label>
-<label class="checkbox inline">
-  <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
-</label>
-<label class="checkbox inline">
-  <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
-</label>
-
- -

{{_i}}Selects{{/i}}

-

{{_i}}Use the default option or specify a multiple="multiple" to show multiple options at once.{{/i}}

-
- -
- -
-
-<select>
-  <option>1</option>
-  <option>2</option>
-  <option>3</option>
-  <option>4</option>
-  <option>5</option>
-</select>
-
-<select multiple="multiple">
-  <option>1</option>
-  <option>2</option>
-  <option>3</option>
-  <option>4</option>
-  <option>5</option>
-</select>
-
- - -
- - -

{{_i}}Extending form controls{{/i}}

-

{{_i}}Adding on top of existing browser controls, Bootstrap includes other useful form components.{{/i}}

- -

{{_i}}Prepended and appended inputs{{/i}}

-

{{_i}}Add text or buttons before or after any text-based input. Do note that select elements are not supported here.{{/i}}

- -

{{_i}}Default options{{/i}}

-

{{_i}}Wrap an .add-on and an input with one of two classes to prepend or append text to an input.{{/i}}

-
-
- @ - -
-
-
- - .00 -
-
-
-<div class="input-prepend">
-  <span class="add-on">@</span>
-  <input class="span2" id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}">
-</div>
-<div class="input-append">
-  <input class="span2" id="appendedInput" type="text">
-  <span class="add-on">.00</span>
-</div>
-
- -

{{_i}}Combined{{/i}}

-

{{_i}}Use both classes and two instances of .add-on to prepend and append an input.{{/i}}

-
-
- $ - - .00 -
-
-
-<div class="input-prepend input-append">
-  <span class="add-on">$</span>
-  <input class="span2" id="appendedPrependedInput" type="text">
-  <span class="add-on">.00</span>
-</div>
-
- -

{{_i}}Buttons instead of text{{/i}}

-

{{_i}}Instead of a <span> with text, use a .btn to attach a button (or two) to an input.{{/i}}

-
-
- - -
-
-
-<div class="input-append">
-  <input class="span2" id="appendedInputButton" type="text">
-  <button class="btn" type="button">Go!</button>
-</div>
-
-
-
- - - -
-
-
-<div class="input-append">
-  <input class="span2" id="appendedInputButtons" type="text">
-  <button class="btn" type="button">Search</button>
-  <button class="btn" type="button">Options</button>
-</div>
-
- -

{{_i}}Button dropdowns{{/i}}

-

{{_i}}{{/i}}

-
- -
-
-<div class="input-append">
-  <input class="span2" id="appendedDropdownButton" type="text">
-  <div class="btn-group">
-    <button class="btn dropdown-toggle" data-toggle="dropdown">
-      {{_i}}Action{{/i}}
-      <span class="caret"></span>
-    </button>
-    <ul class="dropdown-menu">
-      ...
-    </ul>
-  </div>
-</div>
-
- -
- -
-
-<div class="input-prepend">
-  <div class="btn-group">
-    <button class="btn dropdown-toggle" data-toggle="dropdown">
-      {{_i}}Action{{/i}}
-      <span class="caret"></span>
-    </button>
-    <ul class="dropdown-menu">
-      ...
-    </ul>
-  </div>
-  <input class="span2" id="prependedDropdownButton" type="text">
-</div>
-
- -
- -
-
-<div class="input-prepend input-append">
-  <div class="btn-group">
-    <button class="btn dropdown-toggle" data-toggle="dropdown">
-      {{_i}}Action{{/i}}
-      <span class="caret"></span>
-    </button>
-    <ul class="dropdown-menu">
-      ...
-    </ul>
-  </div>
-  <input class="span2" id="appendedPrependedDropdownButton" type="text">
-  <div class="btn-group">
-    <button class="btn dropdown-toggle" data-toggle="dropdown">
-      {{_i}}Action{{/i}}
-      <span class="caret"></span>
-    </button>
-    <ul class="dropdown-menu">
-      ...
-    </ul>
-  </div>
-</div>
-
- -

{{_i}}Segmented dropdown groups{{/i}}

-
- - -
-
-<form>
-  <div class="input-prepend">
-    <div class="btn-group">...</div>
-    <input type="text">
-  </div>
-  <div class="input-append">
-    <input type="text">
-    <div class="btn-group">...</div>
-  </div>
-</form>
-
- -

{{_i}}Search form{{/i}}

- {{! /example }} -
-<form class="form-search">
-  <div class="input-append">
-    <input type="text" class="span2 search-query">
-    <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
-  </div>
-  <div class="input-prepend">
-    <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
-    <input type="text" class="span2 search-query">
-  </div>
-</form>
-
- -

{{_i}}Control sizing{{/i}}

-

{{_i}}Use relative sizing classes like .input-large or match your inputs to the grid column sizes using .span* classes.{{/i}}

- -

{{_i}}Block level inputs{{/i}}

-

{{_i}}Make any <input> or <textarea> element behave like a block level element.{{/i}}

-
-
- -
-
-
-<input class="input-block-level" type="text" placeholder=".input-block-level">
-
- -

{{_i}}Relative sizing{{/i}}

-
-
- - - - - - -
-
-
-<input class="input-mini" type="text" placeholder=".input-mini">
-<input class="input-small" type="text" placeholder=".input-small">
-<input class="input-medium" type="text" placeholder=".input-medium">
-<input class="input-large" type="text" placeholder=".input-large">
-<input class="input-xlarge" type="text" placeholder=".input-xlarge">
-<input class="input-xxlarge" type="text" placeholder=".input-xxlarge">
-
-

- {{_i}}Heads up!{{/i}} In future versions, we'll be altering the use of these relative input classes to match our button sizes. For example, .input-large will increase the padding and font-size of an input. -

- -

{{_i}}Grid sizing{{/i}}

-

{{_i}}Use .span1 to .span12 for inputs that match the same sizes of the grid columns.{{/i}}

-
-
- - - - - - -
-
-
-<input class="span1" type="text" placeholder=".span1">
-<input class="span2" type="text" placeholder=".span2">
-<input class="span3" type="text" placeholder=".span3">
-<select class="span1">
-  ...
-</select>
-<select class="span2">
-  ...
-</select>
-<select class="span3">
-  ...
-</select>
-
- -

{{_i}}For multiple grid inputs per line, use the .controls-row modifier class for proper spacing. It floats the inputs to collapse white-space, sets the proper margins, and clears the float.{{/i}}

-
-
- -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-<div class="controls">
-  <input class="span5" type="text" placeholder=".span5">
-</div>
-<div class="controls controls-row">
-  <input class="span4" type="text" placeholder=".span4">
-  <input class="span1" type="text" placeholder=".span1">
-</div>
-...
-
- -

{{_i}}Uneditable inputs{{/i}}

-

{{_i}}Present data in a form that's not editable without using actual form markup.{{/i}}

-
- Some value here -
-
-<span class="input-xlarge uneditable-input">Some value here</span>
-
- -

{{_i}}Form actions{{/i}}

-

{{_i}}End a form with a group of actions (buttons). When placed within a .form-actions, the buttons will automatically indent to line up with the form controls.{{/i}}

-
-
- - -
-
-
-<div class="form-actions">
-  <button type="submit" class="btn btn-primary">{{_i}}Save changes{{/i}}</button>
-  <button type="button" class="btn">{{_i}}Cancel{{/i}}</button>
-</div>
-
- -

{{_i}}Help text{{/i}}

-

{{_i}}Inline and block level support for help text that appears around form controls.{{/i}}

-

{{_i}}Inline help{{/i}}

-
- Inline help text -
-
-<input type="text"><span class="help-inline">Inline help text</span>
-
- -

{{_i}}Block help{{/i}}

-
- - A longer block of help text that breaks onto a new line and may extend beyond one line. -
-
-<input type="text"><span class="help-block">A longer block of help text that breaks onto a new line and may extend beyond one line.</span>
-
- - -
- - -

{{_i}}Form control states{{/i}}

-

{{_i}}Provide feedback to users or visitors with basic feedback states on form controls and labels.{{/i}}

- -

{{_i}}Input focus{{/i}}

-

{{_i}}We remove the default outline styles on some form controls and apply a box-shadow in its place for :focus.{{/i}}

-
- -
-
-<input class="input-xlarge" id="focusedInput" type="text" value="{{_i}}This is focused...{{/i}}">
-
- -

{{_i}}Invalid inputs{{/i}}

-

{{_i}}Style inputs via default browser functionality with :invalid. Specify a type, add the required attribute if the field is not optional, and (if applicable) specify a pattern.{{/i}}

-

{{_i}}This is not available in versions of Internet Explorer 7-9 due to lack of support for CSS pseudo selectors.{{/i}}

-
- -
-
-<input class="span3" type="email" required>
-
- -

{{_i}}Disabled inputs{{/i}}

-

{{_i}}Add the disabled attribute on an input to prevent user input and trigger a slightly different look.{{/i}}

-
- -
-
-<input class="input-xlarge" id="disabledInput" type="text" placeholder="{{_i}}Disabled input here...{{/i}}" disabled>
-
- -

{{_i}}Validation states{{/i}}

-

{{_i}}Bootstrap includes validation styles for error, warning, info, and success messages. To use, add the appropriate class to the surrounding .control-group.{{/i}}

- -
-
- -
- - {{_i}}Something may have gone wrong{{/i}} -
-
-
- -
- - {{_i}}Please correct the error{{/i}} -
-
-
- -
- - {{_i}}Username is taken{{/i}} -
-
-
- -
- - {{_i}}Woohoo!{{/i}} -
-
-
-
-<div class="control-group warning">
-  <label class="control-label" for="inputWarning">{{_i}}Input with warning{{/i}}</label>
-  <div class="controls">
-    <input type="text" id="inputWarning">
-    <span class="help-inline">{{_i}}Something may have gone wrong{{/i}}</span>
-  </div>
-</div>
-
-<div class="control-group error">
-  <label class="control-label" for="inputError">{{_i}}Input with error{{/i}}</label>
-  <div class="controls">
-    <input type="text" id="inputError">
-    <span class="help-inline">{{_i}}Please correct the error{{/i}}</span>
-  </div>
-</div>
-
-<div class="control-group info">
-  <label class="control-label" for="inputInfo">{{_i}}Input with info{{/i}}</label>
-  <div class="controls">
-    <input type="text" id="inputInfo">
-    <span class="help-inline">{{_i}}Username is already taken{{/i}}</span>
-  </div>
-</div>
-
-<div class="control-group success">
-  <label class="control-label" for="inputSuccess">{{_i}}Input with success{{/i}}</label>
-  <div class="controls">
-    <input type="text" id="inputSuccess">
-    <span class="help-inline">{{_i}}Woohoo!{{/i}}</span>
-  </div>
-</div>
-
- -
- - - - -
- - -

Default buttons

-

{{_i}}Button styles can be applied to anything with the .btn class applied. However, typically you'll want to apply these to only <a> and <button> elements for the best rendering.{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Button{{/i}}{{_i}}class=""{{/i}}{{_i}}Description{{/i}}
btn{{_i}}Standard gray button with gradient{{/i}}
btn btn-primary{{_i}}Provides extra visual weight and identifies the primary action in a set of buttons{{/i}}
btn btn-info{{_i}}Used as an alternative to the default styles{{/i}}
btn btn-success{{_i}}Indicates a successful or positive action{{/i}}
btn btn-warning{{_i}}Indicates caution should be taken with this action{{/i}}
btn btn-danger{{_i}}Indicates a dangerous or potentially negative action{{/i}}
btn btn-inverse{{_i}}Alternate dark gray button, not tied to a semantic action or use{{/i}}
btn btn-link{{_i}}Deemphasize a button by making it look like a link while maintaining button behavior{{/i}}
- -

{{_i}}Cross browser compatibility{{/i}}

-

{{_i}}IE9 doesn't crop background gradients on rounded corners, so we remove it. Related, IE9 jankifies disabled button elements, rendering text gray with a nasty text-shadow that we cannot fix.{{/i}}

- - -

{{_i}}Button sizes{{/i}}

-

{{_i}}Fancy larger or smaller buttons? Add .btn-large, .btn-small, or .btn-mini for additional sizes.{{/i}}

-
-

- - -

-

- - -

-

- - -

-

- - -

-
-
-<p>
-  <button class="btn btn-large btn-primary" type="button">{{_i}}Large button{{/i}}</button>
-  <button class="btn btn-large" type="button">{{_i}}Large button{{/i}}</button>
-</p>
-<p>
-  <button class="btn btn-primary" type="button">{{_i}}Default button{{/i}}</button>
-  <button class="btn" type="button">{{_i}}Default button{{/i}}</button>
-</p>
-<p>
-  <button class="btn btn-small btn-primary" type="button">{{_i}}Small button{{/i}}</button>
-  <button class="btn btn-small" type="button">{{_i}}Small button{{/i}}</button>
-</p>
-<p>
-  <button class="btn btn-mini btn-primary" type="button">{{_i}}Mini button{{/i}}</button>
-  <button class="btn btn-mini" type="button">{{_i}}Mini button{{/i}}</button>
-</p>
-
-

{{_i}}Create block level buttons—those that span the full width of a parent— by adding .btn-block.{{/i}}

-
-
- - -
-
-
-<button class="btn btn-large btn-block btn-primary" type="button">{{_i}}Block level button{{/i}}</button>
-<button class="btn btn-large btn-block" type="button">{{_i}}Block level button{{/i}}</button>
-
- - -

{{_i}}Disabled state{{/i}}

-

{{_i}}Make buttons look unclickable by fading them back 50%.{{/i}}

- -

Anchor element

-

{{_i}}Add the .disabled class to <a> buttons.{{/i}}

-

- {{_i}}Primary link{{/i}} - {{_i}}Link{{/i}} -

-
-<a href="#" class="btn btn-large btn-primary disabled">{{_i}}Primary link{{/i}}</a>
-<a href="#" class="btn btn-large disabled">{{_i}}Link{{/i}}</a>
-
-

- {{_i}}Heads up!{{/i}} - {{_i}}We use .disabled as a utility class here, similar to the common .active class, so no prefix is required. Also, this class is only for aesthetic; you must use custom JavaScript to disable links here.{{/i}} -

- -

Button element

-

{{_i}}Add the disabled attribute to <button> buttons.{{/i}}

-

- - -

-
-<button type="button" class="btn btn-large btn-primary disabled" disabled="disabled">{{_i}}Primary button{{/i}}</button>
-<button type="button" class="btn btn-large" disabled>{{_i}}Button{{/i}}</button>
-
- - -

{{_i}}One class, multiple tags{{/i}}

-

{{_i}}Use the .btn class on an <a>, <button>, or <input> element.{{/i}}

-
- {{_i}}Link{{/i}} - - - -
-
-<a class="btn" href="">{{_i}}Link{{/i}}</a>
-<button class="btn" type="submit">{{_i}}Button{{/i}}</button>
-<input class="btn" type="button" value="{{_i}}Input{{/i}}">
-<input class="btn" type="submit" value="{{_i}}Submit{{/i}}">
-
-

{{_i}}As a best practice, try to match the element for your context to ensure matching cross-browser rendering. If you have an input, use an <input type="submit"> for your button.{{/i}}

- -
- - - - -
- - -

{{_i}}Add classes to an <img> element to easily style images in any project.{{/i}}

-
- - - -
-
-<img src="..." class="img-rounded">
-<img src="..." class="img-circle">
-<img src="..." class="img-polaroid">
-
-

{{_i}}Heads up!{{/i}} {{_i}}.img-rounded and .img-circle do not work in IE7-8 due to lack of border-radius support.{{/i}}

- - -
- - - - -
- - -

{{_i}}Icon glyphs{{/i}}

-

{{_i}}140 icons in sprite form, available in dark gray (default) and white, provided by Glyphicons.{{/i}}

-
    -
  • icon-glass
  • -
  • icon-music
  • -
  • icon-search
  • -
  • icon-envelope
  • -
  • icon-heart
  • -
  • icon-star
  • -
  • icon-star-empty
  • -
  • icon-user
  • -
  • icon-film
  • -
  • icon-th-large
  • -
  • icon-th
  • -
  • icon-th-list
  • -
  • icon-ok
  • -
  • icon-remove
  • -
  • icon-zoom-in
  • -
  • icon-zoom-out
  • -
  • icon-off
  • -
  • icon-signal
  • -
  • icon-cog
  • -
  • icon-trash
  • -
  • icon-home
  • -
  • icon-file
  • -
  • icon-time
  • -
  • icon-road
  • -
  • icon-download-alt
  • -
  • icon-download
  • -
  • icon-upload
  • -
  • icon-inbox
  • - -
  • icon-play-circle
  • -
  • icon-repeat
  • -
  • icon-refresh
  • -
  • icon-list-alt
  • -
  • icon-lock
  • -
  • icon-flag
  • -
  • icon-headphones
  • -
  • icon-volume-off
  • -
  • icon-volume-down
  • -
  • icon-volume-up
  • -
  • icon-qrcode
  • -
  • icon-barcode
  • -
  • icon-tag
  • -
  • icon-tags
  • -
  • icon-book
  • -
  • icon-bookmark
  • -
  • icon-print
  • -
  • icon-camera
  • -
  • icon-font
  • -
  • icon-bold
  • -
  • icon-italic
  • -
  • icon-text-height
  • -
  • icon-text-width
  • -
  • icon-align-left
  • -
  • icon-align-center
  • -
  • icon-align-right
  • -
  • icon-align-justify
  • -
  • icon-list
  • - -
  • icon-indent-left
  • -
  • icon-indent-right
  • -
  • icon-facetime-video
  • -
  • icon-picture
  • -
  • icon-pencil
  • -
  • icon-map-marker
  • -
  • icon-adjust
  • -
  • icon-tint
  • -
  • icon-edit
  • -
  • icon-share
  • -
  • icon-check
  • -
  • icon-move
  • -
  • icon-step-backward
  • -
  • icon-fast-backward
  • -
  • icon-backward
  • -
  • icon-play
  • -
  • icon-pause
  • -
  • icon-stop
  • -
  • icon-forward
  • -
  • icon-fast-forward
  • -
  • icon-step-forward
  • -
  • icon-eject
  • -
  • icon-chevron-left
  • -
  • icon-chevron-right
  • -
  • icon-plus-sign
  • -
  • icon-minus-sign
  • -
  • icon-remove-sign
  • -
  • icon-ok-sign
  • - -
  • icon-question-sign
  • -
  • icon-info-sign
  • -
  • icon-screenshot
  • -
  • icon-remove-circle
  • -
  • icon-ok-circle
  • -
  • icon-ban-circle
  • -
  • icon-arrow-left
  • -
  • icon-arrow-right
  • -
  • icon-arrow-up
  • -
  • icon-arrow-down
  • -
  • icon-share-alt
  • -
  • icon-resize-full
  • -
  • icon-resize-small
  • -
  • icon-plus
  • -
  • icon-minus
  • -
  • icon-asterisk
  • -
  • icon-exclamation-sign
  • -
  • icon-gift
  • -
  • icon-leaf
  • -
  • icon-fire
  • -
  • icon-eye-open
  • -
  • icon-eye-close
  • -
  • icon-warning-sign
  • -
  • icon-plane
  • -
  • icon-calendar
  • -
  • icon-random
  • -
  • icon-comment
  • -
  • icon-magnet
  • - -
  • icon-chevron-up
  • -
  • icon-chevron-down
  • -
  • icon-retweet
  • -
  • icon-shopping-cart
  • -
  • icon-folder-close
  • -
  • icon-folder-open
  • -
  • icon-resize-vertical
  • -
  • icon-resize-horizontal
  • -
  • icon-hdd
  • -
  • icon-bullhorn
  • -
  • icon-bell
  • -
  • icon-certificate
  • -
  • icon-thumbs-up
  • -
  • icon-thumbs-down
  • -
  • icon-hand-right
  • -
  • icon-hand-left
  • -
  • icon-hand-up
  • -
  • icon-hand-down
  • -
  • icon-circle-arrow-right
  • -
  • icon-circle-arrow-left
  • -
  • icon-circle-arrow-up
  • -
  • icon-circle-arrow-down
  • -
  • icon-globe
  • -
  • icon-wrench
  • -
  • icon-tasks
  • -
  • icon-filter
  • -
  • icon-briefcase
  • -
  • icon-fullscreen
  • -
- -

Glyphicons attribution

-

{{_i}}Glyphicons Halflings are normally not available for free, but an arrangement between Bootstrap and the Glyphicons creators have made this possible at no cost to you as developers. As a thank you, we ask you to include an optional link back to Glyphicons whenever practical.{{/i}}

- - -
- - -

{{_i}}How to use{{/i}}

-

{{_i}}All icons require an <i> tag with a unique class, prefixed with icon-. To use, place the following code just about anywhere:{{/i}}

-
-<i class="icon-search"></i>
-
-

{{_i}}There are also styles available for inverted (white) icons, made ready with one extra class. We will specifically enforce this class on hover and active states for nav and dropdown links.{{/i}}

-
-<i class="icon-search icon-white"></i>
-
-

- {{_i}}Heads up!{{/i}} - {{_i}}When using beside strings of text, as in buttons or nav links, be sure to leave a space after the <i> tag for proper spacing.{{/i}} -

- - -
- - -

{{_i}}Icon examples{{/i}}

-

{{_i}}Use them in buttons, button groups for a toolbar, navigation, or prepended form inputs.{{/i}}

- -

{{_i}}Buttons{{/i}}

- -
{{_i}}Button group in a button toolbar{{/i}}
-
-
-
- - - - -
-
-
{{! /bs-docs-example }} -
-<div class="btn-toolbar">
-  <div class="btn-group">
-    <a class="btn" href="#"><i class="icon-align-left"></i></a>
-    <a class="btn" href="#"><i class="icon-align-center"></i></a>
-    <a class="btn" href="#"><i class="icon-align-right"></i></a>
-    <a class="btn" href="#"><i class="icon-align-justify"></i></a>
-  </div>
-</div>
-
- -
{{_i}}Dropdown in a button group{{/i}}
- {{! /bs-docs-example }} -
-<div class="btn-group">
-  <a class="btn btn-primary" href="#"><i class="icon-user icon-white"></i> {{_i}}User{{/i}}</a>
-  <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a>
-  <ul class="dropdown-menu">
-    <li><a href="#"><i class="icon-pencil"></i> {{_i}}Edit{{/i}}</a></li>
-    <li><a href="#"><i class="icon-trash"></i> {{_i}}Delete{{/i}}</a></li>
-    <li><a href="#"><i class="icon-ban-circle"></i> {{_i}}Ban{{/i}}</a></li>
-    <li class="divider"></li>
-    <li><a href="#"><i class="i"></i> {{_i}}Make admin{{/i}}</a></li>
-  </ul>
-</div>
-
- -
{{_i}}Button sizes{{/i}}
- {{! /bs-docs-example }} -
-<a class="btn btn-large" href="#"><i class="icon-star"></i> Star</a>
-<a class="btn btn-small" href="#"><i class="icon-star"></i> Star</a>
-<a class="btn btn-mini" href="#"><i class="icon-star"></i> Star</a>
-
- -

{{_i}}Navigation{{/i}}

- {{! /bs-docs-example }} -
-<ul class="nav nav-list">
-  <li class="active"><a href="#"><i class="icon-home icon-white"></i> {{_i}}Home{{/i}}</a></li>
-  <li><a href="#"><i class="icon-book"></i> {{_i}}Library{{/i}}</a></li>
-  <li><a href="#"><i class="icon-pencil"></i> {{_i}}Applications{{/i}}</a></li>
-  <li><a href="#"><i class="i"></i> {{_i}}Misc{{/i}}</a></li>
-</ul>
-
- -

{{_i}}Form fields{{/i}}

-
-
- -
-
- -
-
-
-
-
-<div class="control-group">
-  <label class="control-label" for="inputIcon">{{_i}}Email address{{/i}}</label>
-  <div class="controls">
-    <div class="input-prepend">
-      <span class="add-on"><i class="icon-envelope"></i></span>
-      <input class="span2" id="inputIcon" type="text">
-    </div>
-  </div>
-</div>
-
- -
- - - -
{{! /span9 }} -
{{! row}} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/components.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/components.mustache deleted file mode 100644 index 6d3ff9bee..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/components.mustache +++ /dev/null @@ -1,2505 +0,0 @@ - -
-
-

{{_i}}Components{{/i}}

-

{{_i}}Dozens of reusable components built to provide navigation, alerts, popovers, and more.{{/i}}

-
-
- - -
- - -
- -
- - - - - - - - - - -
- - -

{{_i}}Examples{{/i}}

-

{{_i}}Two basic options, along with two more specific variations.{{/i}}

- -

{{_i}}Single button group{{/i}}

-

{{_i}}Wrap a series of buttons with .btn in .btn-group.{{/i}}

-
-
- - - -
-
-
-<div class="btn-group">
-  <button class="btn">Left</button>
-  <button class="btn">Middle</button>
-  <button class="btn">Right</button>
-</div>
-
- -

{{_i}}Multiple button groups{{/i}}

-

{{_i}}Combine sets of <div class="btn-group"> into a <div class="btn-toolbar"> for more complex components.{{/i}}

-
-
-
- - - - -
-
- - - -
-
- -
-
-
-
-<div class="btn-toolbar">
-  <div class="btn-group">
-    ...
-  </div>
-</div>
-
- -

{{_i}}Vertical button groups{{/i}}

-

{{_i}}Make a set of buttons appear vertically stacked rather than horizontally.{{/i}}

-
-
- - - - -
-
-
-<div class="btn-group btn-group-vertical">
-  ...
-</div>
-
- - -
- - -

{{_i}}Checkbox and radio flavors{{/i}}

-

{{_i}}Button groups can also function as radios, where only one button may be active, or checkboxes, where any number of buttons may be active. View the JavaScript docs for that.{{/i}}

- -

{{_i}}Dropdowns in button groups{{/i}}

-

{{_i}}Heads up!{{/i}} {{_i}}Buttons with dropdowns must be individually wrapped in their own .btn-group within a .btn-toolbar for proper rendering.{{/i}}

-
- - - - -
- - - -

{{_i}}Overview and examples{{/i}}

-

{{_i}}Use any button to trigger a dropdown menu by placing it within a .btn-group and providing the proper menu markup.{{/i}}

- {{! /example }} -
-<div class="btn-group">
-  <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
-    {{_i}}Action{{/i}}
-    <span class="caret"></span>
-  </a>
-  <ul class="dropdown-menu">
-    <!-- {{_i}}dropdown menu links{{/i}} -->
-  </ul>
-</div>
-
- -

{{_i}}Works with all button sizes{{/i}}

-

{{_i}}Button dropdowns work at any size: .btn-large, .btn-small, or .btn-mini.{{/i}}

- {{! /example }} - -

{{_i}}Requires JavaScript{{/i}}

-

{{_i}}Button dropdowns require the Bootstrap dropdown plugin to function.{{/i}}

-

{{_i}}In some cases—like mobile—dropdown menus will extend outside the viewport. You need to resolve the alignment manually or with custom JavaScript.{{/i}}

- - -
- - -

{{_i}}Split button dropdowns{{/i}}

-

{{_i}}Building on the button group styles and markup, we can easily create a split button. Split buttons feature a standard action on the left and a dropdown toggle on the right with contextual links.{{/i}}

- {{! /example }} -
-<div class="btn-group">
-  <button class="btn">{{_i}}Action{{/i}}</button>
-  <button class="btn dropdown-toggle" data-toggle="dropdown">
-    <span class="caret"></span>
-  </button>
-  <ul class="dropdown-menu">
-    <!-- {{_i}}dropdown menu links{{/i}} -->
-  </ul>
-</div>
-
- -

{{_i}}Sizes{{/i}}

-

{{_i}}Utilize the extra button classes .btn-mini, .btn-small, or .btn-large for sizing.{{/i}}

- {{! /example }} -
-<div class="btn-group">
-  <button class="btn btn-mini">{{_i}}Action{{/i}}</button>
-  <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">
-    <span class="caret"></span>
-  </button>
-  <ul class="dropdown-menu">
-    <!-- {{_i}}dropdown menu links{{/i}} -->
-  </ul>
-</div>
-
- -

{{_i}}Dropup menus{{/i}}

-

{{_i}}Dropdown menus can also be toggled from the bottom up by adding a single class to the immediate parent of .dropdown-menu. It will flip the direction of the .caret and reposition the menu itself to move from the bottom up instead of top down.{{/i}}

- {{! /example }} -
-<div class="btn-group dropup">
-  <button class="btn">{{_i}}Dropup{{/i}}</button>
-  <button class="btn dropdown-toggle" data-toggle="dropdown">
-    <span class="caret"></span>
-  </button>
-  <ul class="dropdown-menu">
-    <!-- {{_i}}dropdown menu links{{/i}} -->
-  </ul>
-</div>
-
- -
- - - - - - - - - - - - - - - - - - - -
- - -

{{_i}}Standard pagination{{/i}}

-

{{_i}}Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.{{/i}}

-
- -
-
-<div class="pagination">
-  <ul>
-    <li><a href="#">Prev</a></li>
-    <li><a href="#">1</a></li>
-    <li><a href="#">2</a></li>
-    <li><a href="#">3</a></li>
-    <li><a href="#">4</a></li>
-    <li><a href="#">5</a></li>
-    <li><a href="#">Next</a></li>
-  </ul>
-</div>
-
- - -
- - -

{{_i}}Options{{/i}}

- -

{{_i}}Disabled and active states{{/i}}

-

{{_i}}Links are customizable for different circumstances. Use .disabled for unclickable links and .active to indicate the current page.{{/i}}

-
- -
-
-<div class="pagination">
-  <ul>
-    <li class="disabled"><a href="#">&laquo;</a></li>
-    <li class="active"><a href="#">1</a></li>
-    ...
-  </ul>
-</div>
-
-

{{_i}}You can optionally swap out active or disabled anchors for spans to remove click functionality while retaining intended styles.{{/i}}

-
-<div class="pagination">
-  <ul>
-    <li class="disabled"><span>&laquo;</span></li>
-    <li class="active"><span>1</span></li>
-    ...
-  </ul>
-</div>
-
- -

{{_i}}Sizes{{/i}}

-

{{_i}}Fancy larger or smaller pagination? Add .pagination-large, .pagination-small, or .pagination-mini for additional sizes.{{/i}}

-
- - - - -
-
-<div class="pagination pagination-large">
-  <ul>
-    ...
-  </ul>
-</div>
-<div class="pagination">
-  <ul>
-    ...
-  </ul>
-</div>
-<div class="pagination pagination-small">
-  <ul>
-    ...
-  </ul>
-</div>
-<div class="pagination pagination-mini">
-  <ul>
-    ...
-  </ul>
-</div>
-
- -

{{_i}}Alignment{{/i}}

-

{{_i}}Add one of two optional classes to change the alignment of pagination links: .pagination-centered and .pagination-right.{{/i}}

-
- -
-
-<div class="pagination pagination-centered">
-  ...
-</div>
-
-
- -
-
-<div class="pagination pagination-right">
-  ...
-</div>
-
- - -
- - -

{{_i}}Pager{{/i}}

-

{{_i}}Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.{{/i}}

- -

{{_i}}Default example{{/i}}

-

{{_i}}By default, the pager centers links.{{/i}}

- -
-<ul class="pager">
-  <li><a href="#">{{_i}}Previous{{/i}}</a></li>
-  <li><a href="#">{{_i}}Next{{/i}}</a></li>
-</ul>
-
- -

{{_i}}Aligned links{{/i}}

-

{{_i}}Alternatively, you can align each link to the sides:{{/i}}

- -
-<ul class="pager">
-  <li class="previous">
-    <a href="#">{{_i}}&larr; Older{{/i}}</a>
-  </li>
-  <li class="next">
-    <a href="#">{{_i}}Newer &rarr;{{/i}}</a>
-  </li>
-</ul>
-
- -

{{_i}}Optional disabled state{{/i}}

-

{{_i}}Pager links also use the general .disabled utility class from the pagination.{{/i}}

- -
-<ul class="pager">
-  <li class="previous disabled">
-    <a href="#">{{_i}}&larr; Older{{/i}}</a>
-  </li>
-  ...
-</ul>
-
- -
- - - - -
- -

{{_i}}Labels{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Labels{{/i}}{{_i}}Markup{{/i}}
- {{_i}}Default{{/i}} - - <span class="label">{{_i}}Default{{/i}}</span> -
- {{_i}}Success{{/i}} - - <span class="label label-success">{{_i}}Success{{/i}}</span> -
- {{_i}}Warning{{/i}} - - <span class="label label-warning">{{_i}}Warning{{/i}}</span> -
- {{_i}}Important{{/i}} - - <span class="label label-important">{{_i}}Important{{/i}}</span> -
- {{_i}}Info{{/i}} - - <span class="label label-info">{{_i}}Info{{/i}}</span> -
- {{_i}}Inverse{{/i}} - - <span class="label label-inverse">{{_i}}Inverse{{/i}}</span> -
- -

{{_i}}Badges{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}Example{{/i}}{{_i}}Markup{{/i}}
- {{_i}}Default{{/i}} - - 1 - - <span class="badge">1</span> -
- {{_i}}Success{{/i}} - - 2 - - <span class="badge badge-success">2</span> -
- {{_i}}Warning{{/i}} - - 4 - - <span class="badge badge-warning">4</span> -
- {{_i}}Important{{/i}} - - 6 - - <span class="badge badge-important">6</span> -
- {{_i}}Info{{/i}} - - 8 - - <span class="badge badge-info">8</span> -
- {{_i}}Inverse{{/i}} - - 10 - - <span class="badge badge-inverse">10</span> -
- -

{{_i}}Easily collapsible{{/i}}

-

{{_i}}For easy implementation, labels and badges will simply collapse (via CSS's :empty selector) when no content exists within.{{/i}}

- -
- - - - -
- - -

{{_i}}Hero unit{{/i}}

-

{{_i}}A lightweight, flexible component to showcase key content on your site. It works well on marketing and content-heavy sites.{{/i}}

-
-
-

{{_i}}Hello, world!{{/i}}

-

{{_i}}This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.{{/i}}

-

{{_i}}Learn more{{/i}}

-
-
-
-<div class="hero-unit">
-  <h1>{{_i}}Heading{{/i}}</h1>
-  <p>{{_i}}Tagline{{/i}}</p>
-  <p>
-    <a class="btn btn-primary btn-large">
-      {{_i}}Learn more{{/i}}
-    </a>
-  </p>
-</div>
-
- -

{{_i}}Page header{{/i}}

-

{{_i}}A simple shell for an h1 to appropriately space out and segment sections of content on a page. It can utilize the h1's default small, element as well most other components (with additional styles).{{/i}}

-
- -
-
-<div class="page-header">
-  <h1>{{_i}}Example page header{{/i}} <small>{{_i}}Subtext for header{{/i}}</small></h1>
-</div>
-
- -
- - - - -
- - -

{{_i}}Default thumbnails{{/i}}

-

{{_i}}By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.{{/i}}

-
- -
- -

{{_i}}Highly customizable{{/i}}

-

{{_i}}With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.{{/i}}

-
-
    -
  • -
    - -
    -

    {{_i}}Thumbnail label{{/i}}

    -

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

    -

    {{_i}}Action{{/i}} {{_i}}Action{{/i}}

    -
    -
    -
  • -
  • -
    - -
    -

    {{_i}}Thumbnail label{{/i}}

    -

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

    -

    {{_i}}Action{{/i}} {{_i}}Action{{/i}}

    -
    -
    -
  • -
  • -
    - -
    -

    {{_i}}Thumbnail label{{/i}}

    -

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

    -

    {{_i}}Action{{/i}} {{_i}}Action{{/i}}

    -
    -
    -
  • -
-
- -

{{_i}}Why use thumbnails{{/i}}

-

{{_i}}Thumbnails (previously .media-grid up until v1.4) are great for grids of photos or videos, image search results, retail products, portfolios, and much more. They can be links or static content.{{/i}}

- -

{{_i}}Simple, flexible markup{{/i}}

-

{{_i}}Thumbnail markup is simple—a ul with any number of li elements is all that is required. It's also super flexible, allowing for any type of content with just a bit more markup to wrap your contents.{{/i}}

- -

{{_i}}Uses grid column sizes{{/i}}

-

{{_i}}Lastly, the thumbnails component uses existing grid system classes—like .span2 or .span3—for control of thumbnail dimensions.{{/i}}

- -

{{_i}}Markup{{/i}}

-

{{_i}}As mentioned previously, the required markup for thumbnails is light and straightforward. Here's a look at the default setup for linked images:{{/i}}

-
-<ul class="thumbnails">
-  <li class="span4">
-    <a href="#" class="thumbnail">
-      <img data-src="holder.js/300x200" alt="">
-    </a>
-  </li>
-  ...
-</ul>
-
-

{{_i}}For custom HTML content in thumbnails, the markup changes slightly. To allow block level content anywhere, we swap the <a> for a <div> like so:{{/i}}

-
-<ul class="thumbnails">
-  <li class="span4">
-    <div class="thumbnail">
-      <img data-src="holder.js/300x200" alt="">
-      <h3>{{_i}}Thumbnail label{{/i}}</h3>
-      <p>{{_i}}Thumbnail caption...{{/i}}</p>
-    </div>
-  </li>
-  ...
-</ul>
-
- -

{{_i}}More examples{{/i}}

-

{{_i}}Explore all your options with the various grid classes available to you. You can also mix and match different sizes.{{/i}}

- - -
- - - - - -
- - -

{{_i}}Default alert{{/i}}

-

{{_i}}Wrap any text and an optional dismiss button in .alert for a basic warning alert message.{{/i}}

-
-
- - {{_i}}Warning!{{/i}} {{_i}}Best check yo self, you're not looking too good.{{/i}} -
-
-
-<div class="alert">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <strong>{{_i}}Warning!{{/i}}</strong> {{_i}}Best check yo self, you're not looking too good.{{/i}}
-</div>
-
- -

{{_i}}Dismiss buttons{{/i}}

-

{{_i}}Mobile Safari and Mobile Opera browsers, in addition to the data-dismiss="alert" attribute, require an href="#" for the dismissal of alerts when using an <a> tag.{{/i}}

-
<a href="#" class="close" data-dismiss="alert">&times;</a>
-

{{_i}}Alternatively, you may use a <button> element with the data attribute, which we have opted to do for our docs. When using <button>, you must include type="button" or your forms may not submit.{{/i}}

-
<button type="button" class="close" data-dismiss="alert">&times;</button>
- -

{{_i}}Dismiss alerts via JavaScript{{/i}}

-

{{_i}}Use the alerts jQuery plugin for quick and easy dismissal of alerts.{{/i}}

- - -
- - -

{{_i}}Options{{/i}}

-

{{_i}}For longer messages, increase the padding on the top and bottom of the alert wrapper by adding .alert-block.{{/i}}

-
-
- -

{{_i}}Warning!{{/i}}

-

{{_i}}Best check yo self, you're not looking too good.{{/i}} Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

-
-
-
-<div class="alert alert-block">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <h4>{{_i}}Warning!{{/i}}</h4>
-  {{_i}}Best check yo self, you're not...{{/i}}
-</div>
-
- - -
- - -

{{_i}}Contextual alternatives{{/i}}

-

{{_i}}Add optional classes to change an alert's connotation.{{/i}}

- -

{{_i}}Error or danger{{/i}}

-
-
- - {{_i}}Oh snap!{{/i}} {{_i}}Change a few things up and try submitting again.{{/i}} -
-
-
-<div class="alert alert-error">
-  ...
-</div>
-
- -

{{_i}}Success{{/i}}

-
-
- - {{_i}}Well done!{{/i}} {{_i}}You successfully read this important alert message.{{/i}} -
-
-
-<div class="alert alert-success">
-  ...
-</div>
-
- -

{{_i}}Information{{/i}}

-
-
- - {{_i}}Heads up!{{/i}} {{_i}}This alert needs your attention, but it's not super important.{{/i}} -
-
-
-<div class="alert alert-info">
-  ...
-</div>
-
- -
- - - - - -
- - -

{{_i}}Examples and markup{{/i}}

- -

{{_i}}Basic{{/i}}

-

{{_i}}Default progress bar with a vertical gradient.{{/i}}

-
-
-
-
-
-
-<div class="progress">
-  <div class="bar" style="width: 60%;"></div>
-</div>
-
- -

{{_i}}Striped{{/i}}

-

{{_i}}Uses a gradient to create a striped effect. Not available in IE7-8.{{/i}}

-
-
-
-
-
-
-<div class="progress progress-striped">
-  <div class="bar" style="width: 20%;"></div>
-</div>
-
- -

{{_i}}Animated{{/i}}

-

{{_i}}Add .active to .progress-striped to animate the stripes right to left. Not available in all versions of IE.{{/i}}

-
-
-
-
-
-
-<div class="progress progress-striped active">
-  <div class="bar" style="width: 40%;"></div>
-</div>
-
- -

Stacked

-

Place multiple bars into the same .progress to stack them.

-
-
-
-
-
-
-
-
-<div class="progress">
-  <div class="bar bar-success" style="width: 35%;"></div>
-  <div class="bar bar-warning" style="width: 20%;"></div>
-  <div class="bar bar-danger" style="width: 10%;"></div>
-</div>
-
- - -
- - -

{{_i}}Options{{/i}}

- -

{{_i}}Additional colors{{/i}}

-

{{_i}}Progress bars use some of the same button and alert classes for consistent styles.{{/i}}

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div class="progress progress-info">
-  <div class="bar" style="width: 20%"></div>
-</div>
-<div class="progress progress-success">
-  <div class="bar" style="width: 40%"></div>
-</div>
-<div class="progress progress-warning">
-  <div class="bar" style="width: 60%"></div>
-</div>
-<div class="progress progress-danger">
-  <div class="bar" style="width: 80%"></div>
-</div>
-
- -

{{_i}}Striped bars{{/i}}

-

{{_i}}Similar to the solid colors, we have varied striped progress bars.{{/i}}

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div class="progress progress-info progress-striped">
-  <div class="bar" style="width: 20%"></div>
-</div>
-<div class="progress progress-success progress-striped">
-  <div class="bar" style="width: 40%"></div>
-</div>
-<div class="progress progress-warning progress-striped">
-  <div class="bar" style="width: 60%"></div>
-</div>
-<div class="progress progress-danger progress-striped">
-  <div class="bar" style="width: 80%"></div>
-</div>
-
- - -
- - -

{{_i}}Browser support{{/i}}

-

{{_i}}Progress bars use CSS3 gradients, transitions, and animations to achieve all their effects. These features are not supported in IE7-9 or older versions of Firefox.{{/i}}

-

{{_i}}Versions earlier than Internet Explorer 10 and Opera 12 do not support animations.{{/i}}

- -
- - - - - -
- -

{{_i}}Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.{{/i}}

- -

{{_i}}Default example{{/i}}

-

{{_i}}The default media allow to float a media object (images, video, audio) to the left or right of a content block.{{/i}}

-
-
- - - -
-

{{_i}}Media heading{{/i}}

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
-
-
- - - -
-

{{_i}}Media heading{{/i}}

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
- - - -
-

{{_i}}Media heading{{/i}}

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
-
-
-
-
{{! /.bs-docs-example }} -
-<div class="media">
-  <a class="pull-left" href="#">
-    <img class="media-object" data-src="holder.js/64x64">
-  </a>
-  <div class="media-body">
-    <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
-    ...
-
-    <!-- Nested media object -->
-    <div class="media">
-      ...
-    </div>
-  </div>
-</div>
-
- - -
- - -

{{_i}}Media list{{/i}}

-

{{_i}}With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).{{/i}}

-
-
    -
  • - - - -
    -

    {{_i}}Media heading{{/i}}

    -

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

    - -
    - - - -
    -

    {{_i}}Nested media heading{{/i}}

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. - -
    - - - -
    -

    {{_i}}Nested media heading{{/i}}

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
    -
    -
    - -
    - - - -
    -

    {{_i}}Nested media heading{{/i}}

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
    -
    -
  • -
  • - - - -
    -

    {{_i}}Media heading{{/i}}

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
  • -
-
-
-<ul class="media-list">
-  <li class="media">
-    <a class="pull-left" href="#">
-      <img class="media-object" data-src="holder.js/64x64">
-    </a>
-    <div class="media-body">
-      <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
-      ...
-
-      <!-- Nested media object -->
-      <div class="media">
-        ...
-     </div>
-    </div>
-  </li>
-</ul>
-
- -
- - - - - - -
- - -

{{_i}}Wells{{/i}}

-

{{_i}}Use the well as a simple effect on an element to give it an inset effect.{{/i}}

-
-
- {{_i}}Look, I'm in a well!{{/i}} -
-
-
-<div class="well">
-  ...
-</div>
-
-

{{_i}}Optional classes{{/i}}

-

{{_i}}Control padding and rounded corners with two optional modifier classes.{{/i}}

-
-
- {{_i}}Look, I'm in a well!{{/i}} -
-
-
-<div class="well well-large">
-  ...
-</div>
-
-
-
- {{_i}}Look, I'm in a well!{{/i}} -
-
-
-<div class="well well-small">
-  ...
-</div>
-
- -

{{_i}}Close icon{{/i}}

-

{{_i}}Use the generic close icon for dismissing content like modals and alerts.{{/i}}

-
-

-
-
<button class="close">&times;</button>
-

{{_i}}iOS devices require an href="#" for click events if you would rather use an anchor.{{/i}}

-
<a class="close" href="#">&times;</a>
- -

{{_i}}Helper classes{{/i}}

-

{{_i}}Simple, focused classes for small display or behavior tweaks.{{/i}}

- -

{{_i}}.pull-left{{/i}}

-

{{_i}}Float an element left{{/i}}

-
-class="pull-left"
-
-
-.pull-left {
-  float: left;
-}
-
- -

{{_i}}.pull-right{{/i}}

-

{{_i}}Float an element right{{/i}}

-
-class="pull-right"
-
-
-.pull-right {
-  float: right;
-}
-
- -

{{_i}}.muted{{/i}}

-

{{_i}}Change an element's color to #999{{/i}}

-
-class="muted"
-
-
-.muted {
-  color: #999;
-}
-
- -

{{_i}}.clearfix{{/i}}

-

{{_i}}Clear the float on any element{{/i}}

-
-class="clearfix"
-
-
-.clearfix {
-  *zoom: 1;
-  &:before,
-  &:after {
-    display: table;
-    content: "";
-  }
-  &:after {
-    clear: both;
-  }
-}
-
- -
- - - -
{{! /span9 }} -
{{! row}} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/customize.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/customize.mustache deleted file mode 100644 index 213b5dbc9..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/customize.mustache +++ /dev/null @@ -1,393 +0,0 @@ - -
-
-

{{_i}}Customize and download{{/i}}

-

{{_i}}Download Bootstrap or customize variables, components, JavaScript plugins, and more.{{/i}}

-
-
- - -
- - -
- -
- - - -
-
- -
-
-

{{_i}}Scaffolding{{/i}}

- - - - -

{{_i}}Base CSS{{/i}}

- - - - - - - -
-
-

{{_i}}Components{{/i}}

- - - - - - - - - - - -

{{_i}}JS Components{{/i}}

- - - - - - -
-
-

{{_i}}Miscellaneous{{/i}}

- - - - -

{{_i}}Responsive{{/i}}

- - - - - -
-
-
- -
- -
-
- - - - - - - -
-
- - - - - - -
-
-

{{_i}}Heads up!{{/i}}

-

{{_i}}All checked plugins will be compiled into a single file, bootstrap.js. All plugins require the latest version of jQuery to be included.{{/i}}

-
-
-
- - -
- -
-
-

{{_i}}Scaffolding{{/i}}

- - - - - -

{{_i}}Links{{/i}}

- - - - -

{{_i}}Colors{{/i}}

- - - - - - - - - - - - - - - -

{{_i}}Sprites{{/i}}

- - - - - -

{{_i}}Grid system{{/i}}

- - - - - - - - - - - - - - - -
-
- -

{{_i}}Typography{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

{{_i}}Tables{{/i}}

- - - - - - - - - -

{{_i}}Forms{{/i}}

- - - - - - - - - - - - - - - - - -
-
- -

{{_i}}Form states & alerts{{/i}}

- - - - - - - - - - - - - - - - - -

{{_i}}Navbar{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

{{_i}}Dropdowns{{/i}}

- - - - - - - - - - -
-
-
- -
- -
- {{_i}}Customize and Download{{/i}} -

{{_i}}What's included?{{/i}}

-

{{_i}}Downloads include compiled CSS, compiled and minified CSS, and compiled jQuery plugins, all nicely packed up into a zipball for your convenience.{{/i}}

-
-
-
- - - -
{{! /span9 }} -
{{! row}} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/extend.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/extend.mustache deleted file mode 100644 index 5f7dc8c5c..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/extend.mustache +++ /dev/null @@ -1,161 +0,0 @@ - -
-
-

{{_i}}Extending Bootstrap{{/i}}

-

{{_i}}Extend Bootstrap to take advantage of included styles and components, as well as LESS variables and mixins.{{/i}}

-
-
- -
- - -
- -
- - - - -
- - - LESS CSS -

{{_i}}Bootstrap is made with LESS at its core, a dynamic stylesheet language created by our good friend, Alexis Sellier. It makes developing systems-based CSS faster, easier, and more fun.{{/i}}

- -

{{_i}}Why LESS?{{/i}}

-

{{_i}}One of Bootstrap's creators wrote a quick blog post about this, summarized here:{{/i}}

-
    -
  • {{_i}}Bootstrap compiles faster ~6x faster with Less compared to Sass{{/i}}
  • -
  • {{_i}}Less is written in JavaScript, making it easier to us to dive in and patch compared to Ruby with Sass.{{/i}}
  • -
  • {{_i}}Less is more; we want to feel like we're writing CSS and making Bootstrap approachable to all.{{/i}}
  • -
- -

{{_i}}What's included?{{/i}}

-

{{_i}}As an extension of CSS, LESS includes variables, mixins for reusable snippets of code, operations for simple math, nesting, and even color functions.{{/i}}

- -

{{_i}}Learn more{{/i}}

-

{{_i}}Visit the official website at http://lesscss.org to learn more.{{/i}}

-
- - - - -
- - -

{{_i}}Since our CSS is written with Less and utilizes variables and mixins, it needs to be compiled for final production implementation. Here's how.{{/i}}

- -
- {{_i}}Note: If you're submitting a pull request to GitHub with modified CSS, you must recompile the CSS via any of these methods.{{/i}} -
- -

{{_i}}Tools for compiling{{/i}}

- -

{{_i}}Command line{{/i}}

-

{{_i}}Follow the instructions in the project readme on GitHub for compiling via command line.{{/i}}

- -

{{_i}}JavaScript{{/i}}

-

{{_i}}Download the latest Less.js and include the path to it (and Bootstrap) in the <head>.{{/i}}

-
-<link rel="stylesheet/less" href="/path/to/bootstrap.less">
-<script src="/path/to/less.js"></script>
-
-

{{_i}}To recompile the .less files, just save them and reload your page. Less.js compiles them and stores them in local storage.{{/i}}

- -

{{_i}}Unofficial Mac app{{/i}}

-

{{_i}}The unofficial Mac app watches directories of .less files and compiles the code to local files after every save of a watched .less file. If you like, you can toggle preferences in the app for automatic minifying and which directory the compiled files end up in.{{/i}}

- -

{{_i}}More apps{{/i}}

-

Crunch

-

{{_i}}Crunch is a great looking LESS editor and compiler built on Adobe Air.{{/i}}

-

CodeKit

-

{{_i}}Created by the same guy as the unofficial Mac app, CodeKit is a Mac app that compiles LESS, SASS, Stylus, and CoffeeScript.{{/i}}

-

Simpless

-

{{_i}}Mac, Linux, and Windows app for drag and drop compiling of LESS files. Plus, the source code is on GitHub.{{/i}}

- -
- - - - -
- -

{{_i}}Quickly start any web project by dropping in the compiled or minified CSS and JS. Layer on custom styles separately for easy upgrades and maintenance moving forward.{{/i}}

- -

{{_i}}Setup file structure{{/i}}

-

{{_i}}Download the latest compiled Bootstrap and place into your project. For example, you might have something like this:{{/i}}

-
-   app/
-       layouts/
-       templates/
-   public/
-       css/
-           bootstrap.min.css
-       js/
-           bootstrap.min.js
-       img/
-           glyphicons-halflings.png
-           glyphicons-halflings-white.png
-
- -

{{_i}}Utilize starter template{{/i}}

-

{{_i}}Copy the following base HTML to get started.{{/i}}

-
-<html>
-  <head>
-    <title>Bootstrap 101 Template</title>
-    <!-- Bootstrap -->
-    <link href="public/css/bootstrap.min.css" rel="stylesheet">
-  </head>
-  <body>
-    <h1>Hello, world!</h1>
-    <!-- Bootstrap -->
-    <script src="public/js/bootstrap.min.js"></script>
-  </body>
-</html>
-
- -

{{_i}}Layer on custom code{{/i}}

-

{{_i}}Work in your custom CSS, JS, and more as necessary to make Bootstrap your own with your own separate CSS and JS files.{{/i}}

-
-<html>
-  <head>
-    <title>Bootstrap 101 Template</title>
-    <!-- Bootstrap -->
-    <link href="public/css/bootstrap.min.css" rel="stylesheet">
-    <!-- Project -->
-    <link href="public/css/application.css" rel="stylesheet">
-  </head>
-  <body>
-    <h1>Hello, world!</h1>
-    <!-- Bootstrap -->
-    <script src="public/js/bootstrap.min.js"></script>
-    <!-- Project -->
-    <script src="public/js/application.js"></script>
-  </body>
-</html>
-
- -
- -
{{! /span9 }} -
{{! row}} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/getting-started.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/getting-started.mustache deleted file mode 100644 index 32d61f74a..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/getting-started.mustache +++ /dev/null @@ -1,256 +0,0 @@ - -
-
-

{{_i}}Getting started{{/i}}

-

{{_i}}Overview of the project, its contents, and how to get started with a simple template.{{/i}}

-
-
- - -
- - -
- -
- - - - -
- -

{{_i}}Before downloading, be sure to have a code editor (we recommend Sublime Text 2) and some working knowledge of HTML and CSS. We won't walk through the source files here, but they are available for download. We'll focus on getting started with the compiled Bootstrap files.{{/i}}

- -
-
-

{{_i}}Download compiled{{/i}}

-

{{_i}}Fastest way to get started: get the compiled and minified versions of our CSS, JS, and images. No docs or original source files.{{/i}}

-

{{_i}}Download Bootstrap{{/i}}

-
-
-

Download source

-

Get the original files for all CSS and JavaScript, along with a local copy of the docs by downloading the latest version directly from GitHub.

-

{{_i}}Download Bootstrap source{{/i}}

-
-
-
- - - - -
- -

{{_i}}Within the download you'll find the following file structure and contents, logically grouping common assets and providing both compiled and minified variations.{{/i}}

-

{{_i}}Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:{{/i}}

-
-  bootstrap/
-  ├── css/
-  │   ├── bootstrap.css
-  │   ├── bootstrap.min.css
-  ├── js/
-  │   ├── bootstrap.js
-  │   ├── bootstrap.min.js
-  └── img/
-      ├── glyphicons-halflings.png
-      └── glyphicons-halflings-white.png
-
-

{{_i}}This is the most basic form of Bootstrap: compiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). The image files are compressed using ImageOptim, a Mac app for compressing PNGs.{{/i}}

-

{{_i}}Please note that all JavaScript plugins require jQuery to be included.{{/i}}

-
- - - - -
- -

{{_i}}Bootstrap comes equipped with HTML, CSS, and JS for all sorts of things, but they can be summarized with a handful of categories visible at the top of the Bootstrap documentation.{{/i}}

- -

{{_i}}Docs sections{{/i}}

-

{{_i}}Scaffolding{{/i}}

-

{{_i}}Global styles for the body to reset type and background, link styles, grid system, and two simple layouts.{{/i}}

-

{{_i}}Base CSS{{/i}}

-

{{_i}}Styles for common HTML elements like typography, code, tables, forms, and buttons. Also includes Glyphicons, a great little icon set.{{/i}}

-

{{_i}}Components{{/i}}

-

{{_i}}Basic styles for common interface components like tabs and pills, navbar, alerts, page headers, and more.{{/i}}

-

{{_i}}JavaScript plugins{{/i}}

-

{{_i}}Similar to Components, these JavaScript plugins are interactive components for things like tooltips, popovers, modals, and more.{{/i}}

- -

{{_i}}List of components{{/i}}

-

{{_i}}Together, the Components and JavaScript plugins sections provide the following interface elements:{{/i}}

-
    -
  • {{_i}}Button groups{{/i}}
  • -
  • {{_i}}Button dropdowns{{/i}}
  • -
  • {{_i}}Navigational tabs, pills, and lists{{/i}}
  • -
  • {{_i}}Navbar{{/i}}
  • -
  • {{_i}}Labels{{/i}}
  • -
  • {{_i}}Badges{{/i}}
  • -
  • {{_i}}Page headers and hero unit{{/i}}
  • -
  • {{_i}}Thumbnails{{/i}}
  • -
  • {{_i}}Alerts{{/i}}
  • -
  • {{_i}}Progress bars{{/i}}
  • -
  • {{_i}}Modals{{/i}}
  • -
  • {{_i}}Dropdowns{{/i}}
  • -
  • {{_i}}Tooltips{{/i}}
  • -
  • {{_i}}Popovers{{/i}}
  • -
  • {{_i}}Accordion{{/i}}
  • -
  • {{_i}}Carousel{{/i}}
  • -
  • {{_i}}Typeahead{{/i}}
  • -
-

{{_i}}In future guides, we may walk through these components individually in more detail. Until then, look for each of these in the documentation for information on how to utilize and customize them.{{/i}}

-
- - - - -
- -

{{_i}}With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the File structure.{{/i}}

-

{{_i}}Now, here's a look at a typical HTML file:{{/i}}

-
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>Bootstrap 101 Template</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  </head>
-  <body>
-    <h1>Hello, world!</h1>
-    <script src="http://code.jquery.com/jquery.js"></script>
-  </body>
-</html>
-
-

{{_i}}To make this a Bootstrapped template, just include the appropriate CSS and JS files:{{/i}}

-
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>Bootstrap 101 Template</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <!-- Bootstrap -->
-    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
-  </head>
-  <body>
-    <h1>Hello, world!</h1>
-    <script src="http://code.jquery.com/jquery.js"></script>
-    <script src="js/bootstrap.min.js"></script>
-  </body>
-</html>
-
-

{{_i}}And you're set! With those two files added, you can begin to develop any site or application with Bootstrap.{{/i}}

-
- - - - -
- -

{{_i}}Move beyond the base template with a few example layouts. We encourage folks to iterate on these examples and not simply use them as an end result.{{/i}}

-
    -
  • - - - -

    {{_i}}Starter template{{/i}}

    -

    {{_i}}A barebones HTML document with all the Bootstrap CSS and JavaScript included.{{/i}}

    -
  • -
  • - - - -

    {{_i}}Basic marketing site{{/i}}

    -

    {{_i}}Featuring a hero unit for a primary message and three supporting elements.{{/i}}

    -
  • -
  • - - - -

    {{_i}}Fluid layout{{/i}}

    -

    {{_i}}Uses our new responsive, fluid grid system to create a seamless liquid layout.{{/i}}

    -
  • - -
  • - - - -

    {{_i}}Narrow marketing{{/i}}

    -

    {{_i}}Slim, lightweight marketing template for small projects or teams.{{/i}}

    -
  • -
  • - - - -

    {{_i}}Justified nav{{/i}}

    -

    {{_i}}Marketing page with equal-width navigation links in a modified navbar.{{/i}}

    -
  • -
  • - - - -

    {{_i}}Sign in{{/i}}

    -

    {{_i}}Barebones sign in form with custom, larger form controls and a flexible layout.{{/i}}

    -
  • - -
  • - - - -

    {{_i}}Sticky footer{{/i}}

    -

    {{_i}}Pin a fixed-height footer to the bottom of the user's viewport.{{/i}}

    -
  • -
  • - - - -

    {{_i}}Carousel jumbotron{{/i}}

    -

    {{_i}}A more interactive riff on the basic marketing site featuring a prominent carousel.{{/i}}

    -
  • -
-
- - - - - -
- -

{{_i}}Head to the docs for information, examples, and code snippets, or take the next leap and customize Bootstrap for any upcoming project.{{/i}}

- {{_i}}Visit the Bootstrap docs{{/i}} - {{_i}}Customize Bootstrap{{/i}} -
- - - - -
{{! /span9 }} -
{{! row}} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/index.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/index.mustache deleted file mode 100644 index 4fb7f1cb0..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/index.mustache +++ /dev/null @@ -1,100 +0,0 @@ -
-
-

{{_i}}Bootstrap{{/i}}

-

{{_i}}Sleek, intuitive, and powerful front-end framework for faster and easier web development.{{/i}}

-

- {{_i}}Download Bootstrap{{/i}} -

- -
-
- -
-
- -
-
- -
- -
- -

{{_i}}Introducing Bootstrap.{{/i}}

- - -
-
- -

{{_i}}By nerds, for nerds.{{/i}}

-

{{_i}}Built at Twitter by @mdo and @fat, Bootstrap utilizes LESS CSS, is compiled via Node, and is managed through GitHub to help nerds do awesome stuff on the web.{{/i}}

-
-
- -

{{_i}}Made for everyone.{{/i}}

-

{{_i}}Bootstrap was made to not only look and behave great in the latest desktop browsers (as well as IE7!), but in tablet and smartphone browsers via responsive CSS as well.{{/i}}

-
-
- -

{{_i}}Packed with features.{{/i}}

-

{{_i}}A 12-column responsive grid, dozens of components, JavaScript plugins, typography, form controls, and even a web-based Customizer to make Bootstrap your own.{{/i}}

-
-
- -
- -

{{_i}}Built with Bootstrap.{{/i}}

- -
- -
- -
{{! /.marketing }} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/javascript.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/javascript.mustache deleted file mode 100644 index 2b16c9401..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/javascript.mustache +++ /dev/null @@ -1,1660 +0,0 @@ - -
-
-

{{_i}}JavaScript{{/i}}

-

{{_i}}Bring Bootstrap's components to life—now with 13 custom jQuery plugins.{{/i}} -

-
- -
- - -
- -
- - - -
- - -

{{_i}}Individual or compiled{{/i}}

-

{{_i}}Plugins can be included individually (though some have required dependencies), or all at once. Both bootstrap.js and bootstrap.min.js contain all plugins in a single file.{{/i}}

- -

{{_i}}Data attributes{{/i}}

-

{{_i}}You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first class API and should be your first consideration when using a plugin.{{/i}}

- -

{{_i}}That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this:{{/i}} -

$('body').off('.data-api')
- -

{{_i}}Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:{{/i}}

-
$('body').off('.alert.data-api')
- -

{{_i}}Programmatic API{{/i}}

-

{{_i}}We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.{{/i}}

-
$(".btn.danger").button("toggle").addClass("fat")
-

{{_i}}All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):{{/i}}

-
-$("#myModal").modal()                       // initialized with defaults
-$("#myModal").modal({ keyboard: false })   // initialized with no keyboard
-$("#myModal").modal('show')                // initializes and invokes show immediately

-
-

{{_i}}Each plugin also exposes its raw constructor on a `Constructor` property: $.fn.popover.Constructor. If you'd like to get a particular plugin instance, retrieve it directly from an element: $('[rel=popover]').data('popover').{{/i}}

- -

{{_i}}No Conflict{{/i}}

-

{{_i}}Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.{{/i}}

- -
-var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
-$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the bootstrap functionality
-
- -

{{_i}}Events{{/i}}

-

{{_i}}Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is trigger on the completion of an action.{{/i}}

-

{{_i}}All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.{{/i}}

-
-$('#myModal').on('show', function (e) {
-    if (!data) return e.preventDefault() // stops modal from being shown
-})
-
-
- - - - -
- -

{{_i}}About transitions{{/i}}

-

{{_i}}For simple transition effects, include bootstrap-transition.js once alongside the other JS files. If you're using the compiled (or minified) bootstrap.js, there is no need to include this—it's already there.{{/i}}

-

{{_i}}Use cases{{/i}}

-

{{_i}}A few examples of the transition plugin:{{/i}}

-
    -
  • {{_i}}Sliding or fading in modals{{/i}}
  • -
  • {{_i}}Fading out tabs{{/i}}
  • -
  • {{_i}}Fading out alerts{{/i}}
  • -
  • {{_i}}Sliding carousel panes{{/i}}
  • -
- - {{! Ideas: include docs for .fade.in, .slide.in, etc }} -
- - - - -
- - - -

{{_i}}Examples{{/i}}

-

{{_i}}Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.{{/i}}

- -

{{_i}}Static example{{/i}}

-

{{_i}}A rendered modal with header, body, and set of actions in the footer.{{/i}}

-
- -
{{! /example }} -
-<div class="modal hide fade">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-    <h3>{{_i}}Modal header{{/i}}</h3>
-  </div>
-  <div class="modal-body">
-    <p>{{_i}}One fine body…{{/i}}</p>
-  </div>
-  <div class="modal-footer">
-    <a href="#" class="btn">{{_i}}Close{{/i}}</a>
-    <a href="#" class="btn btn-primary">{{_i}}Save changes{{/i}}</a>
-  </div>
-</div>
-
- -

{{_i}}Live demo{{/i}}

-

{{_i}}Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.{{/i}}

- - - {{! /example }} -
-<!-- Button to trigger modal -->
-<a href="#myModal" role="button" class="btn" data-toggle="modal">{{_i}}Launch demo modal{{/i}}</a>
-
-<!-- Modal -->
-<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
-  <div class="modal-header">
-    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
-    <h3 id="myModalLabel">Modal header</h3>
-  </div>
-  <div class="modal-body">
-    <p>{{_i}}One fine body…{{/i}}</p>
-  </div>
-  <div class="modal-footer">
-    <button class="btn" data-dismiss="modal" aria-hidden="true">{{_i}}Close{{/i}}</button>
-    <button class="btn btn-primary">{{_i}}Save changes{{/i}}</button>
-  </div>
-</div>
-
- - -
- - -

{{_i}}Usage{{/i}}

- -

{{_i}}Via data attributes{{/i}}

-

{{_i}}Activate a modal without writing JavaScript. Set data-toggle="modal" on a controller element, like a button, along with a data-target="#foo" or href="#foo" to target a specific modal to toggle.{{/i}}

-
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
- -

{{_i}}Via JavaScript{{/i}}

-

{{_i}}Call a modal with id myModal with a single line of JavaScript:{{/i}}

-
$('#myModal').modal(options)
- -

{{_i}}Options{{/i}}

-

{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-backdrop="".{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
{{_i}}backdrop{{/i}}{{_i}}boolean{{/i}}{{_i}}true{{/i}}{{_i}}Includes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.{{/i}}
{{_i}}keyboard{{/i}}{{_i}}boolean{{/i}}{{_i}}true{{/i}}{{_i}}Closes the modal when escape key is pressed{{/i}}
{{_i}}show{{/i}}{{_i}}boolean{{/i}}{{_i}}true{{/i}}{{_i}}Shows the modal when initialized.{{/i}}
{{_i}}remote{{/i}}{{_i}}path{{/i}}{{_i}}false{{/i}}

{{_i}}If a remote url is provided, content will be loaded via jQuery's load method and injected into the .modal-body. If you're using the data api, you may alternatively use the href tag to specify the remote source. An example of this is shown below:{{/i}}

-
<a data-toggle="modal" href="remote.html" data-target="#modal">click me</a>
- - Methods{{/i}} -

.modal({{_i}}options{{/i}})

-

{{_i}}Activates your content as a modal. Accepts an optional options object.{{/i}}

-
-$('#myModal').modal({
-  keyboard: false
-})
-
-

.modal('toggle')

-

{{_i}}Manually toggles a modal.{{/i}}

-
$('#myModal').modal('toggle')
-

.modal('show')

-

{{_i}}Manually opens a modal.{{/i}}

-
$('#myModal').modal('show')
-

.modal('hide')

-

{{_i}}Manually hides a modal.{{/i}}

-
$('#myModal').modal('hide')
-

{{_i}}Events{{/i}}

-

{{_i}}Bootstrap's modal class exposes a few events for hooking into modal functionality.{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Event{{/i}}{{_i}}Description{{/i}}
{{_i}}show{{/i}}{{_i}}This event fires immediately when the show instance method is called.{{/i}}
{{_i}}shown{{/i}}{{_i}}This event is fired when the modal has been made visible to the user (will wait for css transitions to complete).{{/i}}
{{_i}}hide{{/i}}{{_i}}This event is fired immediately when the hide instance method has been called.{{/i}}
{{_i}}hidden{{/i}}{{_i}}This event is fired when the modal has finished being hidden from the user (will wait for css transitions to complete).{{/i}}
-
-$('#myModal').on('hidden', function () {
-  // {{_i}}do something…{{/i}}
-})
-
-
- - - - - - - - - -
- - - -

{{_i}}Example in navbar{{/i}}

-

{{_i}}The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.{{/i}}

-
- -
-

@fat

-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

-

@mdo

-

Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

-

one

-

Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

-

two

-

In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

-

three

-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

-

Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. -

-
-
{{! /example }} - - -
- - -

{{_i}}Usage{{/i}}

- -

{{_i}}Via data attributes{{/i}}

-

{{_i}}To easily add scrollspy behavior to your topbar navigation, just add data-spy="scroll" to the element you want to spy on (most typically this would be the body) and data-target=".navbar" to select which nav to use. You'll want to use scrollspy with a .nav component.{{/i}}

-
<body data-spy="scroll" data-target=".navbar">...</body>
- -

{{_i}}Via JavaScript{{/i}}

-

{{_i}}Call the scrollspy via JavaScript:{{/i}}

-
$('#navbar').scrollspy()
- -
- {{_i}}Heads up!{{/i}} - {{_i}}Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the dom like <div id="home"></div>.{{/i}} -
- -

{{_i}}Methods{{/i}}

-

.scrollspy('refresh')

-

{{_i}}When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:{{/i}}

-
-$('[data-spy="scroll"]').each(function () {
-  var $spy = $(this).scrollspy('refresh')
-});
-
- -

{{_i}}Options{{/i}}

-

{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset="".{{/i}}

- - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
{{_i}}offset{{/i}}{{_i}}number{{/i}}{{_i}}10{{/i}}{{_i}}Pixels to offset from top when calculating position of scroll.{{/i}}
- -

{{_i}}Events{{/i}}

- - - - - - - - - - - - - -
{{_i}}Event{{/i}}{{_i}}Description{{/i}}
{{_i}}activate{{/i}}{{_i}}This event fires whenever a new item becomes activated by the scrollspy.{{/i}}
-
- - - - -
- - - -

{{_i}}Example tabs{{/i}}

-

{{_i}}Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.{{/i}}

-
- -
-
-

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

-
-
-

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

-
- - -
-
{{! /example }} - - -
- - -

{{_i}}Usage{{/i}}

-

{{_i}}Enable tabbable tabs via JavaScript (each tab needs to be activated individually):{{/i}}

-
-$('#myTab a').click(function (e) {
-  e.preventDefault();
-  $(this).tab('show');
-})
-

{{_i}}You can activate individual tabs in several ways:{{/i}}

-
-$('#myTab a[href="#profile"]').tab('show'); // Select tab by name
-$('#myTab a:first').tab('show'); // Select first tab
-$('#myTab a:last').tab('show'); // Select last tab
-$('#myTab li:eq(2) a').tab('show'); // Select third tab (0-indexed)
-
- -

{{_i}}Markup{{/i}}

-

{{_i}}You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" or data-toggle="pill" on an element. Adding the nav and nav-tabs classes to the tab ul will apply the Bootstrap tab styling.{{/i}}

-
-<ul class="nav nav-tabs">
-  <li><a href="#home" data-toggle="tab">{{_i}}Home{{/i}}</a></li>
-  <li><a href="#profile" data-toggle="tab">{{_i}}Profile{{/i}}</a></li>
-  <li><a href="#messages" data-toggle="tab">{{_i}}Messages{{/i}}</a></li>
-  <li><a href="#settings" data-toggle="tab">{{_i}}Settings{{/i}}</a></li>
-</ul>
- -

{{_i}}Methods{{/i}}

-

$().tab

-

- {{_i}}Activates a tab element and content container. Tab should have either a data-target or an href targeting a container node in the DOM.{{/i}} -

-
-<ul class="nav nav-tabs" id="myTab">
-  <li class="active"><a href="#home">{{_i}}Home{{/i}}</a></li>
-  <li><a href="#profile">{{_i}}Profile{{/i}}</a></li>
-  <li><a href="#messages">{{_i}}Messages{{/i}}</a></li>
-  <li><a href="#settings">{{_i}}Settings{{/i}}</a></li>
-</ul>
-
-<div class="tab-content">
-  <div class="tab-pane active" id="home">...</div>
-  <div class="tab-pane" id="profile">...</div>
-  <div class="tab-pane" id="messages">...</div>
-  <div class="tab-pane" id="settings">...</div>
-</div>
-
-<script>
-  $(function () {
-    $('#myTab a:last').tab('show');
-  })
-</script>
-
- -

{{_i}}Events{{/i}}

- - - - - - - - - - - - - - - - - -
{{_i}}Event{{/i}}{{_i}}Description{{/i}}
{{_i}}show{{/i}}{{_i}}This event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.{{/i}}
{{_i}}shown{{/i}}{{_i}}This event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.{{/i}}
-
-$('a[data-toggle="tab"]').on('shown', function (e) {
-  e.target // activated tab
-  e.relatedTarget // previous tab
-})
-
-
- - - -
- - - -

{{_i}}Examples{{/i}}

-

{{_i}}Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.{{/i}}

-

{{_i}}For performance reasons, the tooltip and popover data-apis are opt in, meaning you must initialize them yourself.{{/i}}

-

{{_i}}Hover over the links below to see tooltips:{{/i}}

-
-

{{_i}}Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral.{{/i}} -

-
{{! /example }} - -

{{_i}}Four directions{{/i}}

- {{! /example }} - - -

{{_i}}Tooltips in input groups{{/i}}

-

{{_i}}When using tooltips and popovers with the Bootstrap input groups, you'll have to set the container (documented below) option to avoid unwanted side effects.{{/i}}

- -
- - -

{{_i}}Usage{{/i}}

-

{{_i}}Trigger the tooltip via JavaScript:{{/i}}

-
$('#example').tooltip({{_i}}options{{/i}})
- -

{{_i}}Options{{/i}}

-

{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
{{_i}}animation{{/i}}{{_i}}boolean{{/i}}true{{_i}}apply a css fade transition to the tooltip{{/i}}
{{_i}}html{{/i}}{{_i}}boolean{{/i}}false{{_i}}Insert html into the tooltip. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.{{/i}}
{{_i}}placement{{/i}}{{_i}}string | function{{/i}}'top'{{_i}}how to position the tooltip{{/i}} - top | bottom | left | right
{{_i}}selector{{/i}}{{_i}}string{{/i}}false{{_i}}If a selector is provided, tooltip objects will be delegated to the specified targets.{{/i}}
{{_i}}title{{/i}}{{_i}}string | function{{/i}}''{{_i}}default title value if `title` tag isn't present{{/i}}
{{_i}}trigger{{/i}}{{_i}}string{{/i}}'hover focus'{{_i}}how tooltip is triggered{{/i}} - click | hover | focus | manual. {{_i}}Note you case pass trigger mutliple, space seperated, trigger types.{{/i}}
{{_i}}delay{{/i}}{{_i}}number | object{{/i}}0 -

{{_i}}delay showing and hiding the tooltip (ms) - does not apply to manual trigger type{{/i}}

-

{{_i}}If a number is supplied, delay is applied to both hide/show{{/i}}

-

{{_i}}Object structure is: delay: { show: 500, hide: 100 }{{/i}}

-
{{_i}}container{{/i}}{{_i}}string | false{{/i}}{{_i}}false{{/i}} -

{{_i}}Appends the tooltip to a specific element container: 'body'{{/i}}

-
-
- {{_i}}Heads up!{{/i}} - {{_i}}Options for individual tooltips can alternatively be specified through the use of data attributes.{{/i}} -
- -

{{_i}}Markup{{/i}}

-
<a href="#" data-toggle="tooltip" title="{{_i}}first tooltip{{/i}}">{{_i}}hover over me{{/i}}</a>
- -

{{_i}}Methods{{/i}}

-

$().tooltip({{_i}}options{{/i}})

-

{{_i}}Attaches a tooltip handler to an element collection.{{/i}}

-

.tooltip('show')

-

{{_i}}Reveals an element's tooltip.{{/i}}

-
$('#element').tooltip('show')
-

.tooltip('hide')

-

{{_i}}Hides an element's tooltip.{{/i}}

-
$('#element').tooltip('hide')
-

.tooltip('toggle')

-

{{_i}}Toggles an element's tooltip.{{/i}}

-
$('#element').tooltip('toggle')
-

.tooltip('destroy')

-

{{_i}}Hides and destroys an element's tooltip.{{/i}}

-
$('#element').tooltip('destroy')
-
- - - - -
- - -

{{_i}}Examples{{/i}}

-

{{_i}}Add small overlays of content, like those on the iPad, to any element for housing secondary information. Hover over the button to trigger the popover. Requires Tooltip to be included.{{/i}}

- -

{{_i}}Static popover{{/i}}

-

{{_i}}Four options are available: top, right, bottom, and left aligned.{{/i}}

-
-
-
-

Popover top

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover right

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover bottom

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover left

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

{{_i}}No markup shown as popovers are generated from JavaScript and content within a data attribute.{{/i}}

- -

Live demo

- - -

{{_i}}Four directions{{/i}}

- {{! /example }} - - -
- - -

{{_i}}Usage{{/i}}

-

{{_i}}Enable popovers via JavaScript:{{/i}}

-
$('#example').popover({{_i}}options{{/i}})
- -

{{_i}}Options{{/i}}

-

{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
{{_i}}animation{{/i}}{{_i}}boolean{{/i}}true{{_i}}apply a css fade transition to the tooltip{{/i}}
{{_i}}html{{/i}}{{_i}}boolean{{/i}}false{{_i}}Insert html into the popover. If false, jquery's text method will be used to insert content into the dom. Use text if you're worried about XSS attacks.{{/i}}
{{_i}}placement{{/i}}{{_i}}string | function{{/i}}'right'{{_i}}how to position the popover{{/i}} - top | bottom | left | right
{{_i}}selector{{/i}}{{_i}}string{{/i}}false{{_i}}if a selector is provided, tooltip objects will be delegated to the specified targets{{/i}}
{{_i}}trigger{{/i}}{{_i}}string{{/i}}'click'{{_i}}how popover is triggered{{/i}} - click | hover | focus | manual
{{_i}}title{{/i}}{{_i}}string | function{{/i}}''{{_i}}default title value if `title` attribute isn't present{{/i}}
{{_i}}content{{/i}}{{_i}}string | function{{/i}}''{{_i}}default content value if `data-content` attribute isn't present{{/i}}
{{_i}}delay{{/i}}{{_i}}number | object{{/i}}0 -

{{_i}}delay showing and hiding the popover (ms) - does not apply to manual trigger type{{/i}}

-

{{_i}}If a number is supplied, delay is applied to both hide/show{{/i}}

-

{{_i}}Object structure is: delay: { show: 500, hide: 100 }{{/i}}

-
{{_i}}container{{/i}}{{_i}}string | false{{/i}}{{_i}}false{{/i}} -

{{_i}}Appends the popover to a specific element container: 'body'{{/i}}

-
-
- {{_i}}Heads up!{{/i}} - {{_i}}Options for individual popovers can alternatively be specified through the use of data attributes.{{/i}} -
- -

{{_i}}Markup{{/i}}

-

{{_i}}For performance reasons, the Tooltip and Popover data-apis are opt in. If you would like to use them just specify a selector option.{{/i}}

- -

{{_i}}Methods{{/i}}

-

$().popover({{_i}}options{{/i}})

-

{{_i}}Initializes popovers for an element collection.{{/i}}

-

.popover('show')

-

{{_i}}Reveals an elements popover.{{/i}}

-
$('#element').popover('show')
-

.popover('hide')

-

{{_i}}Hides an elements popover.{{/i}}

-
$('#element').popover('hide')
-

.popover('toggle')

-

{{_i}}Toggles an elements popover.{{/i}}

-
$('#element').popover('toggle')
-

.popover('destroy')

-

{{_i}}Hides and destroys an element's popover.{{/i}}

-
$('#element').popover('destroy')
-
- - - - -
- - - -

{{_i}}Example alerts{{/i}}

-

{{_i}}Add dismiss functionality to all alert messages with this plugin.{{/i}}

-
-
- - {{_i}}Holy guacamole!{{/i}} {{_i}}Best check yo self, you're not looking too good.{{/i}} -
-
{{! /example }} - -
-
- -

{{_i}}Oh snap! You got an error!{{/i}}

-

{{_i}}Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.{{/i}}

-

- {{_i}}Take this action{{/i}} {{_i}}Or do this{{/i}} -

-
-
{{! /example }} - - -
- - -

{{_i}}Usage{{/i}}

-

{{_i}}Enable dismissal of an alert via JavaScript:{{/i}}

-
$(".alert").alert()
- -

{{_i}}Markup{{/i}}

-

{{_i}}Just add data-dismiss="alert" to your close button to automatically give an alert close functionality.{{/i}}

-
<a class="close" data-dismiss="alert" href="#">&times;</a>
- -

{{_i}}Methods{{/i}}

-

$().alert()

-

{{_i}}Wraps all alerts with close functionality. To have your alerts animate out when closed, make sure they have the .fade and .in class already applied to them.{{/i}}

-

.alert('close')

-

{{_i}}Closes an alert.{{/i}}

-
$(".alert").alert('close')
- - -

{{_i}}Events{{/i}}

-

{{_i}}Bootstrap's alert class exposes a few events for hooking into alert functionality.{{/i}}

- - - - - - - - - - - - - - - - - -
{{_i}}Event{{/i}}{{_i}}Description{{/i}}
{{_i}}close{{/i}}{{_i}}This event fires immediately when the close instance method is called.{{/i}}
{{_i}}closed{{/i}}{{_i}}This event is fired when the alert has been closed (will wait for css transitions to complete).{{/i}}
-
-$('#my-alert').bind('closed', function () {
-  // {{_i}}do something…{{/i}}
-})
-
-
- - - - -
- - -

{{_i}}Example uses{{/i}}

-

{{_i}}Do more with buttons. Control button states or create groups of buttons for more components like toolbars.{{/i}}

- -

{{_i}}Stateful{{/i}}

-

{{_i}}Add data-loading-text="Loading..." to use a loading state on a button.{{/i}}

-
- -
{{! /example }} -
<button type="button" class="btn btn-primary" data-loading-text="Loading...">Loading state</button>
- -

{{_i}}Single toggle{{/i}}

-

{{_i}}Add data-toggle="button" to activate toggling on a single button.{{/i}}

-
- -
{{! /example }} -
<button type="button" class="btn btn-primary" data-toggle="button">Single Toggle</button>
- -

{{_i}}Checkbox{{/i}}

-

{{_i}}Add data-toggle="buttons-checkbox" for checkbox style toggling on btn-group.{{/i}}

-
-
- - - -
-
{{! /example }} -
-<div class="btn-group" data-toggle="buttons-checkbox">
-  <button type="button" class="btn btn-primary">Left</button>
-  <button type="button" class="btn btn-primary">Middle</button>
-  <button type="button" class="btn btn-primary">Right</button>
-</div>
-
- -

{{_i}}Radio{{/i}}

-

{{_i}}Add data-toggle="buttons-radio" for radio style toggling on btn-group.{{/i}}

-
-
- - - -
-
{{! /example }} -
-<div class="btn-group" data-toggle="buttons-radio">
-  <button type="button" class="btn btn-primary">Left</button>
-  <button type="button" class="btn btn-primary">Middle</button>
-  <button type="button" class="btn btn-primary">Right</button>
-</div>
-
- - -
- - -

{{_i}}Usage{{/i}}

-

{{_i}}Enable buttons via JavaScript:{{/i}}

-
$('.nav-tabs').button()
- -

{{_i}}Markup{{/i}}

-

{{_i}}Data attributes are integral to the button plugin. Check out the example code below for the various markup types.{{/i}}

- -

{{_i}}Options{{/i}}

-

{{_i}}None{{/i}}

- -

{{_i}}Methods{{/i}}

-

$().button('toggle')

-

{{_i}}Toggles push state. Gives the button the appearance that it has been activated.{{/i}}

-
- {{_i}}Heads up!{{/i}} - {{_i}}You can enable auto toggling of a button by using the data-toggle attribute.{{/i}} -
-
<button type="button" class="btn" data-toggle="button" >…</button>
-

$().button('loading')

-

{{_i}}Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute data-loading-text.{{/i}} -

-
<button type="button" class="btn" data-loading-text="loading stuff..." >...</button>
-
- {{_i}}Heads up!{{/i}} - {{_i}}Firefox persists the disabled state across page loads. A workaround for this is to use autocomplete="off".{{/i}} -
-

$().button('reset')

-

{{_i}}Resets button state - swaps text to original text.{{/i}}

-

$().button(string)

-

{{_i}}Resets button state - swaps text to any data defined text state.{{/i}}

-
<button type="button" class="btn" data-complete-text="finished!" >...</button>
-<script>
-  $('.btn').button('complete')
-</script>
-
-
- - - - -
- - -

{{_i}}About{{/i}}

-

{{_i}}Get base styles and flexible support for collapsible components like accordions and navigation.{{/i}}

-

* {{_i}}Requires the Transitions plugin to be included.{{/i}}

- -

{{_i}}Example accordion{{/i}}

-

{{_i}}Using the collapse plugin, we built a simple accordion style widget:{{/i}}

- -
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
-
{{! /example }} -
-<div class="accordion" id="accordion2">
-  <div class="accordion-group">
-    <div class="accordion-heading">
-      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
-        {{_i}}Collapsible Group Item #1{{/i}}
-      </a>
-    </div>
-    <div id="collapseOne" class="accordion-body collapse in">
-      <div class="accordion-inner">
-        Anim pariatur cliche...
-      </div>
-    </div>
-  </div>
-  <div class="accordion-group">
-    <div class="accordion-heading">
-      <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
-        {{_i}}Collapsible Group Item #2{{/i}}
-      </a>
-    </div>
-    <div id="collapseTwo" class="accordion-body collapse">
-      <div class="accordion-inner">
-        Anim pariatur cliche...
-      </div>
-    </div>
-  </div>
-</div>
-...
-
-

{{_i}}You can also use the plugin without the accordion markup. Make a button toggle the expanding and collapsing of another element.{{/i}}

-
-<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">
-  {{_i}}simple collapsible{{/i}}
-</button>
-
-<div id="demo" class="collapse in"> … </div>
-
- - -
- - -

{{_i}}Usage{{/i}}

- -

{{_i}}Via data attributes{{/i}}

-

{{_i}}Just add data-toggle="collapse" and a data-target to element to automatically assign control of a collapsible element. The data-target attribute accepts a css selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you'd like it to default open, add the additional class in.{{/i}}

-

{{_i}}To add accordion-like group management to a collapsible control, add the data attribute data-parent="#selector". Refer to the demo to see this in action.{{/i}}

- -

{{_i}}Via JavaScript{{/i}}

-

{{_i}}Enable manually with:{{/i}}

-
$(".collapse").collapse()
- -

{{_i}}Options{{/i}}

-

{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-parent="".{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
{{_i}}parent{{/i}}{{_i}}selector{{/i}}false{{_i}}If selector then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior){{/i}}
{{_i}}toggle{{/i}}{{_i}}boolean{{/i}}true{{_i}}Toggles the collapsible element on invocation{{/i}}
- - -

{{_i}}Methods{{/i}}

-

.collapse({{_i}}options{{/i}})

-

{{_i}}Activates your content as a collapsible element. Accepts an optional options object.{{/i}} -

-$('#myCollapsible').collapse({
-  toggle: false
-})
-
-

.collapse('toggle')

-

{{_i}}Toggles a collapsible element to shown or hidden.{{/i}}

-

.collapse('show')

-

{{_i}}Shows a collapsible element.{{/i}}

-

.collapse('hide')

-

{{_i}}Hides a collapsible element.{{/i}}

- -

{{_i}}Events{{/i}}

-

{{_i}}Bootstrap's collapse class exposes a few events for hooking into collapse functionality.{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Event{{/i}}{{_i}}Description{{/i}}
{{_i}}show{{/i}}{{_i}}This event fires immediately when the show instance method is called.{{/i}}
{{_i}}shown{{/i}}{{_i}}This event is fired when a collapse element has been made visible to the user (will wait for css transitions to complete).{{/i}}
{{_i}}hide{{/i}} - {{_i}}This event is fired immediately when the hide method has been called.{{/i}} -
{{_i}}hidden{{/i}}{{_i}}This event is fired when a collapse element has been hidden from the user (will wait for css transitions to complete).{{/i}}
-
-$('#myCollapsible').on('hidden', function () {
-  // {{_i}}do something…{{/i}}
-})
-
- - - - - - - - - -
- - - -

{{_i}}Example{{/i}}

-

{{_i}}A basic, easily extended plugin for quickly creating elegant typeaheads with any form text input.{{/i}}

-
- -
{{! /example }} -
<input type="text" data-provide="typeahead">
-

You'll want to set autocomplete="off" to prevent default browser menus from appearing over the Bootstrap typeahead dropdown.

- -
- - -

{{_i}}Usage{{/i}}

- -

{{_i}}Via data attributes{{/i}}

-

{{_i}}Add data attributes to register an element with typeahead functionality as shown in the example above.{{/i}}

- -

{{_i}}Via JavaScript{{/i}}

-

{{_i}}Call the typeahead manually with:{{/i}}

-
$('.typeahead').typeahead()
- -

{{_i}}Options{{/i}}

-

{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-source="".{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
{{_i}}source{{/i}}{{_i}}array, function{{/i}}[ ]{{_i}}The data source to query against. May be an array of strings or a function. The function is passed two arguments, the query value in the input field and the process callback. The function may be used synchronously by returning the data source directly or asynchronously via the process callback's single argument.{{/i}}
{{_i}}items{{/i}}{{_i}}number{{/i}}8{{_i}}The max number of items to display in the dropdown.{{/i}}
{{_i}}minLength{{/i}}{{_i}}number{{/i}}{{_i}}1{{/i}}{{_i}}The minimum character length needed before triggering autocomplete suggestions{{/i}}
{{_i}}matcher{{/i}}{{_i}}function{{/i}}{{_i}}case insensitive{{/i}}{{_i}}The method used to determine if a query matches an item. Accepts a single argument, the item against which to test the query. Access the current query with this.query. Return a boolean true if query is a match.{{/i}}
{{_i}}sorter{{/i}}{{_i}}function{{/i}}{{_i}}exact match,
case sensitive,
case insensitive{{/i}}
{{_i}}Method used to sort autocomplete results. Accepts a single argument items and has the scope of the typeahead instance. Reference the current query with this.query.{{/i}}
{{_i}}updater{{/i}}{{_i}}function{{/i}}{{_i}}returns selected item{{/i}}{{_i}}The method used to return selected item. Accepts a single argument, the item and has the scope of the typeahead instance.{{/i}}
{{_i}}highlighter{{/i}}{{_i}}function{{/i}}{{_i}}highlights all default matches{{/i}}{{_i}}Method used to highlight autocomplete results. Accepts a single argument item and has the scope of the typeahead instance. Should return html.{{/i}}
- -

{{_i}}Methods{{/i}}

-

.typeahead({{_i}}options{{/i}})

-

{{_i}}Initializes an input with a typeahead.{{/i}}

-
- - - - -
- - -

{{_i}}Example{{/i}}

-

{{_i}}The subnavigation on the left is a live demo of the affix plugin.{{/i}}

- -
- -

{{_i}}Usage{{/i}}

- -

{{_i}}Via data attributes{{/i}}

-

{{_i}}To easily add affix behavior to any element, just add data-spy="affix" to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.{{/i}}

- -
<div data-spy="affix" data-offset-top="200">...</div>
- -
- {{_i}}Heads up!{{/i}} - {{_i}}You must manage the position of a pinned element and the behavior of its immediate parent. Position is controlled by affix, affix-top, and affix-bottom. Remember to check for a potentially collapsed parent when the affix kicks in as it's removing content from the normal flow of the page.{{/i}} -
- -

{{_i}}Via JavaScript{{/i}}

-

{{_i}}Call the affix plugin via JavaScript:{{/i}}

-
$('#navbar').affix()
- -

{{_i}}Options{{/i}}

-

{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset-top="200".{{/i}}

- - - - - - - - - - - - - - - - - -
{{_i}}Name{{/i}}{{_i}}type{{/i}}{{_i}}default{{/i}}{{_i}}description{{/i}}
{{_i}}offset{{/i}}{{_i}}number | function | object{{/i}}{{_i}}10{{/i}}{{_i}}Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and left directions. To listen for a single direction, or multiple unique offsets, just provide an object offset: { x: 10 }. Use a function when you need to dynamically provide an offset (useful for some responsive designs).{{/i}}
-
- - - -
{{! /span9 }} -
{{! row}} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/docs/templates/pages/scaffolding.mustache b/src/main/webapp/vendors/bootstrap/docs/templates/pages/scaffolding.mustache deleted file mode 100644 index a6f2f9dac..000000000 --- a/src/main/webapp/vendors/bootstrap/docs/templates/pages/scaffolding.mustache +++ /dev/null @@ -1,485 +0,0 @@ - -
-
-

{{_i}}Scaffolding{{/i}}

-

{{_i}}Bootstrap is built on responsive 12-column grids, layouts, and components.{{/i}}

-
-
- -
- - -
- -
- - - - -
- - -

{{_i}}Requires HTML5 doctype{{/i}}

-

{{_i}}Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.{{/i}}

-
-<!DOCTYPE html>
-<html lang="en">
-  ...
-</html>
-
- -

{{_i}}Typography and links{{/i}}

-

{{_i}}Bootstrap sets basic global display, typography, and link styles. Specifically, we:{{/i}}

-
    -
  • {{_i}}Remove margin on the body{{/i}}
  • -
  • {{_i}}Set background-color: white; on the body{{/i}}
  • -
  • {{_i}}Use the @baseFontFamily, @baseFontSize, and @baseLineHeight attributes as our typographic base{{/i}}
  • -
  • {{_i}}Set the global link color via @linkColor and apply link underlines only on :hover{{/i}}
  • -
-

{{_i}}These styles can be found within scaffolding.less.{{/i}}

- -

{{_i}}Reset via Normalize{{/i}}

-

{{_i}}With Bootstrap 2, the old reset block has been dropped in favor of Normalize.css, a project by Nicolas Gallagher and Jonathan Neal that also powers the HTML5 Boilerplate. While we use much of Normalize within our reset.less, we have removed some elements specifically for Bootstrap.{{/i}}

- -
- - - - - -
- - -

{{_i}}Live grid example{{/i}}

-

{{_i}}The default Bootstrap grid system utilizes 12 columns, making for a 940px wide container without responsive features enabled. With the responsive CSS file added, the grid adapts to be 724px and 1170px wide depending on your viewport. Below 767px viewports, the columns become fluid and stack vertically.{{/i}}

-
-
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
2
-
3
-
4
-
-
-
4
-
5
-
-
-
9
-
-
- -

{{_i}}Basic grid HTML{{/i}}

-

{{_i}}For a simple two column layout, create a .row and add the appropriate number of .span* columns. As this is a 12-column grid, each .span* spans a number of those 12 columns, and should always add up to 12 for each row (or the number of columns in the parent).{{/i}}

-
-<div class="row">
-  <div class="span4">...</div>
-  <div class="span8">...</div>
-</div>
-
-

{{_i}}Given this example, we have .span4 and .span8, making for 12 total columns and a complete row.{{/i}}

- -

{{_i}}Offsetting columns{{/i}}

-

{{_i}}Move columns to the right using .offset* classes. Each class increases the left margin of a column by a whole column. For example, .offset4 moves .span4 over four columns.{{/i}}

-
-
-
4
-
3 offset 2
-
-
-
3 offset 1
-
3 offset 2
-
-
-
6 offset 3
-
-
-
-<div class="row">
-  <div class="span4">...</div>
-  <div class="span3 offset2">...</div>
-</div>
-
- -

{{_i}}Nesting columns{{/i}}

-

{{_i}}To nest your content with the default grid, add a new .row and set of .span* columns within an existing .span* column. Nested rows should include a set of columns that add up to the number of columns of its parent.{{/i}}

-
-
- {{_i}}Level 1 column{{/i}} -
-
- {{_i}}Level 2{{/i}} -
-
- {{_i}}Level 2{{/i}} -
-
-
-
-
-<div class="row">
-  <div class="span9">
-    {{_i}}Level 1 column{{/i}}
-    <div class="row">
-      <div class="span6">{{_i}}Level 2{{/i}}</div>
-      <div class="span3">{{_i}}Level 2{{/i}}</div>
-    </div>
-  </div>
-</div>
-
-
- - - - -
- - -

{{_i}}Live fluid grid example{{/i}}

-

{{_i}}The fluid grid system uses percents instead of pixels for column widths. It has the same responsive capabilities as our fixed grid system, ensuring proper proportions for key screen resolutions and devices.{{/i}}

-
-
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
-
-
4
-
4
-
4
-
-
-
4
-
8
-
-
-
6
-
6
-
-
-
12
-
-
- -

{{_i}}Basic fluid grid HTML{{/i}}

-

{{_i}}Make any row "fluid" by changing .row to .row-fluid. The column classes stay the exact same, making it easy to flip between fixed and fluid grids.{{/i}}

-
-<div class="row-fluid">
-  <div class="span4">...</div>
-  <div class="span8">...</div>
-</div>
-
- -

{{_i}}Fluid offsetting{{/i}}

-

{{_i}}Operates the same way as the fixed grid system offsetting: add .offset* to any column to offset by that many columns.{{/i}}

-
-
-
4
-
4 offset 4
-
-
-
3 offset 3
-
3 offset 3
-
-
-
6 offset 6
-
-
-
-<div class="row-fluid">
-  <div class="span4">...</div>
-  <div class="span4 offset2">...</div>
-</div>
-
- -

{{_i}}Fluid nesting{{/i}}

-

{{_i}}Fluid grids utilize nesting differently: each nested level of columns should add up to 12 columns. This is because the fluid grid uses percentages, not pixels, for setting widths.{{/i}}

-
-
- {{_i}}Fluid 12{{/i}} -
-
- {{_i}}Fluid 6{{/i}} -
-
- {{_i}}Fluid 6{{/i}} -
-
- {{_i}}Fluid 6{{/i}} -
-
-
-
- {{_i}}Fluid 6{{/i}} -
-
-
-
-
-<div class="row-fluid">
-  <div class="span12">
-    {{_i}}Fluid 12{{/i}}
-    <div class="row-fluid">
-      <div class="span6">
-        {{_i}}Fluid 6{{/i}}
-        <div class="row-fluid">
-          <div class="span6">{{_i}}Fluid 6{{/i}}</div>
-          <div class="span6">{{_i}}Fluid 6{{/i}}</div>
-        </div>
-      </div>
-      <div class="span6">{{_i}}Fluid 6{{/i}}</div>
-    </div>
-  </div>
-</div>
-
- -
- - - - - -
- - -

{{_i}}Fixed layout{{/i}}

-

{{_i}}Provides a common fixed-width (and optionally responsive) layout with only <div class="container"> required.{{/i}}

-
-
-
-
-<body>
-  <div class="container">
-    ...
-  </div>
-</body>
-
- -

{{_i}}Fluid layout{{/i}}

-

{{_i}}Create a fluid, two-column page with <div class="container-fluid">—great for applications and docs.{{/i}}

-
-
-
-
-
-<div class="container-fluid">
-  <div class="row-fluid">
-    <div class="span2">
-      <!--{{_i}}Sidebar content{{/i}}-->
-    </div>
-    <div class="span10">
-      <!--{{_i}}Body content{{/i}}-->
-    </div>
-  </div>
-</div>
-
-
- - - - - -
- - - {{! Enabling }} -

{{_i}}Enabling responsive features{{/i}}

-

{{_i}}Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the <head> of your document. If you've compiled Bootstrap from the Customize page, you need only include the meta tag.{{/i}}

-
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-

{{_i}}Heads up!{{/i}} {{_i}} Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed.{{/i}}

- - {{! About }} -

{{_i}}About responsive Bootstrap{{/i}}

- Responsive devices -

{{_i}}Media queries allow for custom CSS based on a number of conditions—ratios, widths, display type, etc—but usually focuses around min-width and max-width.{{/i}}

-
    -
  • {{_i}}Modify the width of column in our grid{{/i}}
  • -
  • {{_i}}Stack elements instead of float wherever necessary{{/i}}
  • -
  • {{_i}}Resize headings and text to be more appropriate for devices{{/i}}
  • -
-

{{_i}}Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries.{{/i}}

- - {{! Supported }} -

{{_i}}Supported devices{{/i}}

-

{{_i}}Bootstrap supports a handful of media queries in a single file to help make your projects more appropriate on different devices and screen resolutions. Here's what's included:{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Label{{/i}}{{_i}}Layout width{{/i}}{{_i}}Column width{{/i}}{{_i}}Gutter width{{/i}}
{{_i}}Large display{{/i}}1200px and up70px30px
{{_i}}Default{{/i}}980px and up60px20px
{{_i}}Portrait tablets{{/i}}768px and above42px20px
{{_i}}Phones to tablets{{/i}}767px and below{{_i}}Fluid columns, no fixed widths{{/i}}
{{_i}}Phones{{/i}}480px and below{{_i}}Fluid columns, no fixed widths{{/i}}
-
-/* {{_i}}Large desktop{{/i}} */
-@media (min-width: 1200px) { ... }
-
-/* {{_i}}Portrait tablet to landscape and desktop{{/i}} */
-@media (min-width: 768px) and (max-width: 979px) { ... }
-
-/* {{_i}}Landscape phone to portrait tablet{{/i}} */
-@media (max-width: 767px) { ... }
-
-/* {{_i}}Landscape phones and down{{/i}} */
-@media (max-width: 480px) { ... }
-
- - - {{! Responsive utility classes }} -

{{_i}}Responsive utility classes{{/i}}

-

{{_i}}For faster mobile-friendly development, use these utility classes for showing and hiding content by device. Below is a table of the available classes and their effect on a given media query layout (labeled by device). They can be found in responsive.less.{{/i}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{_i}}Class{{/i}}{{_i}}Phones 767px and below{{/i}}{{_i}}Tablets 979px to 768px{{/i}}{{_i}}Desktops Default{{/i}}
.visible-phone{{_i}}Visible{{/i}}
.visible-tablet{{_i}}Visible{{/i}}
.visible-desktop{{_i}}Visible{{/i}}
.hidden-phone{{_i}}Visible{{/i}}{{_i}}Visible{{/i}}
.hidden-tablet{{_i}}Visible{{/i}}{{_i}}Visible{{/i}}
.hidden-desktop{{_i}}Visible{{/i}}{{_i}}Visible{{/i}}
- -

{{_i}}When to use{{/i}}

-

{{_i}}Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities should not be used with tables, and as such are not supported.{{/i}}

- -

{{_i}}Responsive utilities test case{{/i}}

-

{{_i}}Resize your browser or load on different devices to test the above classes.{{/i}}

-

{{_i}}Visible on...{{/i}}

-

{{_i}}Green checkmarks indicate that class is visible in your current viewport.{{/i}}

-
    -
  • {{_i}}Phone{{/i}}✔ {{_i}}Phone{{/i}}
  • -
  • {{_i}}Tablet{{/i}}✔ {{_i}}Tablet{{/i}}
  • -
  • {{_i}}Desktop{{/i}}✔ {{_i}}Desktop{{/i}}
  • -
-

{{_i}}Hidden on...{{/i}}

-

{{_i}}Here, green checkmarks indicate that class is hidden in your current viewport.{{/i}}

-
    -
  • {{_i}}Phone{{/i}}✔ {{_i}}Phone{{/i}}
  • -
  • {{_i}}Tablet{{/i}}✔ {{_i}}Tablet{{/i}}
  • -
  • {{_i}}Desktop{{/i}}✔ {{_i}}Desktop{{/i}}
  • -
- -
- - - -
{{! /span9 }} -
{{! row}} - -
{{! /.container }} diff --git a/src/main/webapp/vendors/bootstrap/img/glyphicons-halflings-white.png b/src/main/webapp/vendors/bootstrap/img/glyphicons-halflings-white.png deleted file mode 100644 index 3bf6484a29d8da269f9bc874b25493a45fae3bae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8777 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 B7G?kd diff --git a/src/main/webapp/vendors/bootstrap/img/glyphicons-halflings.png b/src/main/webapp/vendors/bootstrap/img/glyphicons-halflings.png deleted file mode 100644 index a9969993201f9cee63cf9f49217646347297b643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12799 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 diff --git a/src/main/webapp/vendors/bootstrap/js/.jshintrc b/src/main/webapp/vendors/bootstrap/js/.jshintrc deleted file mode 100644 index e0722690b..000000000 --- a/src/main/webapp/vendors/bootstrap/js/.jshintrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "validthis": true, - "laxcomma" : true, - "laxbreak" : true, - "browser" : true, - "eqnull" : true, - "debug" : true, - "devel" : true, - "boss" : true, - "expr" : true, - "asi" : true -} \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/js/bootstrap-affix.js b/src/main/webapp/vendors/bootstrap/js/bootstrap-affix.js deleted file mode 100644 index c1059a83e..000000000 --- a/src/main/webapp/vendors/bootstrap/js/bootstrap-affix.js +++ /dev/null @@ -1,117 +0,0 @@ -/* ========================================================== - * bootstrap-affix.js v2.3.2 - * http://getbootstrap.com/2.3.2/javascript.html#affix - * ========================================================== - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* AFFIX CLASS DEFINITION - * ====================== */ - - var Affix = function (element, options) { - this.options = $.extend({}, $.fn.affix.defaults, options) - this.$window = $(window) - .on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this)) - this.$element = $(element) - this.checkPosition() - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var scrollHeight = $(document).height() - , scrollTop = this.$window.scrollTop() - , position = this.$element.offset() - , offset = this.options.offset - , offsetBottom = offset.bottom - , offsetTop = offset.top - , reset = 'affix affix-top affix-bottom' - , affix - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top() - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() - - affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? - false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? - 'bottom' : offsetTop != null && scrollTop <= offsetTop ? - 'top' : false - - if (this.affixed === affix) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? position.top - scrollTop : null - - this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) - } - - - /* AFFIX PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.affix - - $.fn.affix = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('affix') - , options = typeof option == 'object' && option - if (!data) $this.data('affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.affix.Constructor = Affix - - $.fn.affix.defaults = { - offset: 0 - } - - - /* AFFIX NO CONFLICT - * ================= */ - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - /* AFFIX DATA-API - * ============== */ - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - , data = $spy.data() - - data.offset = data.offset || {} - - data.offsetBottom && (data.offset.bottom = data.offsetBottom) - data.offsetTop && (data.offset.top = data.offsetTop) - - $spy.affix(data) - }) - }) - - -}(window.jQuery); \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/js/bootstrap-alert.js b/src/main/webapp/vendors/bootstrap/js/bootstrap-alert.js deleted file mode 100644 index 9577e62de..000000000 --- a/src/main/webapp/vendors/bootstrap/js/bootstrap-alert.js +++ /dev/null @@ -1,99 +0,0 @@ -/* ========================================================== - * bootstrap-alert.js v2.3.2 - * http://getbootstrap.com/2.3.2/javascript.html#alerts - * ========================================================== - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* ALERT CLASS DEFINITION - * ====================== */ - - var dismiss = '[data-dismiss="alert"]' - , Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.prototype.close = function (e) { - var $this = $(this) - , selector = $this.attr('data-target') - , $parent - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 - } - - $parent = $(selector) - - e && e.preventDefault() - - $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) - - $parent.trigger(e = $.Event('close')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - $parent - .trigger('closed') - .remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent.on($.support.transition.end, removeElement) : - removeElement() - } - - - /* ALERT PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.alert - - $.fn.alert = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('alert') - if (!data) $this.data('alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.alert.Constructor = Alert - - - /* ALERT NO CONFLICT - * ================= */ - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - /* ALERT DATA-API - * ============== */ - - $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) - -}(window.jQuery); \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/js/bootstrap-button.js b/src/main/webapp/vendors/bootstrap/js/bootstrap-button.js deleted file mode 100644 index 4b2a90ab8..000000000 --- a/src/main/webapp/vendors/bootstrap/js/bootstrap-button.js +++ /dev/null @@ -1,105 +0,0 @@ -/* ============================================================ - * bootstrap-button.js v2.3.2 - * http://getbootstrap.com/2.3.2/javascript.html#buttons - * ============================================================ - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* BUTTON PUBLIC CLASS DEFINITION - * ============================== */ - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, $.fn.button.defaults, options) - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - , $el = this.$element - , data = $el.data() - , val = $el.is('input') ? 'val' : 'html' - - state = state + 'Text' - data.resetText || $el.data('resetText', $el[val]()) - - $el[val](data[state] || this.options[state]) - - // push to event loop to allow forms to submit - setTimeout(function () { - state == 'loadingText' ? - $el.addClass(d).attr(d, d) : - $el.removeClass(d).removeAttr(d) - }, 0) - } - - Button.prototype.toggle = function () { - var $parent = this.$element.closest('[data-toggle="buttons-radio"]') - - $parent && $parent - .find('.active') - .removeClass('active') - - this.$element.toggleClass('active') - } - - - /* BUTTON PLUGIN DEFINITION - * ======================== */ - - var old = $.fn.button - - $.fn.button = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('button') - , options = typeof option == 'object' && option - if (!data) $this.data('button', (data = new Button(this, options))) - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - $.fn.button.defaults = { - loadingText: 'loading...' - } - - $.fn.button.Constructor = Button - - - /* BUTTON NO CONFLICT - * ================== */ - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - /* BUTTON DATA-API - * =============== */ - - $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - $btn.button('toggle') - }) - -}(window.jQuery); \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/js/bootstrap-carousel.js b/src/main/webapp/vendors/bootstrap/js/bootstrap-carousel.js deleted file mode 100644 index c1e8ade8b..000000000 --- a/src/main/webapp/vendors/bootstrap/js/bootstrap-carousel.js +++ /dev/null @@ -1,207 +0,0 @@ -/* ========================================================== - * bootstrap-carousel.js v2.3.2 - * http://getbootstrap.com/2.3.2/javascript.html#carousel - * ========================================================== - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* CAROUSEL CLASS DEFINITION - * ========================= */ - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.options.pause == 'hover' && this.$element - .on('mouseenter', $.proxy(this.pause, this)) - .on('mouseleave', $.proxy(this.cycle, this)) - } - - Carousel.prototype = { - - cycle: function (e) { - if (!e) this.paused = false - if (this.interval) clearInterval(this.interval); - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - return this - } - - , getActiveIndex: function () { - this.$active = this.$element.find('.item.active') - this.$items = this.$active.parent().children() - return this.$items.index(this.$active) - } - - , to: function (pos) { - var activeIndex = this.getActiveIndex() - , that = this - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) { - return this.$element.one('slid', function () { - that.to(pos) - }) - } - - if (activeIndex == pos) { - return this.pause().cycle() - } - - return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) - } - - , pause: function (e) { - if (!e) this.paused = true - if (this.$element.find('.next, .prev').length && $.support.transition.end) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - clearInterval(this.interval) - this.interval = null - return this - } - - , next: function () { - if (this.sliding) return - return this.slide('next') - } - - , prev: function () { - if (this.sliding) return - return this.slide('prev') - } - - , slide: function (type, next) { - var $active = this.$element.find('.item.active') - , $next = next || $active[type]() - , isCycling = this.interval - , direction = type == 'next' ? 'left' : 'right' - , fallback = type == 'next' ? 'first' : 'last' - , that = this - , e - - this.sliding = true - - isCycling && this.pause() - - $next = $next.length ? $next : this.$element.find('.item')[fallback]() - - e = $.Event('slide', { - relatedTarget: $next[0] - , direction: direction - }) - - if ($next.hasClass('active')) return - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - this.$element.one('slid', function () { - var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) - $nextIndicator && $nextIndicator.addClass('active') - }) - } - - if ($.support.transition && this.$element.hasClass('slide')) { - this.$element.trigger(e) - if (e.isDefaultPrevented()) return - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - this.$element.one($.support.transition.end, function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { that.$element.trigger('slid') }, 0) - }) - } else { - this.$element.trigger(e) - if (e.isDefaultPrevented()) return - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger('slid') - } - - isCycling && this.cycle() - - return this - } - - } - - - /* CAROUSEL PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.carousel - - $.fn.carousel = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('carousel') - , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) - , action = typeof option == 'string' ? option : options.slide - if (!data) $this.data('carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - $.fn.carousel.defaults = { - interval: 5000 - , pause: 'hover' - } - - $.fn.carousel.Constructor = Carousel - - - /* CAROUSEL NO CONFLICT - * ==================== */ - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - /* CAROUSEL DATA-API - * ================= */ - - $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { - var $this = $(this), href - , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 - , options = $.extend({}, $target.data(), $this.data()) - , slideIndex - - $target.carousel(options) - - if (slideIndex = $this.attr('data-slide-to')) { - $target.data('carousel').pause().to(slideIndex).cycle() - } - - e.preventDefault() - }) - -}(window.jQuery); \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/js/bootstrap-collapse.js b/src/main/webapp/vendors/bootstrap/js/bootstrap-collapse.js deleted file mode 100644 index ae3e4c63f..000000000 --- a/src/main/webapp/vendors/bootstrap/js/bootstrap-collapse.js +++ /dev/null @@ -1,167 +0,0 @@ -/* ============================================================= - * bootstrap-collapse.js v2.3.2 - * http://getbootstrap.com/2.3.2/javascript.html#collapse - * ============================================================= - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* COLLAPSE PUBLIC CLASS DEFINITION - * ================================ */ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, $.fn.collapse.defaults, options) - - if (this.options.parent) { - this.$parent = $(this.options.parent) - } - - this.options.toggle && this.toggle() - } - - Collapse.prototype = { - - constructor: Collapse - - , dimension: function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - , show: function () { - var dimension - , scroll - , actives - , hasData - - if (this.transitioning || this.$element.hasClass('in')) return - - dimension = this.dimension() - scroll = $.camelCase(['scroll', dimension].join('-')) - actives = this.$parent && this.$parent.find('> .accordion-group > .in') - - if (actives && actives.length) { - hasData = actives.data('collapse') - if (hasData && hasData.transitioning) return - actives.collapse('hide') - hasData || actives.data('collapse', null) - } - - this.$element[dimension](0) - this.transition('addClass', $.Event('show'), 'shown') - $.support.transition && this.$element[dimension](this.$element[0][scroll]) - } - - , hide: function () { - var dimension - if (this.transitioning || !this.$element.hasClass('in')) return - dimension = this.dimension() - this.reset(this.$element[dimension]()) - this.transition('removeClass', $.Event('hide'), 'hidden') - this.$element[dimension](0) - } - - , reset: function (size) { - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - [dimension](size || 'auto') - [0].offsetWidth - - this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') - - return this - } - - , transition: function (method, startEvent, completeEvent) { - var that = this - , complete = function () { - if (startEvent.type == 'show') that.reset() - that.transitioning = 0 - that.$element.trigger(completeEvent) - } - - this.$element.trigger(startEvent) - - if (startEvent.isDefaultPrevented()) return - - this.transitioning = 1 - - this.$element[method]('in') - - $.support.transition && this.$element.hasClass('collapse') ? - this.$element.one($.support.transition.end, complete) : - complete() - } - - , toggle: function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - } - - - /* COLLAPSE PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.collapse - - $.fn.collapse = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('collapse') - , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) - if (!data) $this.data('collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.collapse.defaults = { - toggle: true - } - - $.fn.collapse.Constructor = Collapse - - - /* COLLAPSE NO CONFLICT - * ==================== */ - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - /* COLLAPSE DATA-API - * ================= */ - - $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { - var $this = $(this), href - , target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - , option = $(target).data('collapse') ? 'toggle' : $this.data() - $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - $(target).collapse(option) - }) - -}(window.jQuery); \ No newline at end of file diff --git a/src/main/webapp/vendors/bootstrap/js/bootstrap-dropdown.js b/src/main/webapp/vendors/bootstrap/js/bootstrap-dropdown.js deleted file mode 100644 index d04da5d7b..000000000 --- a/src/main/webapp/vendors/bootstrap/js/bootstrap-dropdown.js +++ /dev/null @@ -1,169 +0,0 @@ -/* ============================================================ - * bootstrap-dropdown.js v2.3.2 - * http://getbootstrap.com/2.3.2/javascript.html#dropdowns - * ============================================================ - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* DROPDOWN CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=dropdown]' - , Dropdown = function (element) { - var $el = $(element).on('click.dropdown.data-api', this.toggle) - $('html').on('click.dropdown.data-api', function () { - $el.parent().removeClass('open') - }) - } - - Dropdown.prototype = { - - constructor: Dropdown - - , toggle: function (e) { - var $this = $(this) - , $parent - , isActive - - if ($this.is('.disabled, :disabled')) return - - $parent = getParent($this) - - isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement) { - // if mobile we we use a backdrop because click events don't delegate - $('
","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) -}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b(" - - - diff --git a/src/main/webapp/vendors/jquery/test/data/dashboard.xml b/src/main/webapp/vendors/jquery/test/data/dashboard.xml deleted file mode 100644 index 5a6f56142..000000000 --- a/src/main/webapp/vendors/jquery/test/data/dashboard.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/main/webapp/vendors/jquery/test/data/dimensions/documentLarge.html b/src/main/webapp/vendors/jquery/test/data/dimensions/documentLarge.html deleted file mode 100644 index a6598fcc8..000000000 --- a/src/main/webapp/vendors/jquery/test/data/dimensions/documentLarge.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -
- -
- - diff --git a/src/main/webapp/vendors/jquery/test/data/dimensions/documentSmall.html b/src/main/webapp/vendors/jquery/test/data/dimensions/documentSmall.html deleted file mode 100644 index 63e1c2a8f..000000000 --- a/src/main/webapp/vendors/jquery/test/data/dimensions/documentSmall.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - -
- -
- - diff --git a/src/main/webapp/vendors/jquery/test/data/echoData.php b/src/main/webapp/vendors/jquery/test/data/echoData.php deleted file mode 100644 index a37ba515a..000000000 --- a/src/main/webapp/vendors/jquery/test/data/echoData.php +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/main/webapp/vendors/jquery/test/data/echoQuery.php b/src/main/webapp/vendors/jquery/test/data/echoQuery.php deleted file mode 100644 index b72f329c9..000000000 --- a/src/main/webapp/vendors/jquery/test/data/echoQuery.php +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/errorWithJSON.php b/src/main/webapp/vendors/jquery/test/data/errorWithJSON.php deleted file mode 100644 index 62b187ecc..000000000 --- a/src/main/webapp/vendors/jquery/test/data/errorWithJSON.php +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/src/main/webapp/vendors/jquery/test/data/evalScript.php b/src/main/webapp/vendors/jquery/test/data/evalScript.php deleted file mode 100644 index ea9b8c55f..000000000 --- a/src/main/webapp/vendors/jquery/test/data/evalScript.php +++ /dev/null @@ -1 +0,0 @@ -ok( "" === "GET", "request method is " ); \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/event/focusElem.html b/src/main/webapp/vendors/jquery/test/data/event/focusElem.html deleted file mode 100644 index 10726b4ff..000000000 --- a/src/main/webapp/vendors/jquery/test/data/event/focusElem.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - .focus() (activeElement access #13393) - - - - - - - - diff --git a/src/main/webapp/vendors/jquery/test/data/event/longLoadScript.php b/src/main/webapp/vendors/jquery/test/data/event/longLoadScript.php deleted file mode 100644 index ba47168b4..000000000 --- a/src/main/webapp/vendors/jquery/test/data/event/longLoadScript.php +++ /dev/null @@ -1,4 +0,0 @@ - \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/event/onbeforeunload.html b/src/main/webapp/vendors/jquery/test/data/event/onbeforeunload.html deleted file mode 100644 index 11ad1964a..000000000 --- a/src/main/webapp/vendors/jquery/test/data/event/onbeforeunload.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/src/main/webapp/vendors/jquery/test/data/event/promiseReady.html b/src/main/webapp/vendors/jquery/test/data/event/promiseReady.html deleted file mode 100644 index 17b6e7f2c..000000000 --- a/src/main/webapp/vendors/jquery/test/data/event/promiseReady.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - -Test case for jQuery ticket #11470 - - - - - - - diff --git a/src/main/webapp/vendors/jquery/test/data/event/syncReady.html b/src/main/webapp/vendors/jquery/test/data/event/syncReady.html deleted file mode 100644 index e0885707e..000000000 --- a/src/main/webapp/vendors/jquery/test/data/event/syncReady.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - -Test case for jQuery ticket #10067 - - - - - - - - -
- - diff --git a/src/main/webapp/vendors/jquery/test/data/headers.php b/src/main/webapp/vendors/jquery/test/data/headers.php deleted file mode 100644 index 968f13f19..000000000 --- a/src/main/webapp/vendors/jquery/test/data/headers.php +++ /dev/null @@ -1,18 +0,0 @@ - $value ) { - - $key = str_replace( "_" , "-" , substr( $key , 0 , 5 ) == "HTTP_" ? substr( $key , 5 ) : $key ); - $headers[ $key ] = $value; - -} - -foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) { - echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n"; -} diff --git a/src/main/webapp/vendors/jquery/test/data/if_modified_since.php b/src/main/webapp/vendors/jquery/test/data/if_modified_since.php deleted file mode 100644 index 098b7da85..000000000 --- a/src/main/webapp/vendors/jquery/test/data/if_modified_since.php +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/src/main/webapp/vendors/jquery/test/data/iframe.html b/src/main/webapp/vendors/jquery/test/data/iframe.html deleted file mode 100644 index ad646c430..000000000 --- a/src/main/webapp/vendors/jquery/test/data/iframe.html +++ /dev/null @@ -1,8 +0,0 @@ - - - iframe - - -
span text
- - diff --git a/src/main/webapp/vendors/jquery/test/data/jquery-1.9.1.ajax_xhr.min.js b/src/main/webapp/vendors/jquery/test/data/jquery-1.9.1.ajax_xhr.min.js deleted file mode 100644 index 0c5f64c12..000000000 --- a/src/main/webapp/vendors/jquery/test/data/jquery-1.9.1.ajax_xhr.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.9.1 -css,-event-alias,-ajax/script,-ajax/jsonp,-effects,-offset,-dimensions,-deprecated | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery.min.map -*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],d="1.9.1 -css,-event-alias,-ajax/script,-ajax/jsonp,-effects,-offset,-dimensions,-deprecated",p=c.concat,f=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=d.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,N=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,k=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,S=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,j=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(M(),b.ready())},M=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:d,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:w.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&E.test(n.replace(A,"@").replace(S,"]").replace(k,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,j)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=B(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(N,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(B(Object(e))?b.merge(n,"string"==typeof e?[e]:e):f.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=B(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return p.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}M(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function B(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function O(e){var t=_[e]={};return b.each(e.match(T)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||O(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:d.disable())},d={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&d.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||d.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!i}};return d},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,d,p,f=o.createElement("div");if(f.setAttribute("className","t"),f.innerHTML="
a",n=f.getElementsByTagName("*"),r=f.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=f.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==f.className,leadingWhitespace:3===f.firstChild.nodeType,tbody:!f.getElementsByTagName("tbody").length,htmlSerialize:!!f.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete f.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,f.attachEvent&&(f.attachEvent("onclick",function(){t.noCloneEvent=!1}),f.cloneNode(!0).click());for(p in{submit:!0,change:!0,focusin:!0})f.setAttribute(c="on"+p,"t"),t[p+"Bubbles"]=c in e||f.attributes[c].expando===!1;return f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===f.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(f),f.innerHTML="
t
",a=f.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=d&&0===a[0].offsetHeight,f.innerHTML="",f.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===f.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(f,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(f,null)||{width:"4px"}).width,r=f.appendChild(o.createElement("div")),r.style.cssText=f.style.cssText=s,r.style.marginRight=r.style.width="0",f.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof f.style.zoom!==i&&(f.innerHTML="",f.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===f.offsetWidth,f.style.display="block",f.innerHTML="
",f.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==f.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=f=a=r=null)}),n=s=u=l=r=a=null,t}();var F=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,q=/([A-Z])/g;function R(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,d=l?b.cache:e,p=l?e[s]:e[s]&&s;if(p&&d[p]&&(i||d[p].data)||!u||r!==t)return p||(l?e[s]=p=c.pop()||b.guid++:p=s),d[p]||(d[p]={},l||(d[p].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?d[p]=b.extend(d[p],n):d[p].data=b.extend(d[p].data,n)),o=d[p],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function P(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?I:b.isEmptyObject)(o))return}(n||(delete s[u].data,I(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(d+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return P(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return P(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),$(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?$(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(q,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:F.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var W,X,z=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,Q=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,K=b.support.getSetAttribute,Y=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(z," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(z," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(T)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(z," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(Q.test(n)?X:W)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,Q.test(n)?!K&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(K?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:t}}}}),X={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?Y&&K?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):Y&&K||!G.test(n)?e.setAttribute(!K&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},Y&&K||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):W&&W.set(e,n,r)}}),K||(W=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:W.get,set:function(e,t,n){W.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,d,p,f,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(p=v.handle)||(p=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(p.elem,arguments)},p.elem=e),n=(n||"").match(T)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),d=b.event.special[g]||{},g=(a?d.delegateType:d.bindType)||g,d=b.event.special[g]||{},f=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,d.setup&&d.setup.call(e,o,m,p)!==!1||(e.addEventListener?e.addEventListener(g,p,!1):e.attachEvent&&e.attachEvent("on"+g,p))),d.add&&(d.add.call(e,f),f.handler.guid||(f.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,f):h.push(f),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,d,p,f,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],f=g=s[1],h=(s[2]||"").split(".").sort(),f){d=b.event.special[f]||{},f=(r?d.delegateType:d.bindType)||f,p=c[f]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=p.length;while(o--)a=p[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(p.splice(o,1),a.selector&&p.delegateCount--,d.remove&&d.remove.call(e,a));u&&!p.length&&(d.teardown&&d.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,f,m.handle),delete c[f])}else for(f in c)b.event.remove(e,f+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,d,p,f,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=p=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),d=b.event.special[g]||{},a||!d.trigger||d.trigger.apply(i,r)!==!1)){if(!a&&!d.noBubble&&!b.isWindow(i)){for(c=d.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),p=l;p===(i.ownerDocument||o)&&h.push(p.defaultView||p.parentWindow||e)}f=0;while((l=h[f++])&&!n.isPropagationStopped())n.type=f>1?c:d.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||d._default&&d._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){p=i[u],p&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,p&&(i[u]=p)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; -return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,d,p,f,h,g,m,y,v,x="sizzle"+-new Date,T=e.document,N={},w=0,C=0,E=it(),k=it(),A=it(),S=typeof t,D=1<<31,L=[],j=L.pop,H=L.push,M=L.slice,B=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",O="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",F=O.replace("w","w#"),q="([*^$|!~]?=)",R="\\["+_+"*("+O+")"+_+"*(?:"+q+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+F+")|)|)"+_+"*\\]",P=":("+O+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+R.replace(3,8)+")*)|.*)\\)|)",$=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),I=RegExp("^"+_+"*,"+_+"*"),W=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),X=RegExp(P),z=RegExp("^"+F+"$"),U={ID:RegExp("^#("+O+")"),CLASS:RegExp("^\\.("+O+")"),NAME:RegExp("^\\[name=['\"]?("+O+")['\"]?\\]"),TAG:RegExp("^("+O.replace("w","w*")+")"),ATTR:RegExp("^"+R),PSEUDO:RegExp("^"+P),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,J=/^[^{]+\{\s*\[native code/,Q=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,Y=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{M.call(T.documentElement.childNodes,0)[0].nodeType}catch(nt){M=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return J.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=d.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,p,g,m,v;if((t?t.ownerDocument||t:T)!==d&&c(t),t=t||d,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!f&&!r){if(i=Q.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,M.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&N.getByClassName&&t.getElementsByClassName)return H.apply(n,M.call(t.getElementsByClassName(a),0)),n}if(N.qsa&&!h.test(e)){if(p=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=pt(e),(p=t.getAttribute("id"))?g=p.replace(Y,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+ft(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,M.call(m.querySelectorAll(v),0)),n}catch(b){}finally{p||t.removeAttribute("id")}}}return Tt(e.replace($,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:T;return n!==d&&9===n.nodeType&&n.documentElement?(d=n,p=n.documentElement,f=a(n),N.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),N.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),N.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),N.getByName=at(function(e){e.id=x+0,e.innerHTML="
",p.insertBefore(e,p.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return N.getIdNotName=!n.getElementById(x),p.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==S&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},N.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==S&&!f){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==S&&!f){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==S&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==S&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=N.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==S?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=N.getByName&&function(e,n){return typeof n.getElementsByName!==S?n.getElementsByName(name):t},i.find.CLASS=N.getByClassName&&function(e,n){return typeof n.getElementsByClassName===S||f?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(N.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(N.matchesSelector=rt(m=p.matchesSelector||p.mozMatchesSelector||p.webkitMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&at(function(e){N.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",P)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(p.contains)||p.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=p.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(T,e)?-1:t===n||y(T,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===T?-1:l[i]===T?1:0},u=!1,[0,0].sort(v),N.detectDuplicates=u,d):d},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&c(e),t=t.replace(Z,"='$1']"),!(!N.matchesSelector||f||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||N.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,d,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==d&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==d&&c(e),f||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):f||N.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!N.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function dt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&X.test(n)&&(t=pt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=E[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&E(e,function(e){return t.test(e.className||typeof e.getAttribute!==S&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,d,p,f,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){d=t;while(d=d[g])if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],f=l[0]===w&&l[1],p=l[0]===w&&l[2],d=f&&m.childNodes[f];while(d=++f&&d&&d[g]||(p=f=0)||h.pop())if(1===d.nodeType&&++p&&d===t){c[e]=[w,f,p];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===w)p=l[1];else while(d=++f&&d&&d[g]||(p=f=0)||h.pop())if((s?d.nodeName.toLowerCase()===y:1===d.nodeType)&&++p&&(v&&((d[x]||(d[x]={}))[e]=[w,p]),d===t))break;return p-=i,p===r||0===p%r&&p/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=B.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace($,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return z.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=f?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===p},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return K.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:dt(function(){return[0]}),last:dt(function(e,t){return[t-1]}),eq:dt(function(e,t,n){return[0>n?n+t:n]}),even:dt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:dt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:dt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:dt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function pt(e,t){var n,r,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=I.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=W.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace($," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):k(e,u).slice(0)}function ft(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,d=w+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===d){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[d],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,d,p=[],f=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,p,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,f),r(l,[],s,u),c=l.length;while(c--)(d=l[c])&&(y[f[c]]=!(m[f[c]]=d))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(d=y[c])&&l.push(m[c]=d);i(null,y=[],l,u)}c=y.length;while(c--)(d=y[c])&&(l=i?B.call(o,d):p[c])>-1&&(o[l]=!(a[l]=d))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),d=ht(function(e){return B.call(t,e)>-1},s,!0),p=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):d(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])p=[ht(gt(p),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(p),u>1&&ft(e.slice(0,u-1)).replace($,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&ft(e))}p.push(n)}return gt(p)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,p,f){var h,g,m,y=[],v=0,b="0",x=s&&[],T=null!=f,N=l,C=s||a&&i.find.TAG("*",f&&u.parentNode||u),E=w+=null==N?1:Math.random()||.1;for(T&&(l=u!==d&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){p.push(h);break}T&&(w=E,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=j.call(p));y=mt(y)}H.apply(p,y),T&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(p)}return T&&(w=E,l=N),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=A[e+" "];if(!o){t||(t=pt(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=A(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function Tt(e,t,n,r){var o,a,u,l,c,d=pt(e);if(!r&&1===d.length){if(a=d[0]=d[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!f&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&ft(a),!e)return H.apply(n,M.call(r,0)),n;break}}}return s(e,d)(r,t,f,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Nt(){}i.filters=Nt.prototype=i.pseudos,i.setFilters=new Nt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(pt(this,e,!1))},filter:function(e){return this.pushStack(pt(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function dt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return dt(e,"nextSibling")},prev:function(e){return dt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function pt(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function ft(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,St={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},Dt=ft(o),Lt=Dt.appendChild(o.createElement("div"));St.optgroup=St.option,St.tbody=St.tfoot=St.colgroup=St.caption=St.thead,St.th=St.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ft(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Bt(Ft(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Nt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||St[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=p.apply([],e);var i,o,a,s,u,l,c=0,d=this.length,f=this,h=d-1,g=e[0],m=b.isFunction(g);if(m||!(1>=d||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=f.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(d&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ft(l,"script"),Ht),a=s.length;d>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ft(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?jt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,Mt),c=0;a>c;c++)o=s[c],Et.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(At,"")));l=i=null}return this}});function jt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function Mt(e){var t=kt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Bt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,Mt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&wt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),f.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ft(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function qt(e){wt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Lt.innerHTML=e.outerHTML,Lt.removeChild(o=Lt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ft(o,"script"),r.length>0&&Bt(r,!u&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,d=e.length,p=ft(t),f=[],h=0;for(;d>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(f,o.nodeType?[o]:o);else if(Tt.test(o)){s=s||p.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=St[u]||St._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&f.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) -}b.merge(f,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=p.lastChild}else f.push(t.createTextNode(o));s&&p.removeChild(s),b.support.appendChecked||b.grep(Ft(f,"input"),qt),h=0;while(o=f[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ft(p.appendChild(o),"script"),a&&Bt(s),n)){i=0;while(o=s[i++])Et.test(o.type||"")&&n.push(o)}return s=null,p},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,d=b.support.deleteExpando,p=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)p[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],d?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Rt=/%20/g,Pt=/\[\]$/,$t=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,Wt=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&Wt.test(this.nodeName)&&!It.test(e)&&(this.checked||!wt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace($t,"\r\n")}}):{name:t.name,value:n.replace($t,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)Xt(r,e[r],n,o);return i.join("&").replace(Rt,"+")};function Xt(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||Pt.test(e)?r(e,i):Xt(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)Xt(e+"["+i+"]",t[i],n,r)}var zt,Ut,Vt=b.now(),Jt=/\?/,Qt=/#.*$/,Gt=/([?&])_=[^&]*/,Kt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Yt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=b.fn.load,rn={},on={},an="*/".concat("*");try{Ut=a.href}catch(sn){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}zt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,n,r,i){var o={},a=e===on;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function cn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("
").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Yt.test(zt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":an,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,b.ajaxSettings),t):cn(b.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,d=b.ajaxSetup({},n),p=d.context||d,f=d.context&&(p.nodeType||p.jquery)?b(p):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=d.statusCode||{},y={},v={},x=0,N="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Kt.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||N;return l&&l.abort(t),E(0,t),this}};if(h.promise(w).complete=g.add,w.success=w.done,w.error=w.fail,d.url=((e||d.url||Ut)+"").replace(Qt,"").replace(en,zt[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=b.trim(d.dataType||"*").toLowerCase().match(T)||[""],null==d.crossDomain&&(r=tn.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]===zt[1]&&r[2]===zt[2]&&(r[3]||("http:"===r[1]?80:443))==(zt[3]||("http:"===zt[1]?80:443)))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=b.param(d.data,d.traditional)),ln(rn,d,n,w),2===x)return w;u=d.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Zt.test(d.type),o=d.url,d.hasContent||(d.data&&(o=d.url+=(Jt.test(o)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Gt.test(o)?o.replace(Gt,"$1_="+Vt++):o+(Jt.test(o)?"&":"?")+"_="+Vt++)),d.ifModified&&(b.lastModified[o]&&w.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&w.setRequestHeader("If-None-Match",b.etag[o])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&w.setRequestHeader("Content-Type",d.contentType),w.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+an+"; q=0.01":""):d.accepts["*"]);for(i in d.headers)w.setRequestHeader(i,d.headers[i]);if(d.beforeSend&&(d.beforeSend.call(p,w,d)===!1||2===x))return w.abort();N="abort";for(i in{success:1,error:1,complete:1})w[i](d[i]);if(l=ln(on,d,n,w)){w.readyState=1,u&&f.trigger("ajaxSend",[w,d]),d.async&&d.timeout>0&&(s=setTimeout(function(){w.abort("timeout")},d.timeout));try{x=1,l.send(y,E)}catch(C){if(!(2>x))throw C;E(-1,C)}}else E(-1,"No Transport");function E(e,n,r,i){var c,y,v,T,N,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",w.readyState=e>0?4:0,r&&(T=dn(d,w,r)),e>=200&&300>e||304===e?(d.ifModified&&(N=w.getResponseHeader("Last-Modified"),N&&(b.lastModified[o]=N),N=w.getResponseHeader("etag"),N&&(b.etag[o]=N)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=pn(d,T),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),w.status=e,w.statusText=(n||C)+"",c?h.resolveWith(p,[y,C,w]):h.rejectWith(p,[w,C,v]),w.statusCode(m),m=t,u&&f.trigger(c?"ajaxSuccess":"ajaxError",[w,d,c?y:v]),g.fireWith(p,[w,C]),u&&(f.trigger("ajaxComplete",[w,d]),--b.active||b.event.trigger("ajaxStop")))}return w},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function dn(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function pn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}var fn,hn,gn=0,mn=e.ActiveXObject&&function(){var e;for(e in fn)fn[e](t,!0)};function yn(){try{return new e.XMLHttpRequest}catch(t){}}function vn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&yn()||vn()}:yn,hn=b.ajaxSettings.xhr(),b.support.cors=!!hn&&"withCredentials"in hn,hn=b.support.ajax=!!hn,hn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,d;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,mn&&delete fn[a]),i)4!==u.readyState&&u.abort();else{d={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(d.text=u.responseText);try{c=u.statusText}catch(p){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=d.text?200:404}}catch(f){i||o(-1,f)}d&&o(s,c,d,l)},n.async?4===u.readyState?setTimeout(r):(a=++gn,mn&&(fn||(fn={},b(e).unload(mn)),fn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window); \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/json.php b/src/main/webapp/vendors/jquery/test/data/json.php deleted file mode 100644 index d6e0f2fc7..000000000 --- a/src/main/webapp/vendors/jquery/test/data/json.php +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/src/main/webapp/vendors/jquery/test/data/json_obj.js b/src/main/webapp/vendors/jquery/test/data/json_obj.js deleted file mode 100644 index 7fa61820f..000000000 --- a/src/main/webapp/vendors/jquery/test/data/json_obj.js +++ /dev/null @@ -1 +0,0 @@ -{ "data": {"lang": "en", "length": 25} } diff --git a/src/main/webapp/vendors/jquery/test/data/jsonp.php b/src/main/webapp/vendors/jquery/test/data/jsonp.php deleted file mode 100644 index 6c13d72e9..000000000 --- a/src/main/webapp/vendors/jquery/test/data/jsonp.php +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/main/webapp/vendors/jquery/test/data/manipulation/iframe-denied.html b/src/main/webapp/vendors/jquery/test/data/manipulation/iframe-denied.html deleted file mode 100644 index 14df26a69..000000000 --- a/src/main/webapp/vendors/jquery/test/data/manipulation/iframe-denied.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - body - - -
- - - - diff --git a/src/main/webapp/vendors/jquery/test/data/name.html b/src/main/webapp/vendors/jquery/test/data/name.html deleted file mode 100644 index 0fa32d1a8..000000000 --- a/src/main/webapp/vendors/jquery/test/data/name.html +++ /dev/null @@ -1 +0,0 @@ -ERROR diff --git a/src/main/webapp/vendors/jquery/test/data/name.php b/src/main/webapp/vendors/jquery/test/data/name.php deleted file mode 100644 index 64028585d..000000000 --- a/src/main/webapp/vendors/jquery/test/data/name.php +++ /dev/null @@ -1,24 +0,0 @@ -$xml$result"; - die(); -} -$name = $_REQUEST['name']; -if($name == 'foo') { - echo "bar"; - die(); -} else if($name == 'peter') { - echo "pan"; - die(); -} - -echo 'ERROR '; -?> \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/nocontent.php b/src/main/webapp/vendors/jquery/test/data/nocontent.php deleted file mode 100644 index 9c8431bd7..000000000 --- a/src/main/webapp/vendors/jquery/test/data/nocontent.php +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/offset/absolute.html b/src/main/webapp/vendors/jquery/test/data/offset/absolute.html deleted file mode 100644 index 7665d7aac..000000000 --- a/src/main/webapp/vendors/jquery/test/data/offset/absolute.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - absolute - - - - - -
absolute-1 -
absolute-1-1 -
absolute-1-1-1
-
-
-
absolute-2
-
Has absolute position but no values set for the location ('auto').
-
-

Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

- - diff --git a/src/main/webapp/vendors/jquery/test/data/offset/body.html b/src/main/webapp/vendors/jquery/test/data/offset/body.html deleted file mode 100644 index 6dc3d3754..000000000 --- a/src/main/webapp/vendors/jquery/test/data/offset/body.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - body - - - - - -
-
- - diff --git a/src/main/webapp/vendors/jquery/test/data/offset/fixed.html b/src/main/webapp/vendors/jquery/test/data/offset/fixed.html deleted file mode 100644 index 7564f085e..000000000 --- a/src/main/webapp/vendors/jquery/test/data/offset/fixed.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - fixed - - - - - -
-
-
-
-
-

Click the white box to move the marker to it.

- - diff --git a/src/main/webapp/vendors/jquery/test/data/offset/relative.html b/src/main/webapp/vendors/jquery/test/data/offset/relative.html deleted file mode 100644 index 3ac054837..000000000 --- a/src/main/webapp/vendors/jquery/test/data/offset/relative.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - relative - - - - - -
-
-
-

Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

- - diff --git a/src/main/webapp/vendors/jquery/test/data/offset/scroll.html b/src/main/webapp/vendors/jquery/test/data/offset/scroll.html deleted file mode 100644 index 113400ce4..000000000 --- a/src/main/webapp/vendors/jquery/test/data/offset/scroll.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - scroll - - - - - -
-
-
-
-
-
-
-

Click the white box to move the marker to it.

- - diff --git a/src/main/webapp/vendors/jquery/test/data/offset/static.html b/src/main/webapp/vendors/jquery/test/data/offset/static.html deleted file mode 100644 index 1e6ab7c4c..000000000 --- a/src/main/webapp/vendors/jquery/test/data/offset/static.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - static - - - - - -
-
-
-

Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

- - diff --git a/src/main/webapp/vendors/jquery/test/data/offset/table.html b/src/main/webapp/vendors/jquery/test/data/offset/table.html deleted file mode 100644 index 5510e2b9b..000000000 --- a/src/main/webapp/vendors/jquery/test/data/offset/table.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - table - - - - - -
- - - - - - - - - - - - - - -
th-1th-2th-3
td-1td-2td-3
-
-

Click the white box to move the marker to it.

- - diff --git a/src/main/webapp/vendors/jquery/test/data/params_html.php b/src/main/webapp/vendors/jquery/test/data/params_html.php deleted file mode 100644 index e88ef1521..000000000 --- a/src/main/webapp/vendors/jquery/test/data/params_html.php +++ /dev/null @@ -1,12 +0,0 @@ -
-$value ) - echo "$value"; -?> -
-
-$value ) - echo "$value"; -?> -
\ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/readywaitasset.js b/src/main/webapp/vendors/jquery/test/data/readywaitasset.js deleted file mode 100644 index 2308965ce..000000000 --- a/src/main/webapp/vendors/jquery/test/data/readywaitasset.js +++ /dev/null @@ -1 +0,0 @@ -var delayedMessage = "It worked!"; diff --git a/src/main/webapp/vendors/jquery/test/data/readywaitloader.js b/src/main/webapp/vendors/jquery/test/data/readywaitloader.js deleted file mode 100644 index e07dac7a9..000000000 --- a/src/main/webapp/vendors/jquery/test/data/readywaitloader.js +++ /dev/null @@ -1,25 +0,0 @@ -// Simple script loader that uses jQuery.readyWait via jQuery.holdReady() - -//Hold on jQuery! -jQuery.holdReady(true); - -var readyRegExp = /^(complete|loaded)$/; - -function assetLoaded( evt ){ - var node = evt.currentTarget || evt.srcElement; - if ( evt.type === "load" || readyRegExp.test(node.readyState) ) { - jQuery.holdReady(false); - } -} - -setTimeout( function() { - var script = document.createElement("script"); - script.type = "text/javascript"; - if ( script.addEventListener ) { - script.addEventListener( "load", assetLoaded, false ); - } else { - script.attachEvent( "onreadystatechange", assetLoaded ); - } - script.src = "data/readywaitasset.js"; - document.getElementsByTagName("head")[0].appendChild(script); -}, 2000 ); diff --git a/src/main/webapp/vendors/jquery/test/data/script.php b/src/main/webapp/vendors/jquery/test/data/script.php deleted file mode 100644 index fb7110491..000000000 --- a/src/main/webapp/vendors/jquery/test/data/script.php +++ /dev/null @@ -1,11 +0,0 @@ - -ok( true, "Script executed correctly." ); diff --git a/src/main/webapp/vendors/jquery/test/data/selector/html5_selector.html b/src/main/webapp/vendors/jquery/test/data/selector/html5_selector.html deleted file mode 100644 index 30f25c9d5..000000000 --- a/src/main/webapp/vendors/jquery/test/data/selector/html5_selector.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - jQuery selector - attributes - - - - - - - - - - -
- -
- - -
- - - -
- - - - - -
    - -
    - -
    - - - - - - - - - - - - - - - -
    -
    Term
    This is the first definition in compact format.
    -
    Term
    This is the second definition in compact format.
    -
    - - - - Scrolling text (non-standard) - - diff --git a/src/main/webapp/vendors/jquery/test/data/selector/sizzle_cache.html b/src/main/webapp/vendors/jquery/test/data/selector/sizzle_cache.html deleted file mode 100644 index 1055c75ae..000000000 --- a/src/main/webapp/vendors/jquery/test/data/selector/sizzle_cache.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - jQuery selector - sizzle cache - - - - - - - - - diff --git a/src/main/webapp/vendors/jquery/test/data/statusText.php b/src/main/webapp/vendors/jquery/test/data/statusText.php deleted file mode 100644 index daf58ce3f..000000000 --- a/src/main/webapp/vendors/jquery/test/data/statusText.php +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/support/bodyBackground.html b/src/main/webapp/vendors/jquery/test/data/support/bodyBackground.html deleted file mode 100644 index 8991007cf..000000000 --- a/src/main/webapp/vendors/jquery/test/data/support/bodyBackground.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - -
    - -
    - - - diff --git a/src/main/webapp/vendors/jquery/test/data/support/boxSizing.html b/src/main/webapp/vendors/jquery/test/data/support/boxSizing.html deleted file mode 100644 index 63c4c90b7..000000000 --- a/src/main/webapp/vendors/jquery/test/data/support/boxSizing.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/src/main/webapp/vendors/jquery/test/data/support/csp.js b/src/main/webapp/vendors/jquery/test/data/support/csp.js deleted file mode 100644 index 8bce34fd2..000000000 --- a/src/main/webapp/vendors/jquery/test/data/support/csp.js +++ /dev/null @@ -1,3 +0,0 @@ -jQuery(function() { - parent.iframeCallback( jQuery.support ); -}); diff --git a/src/main/webapp/vendors/jquery/test/data/support/csp.php b/src/main/webapp/vendors/jquery/test/data/support/csp.php deleted file mode 100644 index f72aa0768..000000000 --- a/src/main/webapp/vendors/jquery/test/data/support/csp.php +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - CSP Test Page - - - - -

    CSP Test Page

    - - diff --git a/src/main/webapp/vendors/jquery/test/data/support/shrinkWrapBlocks.html b/src/main/webapp/vendors/jquery/test/data/support/shrinkWrapBlocks.html deleted file mode 100644 index a2097cb21..000000000 --- a/src/main/webapp/vendors/jquery/test/data/support/shrinkWrapBlocks.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - -
    - -
    - - - diff --git a/src/main/webapp/vendors/jquery/test/data/support/testElementCrash.html b/src/main/webapp/vendors/jquery/test/data/support/testElementCrash.html deleted file mode 100644 index 16de48ce1..000000000 --- a/src/main/webapp/vendors/jquery/test/data/support/testElementCrash.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/src/main/webapp/vendors/jquery/test/data/test.html b/src/main/webapp/vendors/jquery/test/data/test.html deleted file mode 100644 index eec028e90..000000000 --- a/src/main/webapp/vendors/jquery/test/data/test.html +++ /dev/null @@ -1,7 +0,0 @@ -html text
    - - -blabla diff --git a/src/main/webapp/vendors/jquery/test/data/test.js b/src/main/webapp/vendors/jquery/test/data/test.js deleted file mode 100644 index fb3395296..000000000 --- a/src/main/webapp/vendors/jquery/test/data/test.js +++ /dev/null @@ -1,3 +0,0 @@ -this.testBar = "bar"; -jQuery("#ap").html("bar"); -ok( true, "test.js executed"); diff --git a/src/main/webapp/vendors/jquery/test/data/test.php b/src/main/webapp/vendors/jquery/test/data/test.php deleted file mode 100644 index 3d08f3253..000000000 --- a/src/main/webapp/vendors/jquery/test/data/test.php +++ /dev/null @@ -1,7 +0,0 @@ -html text
    - - -blabla \ No newline at end of file diff --git a/src/main/webapp/vendors/jquery/test/data/test2.html b/src/main/webapp/vendors/jquery/test/data/test2.html deleted file mode 100644 index 1df6151a0..000000000 --- a/src/main/webapp/vendors/jquery/test/data/test2.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/src/main/webapp/vendors/jquery/test/data/test3.html b/src/main/webapp/vendors/jquery/test/data/test3.html deleted file mode 100644 index 909d41745..000000000 --- a/src/main/webapp/vendors/jquery/test/data/test3.html +++ /dev/null @@ -1,3 +0,0 @@ -
    This is a user
    -
    This is a user
    -
    This is a teacher
    diff --git a/src/main/webapp/vendors/jquery/test/data/testinit.js b/src/main/webapp/vendors/jquery/test/data/testinit.js deleted file mode 100644 index 0351f0264..000000000 --- a/src/main/webapp/vendors/jquery/test/data/testinit.js +++ /dev/null @@ -1,264 +0,0 @@ -/*jshint multistr:true, quotmark:false */ - -var amdDefined, fireNative, - originaljQuery = this.jQuery || "jQuery", - original$ = this.$ || "$", - // see RFC 2606 - externalHost = "example.com"; - -this.hasPHP = true; -this.isLocal = window.location.protocol === "file:"; - -// For testing .noConflict() -this.jQuery = originaljQuery; -this.$ = original$; - -/** - * Set up a mock AMD define function for testing AMD registration. - */ -function define( name, dependencies, callback ) { - amdDefined = callback(); -} - -define.amd = {}; - -/** - * Returns an array of elements with the given IDs - * @example q("main", "foo", "bar") - * @result [
    , , ] - */ -this.q = function() { - var r = [], - i = 0; - - for ( ; i < arguments.length; i++ ) { - r.push( document.getElementById( arguments[i] ) ); - } - return r; -}; - -/** - * Asserts that a select matches the given IDs - * @param {String} a - Assertion name - * @param {String} b - Sizzle selector - * @param {String} c - Array of ids to construct what is expected - * @example t("Check for something", "//[a]", ["foo", "baar"]); - * @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar' - */ -this.t = function( a, b, c ) { - var f = jQuery(b).get(), - s = "", - i = 0; - - for ( ; i < f.length; i++ ) { - s += ( s && "," ) + '"' + f[ i ].id + '"'; - } - - deepEqual(f, q.apply( q, c ), a + " (" + b + ")"); -}; - -this.createDashboardXML = function() { - var string = ' \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - '; - - return jQuery.parseXML(string); -}; - -this.createWithFriesXML = function() { - var string = ' \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - 1 \ - \ - \ - \ - \ - foo \ - \ - \ - \ - \ - \ - \ - '; - - return jQuery.parseXML( string.replace( /\{\{\s*externalHost\s*\}\}/g, externalHost ) ); -}; - -this.createXMLFragment = function() { - var xml, frag; - if ( window.ActiveXObject ) { - xml = new ActiveXObject("msxml2.domdocument"); - } else { - xml = document.implementation.createDocument( "", "", null ); - } - - if ( xml ) { - frag = xml.createElement("data"); - } - - return frag; -}; - -fireNative = document.createEvent ? - function( node, type ) { - var event = document.createEvent('HTMLEvents'); - event.initEvent( type, true, true ); - node.dispatchEvent( event ); - } : - function( node, type ) { - var event = document.createEventObject(); - node.fireEvent( 'on' + type, event ); - }; - -/** - * Add random number to url to stop caching - * - * @example url("data/test.html") - * @result "data/test.html?10538358428943" - * - * @example url("data/test.php?foo=bar") - * @result "data/test.php?foo=bar&10538358345554" - */ -function url( value ) { - return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random() * 100000, 10); -} - -// Ajax testing helper -this.ajaxTest = function( title, expect, options ) { - var requestOptions; - if ( jQuery.isFunction( options ) ) { - options = options(); - } - options = options || []; - requestOptions = options.requests || options.request || options; - if ( !jQuery.isArray( requestOptions ) ) { - requestOptions = [ requestOptions ]; - } - asyncTest( title, expect, function() { - if ( options.setup ) { - options.setup(); - } - - var completed = false, - remaining = requestOptions.length, - complete = function() { - if ( !completed && --remaining === 0 ) { - completed = true; - delete ajaxTest.abort; - if ( options.teardown ) { - options.teardown(); - } - start(); - } - }, - requests = jQuery.map( requestOptions, function( options ) { - var request = ( options.create || jQuery.ajax )( options ), - callIfDefined = function( deferType, optionType ) { - var handler = options[ deferType ] || !!options[ optionType ]; - return function( _, status ) { - if ( !completed ) { - if ( !handler ) { - ok( false, "unexpected " + status ); - } else if ( jQuery.isFunction( handler ) ) { - handler.apply( this, arguments ); - } - } - }; - }; - - if ( options.afterSend ) { - options.afterSend( request ); - } - - return request - .done( callIfDefined( "done", "success" ) ) - .fail( callIfDefined( "fail", "error" ) ) - .always( complete ); - }); - - ajaxTest.abort = function( reason ) { - if ( !completed ) { - completed = true; - delete ajaxTest.abort; - ok( false, "aborted " + reason ); - jQuery.each( requests, function( i, request ) { - request.abort(); - }); - } - }; - }); -}; - - -this.testIframe = function( fileName, name, fn ) { - - test(name, function() { - // pause execution for now - stop(); - - // load fixture in iframe - var iframe = loadFixture(), - win = iframe.contentWindow, - interval = setInterval( function() { - if ( win && win.jQuery && win.jQuery.isReady ) { - clearInterval( interval ); - // continue - start(); - // call actual tests passing the correct jQuery instance to use - fn.call( this, win.jQuery, win, win.document ); - document.body.removeChild( iframe ); - iframe = null; - } - }, 15 ); - }); - - function loadFixture() { - var src = url("./data/" + fileName + ".html"), - iframe = jQuery(" -
    -
    -

    See this blog entry for more information.

    -

    - Here are some links in a normal paragraph: Google, - Google Groups (Link). - This link has class="blog": - diveintomark - -

    -
    -

    Everything inside the red border is inside a div with id="foo".

    -

    This is a normal link: Yahoo

    -

    This link has class="blog": Simon Willison's Weblog

    - -
    -
    -
    -
    - -

    Try them out:

    -
      -
        -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test element -
        - Float test. - -
        - - -
        -
        - -
        - - - - -
        - -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
        -
        - -
        -
        hi there
        -
        -
        -
        -
        -
        -
        -
        -
        - -
        -
          -
        1. Rice
        2. -
        3. Beans
        4. -
        5. Blinis
        6. -
        7. Tofu
        8. -
        - -
        I'm hungry. I should...
        - ...Eat lots of food... | - ...Eat a little food... | - ...Eat no food... - ...Eat a burger... - ...Eat some funyuns... - ...Eat some funyuns... - - - - - - -
        - -
        - - -
        - -
        - 1 - 2 - - - - - - - - -
        -
        -
        -
        fadeIn
        fadeIn
        -
        fadeOut
        fadeOut
        - -
        show
        show
        -
        hide
        hide
        -
        hide
        hide
        - -
        togglein
        togglein
        -
        toggleout
        toggleout
        -
        toggleout
        toggleout
        - -
        slideUp
        slideUp
        -
        slideDown
        slideDown
        -
        slideUp
        slideUp
        - -
        slideToggleIn
        slideToggleIn
        -
        slideToggleOut
        slideToggleOut
        - -
        fadeToggleIn
        fadeToggleIn
        -
        fadeToggleOut
        fadeToggleOut
        - -
        fadeTo
        fadeTo
        -
        - -
        - -
        -
        -
        - - - - - - diff --git a/src/main/webapp/vendors/jquery/test/jquery.js b/src/main/webapp/vendors/jquery/test/jquery.js deleted file mode 100644 index 93d1095cd..000000000 --- a/src/main/webapp/vendors/jquery/test/jquery.js +++ /dev/null @@ -1,5 +0,0 @@ -// Use the right jQuery source in iframe tests -document.write( " - - - -

        jQuery Local File Test

        -

        - Introduction -

        -
          -
        • - Access this file using the "file:" protocol, -
        • -
        • - two green "OK" strings must appear below, -
        • -
        • - Empty local files will issue errors, it's a known limitation. -
        • -
        -

        - Results -

        -
          -
        • - Success: - - -
        • -
        • - Error: - - -
        • -
        -

        - Logs: -

        -
          -
        - - diff --git a/src/main/webapp/vendors/jquery/test/networkerror.html b/src/main/webapp/vendors/jquery/test/networkerror.html deleted file mode 100644 index edbaabab4..000000000 --- a/src/main/webapp/vendors/jquery/test/networkerror.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - jQuery Network Error Test for Firefox - - - - - - -

        - jQuery Network Error Test for Firefox -

        -
        - This is a test page for - - #8135 - - which was reported in Firefox when accessing properties - of an XMLHttpRequest object after a network error occurred. -
        -
        Take the following steps:
        -
          -
        1. - make sure you accessed this page through a web server, -
        2. -
        3. - stop the web server, -
        4. -
        5. - open the console, -
        6. -
        7. - click this - - , -
        8. -
        9. - wait for both requests to fail. -
        10. -
        -
        - Test passes if you get two log lines: -
          -
        • - the first starting with "abort", -
        • -
        • - the second starting with "complete", -
        • -
        -
        -
        - Test fails if the browser notifies an exception. -
        - - diff --git a/src/main/webapp/vendors/jquery/test/readywait.html b/src/main/webapp/vendors/jquery/test/readywait.html deleted file mode 100644 index 7a736bef5..000000000 --- a/src/main/webapp/vendors/jquery/test/readywait.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - jQuery.holdReady Test - - - - - - - - - - -

        - jQuery.holdReady Test -

        -

        - This is a test page for jQuery.readyWait and jQuery.holdReady, - see - #6781 - and - #8803. -

        -

        - Test for jQuery.holdReady, which can be used - by plugins and other scripts to indicate something - important to the page is still loading and needs - to block the DOM ready callbacks that are registered - with jQuery. -

        -

        - Script loaders are the most likely kind of script - to use jQuery.holdReady, but it could be used by - other things like a script that loads a CSS file - and wants to pause the DOM ready callbacks. -

        -

        - Expected Result: The text - It Worked! - appears below after about 2 seconds. -

        -

        - If there is an error in the console, - or the text does not show up, then the test failed. -

        -
        - - diff --git a/src/main/webapp/vendors/jquery/test/unit/ajax.js b/src/main/webapp/vendors/jquery/test/unit/ajax.js deleted file mode 100644 index 761885ccb..000000000 --- a/src/main/webapp/vendors/jquery/test/unit/ajax.js +++ /dev/null @@ -1,1954 +0,0 @@ -module( "ajax", { - setup: function() { - var jsonpCallback = this.jsonpCallback = jQuery.ajaxSettings.jsonpCallback; - jQuery.ajaxSettings.jsonpCallback = function() { - var callback = jsonpCallback.apply( this, arguments ); - Globals.register( callback ); - return callback; - }; - }, - teardown: function() { - jQuery( document ).off( "ajaxStart ajaxStop ajaxSend ajaxComplete ajaxError ajaxSuccess" ); - moduleTeardown.apply( this, arguments ); - } -}); - -(function() { - - if ( !jQuery.ajax || ( isLocal && !hasPHP ) ) { - return; - } - - function addGlobalEvents( expected ) { - return function() { - expected = expected || ""; - jQuery( document ).on( "ajaxStart ajaxStop ajaxSend ajaxComplete ajaxError ajaxSuccess", function( e ) { - ok( expected.indexOf(e.type) !== -1, e.type ); - }); - }; - } - -//----------- jQuery.ajax() - - testIframeWithCallback( "XMLHttpRequest - Attempt to block tests because of dangling XHR requests (IE)", "ajax/unreleasedXHR.html", function() { - expect( 1 ); - ok( true, "done" ); - }); - - ajaxTest( "jQuery.ajax() - success callbacks", 8, { - setup: addGlobalEvents("ajaxStart ajaxStop ajaxSend ajaxComplete ajaxSuccess"), - url: url("data/name.html"), - beforeSend: function() { - ok( true, "beforeSend" ); - }, - success: function() { - ok( true, "success" ); - }, - complete: function() { - ok( true, "complete"); - } - }); - - ajaxTest( "jQuery.ajax() - success callbacks - (url, options) syntax", 8, { - setup: addGlobalEvents("ajaxStart ajaxStop ajaxSend ajaxComplete ajaxSuccess"), - create: function( options ) { - return jQuery.ajax( url("data/name.html"), options ); - }, - beforeSend: function() { - ok( true, "beforeSend" ); - }, - success: function() { - ok( true, "success" ); - }, - complete: function() { - ok( true, "complete" ); - } - }); - - ajaxTest( "jQuery.ajax() - success callbacks (late binding)", 8, { - setup: addGlobalEvents("ajaxStart ajaxStop ajaxSend ajaxComplete ajaxSuccess"), - url: url("data/name.html"), - beforeSend: function() { - ok( true, "beforeSend" ); - }, - success: true, - afterSend: function( request ) { - request.complete(function() { - ok( true, "complete" ); - }).success(function() { - ok( true, "success" ); - }).error(function() { - ok( false, "error" ); - }); - } - }); - - ajaxTest( "jQuery.ajax() - success callbacks (oncomplete binding)", 8, { - setup: addGlobalEvents("ajaxStart ajaxStop ajaxSend ajaxComplete ajaxSuccess"), - url: url("data/name.html"), - beforeSend: function() { - ok( true, "beforeSend" ); - }, - success: true, - complete: function( xhr ) { - xhr.complete(function() { - ok( true, "complete" ); - }).success(function() { - ok( true, "success" ); - }).error(function() { - ok( false, "error" ); - }); - } - }); - - ajaxTest( "jQuery.ajax() - error callbacks", 8, { - setup: addGlobalEvents("ajaxStart ajaxStop ajaxSend ajaxComplete ajaxError"), - url: url("data/name.php?wait=5"), - beforeSend: function() { - ok( true, "beforeSend" ); - }, - afterSend: function( request ) { - request.abort(); - }, - error: function() { - ok( true, "error" ); - }, - complete: function() { - ok( true, "complete" ); - } - }); - - ajaxTest( "jQuery.ajax() - textStatus and errorThrown values", 4, [ - { - url: url("data/name.php?wait=5"), - error: function( _, textStatus, errorThrown ) { - strictEqual( textStatus, "abort", "textStatus is 'abort' for abort" ); - strictEqual( errorThrown, "abort", "errorThrown is 'abort' for abort" ); - }, - afterSend: function( request ) { - request.abort(); - } - }, - { - url: url("data/name.php?wait=5"), - error: function( _, textStatus, errorThrown ) { - strictEqual( textStatus, "mystatus", "textStatus is 'mystatus' for abort('mystatus')" ); - strictEqual( errorThrown, "mystatus", "errorThrown is 'mystatus' for abort('mystatus')" ); - }, - afterSend: function( request ) { - request.abort("mystatus"); - } - } - ]); - - ajaxTest( "jQuery.ajax() - responseText on error", 1, { - url: url("data/errorWithText.php"), - error: function( xhr ) { - strictEqual( xhr.responseText, "plain text message", "Test jqXHR.responseText is filled for HTTP errors" ); - } - }); - - asyncTest( "jQuery.ajax() - retry with jQuery.ajax( this )", 2, function() { - var previousUrl, - firstTime = true; - jQuery.ajax({ - url: url("data/errorWithText.php"), - error: function() { - if ( firstTime ) { - firstTime = false; - jQuery.ajax( this ); - } else { - ok ( true, "Test retrying with jQuery.ajax(this) works" ); - jQuery.ajax({ - url: url("data/errorWithText.php"), - data: { - "x": 1 - }, - beforeSend: function() { - if ( !previousUrl ) { - previousUrl = this.url; - } else { - strictEqual( this.url, previousUrl, "url parameters are not re-appended" ); - start(); - return false; - } - }, - error: function() { - jQuery.ajax( this ); - } - }); - } - } - }); - }); - - ajaxTest( "jQuery.ajax() - headers", 4, { - setup: function() { - jQuery( document ).ajaxSend(function( evt, xhr ) { - xhr.setRequestHeader( "ajax-send", "test" ); - }); - }, - url: url("data/headers.php?keys=siMPle_SometHing-elsE_OthEr_ajax-send"), - headers: { - "siMPle": "value", - "SometHing-elsE": "other value", - "OthEr": "something else" - }, - success: function( data, _, xhr ) { - var i, emptyHeader, - requestHeaders = jQuery.extend( this.headers, { - "ajax-send": "test" - }), - tmp = []; - for ( i in requestHeaders ) { - tmp.push( i, ": ", requestHeaders[ i ], "\n" ); - } - tmp = tmp.join(""); - - strictEqual( data, tmp, "Headers were sent" ); - strictEqual( xhr.getResponseHeader("Sample-Header"), "Hello World", "Sample header received" ); - - emptyHeader = xhr.getResponseHeader("Empty-Header"); - if ( emptyHeader === null ) { - ok( true, "Firefox doesn't support empty headers" ); - } else { - strictEqual( emptyHeader, "", "Empty header received" ); - } - strictEqual( xhr.getResponseHeader("Sample-Header2"), "Hello World 2", "Second sample header received" ); - } - }); - - ajaxTest( "jQuery.ajax() - Accept header", 1, { - url: url("data/headers.php?keys=accept"), - headers: { - Accept: "very wrong accept value" - }, - beforeSend: function( xhr ) { - xhr.setRequestHeader("Accept", "*/*"); - }, - success: function( data ) { - strictEqual( data, "accept: */*\n", "Test Accept header is set to last value provided" ); - } - }); - - ajaxTest( "jQuery.ajax() - contentType", 2, [ - { - url: url("data/headers.php?keys=content-type"), - contentType: "test", - success: function( data ) { - strictEqual( data, "content-type: test\n", "Test content-type is sent when options.contentType is set" ); - } - }, - { - url: url("data/headers.php?keys=content-type"), - contentType: false, - success: function( data ) { - strictEqual( data, "content-type: \n", "Test content-type is not sent when options.contentType===false" ); - } - } - ]); - - ajaxTest( "jQuery.ajax() - protocol-less urls", 1, { - url: "//somedomain.com", - beforeSend: function( xhr, settings ) { - equal( settings.url, location.protocol + "//somedomain.com", "Make sure that the protocol is added." ); - return false; - }, - error: true - }); - - ajaxTest( "jQuery.ajax() - hash", 3, [ - { - url: "data/name.html#foo", - beforeSend: function( xhr, settings ) { - equal( settings.url, "data/name.html", "Make sure that the URL is trimmed." ); - return false; - }, - error: true - }, - { - url: "data/name.html?abc#foo", - beforeSend: function( xhr, settings ) { - equal( settings.url, "data/name.html?abc", "Make sure that the URL is trimmed." ); - return false; - }, - error: true - }, - { - url: "data/name.html?abc#foo", - data: { - "test": 123 - }, - beforeSend: function( xhr, settings ) { - equal( settings.url, "data/name.html?abc&test=123", "Make sure that the URL is trimmed." ); - return false; - }, - error: true - } - ]); - - ajaxTest( "jQuery.ajax() - cross-domain detection", 7, function() { - function request( url, title, crossDomainOrOptions ) { - return jQuery.extend( { - dataType: "jsonp", - url: url, - beforeSend: function( _, s ) { - ok( crossDomainOrOptions === false ? !s.crossDomain : s.crossDomain, title ); - return false; - }, - error: true - }, crossDomainOrOptions ); - } - - var loc = document.location, - samePort = loc.port || ( loc.protocol === "http:" ? 80 : 443 ), - otherPort = loc.port === 666 ? 667 : 666, - otherProtocol = loc.protocol === "http:" ? "https:" : "http:"; - - return [ - request( - loc.protocol + "//" + loc.host + ":" + samePort, - "Test matching ports are not detected as cross-domain", - false - ), - request( - otherProtocol + "//" + loc.host, - "Test different protocols are detected as cross-domain" - ), - request( - "app:/path", - "Adobe AIR app:/ URL detected as cross-domain" - ), - request( - loc.protocol + "//example.invalid:" + ( loc.port || 80 ), - "Test different hostnames are detected as cross-domain" - ), - request( - loc.protocol + "//" + loc.hostname + ":" + otherPort, - "Test different ports are detected as cross-domain" - ), - request( - "about:blank", - "Test about:blank is detected as cross-domain" - ), - request( - loc.protocol + "//" + loc.host, - "Test forced crossDomain is detected as cross-domain", - { - crossDomain: true - } - ) - ]; - }); - - ajaxTest( "jQuery.ajax() - abort", 9, { - setup: addGlobalEvents("ajaxStart ajaxStop ajaxSend ajaxError ajaxComplete"), - url: url("data/name.php?wait=5"), - beforeSend: function() { - ok( true, "beforeSend" ); - }, - afterSend: function( xhr ) { - strictEqual( xhr.readyState, 1, "XHR readyState indicates successful dispatch" ); - xhr.abort(); - strictEqual( xhr.readyState, 0, "XHR readyState indicates successful abortion" ); - }, - error: true, - complete: function() { - ok( true, "complete" ); - } - }); - - ajaxTest( "jQuery.ajax() - events with context", 12, function() { - - var context = document.createElement("div"); - - function event( e ) { - equal( this, context, e.type ); - } - - function callback( msg ) { - return function() { - equal( this, context, "context is preserved on callback " + msg ); - }; - } - - return { - setup: function() { - jQuery( context ).appendTo("#foo") - .ajaxSend( event ) - .ajaxComplete( event ) - .ajaxError( event ) - .ajaxSuccess( event ); - }, - requests: [{ - url: url("data/name.html"), - context: context, - beforeSend: callback("beforeSend"), - success: callback("success"), - complete: callback("complete") - }, { - url: url("data/404.html"), - context: context, - beforeSend: callback("beforeSend"), - error: callback("error"), - complete: callback("complete") - }] - }; - }); - - ajaxTest( "jQuery.ajax() - events without context", 3, function() { - function nocallback( msg ) { - return function() { - equal( typeof this.url, "string", "context is settings on callback " + msg ); - }; - } - return { - url: url("data/404.html"), - beforeSend: nocallback("beforeSend"), - error: nocallback("error"), - complete: nocallback("complete") - }; - }); - - ajaxTest( "jQuery.ajax() - context modification", 1, { - url: url("data/name.html"), - context: {}, - beforeSend: function() { - this.test = "foo"; - }, - afterSend: function() { - strictEqual( this.context.test, "foo", "Make sure the original object is maintained." ); - }, - success: true - }); - - ajaxTest( "jQuery.ajax() - context modification through ajaxSetup", 3, function() { - var obj = {}; - return { - setup: function() { - jQuery.ajaxSetup({ - context: obj - }); - strictEqual( jQuery.ajaxSettings.context, obj, "Make sure the context is properly set in ajaxSettings." ); - }, - requests: [{ - url: url("data/name.html"), - success: function() { - strictEqual( this, obj, "Make sure the original object is maintained." ); - } - }, { - url: url("data/name.html"), - context: {}, - success: function() { - ok( this !== obj, "Make sure overriding context is possible." ); - } - }] - }; - }); - - ajaxTest( "jQuery.ajax() - disabled globals", 3, { - setup: addGlobalEvents(""), - global: false, - url: url("data/name.html"), - beforeSend: function() { - ok( true, "beforeSend" ); - }, - success: function() { - ok( true, "success" ); - }, - complete: function() { - ok( true, "complete" ); - } - }); - - ajaxTest( "jQuery.ajax() - xml: non-namespace elements inside namespaced elements", 3, { - url: url("data/with_fries.xml"), - dataType: "xml", - success: function( resp ) { - equal( jQuery( "properties", resp ).length, 1, "properties in responseXML" ); - equal( jQuery( "jsconf", resp ).length, 1, "jsconf in responseXML" ); - equal( jQuery( "thing", resp ).length, 2, "things in responseXML" ); - } - }); - - ajaxTest( "jQuery.ajax() - xml: non-namespace elements inside namespaced elements (over JSONP)", 3, { - url: url("data/with_fries_over_jsonp.php"), - dataType: "jsonp xml", - success: function( resp ) { - equal( jQuery( "properties", resp ).length, 1, "properties in responseXML" ); - equal( jQuery( "jsconf", resp ).length, 1, "jsconf in responseXML" ); - equal( jQuery( "thing", resp ).length, 2, "things in responseXML" ); - } - }); - - ajaxTest( "jQuery.ajax() - HEAD requests", 2, [ - { - url: url("data/name.html"), - type: "HEAD", - success: function( data, status, xhr ) { - ok( /Date/i.test( xhr.getAllResponseHeaders() ), "No Date in HEAD response" ); - } - }, - { - url: url("data/name.html"), - data: { - "whip_it": "good" - }, - type: "HEAD", - success: function( data, status, xhr ) { - ok( /Date/i.test( xhr.getAllResponseHeaders() ), "No Date in HEAD response with data" ); - } - } - ]); - - ajaxTest( "jQuery.ajax() - beforeSend", 1, { - url: url("data/name.html"), - beforeSend: function() { - this.check = true; - }, - success: function() { - ok( this.check, "check beforeSend was executed" ); - } - }); - - ajaxTest( "jQuery.ajax() - beforeSend, cancel request manually", 2, { - create: function() { - return jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function( xhr ) { - ok( true, "beforeSend got called, canceling" ); - xhr.abort(); - }, - success: function() { - ok( false, "request didn't get canceled" ); - }, - complete: function() { - ok( false, "request didn't get canceled" ); - }, - error: function() { - ok( false, "request didn't get canceled" ); - } - }); - }, - fail: function( _, reason ) { - strictEqual( reason, "canceled", "canceled request must fail with 'canceled' status text" ); - } - }); - - ajaxTest( "jQuery.ajax() - dataType html", 5, { - setup: function() { - Globals.register("testFoo"); - Globals.register("testBar"); - }, - dataType: "html", - url: url("data/test.html"), - success: function( data ) { - ok( data.match( /^html text/ ), "Check content for datatype html" ); - jQuery("#ap").html( data ); - strictEqual( window["testFoo"], "foo", "Check if script was evaluated for datatype html" ); - strictEqual( window["testBar"], "bar", "Check if script src was evaluated for datatype html" ); - } - }); - - ajaxTest( "jQuery.ajax() - synchronous request", 1, { - url: url("data/json_obj.js"), - dataType: "text", - async: false, - success: true, - afterSend: function( xhr ) { - ok( /^\{ "data"/.test( xhr.responseText ), "check returned text" ); - } - }); - - ajaxTest( "jQuery.ajax() - synchronous request with callbacks", 2, { - url: url("data/json_obj.js"), - async: false, - dataType: "text", - success: true, - afterSend: function( xhr ) { - var result; - xhr.done(function( data ) { - ok( true, "success callback executed" ); - result = data; - }); - ok( /^\{ "data"/.test( result ), "check returned text" ); - } - }); - - asyncTest( "jQuery.ajax(), jQuery.get[Script|JSON](), jQuery.post(), pass-through request object", 8, function() { - var target = "data/name.html", - successCount = 0, - errorCount = 0, - errorEx = "", - success = function() { - successCount++; - }; - jQuery( document ).on( "ajaxError.passthru", function( e, xml ) { - errorCount++; - errorEx += ": " + xml.status; - }); - jQuery( document ).one( "ajaxStop", function() { - equal( successCount, 5, "Check all ajax calls successful" ); - equal( errorCount, 0, "Check no ajax errors (status" + errorEx + ")" ); - jQuery( document ).off("ajaxError.passthru"); - start(); - }); - Globals.register("testBar"); - - ok( jQuery.get( url(target), success ), "get" ); - ok( jQuery.post( url(target), success ), "post" ); - ok( jQuery.getScript( url("data/test.js"), success ), "script" ); - ok( jQuery.getJSON( url("data/json_obj.js"), success ), "json" ); - ok( jQuery.ajax({ - url: url( target ), - success: success - }), "generic" ); - }); - - ajaxTest( "jQuery.ajax() - cache", 12, function() { - - var re = /_=(.*?)(&|$)/g; - - function request( url, title ) { - return { - url: url, - cache: false, - beforeSend: function() { - var parameter, tmp; - while(( tmp = re.exec( this.url ) )) { - strictEqual( parameter, undefined, title + ": only one 'no-cache' parameter" ); - parameter = tmp[ 1 ]; - notStrictEqual( parameter, "tobereplaced555", title + ": parameter (if it was there) was replaced" ); - } - return false; - }, - error: true - }; - } - - return [ - request( - "data/text.php", - "no parameter" - ), - request( - "data/text.php?pizza=true", - "1 parameter" - ), - request( - "data/text.php?_=tobereplaced555", - "_= parameter" - ), - request( - "data/text.php?pizza=true&_=tobereplaced555", - "1 parameter and _=" - ), - request( - "data/text.php?_=tobereplaced555&tv=false", - "_= and 1 parameter" - ), - request( - "data/text.php?name=David&_=tobereplaced555&washere=true", - "2 parameters surrounding _=" - ) - ]; - }); - - jQuery.each( [ " - Same Domain", " - Cross Domain" ], function( crossDomain, label ) { - - ajaxTest( "jQuery.ajax() - JSONP - Query String (?n)" + label, 4, [ - { - url: "data/jsonp.php?callback=?", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - ok( data.data, "JSON results returned (GET, url callback)" ); - } - }, - { - url: "data/jsonp.php?callback=??", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - ok( data.data, "JSON results returned (GET, url context-free callback)" ); - } - }, - { - url: "data/jsonp.php/??", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - ok( data.data, "JSON results returned (GET, REST-like)" ); - } - }, - { - url: "data/jsonp.php/???json=1", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - strictEqual( jQuery.type( data ), "array", "JSON results returned (GET, REST-like with param)" ); - } - } - ]); - - ajaxTest( "jQuery.ajax() - JSONP - Explicit callback param" + label, 9, { - setup: function() { - Globals.register("functionToCleanUp"); - Globals.register("XXX"); - Globals.register("jsonpResults"); - window["jsonpResults"] = function( data ) { - ok( data["data"], "JSON results returned (GET, custom callback function)" ); - }; - }, - requests: [{ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - jsonp: "callback", - success: function( data ) { - ok( data["data"], "JSON results returned (GET, data obj callback)" ); - } - }, { - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - jsonpCallback: "jsonpResults", - success: function( data ) { - ok( data.data, "JSON results returned (GET, custom callback name)" ); - } - }, { - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - jsonpCallback: "functionToCleanUp", - success: function( data ) { - ok( data["data"], "JSON results returned (GET, custom callback name to be cleaned up)" ); - strictEqual( window["functionToCleanUp"], undefined, "Callback was removed (GET, custom callback name to be cleaned up)" ); - var xhr; - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - jsonpCallback: "functionToCleanUp", - beforeSend: function( jqXHR ) { - xhr = jqXHR; - return false; - } - }); - xhr.fail(function() { - ok( true, "Ajax error JSON (GET, custom callback name to be cleaned up)" ); - strictEqual( window["functionToCleanUp"], undefined, "Callback was removed after early abort (GET, custom callback name to be cleaned up)" ); - }); - } - }, { - url: "data/jsonp.php?callback=XXX", - dataType: "jsonp", - jsonp: false, - jsonpCallback: "XXX", - crossDomain: crossDomain, - beforeSend: function() { - ok( /^data\/jsonp.php\?callback=XXX&_=\d+$/.test( this.url ), "The URL wasn't messed with (GET, custom callback name with no url manipulation)" ); - }, - success: function( data ) { - ok( data["data"], "JSON results returned (GET, custom callback name with no url manipulation)" ); - } - }] - }); - - ajaxTest( "jQuery.ajax() - JSONP - Callback in data" + label, 2, [ - { - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - data: "callback=?", - success: function( data ) { - ok( data.data, "JSON results returned (GET, data callback)" ); - } - }, - { - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - data: "callback=??", - success: function( data ) { - ok( data.data, "JSON results returned (GET, data context-free callback)" ); - } - } - ]); - - - ajaxTest( "jQuery.ajax() - JSONP - POST" + label, 3, [ - { - type: "POST", - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - ok( data["data"], "JSON results returned (POST, no callback)" ); - } - }, - { - type: "POST", - url: "data/jsonp.php", - data: "callback=?", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - ok( data["data"], "JSON results returned (POST, data callback)" ); - } - }, - { - type: "POST", - url: "data/jsonp.php", - jsonp: "callback", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - ok( data["data"], "JSON results returned (POST, data obj callback)" ); - } - } - ]); - - ajaxTest( "jQuery.ajax() - JSONP" + label, 3, [ - { - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - success: function( data ) { - ok( data.data, "JSON results returned (GET, no callback)" ); - } - }, - { - create: function( options ) { - var request = jQuery.ajax( options ), - promise = request.then(function( data ) { - ok( data.data, "first request: JSON results returned (GET, no callback)" ); - request = jQuery.ajax( this ).done(function( data ) { - ok( data.data, "this re-used: JSON results returned (GET, no callback)" ); - }); - promise.abort = request.abort; - return request; - }); - promise.abort = request.abort; - return promise; - }, - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - success: true - } - ]); - - }); - - ajaxTest( "jQuery.ajax() - script, Remote", 2, { - setup: function() { - Globals.register("testBar"); - }, - url: window.location.href.replace( /[^\/]*$/, "" ) + "data/test.js", - dataType: "script", - success: function() { - strictEqual( window["testBar"], "bar", "Script results returned (GET, no callback)" ); - } - }); - - ajaxTest( "jQuery.ajax() - script, Remote with POST", 3, { - setup: function() { - Globals.register("testBar"); - }, - url: window.location.href.replace( /[^\/]*$/, "" ) + "data/test.js", - type: "POST", - dataType: "script", - success: function( data, status ) { - strictEqual( window["testBar"], "bar", "Script results returned (POST, no callback)" ); - strictEqual( status, "success", "Script results returned (POST, no callback)" ); - } - }); - - ajaxTest( "jQuery.ajax() - script, Remote with scheme-less URL", 2, { - setup: function() { - Globals.register("testBar"); - }, - url: window.location.href.replace( /[^\/]*$/, "" ).replace( /^.*?\/\//, "//" ) + "data/test.js", - dataType: "script", - success: function() { - strictEqual( window["testBar"], "bar", "Script results returned (GET, no callback)" ); - } - }); - - ajaxTest( "jQuery.ajax() - malformed JSON", 2, { - url: "data/badjson.js", - dataType: "json", - error: function( xhr, msg, detailedMsg ) { - strictEqual( msg, "parsererror", "A parse error occurred." ); - ok( /(invalid|error|exception)/i.test( detailedMsg ), "Detailed parsererror message provided" ); - } - }); - - ajaxTest( "jQuery.ajax() - script by content-type", 2, [ - { - url: "data/script.php", - data: { - "header": "script" - }, - success: true - }, - { - url: "data/script.php", - data: { - "header": "ecma" - }, - success: true - } - ]); - - ajaxTest( "jQuery.ajax() - JSON by content-type", 5, { - url: "data/json.php", - data: { - "header": "json", - "json": "array" - }, - success: function( json ) { - ok( json.length >= 2, "Check length" ); - strictEqual( json[ 0 ]["name"], "John", "Check JSON: first, name" ); - strictEqual( json[ 0 ]["age"], 21, "Check JSON: first, age" ); - strictEqual( json[ 1 ]["name"], "Peter", "Check JSON: second, name" ); - strictEqual( json[ 1 ]["age"], 25, "Check JSON: second, age" ); - } - }); - - ajaxTest( "jQuery.ajax() - JSON by content-type disabled with options", 6, { - url: url("data/json.php"), - data: { - "header": "json", - "json": "array" - }, - contents: { - "json": false - }, - success: function( text ) { - strictEqual( typeof text, "string", "json wasn't auto-determined" ); - var json = jQuery.parseJSON( text ); - ok( json.length >= 2, "Check length"); - strictEqual( json[ 0 ]["name"], "John", "Check JSON: first, name" ); - strictEqual( json[ 0 ]["age"], 21, "Check JSON: first, age" ); - strictEqual( json[ 1 ]["name"], "Peter", "Check JSON: second, name" ); - strictEqual( json[ 1 ]["age"], 25, "Check JSON: second, age" ); - } - }); - - ajaxTest( "jQuery.ajax() - simple get", 1, { - type: "GET", - url: url("data/name.php?name=foo"), - success: function( msg ) { - strictEqual( msg, "bar", "Check for GET" ); - } - }); - - ajaxTest( "jQuery.ajax() - simple post", 1, { - type: "POST", - url: url("data/name.php"), - data: "name=peter", - success: function( msg ) { - strictEqual( msg, "pan", "Check for POST" ); - } - }); - - ajaxTest( "jQuery.ajax() - data option - empty bodies for non-GET requests", 1, { - url: "data/echoData.php", - data: undefined, - type: "post", - success: function( result ) { - strictEqual( result, "" ); - } - }); - - var ifModifiedNow = new Date(); - - jQuery.each( - /* jQuery.each arguments start */ - { - " (cache)": true, - " (no cache)": false - }, - function( label, cache ) { - // Support: Opera 12.0 - // In Opera 12.0, XHR doesn't notify 304 back to the user properly - var opera = window.opera && window.opera.version(); - jQuery.each( - { - "If-Modified-Since": "if_modified_since.php", - "Etag": "etag.php" - }, - function( type, url ) { - url = "data/" + url + "?ts=" + ifModifiedNow++; - asyncTest( "jQuery.ajax() - " + type + " support" + label, 4, function() { - jQuery.ajax({ - url: url, - ifModified: true, - cache: cache, - success: function( _, status ) { - strictEqual( status, "success", "Initial status is 'success'" ); - jQuery.ajax({ - url: url, - ifModified: true, - cache: cache, - success: function( data, status, jqXHR ) { - if ( status === "success" && opera === "12.00" ) { - strictEqual( status, "success", "Opera 12.0: Following status is 'success'" ); - strictEqual( jqXHR.status, 200, "Opera 12.0: XHR status is 200, not 304" ); - strictEqual( data, "", "Opera 12.0: response body is empty" ); - } else { - strictEqual( status, "notmodified", "Following status is 'notmodified'" ); - strictEqual( jqXHR.status, 304, "XHR status is 304" ); - equal( data, null, "no response body is given" ); - } - }, - complete: function() { - start(); - } - }); - } - }); - }); - } - ); - } - /* jQuery.each arguments end */ - ); - - ajaxTest( "jQuery.ajax() - failing cross-domain (non-existing)", 1, { - // see RFC 2606 - url: "http://example.invalid", - error: function( xhr, _, e ) { - ok( true, "file not found: " + xhr.status + " => " + e ); - } - }); - - ajaxTest( "jQuery.ajax() - failing cross-domain", 1, { - url: "http://" + externalHost, - error: function( xhr, _, e ) { - ok( true, "access denied: " + xhr.status + " => " + e ); - } - }); - - ajaxTest( "jQuery.ajax() - atom+xml", 1, { - url: url("data/atom+xml.php"), - success: function() { - ok( true, "success" ); - } - }); - - asyncTest( "jQuery.ajax() - statusText", 3, function() { - jQuery.ajax( url("data/statusText.php?status=200&text=Hello") ).done(function( _, statusText, jqXHR ) { - strictEqual( statusText, "success", "callback status text ok for success" ); - ok( jqXHR.statusText === "Hello" || jqXHR.statusText === "OK", "jqXHR status text ok for success (" + jqXHR.statusText + ")" ); - jQuery.ajax( url("data/statusText.php?status=404&text=World") ).fail(function( jqXHR, statusText ) { - strictEqual( statusText, "error", "callback status text ok for error" ); - start(); - }); - }); - }); - - asyncTest( "jQuery.ajax() - statusCode", 20, function() { - - var count = 12; - - function countComplete() { - if ( ! --count ) { - start(); - } - } - - function createStatusCodes( name, isSuccess ) { - name = "Test " + name + " " + ( isSuccess ? "success" : "error" ); - return { - 200: function() { - ok( isSuccess, name ); - }, - 404: function() { - ok( !isSuccess, name ); - } - }; - } - - jQuery.each( - /* jQuery.each arguments start */ - { - "data/name.html": true, - "data/someFileThatDoesNotExist.html": false - }, - function( uri, isSuccess ) { - - jQuery.ajax( url(uri), { - statusCode: createStatusCodes( "in options", isSuccess ), - complete: countComplete - }); - - jQuery.ajax( url(uri), { - complete: countComplete - }).statusCode( createStatusCodes("immediately with method", isSuccess) ); - - jQuery.ajax( url(uri), { - complete: function( jqXHR ) { - jqXHR.statusCode( createStatusCodes("on complete", isSuccess) ); - countComplete(); - } - }); - - jQuery.ajax( url(uri), { - complete: function( jqXHR ) { - setTimeout(function() { - jqXHR.statusCode( createStatusCodes("very late binding", isSuccess) ); - countComplete(); - }, 100 ); - } - }); - - jQuery.ajax( url(uri), { - statusCode: createStatusCodes( "all (options)", isSuccess ), - complete: function( jqXHR ) { - jqXHR.statusCode( createStatusCodes("all (on complete)", isSuccess) ); - setTimeout(function() { - jqXHR.statusCode( createStatusCodes("all (very late binding)", isSuccess) ); - countComplete(); - }, 100 ); - } - }).statusCode( createStatusCodes("all (immediately with method)", isSuccess) ); - - var testString = ""; - - jQuery.ajax( url(uri), { - success: function( a, b, jqXHR ) { - ok( isSuccess, "success" ); - var statusCode = {}; - statusCode[ jqXHR.status ] = function() { - testString += "B"; - }; - jqXHR.statusCode( statusCode ); - testString += "A"; - }, - error: function( jqXHR ) { - ok( !isSuccess, "error" ); - var statusCode = {}; - statusCode[ jqXHR.status ] = function() { - testString += "B"; - }; - jqXHR.statusCode( statusCode ); - testString += "A"; - }, - complete: function() { - strictEqual( - testString, - "AB", - "Test statusCode callbacks are ordered like " + ( isSuccess ? "success" : "error" ) + " callbacks" - ); - countComplete(); - } - }); - - } - /* jQuery.each arguments end*/ - ); - }); - - ajaxTest( "jQuery.ajax() - transitive conversions", 8, [ - { - url: url("data/json.php"), - converters: { - "json myJson": function( data ) { - ok( true, "converter called" ); - return data; - } - }, - dataType: "myJson", - success: function() { - ok( true, "Transitive conversion worked" ); - strictEqual( this.dataTypes[ 0 ], "text", "response was retrieved as text" ); - strictEqual( this.dataTypes[ 1 ], "myjson", "request expected myjson dataType" ); - } - }, - { - url: url("data/json.php"), - converters: { - "json myJson": function( data ) { - ok( true, "converter called (*)" ); - return data; - } - }, - contents: false, /* headers are wrong so we ignore them */ - dataType: "* myJson", - success: function() { - ok( true, "Transitive conversion worked (*)" ); - strictEqual( this.dataTypes[ 0 ], "text", "response was retrieved as text (*)" ); - strictEqual( this.dataTypes[ 1 ], "myjson", "request expected myjson dataType (*)" ); - } - } - ]); - - ajaxTest( "jQuery.ajax() - overrideMimeType", 2, [ - { - url: url("data/json.php"), - beforeSend: function( xhr ) { - xhr.overrideMimeType( "application/json" ); - }, - success: function( json ) { - ok( json.data, "Mimetype overridden using beforeSend" ); - } - }, - { - url: url("data/json.php"), - mimeType: "application/json", - success: function( json ) { - ok( json.data, "Mimetype overridden using mimeType option" ); - } - } - ]); - - ajaxTest( "jQuery.ajax() - empty json gets to error callback instead of success callback.", 1, { - url: url("data/echoData.php"), - error: function( _, __, error ) { - equal( typeof error === "object", true, "Didn't get back error object for empty json response" ); - }, - dataType: "json" - }); - - ajaxTest( "#2688 - jQuery.ajax() - beforeSend, cancel request", 2, { - create: function() { - return jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function() { - ok( true, "beforeSend got called, canceling" ); - return false; - }, - success: function() { - ok( false, "request didn't get canceled" ); - }, - complete: function() { - ok( false, "request didn't get canceled" ); - }, - error: function() { - ok( false, "request didn't get canceled" ); - } - }); - }, - fail: function( _, reason ) { - strictEqual( reason, "canceled", "canceled request must fail with 'canceled' status text" ); - } - }); - - ajaxTest( "#2806 - jQuery.ajax() - data option - evaluate function values", 1, { - url: "data/echoQuery.php", - data: { - key: function() { - return "value"; - } - }, - success: function( result ) { - strictEqual( result, "key=value" ); - } - }); - - test( "#7531 - jQuery.ajax() - Location object as url", 1, function () { - var xhr, - success = false; - try { - xhr = jQuery.ajax({ - url: window.location - }); - success = true; - xhr.abort(); - } catch (e) { - - } - ok( success, "document.location did not generate exception" ); - }); - - jQuery.each( [ " - Same Domain", " - Cross Domain" ], function( crossDomain, label ) { - ajaxTest( "#7578 - jQuery.ajax() - JSONP - default for cache option" + label, 1, { - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - beforeSend: function() { - strictEqual( this.cache, false, "cache must be false on JSON request" ); - return false; - }, - error: true - }); - }); - - ajaxTest( "#8107 - jQuery.ajax() - multiple method signatures introduced in 1.5", 4, [ - { - create: function() { - return jQuery.ajax(); - }, - done: function() { - ok( true, "With no arguments" ); - } - }, - { - create: function() { - return jQuery.ajax("data/name.html"); - }, - done: function() { - ok( true, "With only string URL argument" ); - } - }, - { - create: function() { - return jQuery.ajax( "data/name.html", {}); - }, - done: function() { - ok( true, "With string URL param and map" ); - } - }, - { - create: function( options ) { - return jQuery.ajax( options ); - }, - url: "data/name.html", - success: function() { - ok( true, "With only map" ); - } - } - ]); - - jQuery.each( [ " - Same Domain", " - Cross Domain" ], function( crossDomain, label ) { - ajaxTest( "#8205 - jQuery.ajax() - JSONP - re-use callbacks name" + label, 2, { - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - beforeSend: function( jqXHR, s ) { - s.callback = s.jsonpCallback; - }, - success: function() { - var previous = this; - strictEqual( previous.jsonpCallback, undefined, "jsonpCallback option is set back to default in callbacks" ); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - beforeSend: function() { - strictEqual( this.jsonpCallback, previous.callback, "JSONP callback name is re-used" ); - return false; - } - }); - } - }); - }); - - test( "#9887 - jQuery.ajax() - Context with circular references (#9887)", 2, function () { - var success = false, - context = {}; - context.field = context; - try { - jQuery.ajax( "non-existing", { - context: context, - beforeSend: function() { - ok( this === context, "context was not deep extended" ); - return false; - } - }); - success = true; - } catch ( e ) { - console.log( e ); - } - ok( success, "context with circular reference did not generate an exception" ); - }); - - jQuery.each( [ "as argument", "in settings object" ], function( inSetting, title ) { - - function request( url, test ) { - return { - create: function() { - return jQuery.ajax( inSetting ? { url: url } : url ); - }, - done: function() { - ok( true, ( test || url ) + " " + title ); - } - }; - } - - ajaxTest( "#10093 - jQuery.ajax() - falsy url " + title, 4, [ - request( "", "empty string" ), - request( false ), - request( null ), - request( undefined ) - ]); - - }); - - ajaxTest( "#11151 - jQuery.ajax() - parse error body", 2, { - url: url("data/errorWithJSON.php"), - dataFilter: function( string ) { - ok( false, "dataFilter called" ); - return string; - }, - error: function( jqXHR ) { - strictEqual( jqXHR.responseText, "{ \"code\": 40, \"message\": \"Bad Request\" }", "Error body properly set" ); - deepEqual( jqXHR.responseJSON, { code: 40, message: "Bad Request" }, "Error body properly parsed" ); - } - }); - - ajaxTest( "#11426 - jQuery.ajax() - loading binary data shouldn't throw an exception in IE", 1, { - url: url("data/1x1.jpg"), - success: function( data ) { - ok( data === undefined || /JFIF/.test( data ), "success callback reached" ); - } - }); - - asyncTest( "#11743 - jQuery.ajax() - script, throws exception", 1, function() { - var onerror = window.onerror; - window.onerror = function() { - ok( true, "Exception thrown" ); - window.onerror = onerror; - start(); - }; - jQuery.ajax({ - url: "data/badjson.js", - dataType: "script", - throws: true, - // Global events get confused by the exception - global: false, - success: function() { - ok( false, "Success." ); - }, - error: function() { - ok( false, "Error." ); - } - }); - }); - - jQuery.each( [ "method", "type" ], function( _, globalOption ) { - - function request( option ) { - var options = { - url: url("data/echoData.php"), - data: "hello", - success: function( msg ) { - strictEqual( msg, "hello", "Check for POST (no override)" ); - } - }; - if ( option ) { - options[ option ] = "GET"; - options.success = function( msg ) { - strictEqual( msg, "", "Check for no POST (overriding with " + option + ")" ); - }; - } - return options; - } - - ajaxTest( "#12004 - jQuery.ajax() - method is an alias of type - " + globalOption + " set globally", 3, { - setup: function() { - var options = {}; - options[ globalOption ] = "POST"; - jQuery.ajaxSetup( options ); - }, - requests: [ - request("type"), - request("method"), - request() - ] - }); - - }); - - ajaxTest( "#13276 - jQuery.ajax() - compatibility between XML documents from ajax requests and parsed string", 1, { - url: "data/dashboard.xml", - dataType: "xml", - success: function( ajaxXML ) { - var parsedXML = jQuery( jQuery.parseXML("blibli") ).find("tab"); - ajaxXML = jQuery( ajaxXML ); - try { - ajaxXML.find("infowindowtab").append( parsedXML ); - } catch( e ) { - strictEqual( e, undefined, "error" ); - return; - } - strictEqual( ajaxXML.find("tab").length, 3, "Parsed node was added properly" ); - } - }); - - ajaxTest( "#13292 - jQuery.ajax() - converter is bypassed for 204 requests", 3, { - url: "data/nocontent.php", - dataType: "testing", - converters: { - "* testing": function() { - throw "converter was called"; - } - }, - success: function( data, status, jqXHR ) { - strictEqual( jqXHR.status, 204, "status code is 204" ); - strictEqual( status, "nocontent", "status text is 'nocontent'" ); - strictEqual( data, undefined, "data is undefined" ); - }, - error: function( _, status, error ) { - ok( false, "error" ); - strictEqual( status, "parsererror", "Parser Error" ); - strictEqual( error, "converter was called", "Converter was called" ); - } - }); - - ajaxTest( "#13388 - jQuery.ajax() - responseXML", 3, { - url: url("data/with_fries.xml"), - dataType: "xml", - success: function( resp, _, jqXHR ) { - notStrictEqual( resp, undefined, "XML document exists" ); - ok( "responseXML" in jqXHR, "jqXHR.responseXML exists" ); - strictEqual( resp, jqXHR.responseXML, "jqXHR.responseXML is set correctly" ); - } - }); - - ajaxTest( "#13922 - jQuery.ajax() - converter is bypassed for HEAD requests", 3, { - url: "data/json.php", - method: "HEAD", - data: { - header: "yes" - }, - converters: { - "text json": function() { - throw "converter was called"; - } - }, - success: function( data, status ) { - ok( true, "success" ); - strictEqual( status, "nocontent", "data is undefined" ); - strictEqual( data, undefined, "data is undefined" ); - }, - error: function( _, status, error ) { - ok( false, "error" ); - strictEqual( status, "parsererror", "Parser Error" ); - strictEqual( error, "converter was called", "Converter was called" ); - } - } ); - -//----------- jQuery.ajaxPrefilter() - - ajaxTest( "jQuery.ajaxPrefilter() - abort", 1, { - setup: function() { - jQuery.ajaxPrefilter(function( options, _, jqXHR ) { - if ( options.abortInPrefilter ) { - jqXHR.abort(); - } - }); - }, - abortInPrefilter: true, - error: function() { - ok( false, "error callback called" ); - }, - fail: function( _, reason ) { - strictEqual( reason, "canceled", "Request aborted by the prefilter must fail with 'canceled' status text" ); - } - }); - -//----------- jQuery.ajaxSetup() - - asyncTest( "jQuery.ajaxSetup()", 1, function() { - jQuery.ajaxSetup({ - url: url("data/name.php?name=foo"), - success: function( msg ) { - strictEqual( msg, "bar", "Check for GET" ); - start(); - } - }); - jQuery.ajax(); - }); - - asyncTest( "jQuery.ajaxSetup({ timeout: Number }) - with global timeout", 2, function() { - var passed = 0, - pass = function() { - ok( passed++ < 2, "Error callback executed" ); - if ( passed === 2 ) { - jQuery( document ).off("ajaxError.setupTest"); - start(); - } - }, - fail = function( a, b ) { - ok( false, "Check for timeout failed " + a + " " + b ); - start(); - }; - - jQuery( document ).on( "ajaxError.setupTest", pass ); - - jQuery.ajaxSetup({ - timeout: 1000 - }); - - jQuery.ajax({ - type: "GET", - url: url("data/name.php?wait=5"), - error: pass, - success: fail - }); - }); - - asyncTest( "jQuery.ajaxSetup({ timeout: Number }) with localtimeout", 1, function() { - jQuery.ajaxSetup({ - timeout: 50 - }); - jQuery.ajax({ - type: "GET", - timeout: 15000, - url: url("data/name.php?wait=1"), - error: function() { - ok( false, "Check for local timeout failed" ); - start(); - }, - success: function() { - ok( true, "Check for local timeout" ); - start(); - } - }); - }); - -//----------- jQuery.domManip() - - test( "#11264 - jQuery.domManip() - no side effect because of ajaxSetup or global events", 1, function() { - jQuery.ajaxSetup({ - type: "POST" - }); - - jQuery( document ).on( "ajaxStart ajaxStop", function() { - ok( false, "Global event triggered" ); - }); - - jQuery("#qunit-fixture").append(""); - - jQuery( document ).off("ajaxStart ajaxStop"); - }); - - asyncTest( "#11402 - jQuery.domManip() - script in comments are properly evaluated", 2, function() { - jQuery("#qunit-fixture").load( "data/cleanScript.html", start ); - }); - -//----------- jQuery.get() - - asyncTest( "jQuery.get( String, Hash, Function ) - parse xml and use text() on nodes", 2, function() { - jQuery.get( url("data/dashboard.xml"), function( xml ) { - var content = []; - jQuery( "tab", xml ).each(function() { - content.push( jQuery( this ).text() ); - }); - strictEqual( content[ 0 ], "blabla", "Check first tab" ); - strictEqual( content[ 1 ], "blublu", "Check second tab" ); - start(); - }); - }); - - asyncTest( "#8277 - jQuery.get( String, Function ) - data in ajaxSettings", 1, function() { - jQuery.ajaxSetup({ - data: "helloworld" - }); - jQuery.get( url("data/echoQuery.php"), function( data ) { - ok( /helloworld$/.test( data ), "Data from ajaxSettings was used" ); - start(); - }); - }); - -//----------- jQuery.getJSON() - - asyncTest( "jQuery.getJSON( String, Hash, Function ) - JSON array", 5, function() { - jQuery.getJSON( - url("data/json.php"), - { - "json": "array" - }, - function( json ) { - ok( json.length >= 2, "Check length" ); - strictEqual( json[ 0 ]["name"], "John", "Check JSON: first, name" ); - strictEqual( json[ 0 ]["age"], 21, "Check JSON: first, age" ); - strictEqual( json[ 1 ]["name"], "Peter", "Check JSON: second, name" ); - strictEqual( json[ 1 ]["age"], 25, "Check JSON: second, age" ); - start(); - } - ); - }); - - asyncTest( "jQuery.getJSON( String, Function ) - JSON object", 2, function() { - jQuery.getJSON( url("data/json.php"), function( json ) { - if ( json && json["data"] ) { - strictEqual( json["data"]["lang"], "en", "Check JSON: lang" ); - strictEqual( json["data"].length, 25, "Check JSON: length" ); - start(); - } - }); - }); - - asyncTest( "jQuery.getJSON( String, Function ) - JSON object with absolute url to local content", 2, function() { - jQuery.getJSON( url( window.location.href.replace( /[^\/]*$/, "" ) + "data/json.php" ), function( json ) { - strictEqual( json.data.lang, "en", "Check JSON: lang" ); - strictEqual( json.data.length, 25, "Check JSON: length" ); - start(); - }); - }); - -//----------- jQuery.getScript() - - asyncTest( "jQuery.getScript( String, Function ) - with callback", 2, function() { - Globals.register("testBar"); - jQuery.getScript( url("data/test.js"), function() { - strictEqual( window["testBar"], "bar", "Check if script was evaluated" ); - start(); - }); - }); - - asyncTest( "jQuery.getScript( String, Function ) - no callback", 1, function() { - Globals.register("testBar"); - jQuery.getScript( url("data/test.js") ).done( start ); - }); - - asyncTest( "#8082 - jQuery.getScript( String, Function ) - source as responseText", 2, function() { - Globals.register("testBar"); - jQuery.getScript( url("data/test.js"), function( data, _, jqXHR ) { - strictEqual( data, jqXHR.responseText, "Same-domain script requests returns the source of the script" ); - start(); - }); - }); - -//----------- jQuery.fn.load() - - // check if load can be called with only url - asyncTest( "jQuery.fn.load( String )", 2, function() { - jQuery.ajaxSetup({ - beforeSend: function() { - strictEqual( this.type, "GET", "no data means GET request" ); - } - }); - jQuery("#first").load( "data/name.html", start ); - }); - - asyncTest( "jQuery.fn.load() - 404 error callbacks", 6, function() { - addGlobalEvents("ajaxStart ajaxStop ajaxSend ajaxComplete ajaxError")(); - jQuery( document ).ajaxStop( start ); - jQuery("
        ").load( "data/404.html", function() { - ok( true, "complete" ); - }); - }); - - // check if load can be called with url and null data - asyncTest( "jQuery.fn.load( String, null )", 2, function() { - jQuery.ajaxSetup({ - beforeSend: function() { - strictEqual( this.type, "GET", "no data means GET request" ); - } - }); - jQuery("#first").load( "data/name.html", null, start ); - }); - - // check if load can be called with url and undefined data - asyncTest( "jQuery.fn.load( String, undefined )", 2, function() { - jQuery.ajaxSetup({ - beforeSend: function() { - strictEqual( this.type, "GET", "no data means GET request" ); - } - }); - jQuery("#first").load( "data/name.html", undefined, start ); - }); - - // check if load can be called with only url - asyncTest( "jQuery.fn.load( URL_SELECTOR )", 1, function() { - jQuery("#first").load( "data/test3.html div.user", function() { - strictEqual( jQuery( this ).children("div").length, 2, "Verify that specific elements were injected" ); - start(); - }); - }); - - asyncTest( "jQuery.fn.load( String, Function ) - simple: inject text into DOM", 2, function() { - jQuery("#first").load( url("data/name.html"), function() { - ok( /^ERROR/.test(jQuery("#first").text()), "Check if content was injected into the DOM" ); - start(); - }); - }); - - asyncTest( "jQuery.fn.load( String, Function ) - check scripts", 7, function() { - var verifyEvaluation = function() { - strictEqual( window["testBar"], "bar", "Check if script src was evaluated after load" ); - strictEqual( jQuery("#ap").html(), "bar", "Check if script evaluation has modified DOM"); - start(); - }; - - Globals.register("testFoo"); - Globals.register("testBar"); - - jQuery("#first").load( url("data/test.html"), function() { - ok( jQuery("#first").html().match( /^html text/ ), "Check content after loading html" ); - strictEqual( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM" ); - strictEqual( window["testFoo"], "foo", "Check if script was evaluated after load" ); - setTimeout( verifyEvaluation, 600 ); - }); - }); - - asyncTest( "jQuery.fn.load( String, Function ) - check file with only a script tag", 3, function() { - Globals.register("testFoo"); - - jQuery("#first").load( url("data/test2.html"), function() { - strictEqual( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM"); - strictEqual( window["testFoo"], "foo", "Check if script was evaluated after load" ); - start(); - }); - }); - - asyncTest( "jQuery.fn.load( String, Function ) - dataFilter in ajaxSettings", 2, function() { - jQuery.ajaxSetup({ - dataFilter: function() { - return "Hello World"; - } - }); - jQuery("
        ").load( url("data/name.html"), function( responseText ) { - strictEqual( jQuery( this ).html(), "Hello World", "Test div was filled with filtered data" ); - strictEqual( responseText, "Hello World", "Test callback receives filtered data" ); - start(); - }); - }); - - asyncTest( "jQuery.fn.load( String, Object, Function )", 2, function() { - jQuery("
        ").load( url("data/params_html.php"), { - "foo": 3, - "bar": "ok" - }, function() { - var $post = jQuery( this ).find("#post"); - strictEqual( $post.find("#foo").text(), "3", "Check if a hash of data is passed correctly" ); - strictEqual( $post.find("#bar").text(), "ok", "Check if a hash of data is passed correctly" ); - start(); - }); - }); - - asyncTest( "jQuery.fn.load( String, String, Function )", 2, function() { - jQuery("
        ").load( url("data/params_html.php"), "foo=3&bar=ok", function() { - var $get = jQuery( this ).find("#get"); - strictEqual( $get.find("#foo").text(), "3", "Check if a string of data is passed correctly" ); - strictEqual( $get.find("#bar").text(), "ok", "Check if a of data is passed correctly" ); - start(); - }); - }); - - asyncTest( "jQuery.fn.load() - callbacks get the correct parameters", 8, function() { - var completeArgs = {}; - - jQuery.ajaxSetup({ - success: function( _, status, jqXHR ) { - completeArgs[ this.url ] = [ jqXHR.responseText, status, jqXHR ]; - }, - error: function( jqXHR, status ) { - completeArgs[ this.url ] = [ jqXHR.responseText, status, jqXHR ]; - } - }); - - jQuery.when.apply( - jQuery, - jQuery.map([ - { - type: "success", - url: "data/echoQuery.php?arg=pop" - }, - { - type: "error", - url: "data/404.php" - } - ], - function( options ) { - return jQuery.Deferred(function( defer ) { - jQuery("#foo").load( options.url, function() { - var args = arguments; - strictEqual( completeArgs[ options.url ].length, args.length, "same number of arguments (" + options.type + ")" ); - jQuery.each( completeArgs[ options.url ], function( i, value ) { - strictEqual( args[ i ], value, "argument #" + i + " is the same (" + options.type + ")" ); - }); - defer.resolve(); - }); - }); - }) - ).always( start ); - }); - - asyncTest( "#2046 - jQuery.fn.load( String, Function ) with ajaxSetup on dataType json", 1, function() { - jQuery.ajaxSetup({ - dataType: "json" - }); - jQuery( document ).ajaxComplete(function( e, xml, s ) { - strictEqual( s.dataType, "html", "Verify the load() dataType was html" ); - jQuery( document ).off("ajaxComplete"); - start(); - }); - jQuery("#first").load("data/test3.html"); - }); - - asyncTest( "#10524 - jQuery.fn.load() - data specified in ajaxSettings is merged in", 1, function() { - var data = { - "baz": 1 - }; - jQuery.ajaxSetup({ - data: { - "foo": "bar" - } - }); - jQuery("#foo").load( "data/echoQuery.php", data ); - jQuery( document ).ajaxComplete(function( event, jqXHR, options ) { - ok( ~options.data.indexOf("foo=bar"), "Data from ajaxSettings was used" ); - start(); - }); - }); - -//----------- jQuery.post() - - asyncTest( "jQuery.post() - data", 3, function() { - jQuery.when( - jQuery.post( - url("data/name.php"), - { - xml: "5-2", - length: 3 - }, - function( xml ) { - jQuery( "math", xml ).each(function() { - strictEqual( jQuery( "calculation", this ).text(), "5-2", "Check for XML" ); - strictEqual( jQuery( "result", this ).text(), "3", "Check for XML" ); - }); - } - ), - jQuery.ajax({ - url: url("data/echoData.php"), - type: "POST", - data: { - "test": { - "length": 7, - "foo": "bar" - } - }, - success: function( data ) { - strictEqual( data, "test%5Blength%5D=7&test%5Bfoo%5D=bar", "Check if a sub-object with a length param is serialized correctly" ); - } - }) - ).always( start ); - }); - - asyncTest( "jQuery.post( String, Hash, Function ) - simple with xml", 4, function() { - jQuery.when( - jQuery.post( - url("data/name.php"), - { - "xml": "5-2" - }, - function( xml ) { - jQuery( "math", xml ).each(function() { - strictEqual( jQuery( "calculation", this ).text(), "5-2", "Check for XML" ); - strictEqual( jQuery( "result", this ).text(), "3", "Check for XML" ); - }); - } - ), - jQuery.post( url("data/name.php?xml=5-2"), {}, function( xml ) { - jQuery( "math", xml ).each(function() { - strictEqual( jQuery( "calculation", this ).text(), "5-2", "Check for XML" ); - strictEqual( jQuery( "result", this ).text(), "3", "Check for XML" ); - }); - }) - ).always( start ); - }); - -//----------- jQuery.active - - test( "jQuery.active", 1, function() { - ok( jQuery.active === 0, "ajax active counter should be zero: " + jQuery.active ); - }); - -})(); diff --git a/src/main/webapp/vendors/jquery/test/unit/attributes.js b/src/main/webapp/vendors/jquery/test/unit/attributes.js deleted file mode 100644 index 84ac8c2b2..000000000 --- a/src/main/webapp/vendors/jquery/test/unit/attributes.js +++ /dev/null @@ -1,1384 +0,0 @@ -module( "attributes", { - teardown: moduleTeardown -}); - -function bareObj( value ) { - return value; -} - -function functionReturningObj( value ) { - return function() { - return value; - }; -} - -/* - ======== local reference ======= - bareObj and functionReturningObj can be used to test passing functions to setters - See testVal below for an example - - bareObj( value ); - This function returns whatever value is passed in - - functionReturningObj( value ); - Returns a function that returns the value -*/ - -test( "jQuery.propFix integrity test", function() { - expect( 1 ); - - // This must be maintained and equal jQuery.attrFix when appropriate - // Ensure that accidental or erroneous property - // overwrites don't occur - // This is simply for better code coverage and future proofing. - var props = { - "tabindex": "tabIndex", - "readonly": "readOnly", - "for": "htmlFor", - "class": "className", - "maxlength": "maxLength", - "cellspacing": "cellSpacing", - "cellpadding": "cellPadding", - "rowspan": "rowSpan", - "colspan": "colSpan", - "usemap": "useMap", - "frameborder": "frameBorder", - "contenteditable": "contentEditable" - }; - - deepEqual( props, jQuery.propFix, "jQuery.propFix passes integrity check" ); -}); - -test( "attr(String)", function() { - expect( 50 ); - - var extras, body, $body, - select, optgroup, option, $img, styleElem, - $button, $form, $a; - - equal( jQuery("#text1").attr("type"), "text", "Check for type attribute" ); - equal( jQuery("#radio1").attr("type"), "radio", "Check for type attribute" ); - equal( jQuery("#check1").attr("type"), "checkbox", "Check for type attribute" ); - equal( jQuery("#simon1").attr("rel"), "bookmark", "Check for rel attribute" ); - equal( jQuery("#google").attr("title"), "Google!", "Check for title attribute" ); - equal( jQuery("#mark").attr("hreflang"), "en", "Check for hreflang attribute" ); - equal( jQuery("#en").attr("lang"), "en", "Check for lang attribute" ); - equal( jQuery("#simon").attr("class"), "blog link", "Check for class attribute" ); - equal( jQuery("#name").attr("name"), "name", "Check for name attribute" ); - equal( jQuery("#text1").attr("name"), "action", "Check for name attribute" ); - ok( jQuery("#form").attr("action").indexOf("formaction") >= 0, "Check for action attribute" ); - equal( jQuery("#text1").attr("value", "t").attr("value"), "t", "Check setting the value attribute" ); - equal( jQuery("#text1").attr("value", "").attr("value"), "", "Check setting the value attribute to empty string" ); - equal( jQuery("
        ").attr("value"), "t", "Check setting custom attr named 'value' on a div" ); - equal( jQuery("#form").attr("blah", "blah").attr("blah"), "blah", "Set non-existent attribute on a form" ); - equal( jQuery("#foo").attr("height"), undefined, "Non existent height attribute should return undefined" ); - - // [7472] & [3113] (form contains an input with name="action" or name="id") - extras = jQuery("").appendTo("#testForm"); - equal( jQuery("#form").attr("action","newformaction").attr("action"), "newformaction", "Check that action attribute was changed" ); - equal( jQuery("#testForm").attr("target"), undefined, "Retrieving target does not equal the input with name=target" ); - equal( jQuery("#testForm").attr("target", "newTarget").attr("target"), "newTarget", "Set target successfully on a form" ); - equal( jQuery("#testForm").removeAttr("id").attr("id"), undefined, "Retrieving id does not equal the input with name=id after id is removed [#7472]" ); - // Bug #3685 (form contains input with name="name") - equal( jQuery("#testForm").attr("name"), undefined, "Retrieving name does not retrieve input with name=name" ); - extras.remove(); - - equal( jQuery("#text1").attr("maxlength"), "30", "Check for maxlength attribute" ); - equal( jQuery("#text1").attr("maxLength"), "30", "Check for maxLength attribute" ); - equal( jQuery("#area1").attr("maxLength"), "30", "Check for maxLength attribute" ); - - // using innerHTML in IE causes href attribute to be serialized to the full path - jQuery("").attr({ - "id": "tAnchor5", - "href": "#5" - }).appendTo("#qunit-fixture"); - equal( jQuery("#tAnchor5").attr("href"), "#5", "Check for non-absolute href (an anchor)" ); - jQuery("").appendTo("#qunit-fixture"); - equal( jQuery("#tAnchor5").prop("href"), jQuery("#tAnchor6").prop("href"), "Check for absolute href prop on an anchor" ); - - $("").appendTo("#qunit-fixture"); - equal( jQuery("#tAnchor5").prop("href"), jQuery("#scriptSrc").prop("src"), "Check for absolute src prop on a script" ); - - // list attribute is readonly by default in browsers that support it - jQuery("#list-test").attr( "list", "datalist" ); - equal( jQuery("#list-test").attr("list"), "datalist", "Check setting list attribute" ); - - // Related to [5574] and [5683] - body = document.body; - $body = jQuery( body ); - - strictEqual( $body.attr("foo"), undefined, "Make sure that a non existent attribute returns undefined" ); - - body.setAttribute( "foo", "baz" ); - equal( $body.attr("foo"), "baz", "Make sure the dom attribute is retrieved when no expando is found" ); - - $body.attr( "foo","cool" ); - equal( $body.attr("foo"), "cool", "Make sure that setting works well when both expando and dom attribute are available" ); - - body.removeAttribute("foo"); // Cleanup - - select = document.createElement("select"); - optgroup = document.createElement("optgroup"); - option = document.createElement("option"); - - optgroup.appendChild( option ); - select.appendChild( optgroup ); - - equal( jQuery( option ).prop("selected"), true, "Make sure that a single option is selected, even when in an optgroup." ); - - $img = jQuery("").appendTo("body"); - equal( $img.attr("width"), "215", "Retrieve width attribute an an element with display:none." ); - equal( $img.attr("height"), "53", "Retrieve height attribute an an element with display:none." ); - - // Check for style support - styleElem = jQuery("
        ").appendTo("#qunit-fixture").css({ - background: "url(UPPERlower.gif)" - }); - ok( !!~styleElem.attr("style").indexOf("UPPERlower.gif"), "Check style attribute getter" ); - ok( !!~styleElem.attr("style", "position:absolute;").attr("style").indexOf("absolute"), "Check style setter" ); - - // Check value on button element (#1954) - $button = jQuery("").insertAfter("#button"); - strictEqual( $button.attr("value"), undefined, "Absence of value attribute on a button" ); - equal( $button.attr( "value", "foobar" ).attr("value"), "foobar", "Value attribute on a button does not return innerHTML" ); - equal( $button.attr("value", "baz").html(), "text", "Setting the value attribute does not change innerHTML" ); - - // Attributes with a colon on a table element (#1591) - equal( jQuery("#table").attr("test:attrib"), undefined, "Retrieving a non-existent attribute on a table with a colon does not throw an error." ); - equal( jQuery("#table").attr( "test:attrib", "foobar" ).attr("test:attrib"), "foobar", "Setting an attribute on a table with a colon does not throw an error." ); - - $form = jQuery("
        ").appendTo("#qunit-fixture"); - equal( $form.attr("class"), "something", "Retrieve the class attribute on a form." ); - - $a = jQuery("
        Click").appendTo("#qunit-fixture"); - equal( $a.attr("onclick"), "something()", "Retrieve ^on attribute without anonymous function wrapper." ); - - ok( jQuery("
        ").attr("doesntexist") === undefined, "Make sure undefined is returned when no attribute is found." ); - ok( jQuery("
        ").attr("title") === undefined, "Make sure undefined is returned when no attribute is found." ); - equal( jQuery("
        ").attr( "title", "something" ).attr("title"), "something", "Set the title attribute." ); - ok( jQuery().attr("doesntexist") === undefined, "Make sure undefined is returned when no element is there." ); - equal( jQuery("
        ").attr("value"), undefined, "An unset value on a div returns undefined." ); - strictEqual( jQuery("").attr("value"), undefined, "An unset value on a select returns undefined." ); - - $form = jQuery("#form").attr( "enctype", "multipart/form-data" ); - equal( $form.prop("enctype"), "multipart/form-data", "Set the enctype of a form (encoding in IE6/7 #6743)" ); - -}); - -test( "attr(String) on cloned elements, #9646", function() { - expect( 4 ); - - var div, - input = jQuery(""); - - input.attr("name"); - - strictEqual( input.clone( true ).attr( "name", "test" )[ 0 ].name, "test", "Name attribute should be changed on cloned element" ); - - div = jQuery("
        "); - div.attr("id"); - - strictEqual( div.clone( true ).attr( "id", "test" )[ 0 ].id, "test", "Id attribute should be changed on cloned element" ); - - input = jQuery(""); - input.attr("value"); - - strictEqual( input.clone( true ).attr( "value", "test" )[ 0 ].value, "test", "Value attribute should be changed on cloned element" ); - - strictEqual( input.clone( true ).attr( "value", 42 )[ 0 ].value, "42", "Value attribute should be changed on cloned element" ); -}); - -test( "attr(String) in XML Files", function() { - expect( 3 ); - var xml = createDashboardXML(); - equal( jQuery( "locations", xml ).attr("class"), "foo", "Check class attribute in XML document" ); - equal( jQuery( "location", xml ).attr("for"), "bar", "Check for attribute in XML document" ); - equal( jQuery( "location", xml ).attr("checked"), "different", "Check that hooks are not attached in XML document" ); -}); - -test( "attr(String, Function)", function() { - expect( 2 ); - - equal( - jQuery("#text1").attr( "value", function() { - return this.id; - }).attr("value"), - "text1", - "Set value from id" - ); - - equal( - jQuery("#text1").attr( "title", function(i) { - return i; - }).attr("title"), - "0", - "Set value with an index" - ); -}); - -test( "attr(Hash)", function() { - expect( 3 ); - var pass = true; - jQuery("div").attr({ - "foo": "baz", - "zoo": "ping" - }).each(function() { - if ( this.getAttribute("foo") !== "baz" && this.getAttribute("zoo") !== "ping" ) { - pass = false; - } - }); - - ok( pass, "Set Multiple Attributes" ); - - equal( - jQuery("#text1").attr({ - "value": function() { - return this["id"]; - }}).attr("value"), - "text1", - "Set attribute to computed value #1" - ); - - equal( - jQuery("#text1").attr({ - "title": function(i) { - return i; - } - }).attr("title"), - "0", - "Set attribute to computed value #2" - ); -}); - -test( "attr(String, Object)", function() { - expect( 71 ); - - var $input, $text, $details, - attributeNode, commentNode, textNode, obj, - table, td, j, type, - check, thrown, button, $radio, $radios, $svg, - div = jQuery("div").attr("foo", "bar"), - i = 0, - fail = false; - - for ( ; i < div.length; i++ ) { - if ( div[ i ].getAttribute("foo") !== "bar" ) { - fail = i; - break; - } - } - - equal( fail, false, "Set Attribute, the #" + fail + " element didn't get the attribute 'foo'" ); - - ok( - jQuery("#foo").attr({ - "width": null - }), - "Try to set an attribute to nothing" - ); - - jQuery("#name").attr( "name", "something" ); - equal( jQuery("#name").attr("name"), "something", "Set name attribute" ); - jQuery("#name").attr( "name", null ); - equal( jQuery("#name").attr("name"), undefined, "Remove name attribute" ); - - $input = jQuery( "", { - name: "something", - id: "specified" - }); - equal( $input.attr("name"), "something", "Check element creation gets/sets the name attribute." ); - equal( $input.attr("id"), "specified", "Check element creation gets/sets the id attribute." ); - - // As of fixing #11115, we only guarantee boolean property update for checked and selected - $input = jQuery("").attr( "checked", true ); - equal( $input.prop("checked"), true, "Setting checked updates property (verified by .prop)" ); - equal( $input[0].checked, true, "Setting checked updates property (verified by native property)" ); - $input = jQuery(""); - $select1.val( valueObj( 4 ) ); - equal( $select1.val(), "4", "Should be possible to set the val() to a newly created option" ); - - // using contents will get comments regular, text, and comment nodes - j = jQuery("#nonnodes").contents(); - j.val( valueObj( "asdf" ) ); - equal( j.val(), "asdf", "Check node,textnode,comment with val()" ); - j.removeAttr("value"); -}; - -test( "val(String/Number)", function() { - testVal( bareObj ); -}); - -test( "val(Function)", function() { - testVal( functionReturningObj ); -}); - -test( "val(Array of Numbers) (Bug #7123)", function() { - expect( 4 ); - jQuery("#form").append(""); - var elements = jQuery("input[name=arrayTest]").val([ 1, 2 ]); - ok( elements[ 0 ].checked, "First element was checked" ); - ok( elements[ 1 ].checked, "Second element was checked" ); - ok( !elements[ 2 ].checked, "Third element was unchecked" ); - ok( !elements[ 3 ].checked, "Fourth element remained unchecked" ); - - elements.remove(); -}); - -test( "val(Function) with incoming value", function() { - expect( 10 ); - - QUnit.reset(); - var oldVal = jQuery("#text1").val(); - - jQuery("#text1").val(function( i, val ) { - equal( val, oldVal, "Make sure the incoming value is correct." ); - return "test"; - }); - - equal( document.getElementById("text1").value, "test", "Check for modified (via val(String)) value of input element" ); - - oldVal = jQuery("#text1").val(); - - jQuery("#text1").val(function( i, val ) { - equal( val, oldVal, "Make sure the incoming value is correct." ); - return 67; - }); - - equal( document.getElementById("text1").value, "67", "Check for modified (via val(Number)) value of input element" ); - - oldVal = jQuery("#select1").val(); - - jQuery("#select1").val(function( i, val ) { - equal( val, oldVal, "Make sure the incoming value is correct." ); - return "3"; - }); - - equal( jQuery("#select1").val(), "3", "Check for modified (via val(String)) value of select element" ); - - oldVal = jQuery("#select1").val(); - - jQuery("#select1").val(function( i, val ) { - equal( val, oldVal, "Make sure the incoming value is correct." ); - return 2; - }); - - equal( jQuery("#select1").val(), "2", "Check for modified (via val(Number)) value of select element" ); - - jQuery("#select1").append(""); - - oldVal = jQuery("#select1").val(); - - jQuery("#select1").val(function( i, val ) { - equal( val, oldVal, "Make sure the incoming value is correct." ); - return 4; - }); - - equal( jQuery("#select1").val(), "4", "Should be possible to set the val() to a newly created option" ); -}); - -// testing if a form.reset() breaks a subsequent call to a select element's .val() (in IE only) -test( "val(select) after form.reset() (Bug #2551)", function() { - expect( 3 ); - - jQuery("
        ").appendTo("#qunit-fixture"); - - jQuery("#kkk").val("gf"); - - document["kk"].reset(); - - equal( jQuery("#kkk")[ 0 ].value, "cf", "Check value of select after form reset." ); - equal( jQuery("#kkk").val(), "cf", "Check value of select after form reset." ); - - // re-verify the multi-select is not broken (after form.reset) by our fix for single-select - deepEqual( jQuery("#select3").val(), ["1", "2"], "Call val() on a multiple='multiple' select" ); - - jQuery("#kk").remove(); -}); - -var testAddClass = function( valueObj ) { - expect( 9 ); - - var pass, j, i, - div = jQuery("#qunit-fixture div"); - div.addClass( valueObj("test") ); - pass = true; - for ( i = 0; i < div.length; i++ ) { - if ( !~div.get( i ).className.indexOf("test") ) { - pass = false; - } - } - ok( pass, "Add Class" ); - - // using contents will get regular, text, and comment nodes - j = jQuery("#nonnodes").contents(); - j.addClass( valueObj("asdf") ); - ok( j.hasClass("asdf"), "Check node,textnode,comment for addClass" ); - - div = jQuery("
        "); - - div.addClass( valueObj("test") ); - equal( div.attr("class"), "test", "Make sure there's no extra whitespace." ); - - div.attr( "class", " foo" ); - div.addClass( valueObj("test") ); - equal( div.attr("class"), "foo test", "Make sure there's no extra whitespace." ); - - div.attr( "class", "foo" ); - div.addClass( valueObj("bar baz") ); - equal( div.attr("class"), "foo bar baz", "Make sure there isn't too much trimming." ); - - div.removeClass(); - div.addClass( valueObj("foo") ).addClass( valueObj("foo") ); - equal( div.attr("class"), "foo", "Do not add the same class twice in separate calls." ); - - div.addClass( valueObj("fo") ); - equal( div.attr("class"), "foo fo", "Adding a similar class does not get interrupted." ); - div.removeClass().addClass("wrap2"); - ok( div.addClass("wrap").hasClass("wrap"), "Can add similarly named classes"); - - div.removeClass(); - div.addClass( valueObj("bar bar") ); - equal( div.attr("class"), "bar", "Do not add the same class twice in the same call." ); -}; - -test( "addClass(String)", function() { - testAddClass( bareObj ); -}); - -test( "addClass(Function)", function() { - testAddClass( functionReturningObj ); -}); - -test( "addClass(Function) with incoming value", function() { - expect( 52 ); - var pass, i, - div = jQuery("#qunit-fixture div"), - old = div.map(function() { - return jQuery(this).attr("class") || ""; - }); - - div.addClass(function( i, val ) { - if ( this.id !== "_firebugConsole" ) { - equal( val, old[ i ], "Make sure the incoming value is correct." ); - return "test"; - } - }); - - pass = true; - for ( i = 0; i < div.length; i++ ) { - if ( div.get(i).className.indexOf("test") === -1 ) { - pass = false; - } - } - ok( pass, "Add Class" ); -}); - -var testRemoveClass = function(valueObj) { - expect( 8 ); - - var $set = jQuery("#qunit-fixture div"), - div = document.createElement("div"); - - $set.addClass("test").removeClass( valueObj("test") ); - - ok( !$set.is(".test"), "Remove Class" ); - - $set.addClass("test").addClass("foo").addClass("bar"); - $set.removeClass( valueObj("test") ).removeClass( valueObj("bar") ).removeClass( valueObj("foo") ); - - ok( !$set.is(".test,.bar,.foo"), "Remove multiple classes" ); - - // Make sure that a null value doesn't cause problems - $set.eq( 0 ).addClass("expected").removeClass( valueObj( null ) ); - ok( $set.eq( 0 ).is(".expected"), "Null value passed to removeClass" ); - - $set.eq( 0 ).addClass("expected").removeClass( valueObj("") ); - ok( $set.eq( 0 ).is(".expected"), "Empty string passed to removeClass" ); - - // using contents will get regular, text, and comment nodes - $set = jQuery("#nonnodes").contents(); - $set.removeClass( valueObj("asdf") ); - ok( !$set.hasClass("asdf"), "Check node,textnode,comment for removeClass" ); - - - jQuery( div ).removeClass( valueObj("foo") ); - strictEqual( jQuery( div ).attr("class"), undefined, "removeClass doesn't create a class attribute" ); - - div.className = " test foo "; - - jQuery( div ).removeClass( valueObj("foo") ); - equal( div.className, "test", "Make sure remaining className is trimmed." ); - - div.className = " test "; - - jQuery( div ).removeClass( valueObj("test") ); - equal( div.className, "", "Make sure there is nothing left after everything is removed." ); -}; - -test( "removeClass(String) - simple", function() { - testRemoveClass( bareObj ); -}); - -test( "removeClass(Function) - simple", function() { - testRemoveClass( functionReturningObj ); -}); - -test( "removeClass(Function) with incoming value", function() { - expect( 52 ); - - var $divs = jQuery("#qunit-fixture div").addClass("test"), old = $divs.map(function() { - return jQuery( this ).attr("class"); - }); - - $divs.removeClass(function( i, val ) { - if ( this.id !== "_firebugConsole" ) { - equal( val, old[ i ], "Make sure the incoming value is correct." ); - return "test"; - } - }); - - ok( !$divs.is(".test"), "Remove Class" ); -}); - -test( "removeClass() removes duplicates", function() { - expect( 1 ); - - var $div = jQuery( jQuery.parseHTML("
        ") ); - - $div.removeClass("x"); - - ok( !$div.hasClass("x"), "Element with multiple same classes does not escape the wrath of removeClass()" ); -}); - -test("removeClass(undefined) is a no-op", function() { - expect( 1 ); - - var $div = jQuery("
        "); - $div.removeClass( undefined ); - - ok( $div.hasClass("base") && $div.hasClass("second"), "Element still has classes after removeClass(undefined)" ); -}); - -var testToggleClass = function(valueObj) { - expect( 17 ); - - var e = jQuery("#firstp"); - ok( !e.is(".test"), "Assert class not present" ); - e.toggleClass( valueObj("test") ); - ok( e.is(".test"), "Assert class present" ); - e.toggleClass( valueObj("test") ); - ok( !e.is(".test"), "Assert class not present" ); - - // class name with a boolean - e.toggleClass( valueObj("test"), false ); - ok( !e.is(".test"), "Assert class not present" ); - e.toggleClass( valueObj("test"), true ); - ok( e.is(".test"), "Assert class present" ); - e.toggleClass( valueObj("test"), false ); - ok( !e.is(".test"), "Assert class not present" ); - - // multiple class names - e.addClass("testA testB"); - ok( e.is(".testA.testB"), "Assert 2 different classes present" ); - e.toggleClass( valueObj("testB testC") ); - ok( (e.is(".testA.testC") && !e.is(".testB")), "Assert 1 class added, 1 class removed, and 1 class kept" ); - e.toggleClass( valueObj("testA testC") ); - ok( (!e.is(".testA") && !e.is(".testB") && !e.is(".testC")), "Assert no class present" ); - - // toggleClass storage - e.toggleClass( true ); - ok( e[ 0 ].className === "", "Assert class is empty (data was empty)" ); - e.addClass("testD testE"); - ok( e.is(".testD.testE"), "Assert class present" ); - e.toggleClass(); - ok( !e.is(".testD.testE"), "Assert class not present" ); - ok( jQuery._data(e[ 0 ], "__className__") === "testD testE", "Assert data was stored" ); - e.toggleClass(); - ok( e.is(".testD.testE"), "Assert class present (restored from data)" ); - e.toggleClass( false ); - ok( !e.is(".testD.testE"), "Assert class not present" ); - e.toggleClass( true ); - ok( e.is(".testD.testE"), "Assert class present (restored from data)" ); - e.toggleClass(); - e.toggleClass( false ); - e.toggleClass(); - ok( e.is(".testD.testE"), "Assert class present (restored from data)" ); - - // Cleanup - e.removeClass("testD"); - QUnit.expectJqData( e[ 0 ], "__className__" ); -}; - -test( "toggleClass(String|boolean|undefined[, boolean])", function() { - testToggleClass( bareObj ); -}); - -test( "toggleClass(Function[, boolean])", function() { - testToggleClass( functionReturningObj ); -}); - -test( "toggleClass(Function[, boolean]) with incoming value", function() { - expect( 14 ); - - var e = jQuery("#firstp"), - old = e.attr("class") || ""; - - ok( !e.is(".test"), "Assert class not present" ); - - e.toggleClass(function( i, val ) { - equal( old, val, "Make sure the incoming value is correct." ); - return "test"; - }); - ok( e.is(".test"), "Assert class present" ); - - old = e.attr("class"); - - e.toggleClass(function( i, val ) { - equal( old, val, "Make sure the incoming value is correct." ); - return "test"; - }); - ok( !e.is(".test"), "Assert class not present" ); - - old = e.attr("class") || ""; - - // class name with a boolean - e.toggleClass(function( i, val, state ) { - equal( old, val, "Make sure the incoming value is correct." ); - equal( state, false, "Make sure that the state is passed in." ); - return "test"; - }, false ); - ok( !e.is(".test"), "Assert class not present" ); - - old = e.attr("class") || ""; - - e.toggleClass(function( i, val, state ) { - equal( old, val, "Make sure the incoming value is correct." ); - equal( state, true, "Make sure that the state is passed in." ); - return "test"; - }, true ); - ok( e.is(".test"), "Assert class present" ); - - old = e.attr("class"); - - e.toggleClass(function( i, val, state ) { - equal( old, val, "Make sure the incoming value is correct." ); - equal( state, false, "Make sure that the state is passed in." ); - return "test"; - }, false ); - ok( !e.is(".test"), "Assert class not present" ); -}); - -test( "addClass, removeClass, hasClass", function() { - expect( 17 ); - - var jq = jQuery("

        Hi

        "), x = jq[ 0 ]; - - jq.addClass("hi"); - equal( x.className, "hi", "Check single added class" ); - - jq.addClass("foo bar"); - equal( x.className, "hi foo bar", "Check more added classes" ); - - jq.removeClass(); - equal( x.className, "", "Remove all classes" ); - - jq.addClass("hi foo bar"); - jq.removeClass("foo"); - equal( x.className, "hi bar", "Check removal of one class" ); - - ok( jq.hasClass("hi"), "Check has1" ); - ok( jq.hasClass("bar"), "Check has2" ); - - jq = jQuery("

        "); - - ok( jq.hasClass("class1"), "Check hasClass with line feed" ); - ok( jq.is(".class1"), "Check is with line feed" ); - ok( jq.hasClass("class2"), "Check hasClass with tab" ); - ok( jq.is(".class2"), "Check is with tab" ); - ok( jq.hasClass("cla.ss3"), "Check hasClass with dot" ); - ok( jq.hasClass("class4"), "Check hasClass with carriage return" ); - ok( jq.is(".class4"), "Check is with carriage return" ); - - jq.removeClass("class2"); - ok( jq.hasClass("class2") === false, "Check the class has been properly removed" ); - jq.removeClass("cla"); - ok( jq.hasClass("cla.ss3"), "Check the dotted class has not been removed" ); - jq.removeClass("cla.ss3"); - ok( jq.hasClass("cla.ss3") === false, "Check the dotted class has been removed" ); - jq.removeClass("class4"); - ok( jq.hasClass("class4") === false, "Check the class has been properly removed" ); -}); - -test( "contents().hasClass() returns correct values", function() { - expect( 2 ); - - var $div = jQuery("
        text
        "), - $contents = $div.contents(); - - ok( $contents.hasClass("foo"), "Found 'foo' in $contents" ); - ok( !$contents.hasClass("undefined"), "Did not find 'undefined' in $contents (correctly)" ); -}); - -test( "hasClass correctly interprets non-space separators (#13835)", function() { - expect( 4 ); - - var - map = { - tab: " ", - "line-feed": " ", - "form-feed": " ", - "carriage-return": " " - }, - classes = jQuery.map( map, function( separator, label ) { - return " " + separator + label + separator + " "; - }), - $div = jQuery( "
        " ); - - jQuery.each( map, function( label ) { - ok( $div.hasClass( label ), label.replace( "-", " " ) ); - }); -}); - -test( "coords returns correct values in IE6/IE7, see #10828", function() { - expect( 1 ); - - var area, - map = jQuery(""); - - area = map.html("a").find("area"); - equal( area.attr("coords"), "0,0,0,0", "did not retrieve coords correctly" ); -}); diff --git a/src/main/webapp/vendors/jquery/test/unit/callbacks.js b/src/main/webapp/vendors/jquery/test/unit/callbacks.js deleted file mode 100644 index 843c95849..000000000 --- a/src/main/webapp/vendors/jquery/test/unit/callbacks.js +++ /dev/null @@ -1,342 +0,0 @@ -module( "callbacks", { - teardown: moduleTeardown -}); - -(function() { - -var output, - addToOutput = function( string ) { - return function() { - output += string; - }; - }, - outputA = addToOutput("A"), - outputB = addToOutput("B"), - outputC = addToOutput("C"), - tests = { - "": "XABC X XABCABCC X XBB X XABA X XX", - "once": "XABC X X X X X XABA X XX", - "memory": "XABC XABC XABCABCCC XA XBB XB XABA XC XX", - "unique": "XABC X XABCA X XBB X XAB X X", - "stopOnFalse": "XABC X XABCABCC X XBB X XA X XX", - "once memory": "XABC XABC X XA X XA XABA XC XX", - "once unique": "XABC X X X X X XAB X X", - "once stopOnFalse": "XABC X X X X X XA X XX", - "memory unique": "XABC XA XABCA XA XBB XB XAB XC X", - "memory stopOnFalse": "XABC XABC XABCABCCC XA XBB XB XA X XX", - "unique stopOnFalse": "XABC X XABCA X XBB X XA X X" - }, - filters = { - "no filter": undefined, - "filter": function( fn ) { - return function() { - return fn.apply( this, arguments ); - }; - } - }; - - function showFlags( flags ) { - if ( typeof flags === "string" ) { - return "'" + flags + "'"; - } - var output = [], key; - for ( key in flags ) { - output.push( "'" + key + "': " + flags[ key ] ); - } - return "{ " + output.join( ", " ) + " }"; - } - -jQuery.each( tests, function( strFlags, resultString ) { - - var objectFlags = {}; - - jQuery.each( strFlags.split( " " ), function() { - if ( this.length ) { - objectFlags[ this ] = true; - } - }); - - jQuery.each( filters, function( filterLabel ) { - - jQuery.each({ - "string": strFlags, - "object": objectFlags - }, function( flagsTypes, flags ) { - - test( "jQuery.Callbacks( " + showFlags( flags ) + " ) - " + filterLabel, function() { - - expect( 21 ); - - // Give qunit a little breathing room - stop(); - setTimeout( start, 0 ); - - var cblist, - results = resultString.split( /\s+/ ); - - // Basic binding and firing - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add(function( str ) { - output += str; - }); - cblist.fire("A"); - strictEqual( output, "XA", "Basic binding and firing" ); - strictEqual( cblist.fired(), true, ".fired() detects firing" ); - output = "X"; - cblist.disable(); - cblist.add(function( str ) { - output += str; - }); - strictEqual( output, "X", "Adding a callback after disabling" ); - cblist.fire("A"); - strictEqual( output, "X", "Firing after disabling" ); - - // #13517 - Emptying while firing - cblist = jQuery.Callbacks( flags ); - cblist.add( cblist.empty ); - cblist.add( function() { - ok( false, "not emptied" ); - } ); - cblist.fire(); - - // Disabling while firing - cblist = jQuery.Callbacks( flags ); - cblist.add( cblist.disable ); - cblist.add( function() { - ok( false, "not disabled" ); - } ); - cblist.fire(); - - // Basic binding and firing (context, arguments) - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add(function() { - equal( this, window, "Basic binding and firing (context)" ); - output += Array.prototype.join.call( arguments, "" ); - }); - cblist.fireWith( window, [ "A", "B" ] ); - strictEqual( output, "XAB", "Basic binding and firing (arguments)" ); - - // fireWith with no arguments - output = ""; - cblist = jQuery.Callbacks( flags ); - cblist.add(function() { - equal( this, window, "fireWith with no arguments (context is window)" ); - strictEqual( arguments.length, 0, "fireWith with no arguments (no arguments)" ); - }); - cblist.fireWith(); - - // Basic binding, removing and firing - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add( outputA, outputB, outputC ); - cblist.remove( outputB, outputC ); - cblist.fire(); - strictEqual( output, "XA", "Basic binding, removing and firing" ); - - // Empty - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add( outputA ); - cblist.add( outputB ); - cblist.add( outputC ); - cblist.empty(); - cblist.fire(); - strictEqual( output, "X", "Empty" ); - - // Locking - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add(function( str ) { - output += str; - }); - cblist.lock(); - cblist.add(function( str ) { - output += str; - }); - cblist.fire("A"); - cblist.add(function( str ) { - output += str; - }); - strictEqual( output, "X", "Lock early" ); - - // Ordering - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add(function() { - cblist.add( outputC ); - outputA(); - }, outputB ); - cblist.fire(); - strictEqual( output, results.shift(), "Proper ordering" ); - - // Add and fire again - output = "X"; - cblist.add(function() { - cblist.add( outputC ); - outputA(); - }, outputB ); - strictEqual( output, results.shift(), "Add after fire" ); - - output = "X"; - cblist.fire(); - strictEqual( output, results.shift(), "Fire again" ); - - // Multiple fire - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add(function( str ) { - output += str; - }); - cblist.fire("A"); - strictEqual( output, "XA", "Multiple fire (first fire)" ); - output = "X"; - cblist.add(function( str ) { - output += str; - }); - strictEqual( output, results.shift(), "Multiple fire (first new callback)" ); - output = "X"; - cblist.fire("B"); - strictEqual( output, results.shift(), "Multiple fire (second fire)" ); - output = "X"; - cblist.add(function( str ) { - output += str; - }); - strictEqual( output, results.shift(), "Multiple fire (second new callback)" ); - - // Return false - output = "X"; - cblist = jQuery.Callbacks( flags ); - cblist.add( outputA, function() { return false; }, outputB ); - cblist.add( outputA ); - cblist.fire(); - strictEqual( output, results.shift(), "Callback returning false" ); - - // Add another callback (to control lists with memory do not fire anymore) - output = "X"; - cblist.add( outputC ); - strictEqual( output, results.shift(), "Adding a callback after one returned false" ); - - // Callbacks are not iterated - output = ""; - function handler() { - output += "X"; - } - handler.method = function() { - output += "!"; - }; - cblist = jQuery.Callbacks( flags ); - cblist.add( handler ); - cblist.add( handler ); - cblist.fire(); - strictEqual( output, results.shift(), "No callback iteration" ); - }); - }); - }); -}); - -})(); - -test( "jQuery.Callbacks( options ) - options are copied", function() { - - expect( 1 ); - - var options = { - "unique": true - }, - cb = jQuery.Callbacks( options ), - count = 0, - fn = function() { - ok( !( count++ ), "called once" ); - }; - options["unique"] = false; - cb.add( fn, fn ); - cb.fire(); -}); - -test( "jQuery.Callbacks.fireWith - arguments are copied", function() { - - expect( 1 ); - - var cb = jQuery.Callbacks("memory"), - args = ["hello"]; - - cb.fireWith( null, args ); - args[ 0 ] = "world"; - - cb.add(function( hello ) { - strictEqual( hello, "hello", "arguments are copied internally" ); - }); -}); - -test( "jQuery.Callbacks.remove - should remove all instances", function() { - - expect( 1 ); - - var cb = jQuery.Callbacks(); - - function fn() { - ok( false, "function wasn't removed" ); - } - - cb.add( fn, fn, function() { - ok( true, "end of test" ); - }).remove( fn ).fire(); -}); - -test( "jQuery.Callbacks.has", function() { - - expect( 13 ); - - var cb = jQuery.Callbacks(); - function getA() { - return "A"; - } - function getB() { - return "B"; - } - function getC() { - return "C"; - } - cb.add(getA, getB, getC); - strictEqual( cb.has(), true, "No arguments to .has() returns whether callback function(s) are attached or not" ); - strictEqual( cb.has(getA), true, "Check if a specific callback function is in the Callbacks list" ); - - cb.remove(getB); - strictEqual( cb.has(getB), false, "Remove a specific callback function and make sure its no longer there" ); - strictEqual( cb.has(getA), true, "Remove a specific callback function and make sure other callback function is still there" ); - - cb.empty(); - strictEqual( cb.has(), false, "Empty list and make sure there are no callback function(s)" ); - strictEqual( cb.has(getA), false, "Check for a specific function in an empty() list" ); - - cb.add(getA, getB, function(){ - strictEqual( cb.has(), true, "Check if list has callback function(s) from within a callback function" ); - strictEqual( cb.has(getA), true, "Check if list has a specific callback from within a callback function" ); - }).fire(); - - strictEqual( cb.has(), true, "Callbacks list has callback function(s) after firing" ); - - cb.disable(); - strictEqual( cb.has(), false, "disabled() list has no callback functions (returns false)" ); - strictEqual( cb.has(getA), false, "Check for a specific function in a disabled() list" ); - - cb = jQuery.Callbacks("unique"); - cb.add(getA); - cb.add(getA); - strictEqual( cb.has(), true, "Check if unique list has callback function(s) attached" ); - cb.lock(); - strictEqual( cb.has(), false, "locked() list is empty and returns false" ); - - -}); - -test( "jQuery.Callbacks() - adding a string doesn't cause a stack overflow", function() { - - expect( 1 ); - - jQuery.Callbacks().add( "hello world" ); - - ok( true, "no stack overflow" ); -}); diff --git a/src/main/webapp/vendors/jquery/test/unit/core.js b/src/main/webapp/vendors/jquery/test/unit/core.js deleted file mode 100644 index 5fba3cf28..000000000 --- a/src/main/webapp/vendors/jquery/test/unit/core.js +++ /dev/null @@ -1,1387 +0,0 @@ -module("core", { teardown: moduleTeardown }); - -test("Unit Testing Environment", function () { - expect(2); - ok( hasPHP, "Running in an environment with PHP support. The AJAX tests only run if the environment supports PHP!" ); - ok( !isLocal, "Unit tests are not ran from file:// (especially in Chrome. If you must test from file:// with Chrome, run it with the --allow-file-access-from-files flag!)" ); -}); - -test("Basic requirements", function() { - expect(7); - ok( Array.prototype.push, "Array.push()" ); - ok( Function.prototype.apply, "Function.apply()" ); - ok( document.getElementById, "getElementById" ); - ok( document.getElementsByTagName, "getElementsByTagName" ); - ok( RegExp, "RegExp" ); - ok( jQuery, "jQuery" ); - ok( $, "$" ); -}); - -testIframeWithCallback( "Conditional compilation compatibility (#13274)", "core/cc_on.html", function( cc_on, errors, $ ) { - expect( 3 ); - ok( true, "JScript conditional compilation " + ( cc_on ? "supported" : "not supported" ) ); - deepEqual( errors, [], "No errors" ); - ok( $(), "jQuery executes" ); -}); - -testIframeWithCallback( "document ready when jQuery loaded asynchronously (#13655)", "core/dynamic_ready.html", function( ready ) { - expect( 1 ); - equal( true, ready, "document ready correctly fired when jQuery is loaded after DOMContentLoaded" ); -}); - -test("jQuery()", function() { - - var elem, i, - obj = jQuery("div"), - code = jQuery(""), - img = jQuery(""), - div = jQuery("

        "), - exec = false, - lng = "", - expected = 22, - attrObj = { - "text": "test", - "class": "test2", - "id": "test3" - }; - - // The $(html, props) signature can stealth-call any $.fn method, check for a - // few here but beware of modular builds where these methods may be excluded. - if ( jQuery.fn.click ) { - expected++; - attrObj["click"] = function() { ok( exec, "Click executed." ); }; - } - if ( jQuery.fn.width ) { - expected++; - attrObj["width"] = 10; - } - if ( jQuery.fn.offset ) { - expected++; - attrObj["offset"] = { "top": 1, "left": 1 }; - } - if ( jQuery.fn.css ) { - expected += 2; - attrObj["css"] = { "paddingLeft": 1, "paddingRight": 1 }; - } - if ( jQuery.fn.attr ) { - expected++; - attrObj.attr = { "desired": "very" }; - } - - expect( expected ); - - // Basic constructor's behavior - equal( jQuery().length, 0, "jQuery() === jQuery([])" ); - equal( jQuery(undefined).length, 0, "jQuery(undefined) === jQuery([])" ); - equal( jQuery(null).length, 0, "jQuery(null) === jQuery([])" ); - equal( jQuery("").length, 0, "jQuery('') === jQuery([])" ); - equal( jQuery("#").length, 0, "jQuery('#') === jQuery([])" ); - - equal( jQuery(obj).selector, "div", "jQuery(jQueryObj) == jQueryObj" ); - - // can actually yield more than one, when iframes are included, the window is an array as well - equal( jQuery(window).length, 1, "Correct number of elements generated for jQuery(window)" ); - -/* - // disabled since this test was doing nothing. i tried to fix it but i'm not sure - // what the expected behavior should even be. FF returns "\n" for the text node - // make sure this is handled - var crlfContainer = jQuery('

        \r\n

        '); - var x = crlfContainer.contents().get(0).nodeValue; - equal( x, what???, "Check for \\r and \\n in jQuery()" ); -*/ - - /* // Disabled until we add this functionality in - var pass = true; - try { - jQuery("
        Testing
        ").appendTo(document.getElementById("iframe").contentDocument.body); - } catch(e){ - pass = false; - } - ok( pass, "jQuery('<tag>') needs optional document parameter to ease cross-frame DOM wrangling, see #968" );*/ - - equal( code.length, 1, "Correct number of elements generated for code" ); - equal( code.parent().length, 0, "Make sure that the generated HTML has no parent." ); - - equal( img.length, 1, "Correct number of elements generated for img" ); - equal( img.parent().length, 0, "Make sure that the generated HTML has no parent." ); - - equal( div.length, 4, "Correct number of elements generated for div hr code b" ); - equal( div.parent().length, 0, "Make sure that the generated HTML has no parent." ); - - equal( jQuery([1,2,3]).get(1), 2, "Test passing an array to the factory" ); - - equal( jQuery(document.body).get(0), jQuery("body").get(0), "Test passing an html node to the factory" ); - - elem = jQuery(" hello")[0]; - equal( elem.nodeName.toLowerCase(), "em", "leading space" ); - - elem = jQuery("\n\nworld")[0]; - equal( elem.nodeName.toLowerCase(), "em", "leading newlines" ); - - elem = jQuery("
        ", attrObj ); - - if ( jQuery.fn.width ) { - equal( elem[0].style.width, "10px", "jQuery() quick setter width"); - } - - if ( jQuery.fn.offset ) { - equal( elem[0].style.top, "1px", "jQuery() quick setter offset"); - } - - if ( jQuery.fn.css ) { - equal( elem[0].style.paddingLeft, "1px", "jQuery quick setter css"); - equal( elem[0].style.paddingRight, "1px", "jQuery quick setter css"); - } - - if ( jQuery.fn.attr ) { - equal( elem[0].getAttribute("desired"), "very", "jQuery quick setter attr"); - } - - equal( elem[0].childNodes.length, 1, "jQuery quick setter text"); - equal( elem[0].firstChild.nodeValue, "test", "jQuery quick setter text"); - equal( elem[0].className, "test2", "jQuery() quick setter class"); - equal( elem[0].id, "test3", "jQuery() quick setter id"); - - exec = true; - elem.trigger("click"); - - // manually clean up detached elements - elem.remove(); - - for ( i = 0; i < 3; ++i ) { - elem = jQuery(""); - } - equal( elem[0].defaultValue, "TEST", "Ensure cached nodes are cloned properly (Bug #6655)" ); - - // manually clean up detached elements - elem.remove(); - - for ( i = 0; i < 128; i++ ) { - lng += "12345678"; - } -}); - -test("jQuery(selector, context)", function() { - expect(3); - deepEqual( jQuery("div p", "#qunit-fixture").get(), q("sndp", "en", "sap"), "Basic selector with string as context" ); - deepEqual( jQuery("div p", q("qunit-fixture")[0]).get(), q("sndp", "en", "sap"), "Basic selector with element as context" ); - deepEqual( jQuery("div p", jQuery("#qunit-fixture")).get(), q("sndp", "en", "sap"), "Basic selector with jQuery object as context" ); -}); - -test( "selector state", function() { - expect( 18 ); - - var test; - - test = jQuery( undefined ); - equal( test.selector, "", "Empty jQuery Selector" ); - equal( test.context, undefined, "Empty jQuery Context" ); - - test = jQuery( document ); - equal( test.selector, "", "Document Selector" ); - equal( test.context, document, "Document Context" ); - - test = jQuery( document.body ); - equal( test.selector, "", "Body Selector" ); - equal( test.context, document.body, "Body Context" ); - - test = jQuery("#qunit-fixture"); - equal( test.selector, "#qunit-fixture", "#qunit-fixture Selector" ); - equal( test.context, document, "#qunit-fixture Context" ); - - test = jQuery("#notfoundnono"); - equal( test.selector, "#notfoundnono", "#notfoundnono Selector" ); - equal( test.context, document, "#notfoundnono Context" ); - - test = jQuery( "#qunit-fixture", document ); - equal( test.selector, "#qunit-fixture", "#qunit-fixture Selector" ); - equal( test.context, document, "#qunit-fixture Context" ); - - test = jQuery( "#qunit-fixture", document.body ); - equal( test.selector, "#qunit-fixture", "#qunit-fixture Selector" ); - equal( test.context, document.body, "#qunit-fixture Context" ); - - // Test cloning - test = jQuery( test ); - equal( test.selector, "#qunit-fixture", "#qunit-fixture Selector" ); - equal( test.context, document.body, "#qunit-fixture Context" ); - - test = jQuery( document.body ).find("#qunit-fixture"); - equal( test.selector, "#qunit-fixture", "#qunit-fixture find Selector" ); - equal( test.context, document.body, "#qunit-fixture find Context" ); -}); - -test( "globalEval", function() { - expect( 3 ); - Globals.register("globalEvalTest"); - - jQuery.globalEval("globalEvalTest = 1;"); - equal( window.globalEvalTest, 1, "Test variable assignments are global" ); - - jQuery.globalEval("var globalEvalTest = 2;"); - equal( window.globalEvalTest, 2, "Test variable declarations are global" ); - - jQuery.globalEval("this.globalEvalTest = 3;"); - equal( window.globalEvalTest, 3, "Test context (this) is the window object" ); -}); - -test( "globalEval with 'use strict'", function() { - expect( 1 ); - Globals.register("strictEvalTest"); - - jQuery.globalEval("'use strict'; var strictEvalTest = 1;"); - equal( window.strictEvalTest, 1, "Test variable declarations are global (strict mode)" ); -}); - -test("noConflict", function() { - expect(7); - - var $$ = jQuery; - - strictEqual( jQuery, jQuery.noConflict(), "noConflict returned the jQuery object" ); - strictEqual( window["jQuery"], $$, "Make sure jQuery wasn't touched." ); - strictEqual( window["$"], original$, "Make sure $ was reverted." ); - - jQuery = $ = $$; - - strictEqual( jQuery.noConflict(true), $$, "noConflict returned the jQuery object" ); - strictEqual( window["jQuery"], originaljQuery, "Make sure jQuery was reverted." ); - strictEqual( window["$"], original$, "Make sure $ was reverted." ); - ok( $$().pushStack([]), "Make sure that jQuery still works." ); - - window["jQuery"] = jQuery = $$; -}); - -test("trim", function() { - expect(13); - - var nbsp = String.fromCharCode(160); - - equal( jQuery.trim("hello "), "hello", "trailing space" ); - equal( jQuery.trim(" hello"), "hello", "leading space" ); - equal( jQuery.trim(" hello "), "hello", "space on both sides" ); - equal( jQuery.trim(" " + nbsp + "hello " + nbsp + " "), "hello", " " ); - - equal( jQuery.trim(), "", "Nothing in." ); - equal( jQuery.trim( undefined ), "", "Undefined" ); - equal( jQuery.trim( null ), "", "Null" ); - equal( jQuery.trim( 5 ), "5", "Number" ); - equal( jQuery.trim( false ), "false", "Boolean" ); - - equal( jQuery.trim(" "), "", "space should be trimmed" ); - equal( jQuery.trim("ipad\xA0"), "ipad", "nbsp should be trimmed" ); - equal( jQuery.trim("\uFEFF"), "", "zwsp should be trimmed" ); - equal( jQuery.trim("\uFEFF \xA0! | \uFEFF"), "! |", "leading/trailing should be trimmed" ); -}); - -test("type", function() { - expect( 28 ); - - equal( jQuery.type(null), "null", "null" ); - equal( jQuery.type(undefined), "undefined", "undefined" ); - equal( jQuery.type(true), "boolean", "Boolean" ); - equal( jQuery.type(false), "boolean", "Boolean" ); - equal( jQuery.type(Boolean(true)), "boolean", "Boolean" ); - equal( jQuery.type(0), "number", "Number" ); - equal( jQuery.type(1), "number", "Number" ); - equal( jQuery.type(Number(1)), "number", "Number" ); - equal( jQuery.type(""), "string", "String" ); - equal( jQuery.type("a"), "string", "String" ); - equal( jQuery.type(String("a")), "string", "String" ); - equal( jQuery.type({}), "object", "Object" ); - equal( jQuery.type(/foo/), "regexp", "RegExp" ); - equal( jQuery.type(new RegExp("asdf")), "regexp", "RegExp" ); - equal( jQuery.type([1]), "array", "Array" ); - equal( jQuery.type(new Date()), "date", "Date" ); - equal( jQuery.type(new Function("return;")), "function", "Function" ); - equal( jQuery.type(function(){}), "function", "Function" ); - equal( jQuery.type(new Error()), "error", "Error" ); - equal( jQuery.type(window), "object", "Window" ); - equal( jQuery.type(document), "object", "Document" ); - equal( jQuery.type(document.body), "object", "Element" ); - equal( jQuery.type(document.createTextNode("foo")), "object", "TextNode" ); - equal( jQuery.type(document.getElementsByTagName("*")), "object", "NodeList" ); - - // Avoid Lint complaints - var MyString = String, - MyNumber = Number, - MyBoolean = Boolean, - MyObject = Object; - equal( jQuery.type(new MyBoolean(true)), "boolean", "Boolean" ); - equal( jQuery.type(new MyNumber(1)), "number", "Number" ); - equal( jQuery.type(new MyString("a")), "string", "String" ); - equal( jQuery.type(new MyObject()), "object", "Object" ); -}); - -asyncTest("isPlainObject", function() { - expect(15); - - var pass, iframe, doc, - fn = function() {}; - - // The use case that we want to match - ok( jQuery.isPlainObject({}), "{}" ); - - // Not objects shouldn't be matched - ok( !jQuery.isPlainObject(""), "string" ); - ok( !jQuery.isPlainObject(0) && !jQuery.isPlainObject(1), "number" ); - ok( !jQuery.isPlainObject(true) && !jQuery.isPlainObject(false), "boolean" ); - ok( !jQuery.isPlainObject(null), "null" ); - ok( !jQuery.isPlainObject(undefined), "undefined" ); - - // Arrays shouldn't be matched - ok( !jQuery.isPlainObject([]), "array" ); - - // Instantiated objects shouldn't be matched - ok( !jQuery.isPlainObject(new Date()), "new Date" ); - - // Functions shouldn't be matched - ok( !jQuery.isPlainObject(fn), "fn" ); - - // Again, instantiated objects shouldn't be matched - ok( !jQuery.isPlainObject(new fn()), "new fn (no methods)" ); - - // Makes the function a little more realistic - // (and harder to detect, incidentally) - fn.prototype["someMethod"] = function(){}; - - // Again, instantiated objects shouldn't be matched - ok( !jQuery.isPlainObject(new fn()), "new fn" ); - - // DOM Element - ok( !jQuery.isPlainObject( document.createElement("div") ), "DOM Element" ); - - // Window - ok( !jQuery.isPlainObject( window ), "window" ); - - pass = false; - try { - jQuery.isPlainObject( window.location ); - pass = true; - } catch ( e ) {} - ok( pass, "Does not throw exceptions on host objects" ); - - // Objects from other windows should be matched - window.iframeCallback = function( otherObject, detail ) { - window.iframeCallback = undefined; - iframe.parentNode.removeChild( iframe ); - ok( jQuery.isPlainObject(new otherObject()), "new otherObject" + ( detail ? " - " + detail : "" ) ); - start(); - }; - - try { - iframe = jQuery("#qunit-fixture")[0].appendChild( document.createElement("iframe") ); - doc = iframe.contentDocument || iframe.contentWindow.document; - doc.open(); - doc.write(""); - doc.close(); - } catch(e) { - window.iframeDone( Object, "iframes not supported" ); - } -}); - -test("isFunction", function() { - expect(19); - - var mystr, myarr, myfunction, fn, obj, nodes, first, input, a; - - // Make sure that false values return false - ok( !jQuery.isFunction(), "No Value" ); - ok( !jQuery.isFunction( null ), "null Value" ); - ok( !jQuery.isFunction( undefined ), "undefined Value" ); - ok( !jQuery.isFunction( "" ), "Empty String Value" ); - ok( !jQuery.isFunction( 0 ), "0 Value" ); - - // Check built-ins - // Safari uses "(Internal Function)" - ok( jQuery.isFunction(String), "String Function("+String+")" ); - ok( jQuery.isFunction(Array), "Array Function("+Array+")" ); - ok( jQuery.isFunction(Object), "Object Function("+Object+")" ); - ok( jQuery.isFunction(Function), "Function Function("+Function+")" ); - - // When stringified, this could be misinterpreted - mystr = "function"; - ok( !jQuery.isFunction(mystr), "Function String" ); - - // When stringified, this could be misinterpreted - myarr = [ "function" ]; - ok( !jQuery.isFunction(myarr), "Function Array" ); - - // When stringified, this could be misinterpreted - myfunction = { "function": "test" }; - ok( !jQuery.isFunction(myfunction), "Function Object" ); - - // Make sure normal functions still work - fn = function(){}; - ok( jQuery.isFunction(fn), "Normal Function" ); - - obj = document.createElement("object"); - - // Firefox says this is a function - ok( !jQuery.isFunction(obj), "Object Element" ); - - // IE says this is an object - // Since 1.3, this isn't supported (#2968) - //ok( jQuery.isFunction(obj.getAttribute), "getAttribute Function" ); - - nodes = document.body.childNodes; - - // Safari says this is a function - ok( !jQuery.isFunction(nodes), "childNodes Property" ); - - first = document.body.firstChild; - - // Normal elements are reported ok everywhere - ok( !jQuery.isFunction(first), "A normal DOM Element" ); - - input = document.createElement("input"); - input.type = "text"; - document.body.appendChild( input ); - - // IE says this is an object - // Since 1.3, this isn't supported (#2968) - //ok( jQuery.isFunction(input.focus), "A default function property" ); - - document.body.removeChild( input ); - - a = document.createElement("a"); - a.href = "some-function"; - document.body.appendChild( a ); - - // This serializes with the word 'function' in it - ok( !jQuery.isFunction(a), "Anchor Element" ); - - document.body.removeChild( a ); - - // Recursive function calls have lengths and array-like properties - function callme(callback){ - function fn(response){ - callback(response); - } - - ok( jQuery.isFunction(fn), "Recursive Function Call" ); - - fn({ some: "data" }); - } - - callme(function(){ - callme(function(){}); - }); -}); - -test( "isNumeric", function() { - expect( 36 ); - - var t = jQuery.isNumeric, - Traditionalists = /** @constructor */ function(n) { - this.value = n; - this.toString = function(){ - return String(this.value); - }; - }, - answer = new Traditionalists( "42" ), - rong = new Traditionalists( "Devo" ); - - ok( t("-10"), "Negative integer string"); - ok( t("0"), "Zero string"); - ok( t("5"), "Positive integer string"); - ok( t(-16), "Negative integer number"); - ok( t(0), "Zero integer number"); - ok( t(32), "Positive integer number"); - ok( t("040"), "Octal integer literal string"); - // OctalIntegerLiteral has been deprecated since ES3/1999 - // It doesn't pass lint, so disabling until a solution can be found - //ok( t(0144), "Octal integer literal"); - ok( t("0xFF"), "Hexadecimal integer literal string"); - ok( t(0xFFF), "Hexadecimal integer literal"); - ok( t("-1.6"), "Negative floating point string"); - ok( t("4.536"), "Positive floating point string"); - ok( t(-2.6), "Negative floating point number"); - ok( t(3.1415), "Positive floating point number"); - ok( t(8e5), "Exponential notation"); - ok( t("123e-2"), "Exponential notation string"); - ok( t(answer), "Custom .toString returning number"); - equal( t(""), false, "Empty string"); - equal( t(" "), false, "Whitespace characters string"); - equal( t("\t\t"), false, "Tab characters string"); - equal( t("abcdefghijklm1234567890"), false, "Alphanumeric character string"); - equal( t("xabcdefx"), false, "Non-numeric character string"); - equal( t(true), false, "Boolean true literal"); - equal( t(false), false, "Boolean false literal"); - equal( t("bcfed5.2"), false, "Number with preceding non-numeric characters"); - equal( t("7.2acdgs"), false, "Number with trailling non-numeric characters"); - equal( t(undefined), false, "Undefined value"); - equal( t(null), false, "Null value"); - equal( t(NaN), false, "NaN value"); - equal( t(Infinity), false, "Infinity primitive"); - equal( t(Number.POSITIVE_INFINITY), false, "Positive Infinity"); - equal( t(Number.NEGATIVE_INFINITY), false, "Negative Infinity"); - equal( t(rong), false, "Custom .toString returning non-number"); - equal( t({}), false, "Empty object"); - equal( t(function(){} ), false, "Instance of a function"); - equal( t( new Date() ), false, "Instance of a Date"); - equal( t(function(){} ), false, "Instance of a function"); -}); - -test("isXMLDoc - HTML", function() { - expect(4); - - ok( !jQuery.isXMLDoc( document ), "HTML document" ); - ok( !jQuery.isXMLDoc( document.documentElement ), "HTML documentElement" ); - ok( !jQuery.isXMLDoc( document.body ), "HTML Body Element" ); - - var body, - iframe = document.createElement("iframe"); - document.body.appendChild( iframe ); - - try { - body = jQuery(iframe).contents()[0]; - - try { - ok( !jQuery.isXMLDoc( body ), "Iframe body element" ); - } catch(e) { - ok( false, "Iframe body element exception" ); - } - - } catch(e) { - ok( true, "Iframe body element - iframe not working correctly" ); - } - - document.body.removeChild( iframe ); -}); - -test("XSS via location.hash", function() { - expect(1); - - stop(); - jQuery["_check9521"] = function(x){ - ok( x, "script called from #id-like selector with inline handler" ); - jQuery("#check9521").remove(); - delete jQuery["_check9521"]; - start(); - }; - try { - // This throws an error because it's processed like an id - jQuery( "#" ).appendTo("#qunit-fixture"); - } catch (err) { - jQuery["_check9521"](true); - } -}); - -test("isXMLDoc - XML", function() { - expect(3); - var xml = createDashboardXML(); - ok( jQuery.isXMLDoc( xml ), "XML document" ); - ok( jQuery.isXMLDoc( xml.documentElement ), "XML documentElement" ); - ok( jQuery.isXMLDoc( jQuery("tab", xml)[0] ), "XML Tab Element" ); -}); - -test("isWindow", function() { - expect( 14 ); - - ok( jQuery.isWindow(window), "window" ); - ok( jQuery.isWindow(document.getElementsByTagName("iframe")[0].contentWindow), "iframe.contentWindow" ); - ok( !jQuery.isWindow(), "empty" ); - ok( !jQuery.isWindow(null), "null" ); - ok( !jQuery.isWindow(undefined), "undefined" ); - ok( !jQuery.isWindow(document), "document" ); - ok( !jQuery.isWindow(document.documentElement), "documentElement" ); - ok( !jQuery.isWindow(""), "string" ); - ok( !jQuery.isWindow(1), "number" ); - ok( !jQuery.isWindow(true), "boolean" ); - ok( !jQuery.isWindow({}), "object" ); - ok( !jQuery.isWindow({ setInterval: function(){} }), "fake window" ); - ok( !jQuery.isWindow(/window/), "regexp" ); - ok( !jQuery.isWindow(function(){}), "function" ); -}); - -test("jQuery('html')", function() { - expect( 15 ); - - var s, div, j; - - QUnit.reset(); - jQuery["foo"] = false; - s = jQuery("")[0]; - ok( s, "Creating a script" ); - ok( !jQuery["foo"], "Make sure the script wasn't executed prematurely" ); - jQuery("body").append(""); - ok( jQuery["foo"], "Executing a scripts contents in the right context" ); - - // Test multi-line HTML - div = jQuery("
        \r\nsome text\n

        some p

        \nmore text\r\n
        ")[0]; - equal( div.nodeName.toUpperCase(), "DIV", "Make sure we're getting a div." ); - equal( div.firstChild.nodeType, 3, "Text node." ); - equal( div.lastChild.nodeType, 3, "Text node." ); - equal( div.childNodes[1].nodeType, 1, "Paragraph." ); - equal( div.childNodes[1].firstChild.nodeType, 3, "Paragraph text." ); - - QUnit.reset(); - ok( jQuery("")[0], "Creating a link" ); - - ok( !jQuery(""; - equal( jQuery.parseHTML( html ).length, 0, "Ignore scripts by default" ); - equal( jQuery.parseHTML( html, true )[0].nodeName.toLowerCase(), "script", "Preserve scripts when requested" ); - - html += "
        "; - equal( jQuery.parseHTML( html )[0].nodeName.toLowerCase(), "div", "Preserve non-script nodes" ); - equal( jQuery.parseHTML( html, true )[0].nodeName.toLowerCase(), "script", "Preserve script position"); - - equal( jQuery.parseHTML("text")[0].nodeType, 3, "Parsing text returns a text node" ); - equal( jQuery.parseHTML( "\t
        " )[0].nodeValue, "\t", "Preserve leading whitespace" ); - - equal( jQuery.parseHTML("
        ")[0].nodeType, 3, "Leading spaces are treated as text nodes (#11290)" ); - - html = jQuery.parseHTML( "
        test div
        " ); - - equal( html[ 0 ].parentNode.nodeType, 11, "parentNode should be documentFragment" ); - equal( html[ 0 ].innerHTML, "test div", "Content should be preserved" ); - - equal( jQuery.parseHTML("").length, 1, "Incorrect html-strings should not break anything" ); - equal( jQuery.parseHTML("")[ 1 ].parentNode.nodeType, 11, - "parentNode should be documentFragment for wrapMap (variable in manipulation module) elements too" ); - ok( jQuery.parseHTML("<#if>

        This is a test.

        <#/if>") || true, "Garbage input should not cause error" ); -}); - -test("jQuery.parseJSON", function(){ - expect( 9 ); - - equal( jQuery.parseJSON( null ), null, "Actual null returns null" ); - equal( jQuery.isEmptyObject( jQuery.parseJSON("{}") ), true, "Empty object returns empty object" ); - deepEqual( jQuery.parseJSON("{\"test\":1}"), { "test": 1 }, "Plain object parses" ); - deepEqual( jQuery.parseJSON("\n{\"test\":1}"), { "test": 1 }, "Leading whitespaces are ignored." ); - raises(function() { - jQuery.parseJSON(); - }, null, "Undefined raises an error" ); - raises( function() { - jQuery.parseJSON( "" ); - }, null, "Empty string raises an error" ); - raises(function() { - jQuery.parseJSON("''"); - }, null, "Single-quoted string raises an error" ); - raises(function() { - jQuery.parseJSON("{a:1}"); - }, null, "Unquoted property raises an error" ); - raises(function() { - jQuery.parseJSON("{'a':1}"); - }, null, "Single-quoted property raises an error" ); -}); - -test("jQuery.parseXML", 8, function(){ - var xml, tmp; - try { - xml = jQuery.parseXML( "

        A well-formed xml string

        " ); - tmp = xml.getElementsByTagName( "p" )[ 0 ]; - ok( !!tmp, "

        present in document" ); - tmp = tmp.getElementsByTagName( "b" )[ 0 ]; - ok( !!tmp, " present in document" ); - strictEqual( tmp.childNodes[ 0 ].nodeValue, "well-formed", " text is as expected" ); - } catch (e) { - strictEqual( e, undefined, "unexpected error" ); - } - try { - xml = jQuery.parseXML( "

        Not a <well-formed xml string

        " ); - ok( false, "invalid xml not detected" ); - } catch( e ) { - strictEqual( e.message, "Invalid XML:

        Not a <well-formed xml string

        ", "invalid xml detected" ); - } - try { - xml = jQuery.parseXML( "" ); - strictEqual( xml, null, "empty string => null document" ); - xml = jQuery.parseXML(); - strictEqual( xml, null, "undefined string => null document" ); - xml = jQuery.parseXML( null ); - strictEqual( xml, null, "null string => null document" ); - xml = jQuery.parseXML( true ); - strictEqual( xml, null, "non-string => null document" ); - } catch( e ) { - ok( false, "empty input throws exception" ); - } -}); - -test("jQuery.camelCase()", function() { - - var tests = { - "foo-bar": "fooBar", - "foo-bar-baz": "fooBarBaz", - "girl-u-want": "girlUWant", - "the-4th-dimension": "the4thDimension", - "-o-tannenbaum": "OTannenbaum", - "-moz-illa": "MozIlla", - "-ms-take": "msTake" - }; - - expect(7); - - jQuery.each( tests, function( key, val ) { - equal( jQuery.camelCase( key ), val, "Converts: " + key + " => " + val ); - }); -}); diff --git a/src/main/webapp/vendors/jquery/test/unit/css.js b/src/main/webapp/vendors/jquery/test/unit/css.js deleted file mode 100644 index 297fbeca0..000000000 --- a/src/main/webapp/vendors/jquery/test/unit/css.js +++ /dev/null @@ -1,1017 +0,0 @@ -if ( jQuery.css ) { - -module("css", { teardown: moduleTeardown }); - -test("css(String|Hash)", function() { - expect( 40 ); - - equal( jQuery("#qunit-fixture").css("display"), "block", "Check for css property \"display\"" ); - - var $child, div, div2, width, height, child, prctval, checkval, old; - - $child = jQuery("#nothiddendivchild").css({ "width": "20%", "height": "20%" }); - notEqual( $child.css("width"), "20px", "Retrieving a width percentage on the child of a hidden div returns percentage" ); - notEqual( $child.css("height"), "20px", "Retrieving a height percentage on the child of a hidden div returns percentage" ); - - div = jQuery( "
        " ); - - // These should be "auto" (or some better value) - // temporarily provide "0px" for backwards compat - equal( div.css("width"), "0px", "Width on disconnected node." ); - equal( div.css("height"), "0px", "Height on disconnected node." ); - - div.css({ "width": 4, "height": 4 }); - - equal( div.css("width"), "4px", "Width on disconnected node." ); - equal( div.css("height"), "4px", "Height on disconnected node." ); - - div2 = jQuery( "
        "); - clone = element.clone(); - equal( clone[ 0 ].defaultValue, "foo", "Textarea defaultValue cloned correctly" ); -}); - -test( "clone(multiple selected options) (Bug #8129)", function() { - - expect( 1 ); - - var element = jQuery(""); - - equal( element.clone().find("option:selected").length, element.find("option:selected").length, "Multiple selected options cloned correctly" ); - -}); - -test( "clone() on XML nodes", function() { - - expect( 2 ); - - var xml = createDashboardXML(), - root = jQuery(xml.documentElement).clone(), - origTab = jQuery("tab", xml).eq( 0 ), - cloneTab = jQuery("tab", root).eq( 0 ); - - origTab.text("origval"); - cloneTab.text("cloneval"); - equal( origTab.text(), "origval", "Check original XML node was correctly set" ); - equal( cloneTab.text(), "cloneval", "Check cloned XML node was correctly set" ); -}); - -test( "clone() on local XML nodes with html5 nodename", function() { - - expect( 2 ); - - var $xmlDoc = jQuery( jQuery.parseXML( "" ) ), - $meter = $xmlDoc.find( "meter" ).clone(); - - equal( $meter[ 0 ].nodeName, "meter", "Check if nodeName was not changed due to cloning" ); - equal( $meter[ 0 ].nodeType, 1, "Check if nodeType is not changed due to cloning" ); -}); - -test( "html(undefined)", function() { - - expect( 1 ); - - equal( jQuery("#foo").html("test").html(undefined).html().toLowerCase(), "test", ".html(undefined) is chainable (#5571)" ); -}); - -test( "html() on empty set", function() { - - expect( 1 ); - - strictEqual( jQuery().html(), undefined, ".html() returns undefined for empty sets (#11962)" ); -}); - -function childNodeNames( node ) { - return jQuery.map( node.childNodes, function( child ) { - return child.nodeName.toUpperCase(); - }).join(" "); -} - -function testHtml( valueObj ) { - expect( 37 ); - - var actual, expected, tmp, - div = jQuery("
        "), - fixture = jQuery("#qunit-fixture"); - - div.html( valueObj("
        ") ); - equal( div.children().length, 2, "Found children" ); - equal( div.children().children().length, 1, "Found grandchild" ); - - actual = []; expected = []; - tmp = jQuery("").html( valueObj("area") ).each(function() { - expected.push("AREA"); - actual.push( childNodeNames( this ) ); - }); - equal( expected.length, 1, "Expecting one parent" ); - deepEqual( actual, expected, "Found the inserted area element" ); - - equal( div.html(valueObj(5)).html(), "5", "Setting a number as html" ); - equal( div.html(valueObj(0)).html(), "0", "Setting a zero as html" ); - - div.html( valueObj(" &") ); - equal( - div[ 0 ].innerHTML.replace( /\xA0/, " " ), - " &", - "Entities are passed through correctly" - ); - - tmp = "<div>hello1</div>"; - equal( div.html(valueObj(tmp) ).html().replace( />/g, ">" ), tmp, "Escaped html" ); - tmp = "x" + tmp; - equal( div.html(valueObj( tmp )).html().replace( />/g, ">" ), tmp, "Escaped html, leading x" ); - tmp = " " + tmp.slice( 1 ); - equal( div.html(valueObj( tmp )).html().replace( />/g, ">" ), tmp, "Escaped html, leading space" ); - - actual = []; expected = []; tmp = {}; - jQuery("#nonnodes").contents().html( valueObj("bold") ).each(function() { - var html = jQuery( this ).html(); - tmp[ this.nodeType ] = true; - expected.push( this.nodeType === 1 ? "bold" : undefined ); - actual.push( html ? html.toLowerCase() : html ); - }); - deepEqual( actual, expected, "Set containing element, text node, comment" ); - ok( tmp[ 1 ], "element" ); - ok( tmp[ 3 ], "text node" ); - ok( tmp[ 8 ], "comment" ); - - actual = []; expected = []; - fixture.children("div").html( valueObj("test") ).each(function() { - expected.push("B"); - actual.push( childNodeNames( this ) ); - }); - equal( expected.length, 7, "Expecting many parents" ); - deepEqual( actual, expected, "Correct childNodes after setting HTML" ); - - actual = []; expected = []; - fixture.html( valueObj("") ).each(function() { - expected.push("STYLE"); - actual.push( childNodeNames( this ) ); - }); - equal( expected.length, 1, "Expecting one parent" ); - deepEqual( actual, expected, "Found the inserted style element" ); - - fixture.html( valueObj("", {} ); - ok( true, "Does not allow attribute object to be treated like a doc object" ); - } catch ( e ) {} -}); - -test( "jQuery.clone - no exceptions for object elements #9587", function() { - - expect( 1 ); - - try { - jQuery("#no-clone-exception").clone(); - ok( true, "cloned with no exceptions" ); - } catch( e ) { - ok( false, e.message ); - } -}); - -test( "Cloned, detached HTML5 elems (#10667,10670)", function() { - - expect( 7 ); - - var $clone, - $section = jQuery( "
        " ).appendTo( "#qunit-fixture" ); - - // First clone - $clone = $section.clone(); - - // Infer that the test is being run in IE<=8 - if ( $clone[ 0 ].outerHTML && !jQuery.support.opacity ) { - // This branch tests cloning nodes by reading the outerHTML, used only in IE<=8 - equal( $clone[ 0 ].outerHTML, "
        ", "detached clone outerHTML matches '
        '" ); - } else { - // This branch tests a known behaviour in modern browsers that should never fail. - // Included for expected test count symmetry (expecting 1) - equal( $clone[ 0 ].nodeName, "SECTION", "detached clone nodeName matches 'SECTION' in modern browsers" ); - } - - // Bind an event - $section.on( "click", function() { - ok( true, "clone fired event" ); - }); - - // Second clone (will have an event bound) - $clone = $section.clone( true ); - - // Trigger an event from the first clone - $clone.trigger("click"); - $clone.off("click"); - - // Add a child node with text to the original - $section.append("

        Hello

        "); - - // Third clone (will have child node and text) - $clone = $section.clone( true ); - - equal( $clone.find("p").text(), "Hello", "Assert text in child of clone" ); - - // Trigger an event from the third clone - $clone.trigger("click"); - $clone.off("click"); - - // Add attributes to copy - $section.attr({ - "class": "foo bar baz", - "title": "This is a title" - }); - - // Fourth clone (will have newly added attributes) - $clone = $section.clone( true ); - - equal( $clone.attr("class"), $section.attr("class"), "clone and element have same class attribute" ); - equal( $clone.attr("title"), $section.attr("title"), "clone and element have same title attribute" ); - - // Remove the original - $section.remove(); - - // Clone the clone - $section = $clone.clone( true ); - - // Remove the clone - $clone.remove(); - - // Trigger an event from the clone of the clone - $section.trigger("click"); - - // Unbind any remaining events - $section.off("click"); - $clone.off("click"); -}); - -test( "Guard against exceptions when clearing safeChildNodes", function() { - - expect( 1 ); - - var div; - - try { - div = jQuery("

        "); - } catch(e) {} - - ok( div && div.jquery, "Created nodes safely, guarded against exceptions on safeChildNodes[ -1 ]" ); -}); - -test( "Ensure oldIE creates a new set on appendTo (#8894)", function() { - - expect( 5 ); - - strictEqual( jQuery("
        ").clone().addClass("test").appendTo("
        ").end().end().hasClass("test"), false, "Check jQuery.fn.appendTo after jQuery.clone" ); - strictEqual( jQuery("
        ").find("p").end().addClass("test").appendTo("
        ").end().end().hasClass("test"), false, "Check jQuery.fn.appendTo after jQuery.fn.find" ); - strictEqual( jQuery("
        ").text("test").addClass("test").appendTo("
        ").end().end().hasClass("test"), false, "Check jQuery.fn.appendTo after jQuery.fn.text" ); - strictEqual( jQuery("").clone().addClass("test").appendTo("
        ").end().end().hasClass("test"), false, "Check jQuery.fn.appendTo after clone html5 element" ); - strictEqual( jQuery("

        ").appendTo("

        ").end().length, jQuery("

        test

        ").appendTo("
        ").end().length, "Elements created with createElement and with createDocumentFragment should be treated alike" ); -}); - -test( "html() - script exceptions bubble (#11743)", function() { - - expect( 3 ); - - raises(function() { - jQuery("#qunit-fixture").html(""); - ok( false, "Exception ignored" ); - }, "Exception bubbled from inline script" ); - - if ( jQuery.ajax ) { - var onerror = window.onerror; - window.onerror = function() { - ok( true, "Exception thrown in remote script" ); - }; - - jQuery("#qunit-fixture").html(""); - ok( true, "Exception ignored" ); - window.onerror = onerror; - } else { - ok( true, "No jQuery.ajax" ); - ok( true, "No jQuery.ajax" ); - } -}); - -test( "checked state is cloned with clone()", function() { - - expect( 2 ); - - var elem = jQuery.parseHTML("")[ 0 ]; - elem.checked = false; - equal( jQuery(elem).clone().attr("id","clone")[ 0 ].checked, false, "Checked false state correctly cloned" ); - - elem = jQuery.parseHTML("")[ 0 ]; - elem.checked = true; - equal( jQuery(elem).clone().attr("id","clone")[ 0 ].checked, true, "Checked true state correctly cloned" ); -}); - -test( "manipulate mixed jQuery and text (#12384, #12346)", function() { - - expect( 2 ); - - var div = jQuery("
        a
        ").append( " ", jQuery("b"), " ", jQuery("c") ), - nbsp = String.fromCharCode( 160 ); - - equal( div.text(), "a" + nbsp + "b" + nbsp+ "c", "Appending mixed jQuery with text nodes" ); - - div = jQuery("
        ") - .find("div") - .after( "

        a

        ", "

        b

        " ) - .parent(); - equal( div.find("*").length, 3, "added 2 paragraphs after inner div" ); -}); - -testIframeWithCallback( "buildFragment works even if document[0] is iframe's window object in IE9/10 (#12266)", "manipulation/iframe-denied.html", function( test ) { - expect( 1 ); - - ok( test.status, test.description ); -}); - -test( "script evaluation (#11795)", function() { - - expect( 13 ); - - var scriptsIn, scriptsOut, - fixture = jQuery("#qunit-fixture").empty(), - objGlobal = (function() { - return this; - })(), - isOk = objGlobal.ok, - notOk = function() { - var args = arguments; - args[ 0 ] = !args[ 0 ]; - return isOk.apply( this, args ); - }; - - objGlobal.ok = notOk; - scriptsIn = jQuery([ - "", - "", - "", - "", - "
        ", - "", - "", - "", - "", - "
        " - ].join("")); - scriptsIn.appendTo( jQuery("
        ") ); - objGlobal.ok = isOk; - - scriptsOut = fixture.append( scriptsIn ).find("script"); - equal( scriptsOut[ 0 ].type, "something/else", "Non-evaluated type." ); - equal( scriptsOut[ 1 ].type, "text/javascript", "Evaluated type." ); - deepEqual( scriptsOut.get(), fixture.find("script").get(), "All script tags remain." ); - - objGlobal.ok = notOk; - scriptsOut = scriptsOut.add( scriptsOut.clone() ).appendTo( fixture.find("div") ); - deepEqual( fixture.find("div script").get(), scriptsOut.get(), "Scripts cloned without reevaluation" ); - fixture.append( scriptsOut.detach() ); - deepEqual( fixture.children("script").get(), scriptsOut.get(), "Scripts detached without reevaluation" ); - objGlobal.ok = isOk; - - if ( jQuery.ajax ) { - Globals.register("testBar"); - jQuery("#qunit-fixture").append( "